
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: bool should_add_dynsym_entry(Symbol * this, Symbol_table * symtab) */

bool __thiscall gold::Symbol::should_add_dynsym_entry(Symbol *this,Symbol_table *symtab)

{
  byte bVar1;
  uint shndx;
  pointer ppOVar2;
  _Alloc_hider _Var3;
  bool bVar4;
  char *pcVar5;
  General_options *pGVar6;
  char *pcVar7;
  size_t sVar8;
  byte *__ptr;
  byte bVar9;
  int iVar10;
  byte bVar11;
  char cVar12;
  Output_segment *pOVar13;
  byte *pbVar14;
  byte *pbVar15;
  bool bVar16;
  bool bVar17;
  byte bVar18;
  int local_40;
  bool is_global;
  char local_2c [28];
  
  bVar18 = 0;
  bVar9 = this->field_0x2b;
  bVar11 = bVar9 >> 6;
  if ((bVar11 & 1) == 0) {
    return false;
  }
  bVar1 = this->field_0x2a;
  if ((bVar1 & 0x40) != 0) {
    return (bool)(bVar11 & 1);
  }
  if (((((char)bVar1 < '\0') && ((bVar9 & 1) != 0)) &&
      (((this->field_0x29 & 3) == 0 || ((this->field_0x29 & 3) == 3)))) && ((bVar9 & 0x10) == 0)) {
    return (bool)(bVar11 & 1);
  }
  pGVar6 = parameters->options_;
  if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;
  if ((((pGVar6->gc_sections_).value == false) || ((pGVar6->shared_).value != false)) ||
     ((bVar1 & 7) != 0)) {
    if ((bVar1 & 7) == 0) {
      if (((uint)((this->u1_).output_segment)->output_lists_[3].
                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl
                 ._M_end_of_storage & 1) != 0) goto LAB_00178a1d;
      pGVar6 = parameters->options_;
    }
LAB_00178962:
    bVar4 = Version_script_info::get_symbol_version
                      (&(pGVar6->dynamic_list_).version_script_info_,this->name_,(string *)0x0,
                       &is_global);
    if ((bVar4) && (is_global == false)) {
LAB_00178990:
      if ((this->field_0x2b & 0x10) == 0) {
        return (bool)(bVar11 & 1);
      }
      demangle((string *)&is_global,this->name_);
      _Var3._M_p = _is_global;
      pcVar5 = (char *)gettext("Cannot export local symbol \'%s\'");
                    /* try { // try from 001789c4 to 001789c8 has its CatchHandler @ 00178e46 */
      gold_warning(pcVar5,_Var3._M_p);
      if (_is_global == local_2c) {
        return false;
      }
      operator_delete(_is_global);
      return false;
    }
    pGVar6 = parameters->options_;
    if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;
    if ((pGVar6->export_dynamic_symbol_).value._M_h._M_element_count != 0) {
      pcVar5 = this->name_;
      pcVar7 = (char *)0xffffffff;
      _is_global = local_2c;
      if (pcVar5 != (char *)0x0) {
        sVar8 = strlen(pcVar5);
        pcVar7 = pcVar5 + sVar8;
      }
      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
      _M_construct<char_const*>((string *)&is_global,pcVar5,pcVar7,0);
      std::
      _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>_>
      ::find(&(pGVar6->export_dynamic_symbol_).value._M_h,(string *)&is_global);
      if (local_40 != 0) {
        if (_is_global != local_2c) {
          operator_delete(_is_global);
        }
        goto LAB_00178990;
      }
      if (_is_global != local_2c) {
        operator_delete(_is_global);
        bVar9 = this->field_0x2b;
        goto LAB_00178a1d;
      }
    }
LAB_00178a19:
    bVar9 = this->field_0x2b;
  }
  else {
    pOVar13 = (this->u1_).output_segment;
    if ((((Object *)pOVar13->output_lists_)->field_0x2c & 1) == 0) {
      shndx = (this->u2_).shndx;
      if (((bVar9 & 0x20) == 0) || (shndx == 0)) {
LAB_00178b48:
        pGVar6 = parameters->options_;
        if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;
        goto LAB_00178962;
      }
      ppOVar2 = (((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->
                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).
                _M_impl._M_start;
      if ((uint)((int)(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->
                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>
                      )._M_impl._M_finish - (int)ppOVar2 >> 2) <= shndx) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");
      }
      if (ppOVar2[shndx] != (Output_section *)0x0) goto LAB_00178b48;
      bVar4 = Symbol_table::is_section_folded(symtab,(Relobj *)pOVar13,shndx);
      if (!bVar4) {
        return false;
      }
      if (((this->field_0x2a & 7) != 0) ||
         (((uint)((this->u1_).output_segment)->output_lists_[3].
                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl
                 ._M_end_of_storage & 1) == 0)) goto LAB_00178b48;
      goto LAB_00178a19;
    }
  }
LAB_00178a1d:
  if ((bVar9 & 0x10) != 0) {
    return false;
  }
  pGVar6 = parameters->options_;
  if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;
  if ((pGVar6->dynamic_list_data_).value == false) {
LAB_00178c1e:
    if (((pGVar6->dynamic_list_cpp_new_).value == false) &&
       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false)) goto LAB_00178a80;
    if ((this->field_0x2a & 7) == 0) {
      pOVar13 = (this->u1_).output_segment;
      goto LAB_00178a70;
    }
  }
  else {
    if (((this->field_0x2a & 7) != 0) ||
       (pOVar13 = (this->u1_).output_segment,
       ((uint)pOVar13->output_lists_[3].
              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.
              _M_end_of_storage & 1) == 0)) {
      if ((this->field_0x28 & 0xf) == 1) {
        return (bool)(bVar11 & 1);
      }
      goto LAB_00178c1e;
    }
    if (((pGVar6->dynamic_list_cpp_new_).value != false) ||
       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false)) goto LAB_00178a80;
LAB_00178a70:
    if (((uint)pOVar13->output_lists_[3].
               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.
               _M_end_of_storage & 1) != 0) goto LAB_00178a80;
  }
  __ptr = (byte *)cplus_demangle(this->name_,3);
  if (__ptr != (byte *)0x0) {
    pGVar6 = parameters->options_;
    if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;
    cVar12 = (pGVar6->dynamic_list_cpp_new_).value;
    bVar4 = false;
    bVar17 = (bool)cVar12 == false;
    if (!bVar17) {
      iVar10 = 0xc;
      pbVar14 = __ptr;
      pbVar15 = (byte *)"operator new";
      do {
        if (iVar10 == 0) break;
        iVar10 = iVar10 + -1;
        bVar4 = *pbVar14 < *pbVar15;
        bVar17 = *pbVar14 == *pbVar15;
        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;
        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;
      } while (bVar17);
      bVar16 = false;
      bVar4 = (!bVar4 && !bVar17) == bVar4;
      if (bVar4) goto LAB_00178d5c;
      iVar10 = 0xf;
      pbVar14 = __ptr;
      pbVar15 = (byte *)"operator delete";
      do {
        if (iVar10 == 0) break;
        iVar10 = iVar10 + -1;
        bVar16 = *pbVar14 < *pbVar15;
        bVar4 = *pbVar14 == *pbVar15;
        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;
        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;
      } while (bVar4);
      if ((!bVar16 && !bVar4) == bVar16) goto LAB_00178d5c;
    }
    cVar12 = (pGVar6->dynamic_list_cpp_typeinfo_).value;
    bVar4 = false;
    bVar17 = (bool)cVar12 == false;
    if (!bVar17) {
      iVar10 = 0x11;
      pbVar14 = __ptr;
      pbVar15 = (byte *)"typeinfo name for";
      do {
        if (iVar10 == 0) break;
        iVar10 = iVar10 + -1;
        bVar4 = *pbVar14 < *pbVar15;
        bVar17 = *pbVar14 == *pbVar15;
        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;
        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;
      } while (bVar17);
      bVar16 = false;
      bVar4 = (!bVar4 && !bVar17) == bVar4;
      if (bVar4) {
LAB_00178d5c:
        free(__ptr);
        return (bool)cVar12;
      }
      iVar10 = 0xc;
      pbVar14 = __ptr;
      pbVar15 = (byte *)"typeinfo for";
      do {
        if (iVar10 == 0) break;
        iVar10 = iVar10 + -1;
        bVar16 = *pbVar14 < *pbVar15;
        bVar4 = *pbVar14 == *pbVar15;
        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;
        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;
      } while (bVar4);
      if ((!bVar16 && !bVar4) == bVar16) goto LAB_00178d5c;
    }
    free(__ptr);
  }
  pGVar6 = parameters->options_;
  if (pGVar6 != (General_options *)0x0) {
LAB_00178a80:
    if ((((pGVar6->export_dynamic_).value != false) || ((pGVar6->shared_).value != false)) ||
       (((pGVar6->gnu_unique_).value != false && ((byte)this->field_0x28 >> 4 == 10)))) {
      if ((this->field_0x2a & 7) == 0) {
        if (((uint)((this->u1_).output_segment)->output_lists_[3].
                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.
                   _M_impl._M_end_of_storage & 1) != 0) {
          return false;
        }
        if (((this->u2_).shndx == 0) && ((this->field_0x2b & 0x20) != 0)) {
          return false;
        }
      }
      else if ((this->field_0x2a & 7) == 4) {
        return false;
      }
      if (((this->field_0x29 & 3) == 0) || ((this->field_0x29 & 3) == 3)) {
        return (bool)((byte)this->field_0x2b >> 4 & 1 ^ 1);
      }
    }
    return false;
  }
LAB_00178b58:
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
}



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

uint FUN_001788c0(undefined4 *param_1,undefined4 param_2)

{
  byte bVar1;
  undefined **ppuVar2;
  undefined1 **ppuVar3;
  undefined **ppuVar4;
  char cVar5;
  byte *pbVar6;
  undefined4 uVar7;
  char *pcVar8;
  size_t sVar9;
  byte bVar10;
  char *__s;
  int iVar11;
  int iVar12;
  undefined1 uVar13;
  uint uVar14;
  undefined1 ***pppuVar15;
  undefined1 ***pppuVar16;
  undefined1 ***pppuVar17;
  undefined1 *puVar18;
  byte *pbVar19;
  byte *pbVar20;
  bool bVar21;
  bool bVar22;
  bool bVar23;
  byte bVar24;
  undefined1 **ppuStack_60;
  undefined1 auStack_5c [11];
  undefined1 local_51;
  char *local_50;
  undefined1 *local_4c;
  undefined1 **local_48;
  undefined **local_44;
  int local_40 [3];
  undefined1 *local_34 [2];
  undefined1 local_2c [28];
  
  bVar24 = 0;
  pppuVar17 = (undefined1 ***)auStack_5c;
  local_44 = &__DT_PLTGOT;
  bVar10 = *(byte *)((int)param_1 + 0x2b);
  uVar14 = bVar10 >> 6 & 1;
  uVar13 = (undefined1)uVar14;
  if ((bVar10 >> 6 & 1) == 0) {
    return 0;
  }
  bVar1 = *(byte *)((int)param_1 + 0x2a);
  pbVar6 = (byte *)(uint)bVar1;
  if ((bVar1 & 0x40) != 0) {
    return uVar14;
  }
  if (((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&
      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))
     && ((bVar10 & 0x10) == 0)) {
    return uVar14;
  }
  local_48 = (undefined1 **)&DAT_0038f378;
  iVar11 = *(int *)(DAT_0038f378 + 8);
  puVar18 = auStack_5c;
  ppuVar3 = (undefined1 **)&DAT_0038f378;
  ppuVar4 = &__DT_PLTGOT;
  if (iVar11 == 0) goto LAB_00178b58;
  if (((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||
     ((bVar1 & 7) != 0)) {
    local_48 = (undefined1 **)&DAT_0038f378;
    if ((bVar1 & 7) == 0) {
      pppuVar17 = (undefined1 ***)auStack_5c;
      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;
      iVar11 = *(int *)(DAT_0038f378 + 8);
      ppuVar4 = local_44;
    }
LAB_00178962:
    local_44 = ppuVar4;
    pppuVar15 = (undefined1 ***)auStack_5c;
    pppuVar16 = (undefined1 ***)auStack_5c;
    local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);
    ppuStack_60 = local_34;
    cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);
    uVar14 = (uint)local_4c & 0xff;
    if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {
LAB_00178990:
      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {
        return uVar14;
      }
      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;
      FUN_00178770();
      puVar18 = local_34[0];
      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;
      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;
      uVar7 = gettext();
      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;
      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;
                    /* try { // try from 001789c4 to 001789c8 has its CatchHandler @ 00178e46 */
      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;
      FUN_000654e0();
      if (local_34[0] == local_2c) {
        return 0;
      }
      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];
      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;
      FUN_001e6dc0();
      return 0;
    }
    pbVar6 = *local_48;
    iVar11 = *(int *)(pbVar6 + 8);
    puVar18 = auStack_5c;
    ppuVar3 = local_48;
    ppuVar4 = local_44;
    if (iVar11 == 0) goto LAB_00178b58;
    if (*(int *)(iVar11 + 0x1344) != 0) {
      __s = (char *)*param_1;
      local_34[0] = local_2c;
      pcVar8 = (char *)0xffffffff;
      uVar13 = local_4c._0_1_;
      puVar18 = local_34[0];
      if (__s != (char *)0x0) {
        local_51 = local_4c._0_1_;
        local_50 = __s;
        local_4c = local_34[0];
        sVar9 = strlen(__s);
        pcVar8 = local_50 + sVar9;
        __s = local_50;
        uVar13 = local_51;
        puVar18 = local_4c;
      }
      local_4c = puVar18;
      ppuStack_60 = (undefined1 **)0x0;
      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);
      FUN_00050e40(local_34,__s,pcVar8);
      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);
      pppuVar16 = &ppuStack_60;
      pppuVar15 = &ppuStack_60;
      uVar14 = (uint)local_50 & 0xff;
      if (local_40[0] != 0) {
        if (local_34[0] != local_4c) {
          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);
          FUN_001e6dc0(local_34[0]);
          pppuVar15 = &ppuStack_60;
          uVar14 = (uint)local_48 & 0xff;
        }
        goto LAB_00178990;
      }
      if (local_34[0] != local_4c) {
        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);
        FUN_001e6dc0(local_34[0]);
        uVar14 = (uint)local_4c & 0xff;
        bVar10 = *(byte *)((int)param_1 + 0x2b);
        pppuVar17 = &ppuStack_60;
        ppuVar3 = local_48;
        ppuVar4 = local_44;
        goto LAB_00178a1d;
      }
    }
LAB_00178a19:
    bVar10 = *(byte *)((int)param_1 + 0x2b);
    pppuVar17 = pppuVar16;
    ppuVar3 = local_48;
    ppuVar4 = local_44;
  }
  else {
    iVar11 = param_1[2];
    ppuVar4 = local_44;
    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {
      uVar14 = param_1[3];
      ppuVar4 = &__DT_PLTGOT;
      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {
LAB_00178b48:
        local_44 = ppuVar4;
        local_48 = ppuVar3;
        puVar18 = auStack_5c;
        pbVar6 = *local_48;
        iVar11 = *(int *)(pbVar6 + 8);
        ppuVar3 = local_48;
        ppuVar4 = local_44;
        if (iVar11 == 0) goto LAB_00178b58;
        goto LAB_00178962;
      }
      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {
        ppuStack_60 = (undefined1 **)&DAT_0038f378;
        local_48 = (undefined1 **)&DAT_0038f378;
        local_44 = &__DT_PLTGOT;
                    /* WARNING: Subroutine does not return */
        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");
      }
      ppuVar3 = local_48;
      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;
      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);
      local_48 = (undefined1 **)&DAT_0038f378;
      local_44 = &__DT_PLTGOT;
      cVar5 = FUN_00177880(param_2,iVar11,uVar14);
      pppuVar16 = (undefined1 ***)auStack_5c;
      if (cVar5 == '\0') {
        return 0;
      }
      uVar14 = (uint)local_4c & 0xff;
      uVar13 = SUB41(local_4c,0);
      ppuVar3 = local_48;
      ppuVar4 = local_44;
      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))
      goto LAB_00178b48;
      goto LAB_00178a19;
    }
  }
LAB_00178a1d:
  local_44 = ppuVar4;
  local_48 = ppuVar3;
  ppuVar2 = local_44;
  if ((bVar10 & 0x10) != 0) {
    return 0;
  }
  pbVar6 = *(byte **)(*local_48 + 8);
  puVar18 = (undefined1 *)pppuVar17;
  ppuVar3 = local_48;
  ppuVar4 = local_44;
  if (pbVar6 == (byte *)0x0) goto LAB_00178b58;
  if (pbVar6[0xe89] == 0) {
LAB_00178c1e:
    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;
    if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {
      iVar11 = param_1[2];
      goto LAB_00178a70;
    }
  }
  else {
    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||
       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {
      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));
      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {
        return uVar14;
      }
      goto LAB_00178c1e;
    }
    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;
LAB_00178a70:
    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;
  }
  *(undefined4 *)((int)pppuVar17 + -0xc) = 3;
  *(undefined4 *)((int)pppuVar17 + -0x10) = *param_1;
  *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178c55;
  pbVar6 = (byte *)FUN_001cef00();
  if (pbVar6 != (byte *)0x0) {
    iVar11 = *(int *)(*local_48 + 8);
    ppuVar3 = local_48;
    ppuVar4 = local_44;
    if (iVar11 == 0) goto LAB_00178b58;
    cVar5 = *(char *)(iVar11 + 0xf05);
    bVar21 = false;
    bVar23 = cVar5 == '\0';
    if (!bVar23) {
      iVar12 = 0xc;
      pbVar19 = pbVar6;
      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);
      do {
        if (iVar12 == 0) break;
        iVar12 = iVar12 + -1;
        bVar21 = *pbVar19 < *pbVar20;
        bVar23 = *pbVar19 == *pbVar20;
        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;
      } while (bVar23);
      bVar22 = false;
      bVar21 = (!bVar21 && !bVar23) == bVar21;
      local_44 = ppuVar2;
      if (bVar21) goto LAB_00178d5c;
      iVar12 = 0xf;
      pbVar19 = pbVar6;
      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);
      do {
        if (iVar12 == 0) break;
        iVar12 = iVar12 + -1;
        bVar22 = *pbVar19 < *pbVar20;
        bVar21 = *pbVar19 == *pbVar20;
        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;
      } while (bVar21);
      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;
    }
    cVar5 = *(char *)(iVar11 + 0xf81);
    bVar21 = false;
    bVar23 = cVar5 == '\0';
    if (!bVar23) {
      iVar11 = 0x11;
      pbVar19 = pbVar6;
      pbVar20 = (byte *)((int)local_44 + -0xf5745);
      do {
        if (iVar11 == 0) break;
        iVar11 = iVar11 + -1;
        bVar21 = *pbVar19 < *pbVar20;
        bVar23 = *pbVar19 == *pbVar20;
        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;
      } while (bVar23);
      bVar22 = false;
      bVar21 = (!bVar21 && !bVar23) == bVar21;
      if (bVar21) {
LAB_00178d5c:
        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);
        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;
        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;
        free(*(void **)((int)pppuVar17 + -0x10));
        return (uint)local_48 & 0xff;
      }
      iVar11 = 0xc;
      pbVar19 = pbVar6;
      pbVar20 = (byte *)((int)local_44 + -0xf5733);
      do {
        if (iVar11 == 0) break;
        iVar11 = iVar11 + -1;
        bVar22 = *pbVar19 < *pbVar20;
        bVar21 = *pbVar19 == *pbVar20;
        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;
      } while (bVar21);
      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;
    }
    *(byte **)((int)pppuVar17 + -0x10) = pbVar6;
    *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;
    free(*(void **)((int)pppuVar17 + -0x10));
  }
  pbVar6 = *(byte **)(*local_48 + 8);
  if (pbVar6 != (byte *)0x0) {
LAB_00178a80:
    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||
       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {
      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {
        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {
          return 0;
        }
        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {
          return 0;
        }
      }
      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {
        return 0;
      }
      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)
         ) {
        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;
      }
    }
    return 0;
  }
  pbVar6 = (byte *)0x0;
  ppuVar3 = local_48;
  ppuVar4 = local_44;
LAB_00178b58:
  local_44 = ppuVar4;
  local_48 = ppuVar3;
  *(byte **)(puVar18 + -4) = pbVar6;
  *(undefined ***)(puVar18 + -8) = local_44 + -0x3d2de;
  *(undefined4 *)(puVar18 + -0xc) = 0x5c;
  *(undefined ***)(puVar18 + -0x10) = local_44 + -0x41f7c;
                    /* WARNING: Subroutine does not return */
  *(undefined **)(puVar18 + -0x14) = &UNK_00178b71;
  FUN_00069d00();
}


CALL 0x000559e6
ADD EAX,0x21673b
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x4c
MOV dword ptr [EBP + -0x40],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOVZX ECX,byte ptr [EAX + 0x2b]
MOV EDX,ECX
SHR DL,0x6
AND EDX,0x1
JZ 0x001789e8
MOV EAX,dword ptr [EBP + 0x8]
MOVZX EAX,byte ptr [EAX + 0x2a]
TEST AL,0x40
JZ 0x00178900
LEA ESP,[EBP + -0xc]
MOV EAX,EDX
POP EBX
POP ESI
POP EDI
POP EBP
RET
TEST AL,AL
JNS 0x00178928
TEST CL,0x1
JZ 0x00178928
MOV ESI,dword ptr [EBP + 0x8]
MOVZX EBX,byte ptr [ESI + 0x29]
MOV byte ptr [EBP + -0x44],BL
AND EBX,0x3
JZ 0x00178d80
CMP BL,0x3
JZ 0x00178d80
LEA ESI,[ESI]
MOV ESI,dword ptr [EBP + -0x40]
LEA EDI,[ESI + 0x378]
MOV EBX,dword ptr [EDI]
MOV dword ptr [EBP + -0x44],EDI
MOV EBX,dword ptr [EBX + 0x8]
TEST EBX,EBX
JZ 0x00178b58
AND EAX,0x7
CMP byte ptr [EBX + 0x18b1],0x0
JZ 0x0017895a
CMP byte ptr [EBX + 0x1a25],0x0
JZ 0x00178b20
TEST AL,AL
JZ 0x00178cf0
MOV EAX,dword ptr [EBP + 0x8]
ADD EBX,0x59a8
LEA EDI,[EBP + -0x30]
MOV byte ptr [EBP + -0x48],DL
PUSH EDI
PUSH 0x0
PUSH dword ptr [EAX]
PUSH EBX
MOV EBX,dword ptr [EBP + -0x40]
CALL 0x0016e030
ADD ESP,0x10
MOVZX EDX,byte ptr [EBP + -0x48]
TEST AL,AL
JZ 0x001789f8
CMP byte ptr [EBP + -0x30],0x0
JNZ 0x001789f8
MOV EAX,dword ptr [EBP + 0x8]
TEST byte ptr [EAX + 0x2b],0x10
JZ 0x001788f6
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EAX]
MOV EAX,EDI
CALL 0x00178770
MOV EDI,dword ptr [EBP + -0x40]
SUB ESP,0xc
MOV ESI,dword ptr [EBP + -0x30]
LEA EAX,[EDI + 0xfff0a928]
MOV EBX,EDI
PUSH EAX
CALL 0x000293b0
POP ECX
POP EDI
PUSH ESI
PUSH EAX
CALL 0x000654e0
MOV EAX,dword ptr [EBP + -0x30]
LEA EDX,[EBP + -0x28]
ADD ESP,0x10
CMP EAX,EDX
JZ 0x001789e8
SUB ESP,0xc
PUSH EAX
CALL 0x001e6dc0
ADD ESP,0x10
LEA ESI,[ESI]
XOR EDX,EDX
LEA ESP,[EBP + -0xc]
MOV EAX,EDX
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBP + -0x44]
MOV EAX,dword ptr [EAX]
MOV ESI,dword ptr [EAX + 0x8]
TEST ESI,ESI
JZ 0x00178b58
MOV ECX,dword ptr [ESI + 0x1344]
MOV EAX,dword ptr [EBP + 0x8]
TEST ECX,ECX
JNZ 0x00178b78
MOVZX ECX,byte ptr [EAX + 0x2b]
AND ECX,0x10
JNZ 0x001789e8
MOV EAX,dword ptr [EBP + -0x44]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x00178b58
CMP byte ptr [EAX + 0xe89],0x0
JZ 0x00178c1e
MOV ESI,dword ptr [EBP + 0x8]
TEST byte ptr [ESI + 0x2a],0x7
JNZ 0x00178c08
MOV EBX,dword ptr [ESI + 0x8]
TEST byte ptr [EBX + 0x2c],0x1
JZ 0x00178c08
CMP byte ptr [EAX + 0xf05],0x0
JNZ 0x00178a80
CMP byte ptr [EAX + 0xf81],0x0
JZ 0x00178a80
LEA ESI,[ESI]
NOP
TEST byte ptr [EBX + 0x2c],0x1
JZ 0x00178c41
LEA ESI,[ESI]
CMP byte ptr [EAX + 0x12b9],0x0
JNZ 0x00178ab8
CMP byte ptr [EAX + 0x1a25],0x0
JNZ 0x00178ab8
CMP byte ptr [EAX + 0x19a9],0x0
JZ 0x001789e8
MOV EAX,dword ptr [EBP + 0x8]
MOVZX EAX,byte ptr [EAX + 0x28]
MOV byte ptr [EBP + -0x40],AL
SHR AL,0x4
CMP AL,0xa
JNZ 0x001789e8
LEA ESI,[ESI]
MOV EAX,dword ptr [EBP + 0x8]
MOVZX EAX,byte ptr [EAX + 0x2a]
MOV byte ptr [EBP + -0x40],AL
AND EAX,0x7
JNZ 0x00178d10
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x8]
TEST byte ptr [EAX + 0x2c],0x1
JNZ 0x001789e8
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EAX + 0xc]
TEST EDX,EDX
JNZ 0x00178aef
TEST byte ptr [EAX + 0x2b],0x20
JNZ 0x001789e8
MOV EAX,dword ptr [EBP + 0x8]
MOVZX EAX,byte ptr [EAX + 0x29]
MOV byte ptr [EBP + -0x40],AL
AND EAX,0x3
JZ 0x00178b06
CMP AL,0x3
JNZ 0x001789e8
MOV EAX,dword ptr [EBP + 0x8]
MOVZX EDX,byte ptr [EAX + 0x2b]
SHR DL,0x4
AND EDX,0x1
XOR EDX,0x1
JMP 0x001788f6
TEST AL,AL
JNZ 0x0017895a
MOV EAX,dword ptr [EBP + 0x8]
MOV EBX,dword ptr [EAX + 0x8]
TEST byte ptr [EBX + 0x2c],0x1
JNZ 0x00178a1d
AND ECX,0x20
MOV EAX,dword ptr [EAX + 0xc]
JZ 0x00178b48
TEST EAX,EAX
JNZ 0x00178dc7
MOV EAX,dword ptr [EBP + -0x44]
MOV EAX,dword ptr [EAX]
MOV EBX,dword ptr [EAX + 0x8]
TEST EBX,EBX
JNZ 0x00178962
MOV EBX,dword ptr [EBP + -0x40]
PUSH EAX
LEA EAX,[EBX + 0xfff0b488]
PUSH EAX
LEA EAX,[EBX + 0xffef8210]
PUSH 0x5c
PUSH EAX
CALL 0x00069d00
MOV ECX,dword ptr [EAX]
LEA EAX,[EBP + -0x28]
MOV dword ptr [EBP + -0x48],EAX
MOV dword ptr [EBP + -0x30],EAX
MOV EAX,0xffffffff
TEST ECX,ECX
JZ 0x00178baa
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x40]
MOV byte ptr [EBP + -0x4d],DL
PUSH ECX
MOV dword ptr [EBP + -0x4c],ECX
CALL 0x000295f0
MOV ECX,dword ptr [EBP + -0x4c]
MOVZX EDX,byte ptr [EBP + -0x4d]
ADD ESP,0x10
ADD EAX,ECX
PUSH 0x0
ADD ESI,0x1338
PUSH EAX
PUSH ECX
PUSH EDI
MOV byte ptr [EBP + -0x4c],DL
CALL 0x00050e40
ADD ESP,0xc
LEA EAX,[EBP + -0x3c]
PUSH EDI
PUSH ESI
PUSH EAX
CALL 0x000ba920
MOV EDX,dword ptr [EBP + -0x3c]
MOV EAX,dword ptr [EBP + -0x30]
ADD ESP,0xc
TEST EDX,EDX
MOVZX EDX,byte ptr [EBP + -0x4c]
JZ 0x00178da0
CMP EAX,dword ptr [EBP + -0x48]
JZ 0x00178990
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x40]
MOV byte ptr [EBP + -0x44],DL
PUSH EAX
CALL 0x001e6dc0
ADD ESP,0x10
MOVZX EDX,byte ptr [EBP + -0x44]
JMP 0x00178990
MOV ESI,dword ptr [EBP + 0x8]
MOVZX ECX,byte ptr [ESI + 0x28]
MOV byte ptr [EBP + -0x48],CL
AND ECX,0xf
CMP CL,0x1
JZ 0x001788f6
CMP byte ptr [EAX + 0xf05],0x0
JNZ 0x00178c34
CMP byte ptr [EAX + 0xf81],0x0
JZ 0x00178a80
MOV ESI,dword ptr [EBP + 0x8]
TEST byte ptr [ESI + 0x2a],0x7
JZ 0x00178d90
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0x8
MOV ESI,dword ptr [EBP + -0x40]
PUSH 0x3
PUSH dword ptr [EAX]
MOV EBX,ESI
CALL 0x001cef00
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00178cd2
MOV EDI,dword ptr [EBP + -0x44]
MOV EDX,dword ptr [EDI]
MOV EBX,dword ptr [EDX + 0x8]
TEST EBX,EBX
JZ 0x00178b58
MOVZX EDX,byte ptr [EBX + 0xf05]
TEST DL,DL
JNZ 0x00178d20
MOVZX EDX,byte ptr [EBX + 0xf81]
TEST DL,DL
JZ 0x00178cc3
MOV EBX,dword ptr [EBP + -0x40]
MOV ECX,0x11
MOV ESI,EAX
LEA EDI,[EBX + 0xfff0a8bb]
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JZ 0x00178d5c
MOV ECX,0xc
LEA EDI,[EBX + 0xfff0a8cd]
MOV ESI,EAX
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JZ 0x00178d5c
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x40]
PUSH EAX
CALL 0x00029410
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x44]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JNZ 0x00178a80
JMP 0x00178b58
MOV EAX,dword ptr [EBP + 0x8]
MOV EBX,dword ptr [EAX + 0x8]
TEST byte ptr [EBX + 0x2c],0x1
JNZ 0x00178a1d
MOV EAX,dword ptr [EBP + -0x44]
MOV EAX,dword ptr [EAX]
MOV EBX,dword ptr [EAX + 0x8]
JMP 0x00178962
CMP AL,0x4
JNZ 0x00178aef
XOR EDX,EDX
JMP 0x001789ea
MOV ECX,0xc
LEA EDI,[ESI + 0xfff0a89e]
MOV dword ptr [EBP + -0x40],ESI
MOV ESI,EAX
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JZ 0x00178d5c
MOV ESI,dword ptr [EBP + -0x40]
MOV ECX,0xf
LEA EDI,[ESI + 0xfff0a8ab]
MOV ESI,EAX
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JNZ 0x00178c7b
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x40]
MOV byte ptr [EBP + -0x44],DL
PUSH EAX
CALL 0x00029410
ADD ESP,0x10
MOVZX EDX,byte ptr [EBP + -0x44]
JMP 0x001788f6
TEST CL,0x10
JZ 0x001788f6
JMP 0x00178928
MOV EBX,dword ptr [ESI + 0x8]
JMP 0x00178a70
CMP EAX,dword ptr [EBP + -0x48]
JZ 0x00178e22
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x40]
MOV byte ptr [EBP + -0x48],DL
PUSH EAX
CALL 0x001e6dc0
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x10
MOVZX EDX,byte ptr [EBP + -0x48]
MOVZX ECX,byte ptr [EAX + 0x2b]
JMP 0x00178a1d
MOV ESI,dword ptr [EBX + 0x38]
MOV ECX,dword ptr [EBX + 0x3c]
SUB ECX,ESI
SAR ECX,0x2
CMP EAX,ECX
JNC 0x00178e2a
MOV ESI,dword ptr [ESI + EAX*0x4]
TEST ESI,ESI
JNZ 0x00178b48
SUB ESP,0x4
MOV byte ptr [EBP + -0x48],DL
PUSH EAX
PUSH EBX
PUSH dword ptr [EBP + 0xc]
CALL 0x00177880
ADD ESP,0x10
TEST AL,AL
JZ 0x001789e8
MOV EAX,dword ptr [EBP + 0x8]
MOVZX EDX,byte ptr [EBP + -0x48]
TEST byte ptr [EAX + 0x2a],0x7
JNZ 0x00178b48
MOV EAX,dword ptr [EBP + 0x8]
MOV EBX,dword ptr [EAX + 0x8]
TEST byte ptr [EBX + 0x2c],0x1
JZ 0x00178b48
JMP 0x00178a19
MOV EAX,dword ptr [EBP + 0x8]
JMP 0x00178a19
MOV EBX,dword ptr [EBP + -0x40]
PUSH EDI
LEA EAX,[EBX + 0xfff0b434]
PUSH EAX
LEA EAX,[EBX + 0xffef101a]
PUSH 0x50b
PUSH EAX
CALL 0x00069d00
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nuint FUN_001788c0(undefined4 *param_1,undefined4 param_2)\n\n{\n  byte bVar1;\n  undefined **ppuVar2;\n  undefined1 **ppuVar3;\n  undefined **ppuVar4;\n  char cVar5;\n  byte *pbVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  size_t sVar9;\n  byte bVar10;\n  char *__s;\n  int iVar11;\n  int iVar12;\n  undefined1 uVar13;\n  uint uVar14;\n  undefined1 ***pppuVar15;\n  undefined1 ***pppuVar16;\n  undefined1 ***pppuVar17;\n  undefined1 *puVar18;\n  byte *pbVar19;\n  byte *pbVar20;\n  bool bVar21;\n  bool bVar22;\n  bool bVar23;\n  byte bVar24;\n  undefined1 **ppuStack_60;\n  undefined1 auStack_5c [11];\n  undefined1 local_51;\n  char *local_50;\n  undefined1 *local_4c;\n  undefined1 **local_48;\n  undefined **local_44;\n  int local_40 [3];\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  bVar24 = 0;\n  pppuVar17 = (undefined1 ***)auStack_5c;\n  local_44 = &__DT_PLTGOT;\n  bVar10 = *(byte *)((int)param_1 + 0x2b);\n  uVar14 = bVar10 >> 6 & 1;\n  uVar13 = (undefined1)uVar14;\n  if ((bVar10 >> 6 & 1) == 0) {\n    return 0;\n  }\n  bVar1 = *(byte *)((int)param_1 + 0x2a);\n  pbVar6 = (byte *)(uint)bVar1;\n  if ((bVar1 & 0x40) != 0) {\n    return uVar14;\n  }\n  if (((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))\n     && ((bVar10 & 0x10) == 0)) {\n    return uVar14;\n  }\n  local_48 = (undefined1 **)&DAT_0038f378;\n  iVar11 = *(int *)(DAT_0038f378 + 8);\n  puVar18 = auStack_5c;\n  ppuVar3 = (undefined1 **)&DAT_0038f378;\n  ppuVar4 = &__DT_PLTGOT;\n  if (iVar11 == 0) goto LAB_00178b58;\n  if (((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||\n     ((bVar1 & 7) != 0)) {\n    local_48 = (undefined1 **)&DAT_0038f378;\n    if ((bVar1 & 7) == 0) {\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }\nLAB_00178962:\n    local_44 = ppuVar4;\n    pppuVar15 = (undefined1 ***)auStack_5c;\n    pppuVar16 = (undefined1 ***)auStack_5c;\n    local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n    ppuStack_60 = local_34;\n    cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);\n    uVar14 = (uint)local_4c & 0xff;\n    if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    /* try { // try from 001789c4 to 001789c8 has its CatchHandler @ 00178e46 */\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }\n    pbVar6 = *local_48;\n    iVar11 = *(int *)(pbVar6 + 8);\n    puVar18 = auStack_5c;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    if (*(int *)(iVar11 + 0x1344) != 0) {\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar10 = *(byte *)((int)param_1 + 0x2b);\n    pppuVar17 = pppuVar16;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n  }\n  else {\n    iVar11 = param_1[2];\n    ppuVar4 = local_44;\n    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }\nLAB_00178a1d:\n  local_44 = ppuVar4;\n  local_48 = ppuVar3;\n  ppuVar2 = local_44;\n  if ((bVar10 & 0x10) != 0) {\n    return 0;\n  }\n  pbVar6 = *(byte **)(*local_48 + 8);\n  puVar18 = (undefined1 *)pppuVar17;\n  ppuVar3 = local_48;\n  ppuVar4 = local_44;\n  if (pbVar6 == (byte *)0x0) goto LAB_00178b58;\n  if (pbVar6[0xe89] == 0) {\nLAB_00178c1e:\n    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;\n    if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }\n  }\n  else {\n    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }\n    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;\nLAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;\n  }\n  *(undefined4 *)((int)pppuVar17 + -0xc) = 3;\n  *(undefined4 *)((int)pppuVar17 + -0x10) = *param_1;\n  *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178c55;\n  pbVar6 = (byte *)FUN_001cef00();\n  if (pbVar6 != (byte *)0x0) {\n    iVar11 = *(int *)(*local_48 + 8);\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    cVar5 = *(char *)(iVar11 + 0xf05);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    cVar5 = *(char *)(iVar11 + 0xf81);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n    *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;\n    free(*(void **)((int)pppuVar17 + -0x10));\n  }\n  pbVar6 = *(byte **)(*local_48 + 8);\n  if (pbVar6 != (byte *)0x0) {\nLAB_00178a80:\n    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }\n    return 0;\n  }\n  pbVar6 = (byte *)0x0;\n  ppuVar3 = local_48;\n  ppuVar4 = local_44;\nLAB_00178b58:\n  local_44 = ppuVar4;\n  local_48 = ppuVar3;\n  *(byte **)(puVar18 + -4) = pbVar6;\n  *(undefined ***)(puVar18 + -8) = local_44 + -0x3d2de;\n  *(undefined4 *)(puVar18 + -0xc) = 0x5c;\n  *(undefined ***)(puVar18 + -0x10) = local_44 + -0x41f7c;\n                    /* WARNING: Subroutine does not return */\n  *(undefined **)(puVar18 + -0x14) = &UNK_00178b71;\n  FUN_00069d00();\n}\n\n" comment (function_definition "uint FUN_001788c0(undefined4 *param_1,undefined4 param_2)\n\n{\n  byte bVar1;\n  undefined **ppuVar2;\n  undefined1 **ppuVar3;\n  undefined **ppuVar4;\n  char cVar5;\n  byte *pbVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  size_t sVar9;\n  byte bVar10;\n  char *__s;\n  int iVar11;\n  int iVar12;\n  undefined1 uVar13;\n  uint uVar14;\n  undefined1 ***pppuVar15;\n  undefined1 ***pppuVar16;\n  undefined1 ***pppuVar17;\n  undefined1 *puVar18;\n  byte *pbVar19;\n  byte *pbVar20;\n  bool bVar21;\n  bool bVar22;\n  bool bVar23;\n  byte bVar24;\n  undefined1 **ppuStack_60;\n  undefined1 auStack_5c [11];\n  undefined1 local_51;\n  char *local_50;\n  undefined1 *local_4c;\n  undefined1 **local_48;\n  undefined **local_44;\n  int local_40 [3];\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  bVar24 = 0;\n  pppuVar17 = (undefined1 ***)auStack_5c;\n  local_44 = &__DT_PLTGOT;\n  bVar10 = *(byte *)((int)param_1 + 0x2b);\n  uVar14 = bVar10 >> 6 & 1;\n  uVar13 = (undefined1)uVar14;\n  if ((bVar10 >> 6 & 1) == 0) {\n    return 0;\n  }\n  bVar1 = *(byte *)((int)param_1 + 0x2a);\n  pbVar6 = (byte *)(uint)bVar1;\n  if ((bVar1 & 0x40) != 0) {\n    return uVar14;\n  }\n  if (((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))\n     && ((bVar10 & 0x10) == 0)) {\n    return uVar14;\n  }\n  local_48 = (undefined1 **)&DAT_0038f378;\n  iVar11 = *(int *)(DAT_0038f378 + 8);\n  puVar18 = auStack_5c;\n  ppuVar3 = (undefined1 **)&DAT_0038f378;\n  ppuVar4 = &__DT_PLTGOT;\n  if (iVar11 == 0) goto LAB_00178b58;\n  if (((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||\n     ((bVar1 & 7) != 0)) {\n    local_48 = (undefined1 **)&DAT_0038f378;\n    if ((bVar1 & 7) == 0) {\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }\nLAB_00178962:\n    local_44 = ppuVar4;\n    pppuVar15 = (undefined1 ***)auStack_5c;\n    pppuVar16 = (undefined1 ***)auStack_5c;\n    local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n    ppuStack_60 = local_34;\n    cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);\n    uVar14 = (uint)local_4c & 0xff;\n    if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    /* try { // try from 001789c4 to 001789c8 has its CatchHandler @ 00178e46 */\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }\n    pbVar6 = *local_48;\n    iVar11 = *(int *)(pbVar6 + 8);\n    puVar18 = auStack_5c;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    if (*(int *)(iVar11 + 0x1344) != 0) {\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar10 = *(byte *)((int)param_1 + 0x2b);\n    pppuVar17 = pppuVar16;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n  }\n  else {\n    iVar11 = param_1[2];\n    ppuVar4 = local_44;\n    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }\nLAB_00178a1d:\n  local_44 = ppuVar4;\n  local_48 = ppuVar3;\n  ppuVar2 = local_44;\n  if ((bVar10 & 0x10) != 0) {\n    return 0;\n  }\n  pbVar6 = *(byte **)(*local_48 + 8);\n  puVar18 = (undefined1 *)pppuVar17;\n  ppuVar3 = local_48;\n  ppuVar4 = local_44;\n  if (pbVar6 == (byte *)0x0) goto LAB_00178b58;\n  if (pbVar6[0xe89] == 0) {\nLAB_00178c1e:\n    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;\n    if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }\n  }\n  else {\n    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }\n    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;\nLAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;\n  }\n  *(undefined4 *)((int)pppuVar17 + -0xc) = 3;\n  *(undefined4 *)((int)pppuVar17 + -0x10) = *param_1;\n  *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178c55;\n  pbVar6 = (byte *)FUN_001cef00();\n  if (pbVar6 != (byte *)0x0) {\n    iVar11 = *(int *)(*local_48 + 8);\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    cVar5 = *(char *)(iVar11 + 0xf05);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    cVar5 = *(char *)(iVar11 + 0xf81);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n    *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;\n    free(*(void **)((int)pppuVar17 + -0x10));\n  }\n  pbVar6 = *(byte **)(*local_48 + 8);\n  if (pbVar6 != (byte *)0x0) {\nLAB_00178a80:\n    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }\n    return 0;\n  }\n  pbVar6 = (byte *)0x0;\n  ppuVar3 = local_48;\n  ppuVar4 = local_44;\nLAB_00178b58:\n  local_44 = ppuVar4;\n  local_48 = ppuVar3;\n  *(byte **)(puVar18 + -4) = pbVar6;\n  *(undefined ***)(puVar18 + -8) = local_44 + -0x3d2de;\n  *(undefined4 *)(puVar18 + -0xc) = 0x5c;\n  *(undefined ***)(puVar18 + -0x10) = local_44 + -0x41f7c;\n                    /* WARNING: Subroutine does not return */\n  *(undefined **)(puVar18 + -0x14) = &UNK_00178b71;\n  FUN_00069d00();\n}" type_identifier (function_declarator "FUN_001788c0(undefined4 *param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  undefined **ppuVar2;\n  undefined1 **ppuVar3;\n  undefined **ppuVar4;\n  char cVar5;\n  byte *pbVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  size_t sVar9;\n  byte bVar10;\n  char *__s;\n  int iVar11;\n  int iVar12;\n  undefined1 uVar13;\n  uint uVar14;\n  undefined1 ***pppuVar15;\n  undefined1 ***pppuVar16;\n  undefined1 ***pppuVar17;\n  undefined1 *puVar18;\n  byte *pbVar19;\n  byte *pbVar20;\n  bool bVar21;\n  bool bVar22;\n  bool bVar23;\n  byte bVar24;\n  undefined1 **ppuStack_60;\n  undefined1 auStack_5c [11];\n  undefined1 local_51;\n  char *local_50;\n  undefined1 *local_4c;\n  undefined1 **local_48;\n  undefined **local_44;\n  int local_40 [3];\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  bVar24 = 0;\n  pppuVar17 = (undefined1 ***)auStack_5c;\n  local_44 = &__DT_PLTGOT;\n  bVar10 = *(byte *)((int)param_1 + 0x2b);\n  uVar14 = bVar10 >> 6 & 1;\n  uVar13 = (undefined1)uVar14;\n  if ((bVar10 >> 6 & 1) == 0) {\n    return 0;\n  }\n  bVar1 = *(byte *)((int)param_1 + 0x2a);\n  pbVar6 = (byte *)(uint)bVar1;\n  if ((bVar1 & 0x40) != 0) {\n    return uVar14;\n  }\n  if (((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))\n     && ((bVar10 & 0x10) == 0)) {\n    return uVar14;\n  }\n  local_48 = (undefined1 **)&DAT_0038f378;\n  iVar11 = *(int *)(DAT_0038f378 + 8);\n  puVar18 = auStack_5c;\n  ppuVar3 = (undefined1 **)&DAT_0038f378;\n  ppuVar4 = &__DT_PLTGOT;\n  if (iVar11 == 0) goto LAB_00178b58;\n  if (((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||\n     ((bVar1 & 7) != 0)) {\n    local_48 = (undefined1 **)&DAT_0038f378;\n    if ((bVar1 & 7) == 0) {\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }\nLAB_00178962:\n    local_44 = ppuVar4;\n    pppuVar15 = (undefined1 ***)auStack_5c;\n    pppuVar16 = (undefined1 ***)auStack_5c;\n    local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n    ppuStack_60 = local_34;\n    cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);\n    uVar14 = (uint)local_4c & 0xff;\n    if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    /* try { // try from 001789c4 to 001789c8 has its CatchHandler @ 00178e46 */\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }\n    pbVar6 = *local_48;\n    iVar11 = *(int *)(pbVar6 + 8);\n    puVar18 = auStack_5c;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    if (*(int *)(iVar11 + 0x1344) != 0) {\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar10 = *(byte *)((int)param_1 + 0x2b);\n    pppuVar17 = pppuVar16;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n  }\n  else {\n    iVar11 = param_1[2];\n    ppuVar4 = local_44;\n    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }\nLAB_00178a1d:\n  local_44 = ppuVar4;\n  local_48 = ppuVar3;\n  ppuVar2 = local_44;\n  if ((bVar10 & 0x10) != 0) {\n    return 0;\n  }\n  pbVar6 = *(byte **)(*local_48 + 8);\n  puVar18 = (undefined1 *)pppuVar17;\n  ppuVar3 = local_48;\n  ppuVar4 = local_44;\n  if (pbVar6 == (byte *)0x0) goto LAB_00178b58;\n  if (pbVar6[0xe89] == 0) {\nLAB_00178c1e:\n    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;\n    if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }\n  }\n  else {\n    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }\n    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;\nLAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;\n  }\n  *(undefined4 *)((int)pppuVar17 + -0xc) = 3;\n  *(undefined4 *)((int)pppuVar17 + -0x10) = *param_1;\n  *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178c55;\n  pbVar6 = (byte *)FUN_001cef00();\n  if (pbVar6 != (byte *)0x0) {\n    iVar11 = *(int *)(*local_48 + 8);\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    cVar5 = *(char *)(iVar11 + 0xf05);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    cVar5 = *(char *)(iVar11 + 0xf81);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n    *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;\n    free(*(void **)((int)pppuVar17 + -0x10));\n  }\n  pbVar6 = *(byte **)(*local_48 + 8);\n  if (pbVar6 != (byte *)0x0) {\nLAB_00178a80:\n    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }\n    return 0;\n  }\n  pbVar6 = (byte *)0x0;\n  ppuVar3 = local_48;\n  ppuVar4 = local_44;\nLAB_00178b58:\n  local_44 = ppuVar4;\n  local_48 = ppuVar3;\n  *(byte **)(puVar18 + -4) = pbVar6;\n  *(undefined ***)(puVar18 + -8) = local_44 + -0x3d2de;\n  *(undefined4 *)(puVar18 + -0xc) = 0x5c;\n  *(undefined ***)(puVar18 + -0x10) = local_44 + -0x41f7c;\n                    /* WARNING: Subroutine does not return */\n  *(undefined **)(puVar18 + -0x14) = &UNK_00178b71;\n  FUN_00069d00();\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined **ppuVar2;" type_identifier (pointer_declarator "**ppuVar2" * (pointer_declarator "*ppuVar2" * identifier)) ;) (declaration "undefined1 **ppuVar3;" type_identifier (pointer_declarator "**ppuVar3" * (pointer_declarator "*ppuVar3" * identifier)) ;) (declaration "undefined **ppuVar4;" type_identifier (pointer_declarator "**ppuVar4" * (pointer_declarator "*ppuVar4" * identifier)) ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "size_t sVar9;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined1 uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "undefined1 ***pppuVar15;" type_identifier (pointer_declarator "***pppuVar15" * (pointer_declarator "**pppuVar15" * (pointer_declarator "*pppuVar15" * identifier))) ;) (declaration "undefined1 ***pppuVar16;" type_identifier (pointer_declarator "***pppuVar16" * (pointer_declarator "**pppuVar16" * (pointer_declarator "*pppuVar16" * identifier))) ;) (declaration "undefined1 ***pppuVar17;" type_identifier (pointer_declarator "***pppuVar17" * (pointer_declarator "**pppuVar17" * (pointer_declarator "*pppuVar17" * identifier))) ;) (declaration "undefined1 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "byte *pbVar19;" type_identifier (pointer_declarator "*pbVar19" * identifier) ;) (declaration "byte *pbVar20;" type_identifier (pointer_declarator "*pbVar20" * identifier) ;) (declaration "bool bVar21;" primitive_type identifier ;) (declaration "bool bVar22;" primitive_type identifier ;) (declaration "bool bVar23;" primitive_type identifier ;) (declaration "byte bVar24;" type_identifier identifier ;) (declaration "undefined1 **ppuStack_60;" type_identifier (pointer_declarator "**ppuStack_60" * (pointer_declarator "*ppuStack_60" * identifier)) ;) (declaration "undefined1 auStack_5c [11];" type_identifier (array_declarator "auStack_5c [11]" identifier [ number_literal ]) ;) (declaration "undefined1 local_51;" type_identifier identifier ;) (declaration "char *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined1 *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "undefined1 **local_48;" type_identifier (pointer_declarator "**local_48" * (pointer_declarator "*local_48" * identifier)) ;) (declaration "undefined **local_44;" type_identifier (pointer_declarator "**local_44" * (pointer_declarator "*local_44" * identifier)) ;) (declaration "int local_40 [3];" primitive_type (array_declarator "local_40 [3]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_34 [2];" type_identifier (pointer_declarator "*local_34 [2]" * (array_declarator "local_34 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "bVar24 = 0;" (assignment_expression "bVar24 = 0" identifier = number_literal) ;) (expression_statement "pppuVar17 = (undefined1 ***)auStack_5c;" (assignment_expression "pppuVar17 = (undefined1 ***)auStack_5c" identifier = (cast_expression "(undefined1 ***)auStack_5c" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (expression_statement "local_44 = &__DT_PLTGOT;" (assignment_expression "local_44 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "bVar10 = *(byte *)((int)param_1 + 0x2b);" (assignment_expression "bVar10 = *(byte *)((int)param_1 + 0x2b)" identifier = (pointer_expression "*(byte *)((int)param_1 + 0x2b)" * (cast_expression "(byte *)((int)param_1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2b)" ( (binary_expression "(int)param_1 + 0x2b" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar14 = bVar10 >> 6 & 1;" (assignment_expression "uVar14 = bVar10 >> 6 & 1" identifier = (binary_expression "bVar10 >> 6 & 1" (binary_expression "bVar10 >> 6" identifier >> number_literal) & number_literal)) ;) (expression_statement "uVar13 = (undefined1)uVar14;" (assignment_expression "uVar13 = (undefined1)uVar14" identifier = (cast_expression "(undefined1)uVar14" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (if_statement "if ((bVar10 >> 6 & 1) == 0) {\n    return 0;\n  }" if (parenthesized_expression "((bVar10 >> 6 & 1) == 0)" ( (binary_expression "(bVar10 >> 6 & 1) == 0" (parenthesized_expression "(bVar10 >> 6 & 1)" ( (binary_expression "bVar10 >> 6 & 1" (binary_expression "bVar10 >> 6" identifier >> number_literal) & number_literal) )) == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar1 = *(byte *)((int)param_1 + 0x2a);" (assignment_expression "bVar1 = *(byte *)((int)param_1 + 0x2a)" identifier = (pointer_expression "*(byte *)((int)param_1 + 0x2a)" * (cast_expression "(byte *)((int)param_1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2a)" ( (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pbVar6 = (byte *)(uint)bVar1;" (assignment_expression "pbVar6 = (byte *)(uint)bVar1" identifier = (cast_expression "(byte *)(uint)bVar1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if ((bVar1 & 0x40) != 0) {\n    return uVar14;\n  }" if (parenthesized_expression "((bVar1 & 0x40) != 0)" ( (binary_expression "(bVar1 & 0x40) != 0" (parenthesized_expression "(bVar1 & 0x40)" ( (binary_expression "bVar1 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return uVar14;\n  }" { (return_statement "return uVar14;" return identifier ;) })) (if_statement "if (((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))\n     && ((bVar10 & 0x10) == 0)) {\n    return uVar14;\n  }" if (parenthesized_expression "(((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))\n     && ((bVar10 & 0x10) == 0))" ( (binary_expression "((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))\n     && ((bVar10 & 0x10) == 0)" (parenthesized_expression "((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))" ( (binary_expression "(((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)))" (parenthesized_expression "(((char)bVar1 < '\0') && ((bVar10 & 1) != 0))" ( (binary_expression "((char)bVar1 < '\0') && ((bVar10 & 1) != 0)" (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((bVar10 & 1) != 0)" ( (binary_expression "(bVar10 & 1) != 0" (parenthesized_expression "(bVar10 & 1)" ( (binary_expression "bVar10 & 1" identifier & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)))" ( (parenthesized_expression "((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))" ( (binary_expression "(*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)" (binary_expression "(*(byte *)((int)param_1 + 0x29) & 3) == 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x29) & 3)" ( (binary_expression "*(byte *)((int)param_1 + 0x29) & 3" (pointer_expression "*(byte *)((int)param_1 + 0x29)" * (cast_expression "(byte *)((int)param_1 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x29)" ( (binary_expression "(int)param_1 + 0x29" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) || (parenthesized_expression "((*(byte *)((int)param_1 + 0x29) & 3) == 3)" ( (binary_expression "(*(byte *)((int)param_1 + 0x29) & 3) == 3" (parenthesized_expression "(*(byte *)((int)param_1 + 0x29) & 3)" ( (binary_expression "*(byte *)((int)param_1 + 0x29) & 3" (pointer_expression "*(byte *)((int)param_1 + 0x29)" * (cast_expression "(byte *)((int)param_1 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x29)" ( (binary_expression "(int)param_1 + 0x29" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) ))) )) ))) )) && (parenthesized_expression "((bVar10 & 0x10) == 0)" ( (binary_expression "(bVar10 & 0x10) == 0" (parenthesized_expression "(bVar10 & 0x10)" ( (binary_expression "bVar10 & 0x10" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    return uVar14;\n  }" { (return_statement "return uVar14;" return identifier ;) })) (expression_statement "local_48 = (undefined1 **)&DAT_0038f378;" (assignment_expression "local_48 = (undefined1 **)&DAT_0038f378" identifier = (cast_expression "(undefined1 **)&DAT_0038f378" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_0038f378" & identifier))) ;) (expression_statement "iVar11 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar11 = *(int *)(DAT_0038f378 + 8)" identifier = (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) ))))) ;) (expression_statement "puVar18 = auStack_5c;" (assignment_expression "puVar18 = auStack_5c" identifier = identifier) ;) (expression_statement "ppuVar3 = (undefined1 **)&DAT_0038f378;" (assignment_expression "ppuVar3 = (undefined1 **)&DAT_0038f378" identifier = (cast_expression "(undefined1 **)&DAT_0038f378" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_0038f378" & identifier))) ;) (expression_statement "ppuVar4 = &__DT_PLTGOT;" (assignment_expression "ppuVar4 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (if_statement "if (iVar11 == 0) goto LAB_00178b58;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00178b58;" goto statement_identifier ;)) (if_statement "if (((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||\n     ((bVar1 & 7) != 0)) {\n    local_48 = (undefined1 **)&DAT_0038f378;\n    if ((bVar1 & 7) == 0) {\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }\nLAB_00178962:\n    local_44 = ppuVar4;\n    pppuVar15 = (undefined1 ***)auStack_5c;\n    pppuVar16 = (undefined1 ***)auStack_5c;\n    local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n    ppuStack_60 = local_34;\n    cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);\n    uVar14 = (uint)local_4c & 0xff;\n    if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    /* try { // try from 001789c4 to 001789c8 has its CatchHandler @ 00178e46 */\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }\n    pbVar6 = *local_48;\n    iVar11 = *(int *)(pbVar6 + 8);\n    puVar18 = auStack_5c;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    if (*(int *)(iVar11 + 0x1344) != 0) {\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar10 = *(byte *)((int)param_1 + 0x2b);\n    pppuVar17 = pppuVar16;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n  }\n  else {\n    iVar11 = param_1[2];\n    ppuVar4 = local_44;\n    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }" if (parenthesized_expression "(((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||\n     ((bVar1 & 7) != 0))" ( (binary_expression "((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||\n     ((bVar1 & 7) != 0)" (parenthesized_expression "((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0'))" ( (binary_expression "(*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')" (parenthesized_expression "(*(char *)(iVar11 + 0x18b1) == '\0')" ( (binary_expression "*(char *)(iVar11 + 0x18b1) == '\0'" (pointer_expression "*(char *)(iVar11 + 0x18b1)" * (cast_expression "(char *)(iVar11 + 0x18b1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x18b1)" ( (binary_expression "iVar11 + 0x18b1" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(char *)(iVar11 + 0x1a25) != '\0')" ( (binary_expression "*(char *)(iVar11 + 0x1a25) != '\0'" (pointer_expression "*(char *)(iVar11 + 0x1a25)" * (cast_expression "(char *)(iVar11 + 0x1a25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x1a25)" ( (binary_expression "iVar11 + 0x1a25" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) || (parenthesized_expression "((bVar1 & 7) != 0)" ( (binary_expression "(bVar1 & 7) != 0" (parenthesized_expression "(bVar1 & 7)" ( (binary_expression "bVar1 & 7" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    local_48 = (undefined1 **)&DAT_0038f378;\n    if ((bVar1 & 7) == 0) {\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }\nLAB_00178962:\n    local_44 = ppuVar4;\n    pppuVar15 = (undefined1 ***)auStack_5c;\n    pppuVar16 = (undefined1 ***)auStack_5c;\n    local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n    ppuStack_60 = local_34;\n    cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);\n    uVar14 = (uint)local_4c & 0xff;\n    if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    /* try { // try from 001789c4 to 001789c8 has its CatchHandler @ 00178e46 */\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }\n    pbVar6 = *local_48;\n    iVar11 = *(int *)(pbVar6 + 8);\n    puVar18 = auStack_5c;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    if (*(int *)(iVar11 + 0x1344) != 0) {\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar10 = *(byte *)((int)param_1 + 0x2b);\n    pppuVar17 = pppuVar16;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n  }" { (expression_statement "local_48 = (undefined1 **)&DAT_0038f378;" (assignment_expression "local_48 = (undefined1 **)&DAT_0038f378" identifier = (cast_expression "(undefined1 **)&DAT_0038f378" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_0038f378" & identifier))) ;) (if_statement "if ((bVar1 & 7) == 0) {\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }" if (parenthesized_expression "((bVar1 & 7) == 0)" ( (binary_expression "(bVar1 & 7) == 0" (parenthesized_expression "(bVar1 & 7)" ( (binary_expression "bVar1 & 7" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }" { (expression_statement "pppuVar17 = (undefined1 ***)auStack_5c;" (assignment_expression "pppuVar17 = (undefined1 ***)auStack_5c" identifier = (cast_expression "(undefined1 ***)auStack_5c" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (if_statement "if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;" if (parenthesized_expression "((*(byte *)(param_1[2] + 0x2c) & 1) != 0)" ( (binary_expression "(*(byte *)(param_1[2] + 0x2c) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1[2] + 0x2c) & 1)" ( (binary_expression "*(byte *)(param_1[2] + 0x2c) & 1" (pointer_expression "*(byte *)(param_1[2] + 0x2c)" * (cast_expression "(byte *)(param_1[2] + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[2] + 0x2c)" ( (binary_expression "param_1[2] + 0x2c" (subscript_expression "param_1[2]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00178a1d;" goto statement_identifier ;)) (expression_statement "iVar11 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar11 = *(int *)(DAT_0038f378 + 8)" identifier = (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) ))))) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) })) (labeled_statement "LAB_00178962:\n    local_44 = ppuVar4;" statement_identifier : (expression_statement "local_44 = ppuVar4;" (assignment_expression "local_44 = ppuVar4" identifier = identifier) ;)) (expression_statement "pppuVar15 = (undefined1 ***)auStack_5c;" (assignment_expression "pppuVar15 = (undefined1 ***)auStack_5c" identifier = (cast_expression "(undefined1 ***)auStack_5c" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (expression_statement "pppuVar16 = (undefined1 ***)auStack_5c;" (assignment_expression "pppuVar16 = (undefined1 ***)auStack_5c" identifier = (cast_expression "(undefined1 ***)auStack_5c" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (expression_statement "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);" (assignment_expression "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13)" identifier = (cast_expression "(undefined1 *)CONCAT31(local_4c._1_3_,uVar13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT31(local_4c._1_3_,uVar13)" identifier (argument_list "(local_4c._1_3_,uVar13)" ( (field_expression "local_4c._1_3_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "ppuStack_60 = local_34;" (assignment_expression "ppuStack_60 = local_34" identifier = identifier) ;) (expression_statement "cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);" (assignment_expression "cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0)" identifier = (call_expression "FUN_0016e030(iVar11 + 0x59a8,*param_1,0)" identifier (argument_list "(iVar11 + 0x59a8,*param_1,0)" ( (binary_expression "iVar11 + 0x59a8" identifier + number_literal) , (pointer_expression "*param_1" * identifier) , number_literal )))) ;) (expression_statement "uVar14 = (uint)local_4c & 0xff;" (assignment_expression "uVar14 = (uint)local_4c & 0xff" identifier = (binary_expression "(uint)local_4c & 0xff" (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (if_statement "if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    /* try { // try from 001789c4 to 001789c8 has its CatchHandler @ 00178e46 */\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }" if (parenthesized_expression "((cVar5 != '\0') && ((char)local_34[0] == '\0'))" ( (binary_expression "(cVar5 != '\0') && ((char)local_34[0] == '\0')" (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((char)local_34[0] == '\0')" ( (binary_expression "(char)local_34[0] == '\0'" (cast_expression "(char)local_34[0]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "local_34[0]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    /* try { // try from 001789c4 to 001789c8 has its CatchHandler @ 00178e46 */\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }" { (labeled_statement "LAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }" statement_identifier : (if_statement "if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }" if (parenthesized_expression "((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0)" ( (binary_expression "(*(byte *)((int)param_1 + 0x2b) & 0x10) == 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2b) & 0x10)" ( (binary_expression "*(byte *)((int)param_1 + 0x2b) & 0x10" (pointer_expression "*(byte *)((int)param_1 + 0x2b)" * (cast_expression "(byte *)((int)param_1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2b)" ( (binary_expression "(int)param_1 + 0x2b" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        return uVar14;\n      }" { (return_statement "return uVar14;" return identifier ;) }))) (expression_statement "*(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;" (assignment_expression "*(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9" (pointer_expression "*(undefined4 *)((int)pppuVar15 + -4)" * (cast_expression "(undefined4 *)((int)pppuVar15 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar15 + -4)" ( (binary_expression "(int)pppuVar15 + -4" (cast_expression "(int)pppuVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00178770();" (call_expression "FUN_00178770()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar18 = local_34[0];" (assignment_expression "puVar18 = local_34[0]" identifier = (subscript_expression "local_34[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;" (assignment_expression "*(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6" (pointer_expression "*(undefined ***)((int)pppuVar15 + -0x10)" * (cast_expression "(undefined ***)((int)pppuVar15 + -0x10)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar15 + -0x10)" ( (binary_expression "(int)pppuVar15 + -0x10" (cast_expression "(int)pppuVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_44 + -0x3d5b6" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;" (assignment_expression "*(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0" (pointer_expression "*(undefined4 *)((int)pppuVar15 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar15 + -0x14)" ( (binary_expression "(int)pppuVar15 + -0x14" (cast_expression "(int)pppuVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = gettext();" (assignment_expression "uVar7 = gettext()" identifier = (call_expression "gettext()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;" (assignment_expression "*(undefined1 **)((int)pppuVar15 + -0xc) = puVar18" (pointer_expression "*(undefined1 **)((int)pppuVar15 + -0xc)" * (cast_expression "(undefined1 **)((int)pppuVar15 + -0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar15 + -0xc)" ( (binary_expression "(int)pppuVar15 + -0xc" (cast_expression "(int)pppuVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;" (assignment_expression "*(undefined4 *)((int)pppuVar15 + -0x10) = uVar7" (pointer_expression "*(undefined4 *)((int)pppuVar15 + -0x10)" * (cast_expression "(undefined4 *)((int)pppuVar15 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar15 + -0x10)" ( (binary_expression "(int)pppuVar15 + -0x10" (cast_expression "(int)pppuVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) comment (expression_statement "*(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;" (assignment_expression "*(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9" (pointer_expression "*(undefined4 *)((int)pppuVar15 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar15 + -0x14)" ( (binary_expression "(int)pppuVar15 + -0x14" (cast_expression "(int)pppuVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000654e0();" (call_expression "FUN_000654e0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_34[0] == local_2c) {\n        return 0;\n      }" if (parenthesized_expression "(local_34[0] == local_2c)" ( (binary_expression "local_34[0] == local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];" (assignment_expression "*(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0]" (pointer_expression "*(undefined1 **)((int)pppuVar15 + -0x10)" * (cast_expression "(undefined1 **)((int)pppuVar15 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar15 + -0x10)" ( (binary_expression "(int)pppuVar15 + -0x10" (cast_expression "(int)pppuVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (subscript_expression "local_34[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;" (assignment_expression "*(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df" (pointer_expression "*(undefined4 *)((int)pppuVar15 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar15 + -0x14)" ( (binary_expression "(int)pppuVar15 + -0x14" (cast_expression "(int)pppuVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001e6dc0();" (call_expression "FUN_001e6dc0()" identifier (argument_list "()" ( ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar6 = *local_48;" (assignment_expression "pbVar6 = *local_48" identifier = (pointer_expression "*local_48" * identifier)) ;) (expression_statement "iVar11 = *(int *)(pbVar6 + 8);" (assignment_expression "iVar11 = *(int *)(pbVar6 + 8)" identifier = (pointer_expression "*(int *)(pbVar6 + 8)" * (cast_expression "(int *)(pbVar6 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 8)" ( (binary_expression "pbVar6 + 8" identifier + number_literal) ))))) ;) (expression_statement "puVar18 = auStack_5c;" (assignment_expression "puVar18 = auStack_5c" identifier = identifier) ;) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" identifier = identifier) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) (if_statement "if (iVar11 == 0) goto LAB_00178b58;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00178b58;" goto statement_identifier ;)) (if_statement "if (*(int *)(iVar11 + 0x1344) != 0) {\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }" if (parenthesized_expression "(*(int *)(iVar11 + 0x1344) != 0)" ( (binary_expression "*(int *)(iVar11 + 0x1344) != 0" (pointer_expression "*(int *)(iVar11 + 0x1344)" * (cast_expression "(int *)(iVar11 + 0x1344)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x1344)" ( (binary_expression "iVar11 + 0x1344" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }" { (expression_statement "__s = (char *)*param_1;" (assignment_expression "__s = (char *)*param_1" identifier = (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "local_34[0] = local_2c;" (assignment_expression "local_34[0] = local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar8 = (char *)0xffffffff;" (assignment_expression "pcVar8 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar13 = local_4c._0_1_;" (assignment_expression "uVar13 = local_4c._0_1_" identifier = (field_expression "local_4c._0_1_" identifier . field_identifier)) ;) (expression_statement "puVar18 = local_34[0];" (assignment_expression "puVar18 = local_34[0]" identifier = (subscript_expression "local_34[0]" identifier [ number_literal ])) ;) (if_statement "if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }" if (parenthesized_expression "(__s != (char *)0x0)" ( (binary_expression "__s != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }" { (expression_statement "local_51 = local_4c._0_1_;" (assignment_expression "local_51 = local_4c._0_1_" identifier = (field_expression "local_4c._0_1_" identifier . field_identifier)) ;) (expression_statement "local_50 = __s;" (assignment_expression "local_50 = __s" identifier = identifier) ;) (expression_statement "local_4c = local_34[0];" (assignment_expression "local_4c = local_34[0]" identifier = (subscript_expression "local_34[0]" identifier [ number_literal ])) ;) (expression_statement "sVar9 = strlen(__s);" (assignment_expression "sVar9 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "pcVar8 = local_50 + sVar9;" (assignment_expression "pcVar8 = local_50 + sVar9" identifier = (binary_expression "local_50 + sVar9" identifier + identifier)) ;) (expression_statement "__s = local_50;" (assignment_expression "__s = local_50" identifier = identifier) ;) (expression_statement "uVar13 = local_51;" (assignment_expression "uVar13 = local_51" identifier = identifier) ;) (expression_statement "puVar18 = local_4c;" (assignment_expression "puVar18 = local_4c" identifier = identifier) ;) })) (expression_statement "local_4c = puVar18;" (assignment_expression "local_4c = puVar18" identifier = identifier) ;) (expression_statement "ppuStack_60 = (undefined1 **)0x0;" (assignment_expression "ppuStack_60 = (undefined1 **)0x0" identifier = (cast_expression "(undefined1 **)0x0" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);" (assignment_expression "local_50 = (char *)CONCAT31(local_50._1_3_,uVar13)" identifier = (cast_expression "(char *)CONCAT31(local_50._1_3_,uVar13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT31(local_50._1_3_,uVar13)" identifier (argument_list "(local_50._1_3_,uVar13)" ( (field_expression "local_50._1_3_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "FUN_00050e40(local_34,__s,pcVar8);" (call_expression "FUN_00050e40(local_34,__s,pcVar8)" identifier (argument_list "(local_34,__s,pcVar8)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_000ba920(local_40,iVar11 + 0x1338,local_34);" (call_expression "FUN_000ba920(local_40,iVar11 + 0x1338,local_34)" identifier (argument_list "(local_40,iVar11 + 0x1338,local_34)" ( identifier , (binary_expression "iVar11 + 0x1338" identifier + number_literal) , identifier ))) ;) (expression_statement "pppuVar16 = &ppuStack_60;" (assignment_expression "pppuVar16 = &ppuStack_60" identifier = (pointer_expression "&ppuStack_60" & identifier)) ;) (expression_statement "pppuVar15 = &ppuStack_60;" (assignment_expression "pppuVar15 = &ppuStack_60" identifier = (pointer_expression "&ppuStack_60" & identifier)) ;) (expression_statement "uVar14 = (uint)local_50 & 0xff;" (assignment_expression "uVar14 = (uint)local_50 & 0xff" identifier = (binary_expression "(uint)local_50 & 0xff" (cast_expression "(uint)local_50" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (if_statement "if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }" if (parenthesized_expression "(local_40[0] != 0)" ( (binary_expression "local_40[0] != 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }" { (if_statement "if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }" if (parenthesized_expression "(local_34[0] != local_4c)" ( (binary_expression "local_34[0] != local_4c" (subscript_expression "local_34[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }" { (expression_statement "local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);" (assignment_expression "local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_)" identifier = (cast_expression "(undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "CONCAT31(local_48._1_3_,local_50._0_1_)" identifier (argument_list "(local_48._1_3_,local_50._0_1_)" ( (field_expression "local_48._1_3_" identifier . field_identifier) , (field_expression "local_50._0_1_" identifier . field_identifier) ))))) ;) (expression_statement "FUN_001e6dc0(local_34[0]);" (call_expression "FUN_001e6dc0(local_34[0])" identifier (argument_list "(local_34[0])" ( (subscript_expression "local_34[0]" identifier [ number_literal ]) ))) ;) (expression_statement "pppuVar15 = &ppuStack_60;" (assignment_expression "pppuVar15 = &ppuStack_60" identifier = (pointer_expression "&ppuStack_60" & identifier)) ;) (expression_statement "uVar14 = (uint)local_48 & 0xff;" (assignment_expression "uVar14 = (uint)local_48 & 0xff" identifier = (binary_expression "(uint)local_48 & 0xff" (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) })) (goto_statement "goto LAB_00178990;" goto statement_identifier ;) })) (if_statement "if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }" if (parenthesized_expression "(local_34[0] != local_4c)" ( (binary_expression "local_34[0] != local_4c" (subscript_expression "local_34[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }" { (expression_statement "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);" (assignment_expression "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_)" identifier = (cast_expression "(undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT31(local_4c._1_3_,local_50._0_1_)" identifier (argument_list "(local_4c._1_3_,local_50._0_1_)" ( (field_expression "local_4c._1_3_" identifier . field_identifier) , (field_expression "local_50._0_1_" identifier . field_identifier) ))))) ;) (expression_statement "FUN_001e6dc0(local_34[0]);" (call_expression "FUN_001e6dc0(local_34[0])" identifier (argument_list "(local_34[0])" ( (subscript_expression "local_34[0]" identifier [ number_literal ]) ))) ;) (expression_statement "uVar14 = (uint)local_4c & 0xff;" (assignment_expression "uVar14 = (uint)local_4c & 0xff" identifier = (binary_expression "(uint)local_4c & 0xff" (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "bVar10 = *(byte *)((int)param_1 + 0x2b);" (assignment_expression "bVar10 = *(byte *)((int)param_1 + 0x2b)" identifier = (pointer_expression "*(byte *)((int)param_1 + 0x2b)" * (cast_expression "(byte *)((int)param_1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2b)" ( (binary_expression "(int)param_1 + 0x2b" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pppuVar17 = &ppuStack_60;" (assignment_expression "pppuVar17 = &ppuStack_60" identifier = (pointer_expression "&ppuStack_60" & identifier)) ;) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" identifier = identifier) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) (goto_statement "goto LAB_00178a1d;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00178a19:\n    bVar10 = *(byte *)((int)param_1 + 0x2b);" statement_identifier : (expression_statement "bVar10 = *(byte *)((int)param_1 + 0x2b);" (assignment_expression "bVar10 = *(byte *)((int)param_1 + 0x2b)" identifier = (pointer_expression "*(byte *)((int)param_1 + 0x2b)" * (cast_expression "(byte *)((int)param_1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2b)" ( (binary_expression "(int)param_1 + 0x2b" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;)) (expression_statement "pppuVar17 = pppuVar16;" (assignment_expression "pppuVar17 = pppuVar16" identifier = identifier) ;) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" identifier = identifier) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) }) (else_clause "else {\n    iVar11 = param_1[2];\n    ppuVar4 = local_44;\n    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }" else (compound_statement "{\n    iVar11 = param_1[2];\n    ppuVar4 = local_44;\n    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }" { (expression_statement "iVar11 = param_1[2];" (assignment_expression "iVar11 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) (if_statement "if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }" if (parenthesized_expression "((*(byte *)(iVar11 + 0x2c) & 1) == 0)" ( (binary_expression "(*(byte *)(iVar11 + 0x2c) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x2c) & 1)" ( (binary_expression "*(byte *)(iVar11 + 0x2c) & 1" (pointer_expression "*(byte *)(iVar11 + 0x2c)" * (cast_expression "(byte *)(iVar11 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x2c)" ( (binary_expression "iVar11 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }" { (expression_statement "uVar14 = param_1[3];" (assignment_expression "uVar14 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "ppuVar4 = &__DT_PLTGOT;" (assignment_expression "ppuVar4 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (if_statement "if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }" if (parenthesized_expression "(((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0))" ( (binary_expression "((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)" (parenthesized_expression "((bVar10 & 0x20) == 0)" ( (binary_expression "(bVar10 & 0x20) == 0" (parenthesized_expression "(bVar10 & 0x20)" ( (binary_expression "bVar10 & 0x20" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(ppuVar4 = local_44, uVar14 == 0)" ( (comma_expression "ppuVar4 = local_44, uVar14 == 0" (assignment_expression "ppuVar4 = local_44" identifier = identifier) , (binary_expression "uVar14 == 0" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }" { (labeled_statement "LAB_00178b48:\n        local_44 = ppuVar4;" statement_identifier : (expression_statement "local_44 = ppuVar4;" (assignment_expression "local_44 = ppuVar4" identifier = identifier) ;)) (expression_statement "local_48 = ppuVar3;" (assignment_expression "local_48 = ppuVar3" identifier = identifier) ;) (expression_statement "puVar18 = auStack_5c;" (assignment_expression "puVar18 = auStack_5c" identifier = identifier) ;) (expression_statement "pbVar6 = *local_48;" (assignment_expression "pbVar6 = *local_48" identifier = (pointer_expression "*local_48" * identifier)) ;) (expression_statement "iVar11 = *(int *)(pbVar6 + 8);" (assignment_expression "iVar11 = *(int *)(pbVar6 + 8)" identifier = (pointer_expression "*(int *)(pbVar6 + 8)" * (cast_expression "(int *)(pbVar6 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 8)" ( (binary_expression "pbVar6 + 8" identifier + number_literal) ))))) ;) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" identifier = identifier) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) (if_statement "if (iVar11 == 0) goto LAB_00178b58;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00178b58;" goto statement_identifier ;)) (goto_statement "goto LAB_00178962;" goto statement_identifier ;) })) (if_statement "if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }" if (parenthesized_expression "((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14)" ( (binary_expression "(uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14" (call_expression "(uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2)" ( (binary_expression "*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2" (binary_expression "*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38)" (pointer_expression "*(int *)(iVar11 + 0x3c)" * (cast_expression "(int *)(iVar11 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x3c)" ( (binary_expression "iVar11 + 0x3c" identifier + number_literal) )))) - (pointer_expression "*(int *)(iVar11 + 0x38)" * (cast_expression "(int *)(iVar11 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x38)" ( (binary_expression "iVar11 + 0x38" identifier + number_literal) ))))) >> number_literal) ))) <= identifier) )) (compound_statement "{\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }" { (expression_statement "ppuStack_60 = (undefined1 **)&DAT_0038f378;" (assignment_expression "ppuStack_60 = (undefined1 **)&DAT_0038f378" identifier = (cast_expression "(undefined1 **)&DAT_0038f378" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_0038f378" & identifier))) ;) (expression_statement "local_48 = (undefined1 **)&DAT_0038f378;" (assignment_expression "local_48 = (undefined1 **)&DAT_0038f378" identifier = (cast_expression "(undefined1 **)&DAT_0038f378" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_0038f378" & identifier))) ;) (expression_statement "local_44 = &__DT_PLTGOT;" (assignment_expression "local_44 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) comment (expression_statement "FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");" (call_expression "FUN_00069d00("../../gold/object.h",0x50b,"is_section_included")" identifier (argument_list "("../../gold/object.h",0x50b,"is_section_included")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""is_section_included"" " string_content ") ))) ;) })) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" identifier = identifier) ;) (if_statement "if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;" if (parenthesized_expression "(*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0)" ( (binary_expression "*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0" (pointer_expression "*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4)" * (cast_expression "(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar11 + 0x38) + uVar14 * 4)" ( (binary_expression "*(int *)(iVar11 + 0x38) + uVar14 * 4" (pointer_expression "*(int *)(iVar11 + 0x38)" * (cast_expression "(int *)(iVar11 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x38)" ( (binary_expression "iVar11 + 0x38" identifier + number_literal) )))) + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) != number_literal) )) (goto_statement "goto LAB_00178b48;" goto statement_identifier ;)) (expression_statement "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);" (assignment_expression "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13)" identifier = (cast_expression "(undefined1 *)CONCAT31(local_4c._1_3_,uVar13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT31(local_4c._1_3_,uVar13)" identifier (argument_list "(local_4c._1_3_,uVar13)" ( (field_expression "local_4c._1_3_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_48 = (undefined1 **)&DAT_0038f378;" (assignment_expression "local_48 = (undefined1 **)&DAT_0038f378" identifier = (cast_expression "(undefined1 **)&DAT_0038f378" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_0038f378" & identifier))) ;) (expression_statement "local_44 = &__DT_PLTGOT;" (assignment_expression "local_44 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "cVar5 = FUN_00177880(param_2,iVar11,uVar14);" (assignment_expression "cVar5 = FUN_00177880(param_2,iVar11,uVar14)" identifier = (call_expression "FUN_00177880(param_2,iVar11,uVar14)" identifier (argument_list "(param_2,iVar11,uVar14)" ( identifier , identifier , identifier )))) ;) (expression_statement "pppuVar16 = (undefined1 ***)auStack_5c;" (assignment_expression "pppuVar16 = (undefined1 ***)auStack_5c" identifier = (cast_expression "(undefined1 ***)auStack_5c" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (if_statement "if (cVar5 == '\0') {\n        return 0;\n      }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar14 = (uint)local_4c & 0xff;" (assignment_expression "uVar14 = (uint)local_4c & 0xff" identifier = (binary_expression "(uint)local_4c & 0xff" (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar13 = SUB41(local_4c,0);" (assignment_expression "uVar13 = SUB41(local_4c,0)" identifier = (call_expression "SUB41(local_4c,0)" identifier (argument_list "(local_4c,0)" ( identifier , number_literal )))) ;) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" identifier = identifier) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) (if_statement "if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;" if (parenthesized_expression "(((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))" ( (binary_expression "((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0)" (parenthesized_expression "((*(byte *)((int)param_1 + 0x2a) & 7) != 0)" ( (binary_expression "(*(byte *)((int)param_1 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_1 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_1 + 0x2a)" * (cast_expression "(byte *)((int)param_1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2a)" ( (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "((*(byte *)(param_1[2] + 0x2c) & 1) == 0)" ( (binary_expression "(*(byte *)(param_1[2] + 0x2c) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1[2] + 0x2c) & 1)" ( (binary_expression "*(byte *)(param_1[2] + 0x2c) & 1" (pointer_expression "*(byte *)(param_1[2] + 0x2c)" * (cast_expression "(byte *)(param_1[2] + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[2] + 0x2c)" ( (binary_expression "param_1[2] + 0x2c" (subscript_expression "param_1[2]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_00178b48;" goto statement_identifier ;)) (goto_statement "goto LAB_00178a19;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00178a1d:\n  local_44 = ppuVar4;" statement_identifier : (expression_statement "local_44 = ppuVar4;" (assignment_expression "local_44 = ppuVar4" identifier = identifier) ;)) (expression_statement "local_48 = ppuVar3;" (assignment_expression "local_48 = ppuVar3" identifier = identifier) ;) (expression_statement "ppuVar2 = local_44;" (assignment_expression "ppuVar2 = local_44" identifier = identifier) ;) (if_statement "if ((bVar10 & 0x10) != 0) {\n    return 0;\n  }" if (parenthesized_expression "((bVar10 & 0x10) != 0)" ( (binary_expression "(bVar10 & 0x10) != 0" (parenthesized_expression "(bVar10 & 0x10)" ( (binary_expression "bVar10 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar6 = *(byte **)(*local_48 + 8);" (assignment_expression "pbVar6 = *(byte **)(*local_48 + 8)" identifier = (pointer_expression "*(byte **)(*local_48 + 8)" * (cast_expression "(byte **)(*local_48 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 8)" ( (binary_expression "*local_48 + 8" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "puVar18 = (undefined1 *)pppuVar17;" (assignment_expression "puVar18 = (undefined1 *)pppuVar17" identifier = (cast_expression "(undefined1 *)pppuVar17" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" identifier = identifier) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) (if_statement "if (pbVar6 == (byte *)0x0) goto LAB_00178b58;" if (parenthesized_expression "(pbVar6 == (byte *)0x0)" ( (binary_expression "pbVar6 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00178b58;" goto statement_identifier ;)) (if_statement "if (pbVar6[0xe89] == 0) {\nLAB_00178c1e:\n    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;\n    if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }\n  }\n  else {\n    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }\n    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;\nLAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;\n  }" if (parenthesized_expression "(pbVar6[0xe89] == 0)" ( (binary_expression "pbVar6[0xe89] == 0" (subscript_expression "pbVar6[0xe89]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_00178c1e:\n    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;\n    if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }\n  }" { (labeled_statement "LAB_00178c1e:\n    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;" statement_identifier : (if_statement "if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;" if (parenthesized_expression "((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0))" ( (binary_expression "(pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)" (parenthesized_expression "(pbVar6[0xf05] == 0)" ( (binary_expression "pbVar6[0xf05] == 0" (subscript_expression "pbVar6[0xf05]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(pbVar6[0xf81] == 0)" ( (binary_expression "pbVar6[0xf81] == 0" (subscript_expression "pbVar6[0xf81]" identifier [ number_literal ]) == number_literal) ))) )) (goto_statement "goto LAB_00178a80;" goto statement_identifier ;))) (if_statement "if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }" if (parenthesized_expression "((*(byte *)((int)param_1 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)((int)param_1 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_1 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_1 + 0x2a)" * (cast_expression "(byte *)((int)param_1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2a)" ( (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }" { (expression_statement "iVar11 = param_1[2];" (assignment_expression "iVar11 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00178a70;" goto statement_identifier ;) })) }) (else_clause "else {\n    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }\n    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;\nLAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;\n  }" else (compound_statement "{\n    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }\n    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;\nLAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;\n  }" { (if_statement "if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }" if (parenthesized_expression "(((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0))" ( (binary_expression "((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)" (parenthesized_expression "((*(byte *)((int)param_1 + 0x2a) & 7) != 0)" ( (binary_expression "(*(byte *)((int)param_1 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_1 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_1 + 0x2a)" * (cast_expression "(byte *)((int)param_1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2a)" ( (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "(iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)" ( (comma_expression "iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0" (assignment_expression "iVar11 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) , (binary_expression "(*(byte *)(iVar11 + 0x2c) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x2c) & 1)" ( (binary_expression "*(byte *)(iVar11 + 0x2c) & 1" (pointer_expression "*(byte *)(iVar11 + 0x2c)" * (cast_expression "(byte *)(iVar11 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x2c)" ( (binary_expression "iVar11 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }" { (expression_statement "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));" (assignment_expression "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10))" identifier = (cast_expression "(undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10))" identifier (argument_list "(local_4c._1_3_,*(byte *)(param_1 + 10))" ( (field_expression "local_4c._1_3_" identifier . field_identifier) , (pointer_expression "*(byte *)(param_1 + 10)" * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) ))))) ;) (if_statement "if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }" if (parenthesized_expression "((*(byte *)(param_1 + 10) & 0xf) == 1)" ( (binary_expression "(*(byte *)(param_1 + 10) & 0xf) == 1" (parenthesized_expression "(*(byte *)(param_1 + 10) & 0xf)" ( (binary_expression "*(byte *)(param_1 + 10) & 0xf" (pointer_expression "*(byte *)(param_1 + 10)" * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        return uVar14;\n      }" { (return_statement "return uVar14;" return identifier ;) })) (goto_statement "goto LAB_00178c1e;" goto statement_identifier ;) })) (if_statement "if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;" if (parenthesized_expression "((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0))" ( (binary_expression "(pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)" (parenthesized_expression "(pbVar6[0xf05] != 0)" ( (binary_expression "pbVar6[0xf05] != 0" (subscript_expression "pbVar6[0xf05]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(pbVar6[0xf81] == 0)" ( (binary_expression "pbVar6[0xf81] == 0" (subscript_expression "pbVar6[0xf81]" identifier [ number_literal ]) == number_literal) ))) )) (goto_statement "goto LAB_00178a80;" goto statement_identifier ;)) (labeled_statement "LAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;" statement_identifier : (if_statement "if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;" if (parenthesized_expression "((*(byte *)(iVar11 + 0x2c) & 1) != 0)" ( (binary_expression "(*(byte *)(iVar11 + 0x2c) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x2c) & 1)" ( (binary_expression "*(byte *)(iVar11 + 0x2c) & 1" (pointer_expression "*(byte *)(iVar11 + 0x2c)" * (cast_expression "(byte *)(iVar11 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x2c)" ( (binary_expression "iVar11 + 0x2c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00178a80;" goto statement_identifier ;))) }))) (expression_statement "*(undefined4 *)((int)pppuVar17 + -0xc) = 3;" (assignment_expression "*(undefined4 *)((int)pppuVar17 + -0xc) = 3" (pointer_expression "*(undefined4 *)((int)pppuVar17 + -0xc)" * (cast_expression "(undefined4 *)((int)pppuVar17 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar17 + -0xc)" ( (binary_expression "(int)pppuVar17 + -0xc" (cast_expression "(int)pppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)pppuVar17 + -0x10) = *param_1;" (assignment_expression "*(undefined4 *)((int)pppuVar17 + -0x10) = *param_1" (pointer_expression "*(undefined4 *)((int)pppuVar17 + -0x10)" * (cast_expression "(undefined4 *)((int)pppuVar17 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar17 + -0x10)" ( (binary_expression "(int)pppuVar17 + -0x10" (cast_expression "(int)pppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(undefined4 *)((int)pppuVar17 + -0x14) = 0x178c55;" (assignment_expression "*(undefined4 *)((int)pppuVar17 + -0x14) = 0x178c55" (pointer_expression "*(undefined4 *)((int)pppuVar17 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar17 + -0x14)" ( (binary_expression "(int)pppuVar17 + -0x14" (cast_expression "(int)pppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pbVar6 = (byte *)FUN_001cef00();" (assignment_expression "pbVar6 = (byte *)FUN_001cef00()" identifier = (cast_expression "(byte *)FUN_001cef00()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001cef00()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (pbVar6 != (byte *)0x0) {\n    iVar11 = *(int *)(*local_48 + 8);\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    cVar5 = *(char *)(iVar11 + 0xf05);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    cVar5 = *(char *)(iVar11 + 0xf81);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n    *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;\n    free(*(void **)((int)pppuVar17 + -0x10));\n  }" if (parenthesized_expression "(pbVar6 != (byte *)0x0)" ( (binary_expression "pbVar6 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar11 = *(int *)(*local_48 + 8);\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    cVar5 = *(char *)(iVar11 + 0xf05);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    cVar5 = *(char *)(iVar11 + 0xf81);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n    *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;\n    free(*(void **)((int)pppuVar17 + -0x10));\n  }" { (expression_statement "iVar11 = *(int *)(*local_48 + 8);" (assignment_expression "iVar11 = *(int *)(*local_48 + 8)" identifier = (pointer_expression "*(int *)(*local_48 + 8)" * (cast_expression "(int *)(*local_48 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_48 + 8)" ( (binary_expression "*local_48 + 8" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" identifier = identifier) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) (if_statement "if (iVar11 == 0) goto LAB_00178b58;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00178b58;" goto statement_identifier ;)) (expression_statement "cVar5 = *(char *)(iVar11 + 0xf05);" (assignment_expression "cVar5 = *(char *)(iVar11 + 0xf05)" identifier = (pointer_expression "*(char *)(iVar11 + 0xf05)" * (cast_expression "(char *)(iVar11 + 0xf05)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0xf05)" ( (binary_expression "iVar11 + 0xf05" identifier + number_literal) ))))) ;) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) (expression_statement "bVar23 = cVar5 == '\0';" (assignment_expression "bVar23 = cVar5 == '\0'" identifier = (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (!bVar23) {\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }" if (parenthesized_expression "(!bVar23)" ( (unary_expression "!bVar23" ! identifier) )) (compound_statement "{\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }" { (expression_statement "iVar12 = 0xc;" (assignment_expression "iVar12 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar19 = pbVar6;" (assignment_expression "pbVar19 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);" (assignment_expression "pbVar20 = (byte *)((int)ppuVar2 + -0xf5762)" identifier = (cast_expression "(byte *)((int)ppuVar2 + -0xf5762)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar2 + -0xf5762)" ( (binary_expression "(int)ppuVar2 + -0xf5762" (cast_expression "(int)ppuVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (do_statement "do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);" do (compound_statement "{\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      }" { (if_statement "if (iVar12 == 0) break;" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "bVar21 = *pbVar19 < *pbVar20;" (assignment_expression "bVar21 = *pbVar19 < *pbVar20" identifier = (binary_expression "*pbVar19 < *pbVar20" (pointer_expression "*pbVar19" * identifier) < (pointer_expression "*pbVar20" * identifier))) ;) (expression_statement "bVar23 = *pbVar19 == *pbVar20;" (assignment_expression "bVar23 = *pbVar19 == *pbVar20" identifier = (binary_expression "*pbVar19 == *pbVar20" (pointer_expression "*pbVar19" * identifier) == (pointer_expression "*pbVar20" * identifier))) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar20 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar20 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (expression_statement "bVar22 = false;" (assignment_expression "bVar22 = false" identifier = false) ;) (expression_statement "bVar21 = (!bVar21 && !bVar23) == bVar21;" (assignment_expression "bVar21 = (!bVar21 && !bVar23) == bVar21" identifier = (binary_expression "(!bVar21 && !bVar23) == bVar21" (parenthesized_expression "(!bVar21 && !bVar23)" ( (binary_expression "!bVar21 && !bVar23" (unary_expression "!bVar21" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) == identifier)) ;) (expression_statement "local_44 = ppuVar2;" (assignment_expression "local_44 = ppuVar2" identifier = identifier) ;) (if_statement "if (bVar21) goto LAB_00178d5c;" if (parenthesized_expression "(bVar21)" ( identifier )) (goto_statement "goto LAB_00178d5c;" goto statement_identifier ;)) (expression_statement "iVar12 = 0xf;" (assignment_expression "iVar12 = 0xf" identifier = number_literal) ;) (expression_statement "pbVar19 = pbVar6;" (assignment_expression "pbVar19 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);" (assignment_expression "pbVar20 = (byte *)((int)ppuVar2 + -0xf5755)" identifier = (cast_expression "(byte *)((int)ppuVar2 + -0xf5755)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar2 + -0xf5755)" ( (binary_expression "(int)ppuVar2 + -0xf5755" (cast_expression "(int)ppuVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (do_statement "do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);" do (compound_statement "{\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      }" { (if_statement "if (iVar12 == 0) break;" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "bVar22 = *pbVar19 < *pbVar20;" (assignment_expression "bVar22 = *pbVar19 < *pbVar20" identifier = (binary_expression "*pbVar19 < *pbVar20" (pointer_expression "*pbVar19" * identifier) < (pointer_expression "*pbVar20" * identifier))) ;) (expression_statement "bVar21 = *pbVar19 == *pbVar20;" (assignment_expression "bVar21 = *pbVar19 == *pbVar20" identifier = (binary_expression "*pbVar19 == *pbVar20" (pointer_expression "*pbVar19" * identifier) == (pointer_expression "*pbVar20" * identifier))) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar20 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar20 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar21)" ( identifier )) ;) (if_statement "if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;" if (parenthesized_expression "((!bVar22 && !bVar21) == bVar22)" ( (binary_expression "(!bVar22 && !bVar21) == bVar22" (parenthesized_expression "(!bVar22 && !bVar21)" ( (binary_expression "!bVar22 && !bVar21" (unary_expression "!bVar22" ! identifier) && (unary_expression "!bVar21" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_00178d5c;" goto statement_identifier ;)) })) (expression_statement "cVar5 = *(char *)(iVar11 + 0xf81);" (assignment_expression "cVar5 = *(char *)(iVar11 + 0xf81)" identifier = (pointer_expression "*(char *)(iVar11 + 0xf81)" * (cast_expression "(char *)(iVar11 + 0xf81)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0xf81)" ( (binary_expression "iVar11 + 0xf81" identifier + number_literal) ))))) ;) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) (expression_statement "bVar23 = cVar5 == '\0';" (assignment_expression "bVar23 = cVar5 == '\0'" identifier = (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (!bVar23) {\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }" if (parenthesized_expression "(!bVar23)" ( (unary_expression "!bVar23" ! identifier) )) (compound_statement "{\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }" { (expression_statement "iVar11 = 0x11;" (assignment_expression "iVar11 = 0x11" identifier = number_literal) ;) (expression_statement "pbVar19 = pbVar6;" (assignment_expression "pbVar19 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar20 = (byte *)((int)local_44 + -0xf5745);" (assignment_expression "pbVar20 = (byte *)((int)local_44 + -0xf5745)" identifier = (cast_expression "(byte *)((int)local_44 + -0xf5745)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_44 + -0xf5745)" ( (binary_expression "(int)local_44 + -0xf5745" (cast_expression "(int)local_44" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (do_statement "do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);" do (compound_statement "{\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      }" { (if_statement "if (iVar11 == 0) break;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "bVar21 = *pbVar19 < *pbVar20;" (assignment_expression "bVar21 = *pbVar19 < *pbVar20" identifier = (binary_expression "*pbVar19 < *pbVar20" (pointer_expression "*pbVar19" * identifier) < (pointer_expression "*pbVar20" * identifier))) ;) (expression_statement "bVar23 = *pbVar19 == *pbVar20;" (assignment_expression "bVar23 = *pbVar19 == *pbVar20" identifier = (binary_expression "*pbVar19 == *pbVar20" (pointer_expression "*pbVar19" * identifier) == (pointer_expression "*pbVar20" * identifier))) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar20 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar20 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (expression_statement "bVar22 = false;" (assignment_expression "bVar22 = false" identifier = false) ;) (expression_statement "bVar21 = (!bVar21 && !bVar23) == bVar21;" (assignment_expression "bVar21 = (!bVar21 && !bVar23) == bVar21" identifier = (binary_expression "(!bVar21 && !bVar23) == bVar21" (parenthesized_expression "(!bVar21 && !bVar23)" ( (binary_expression "!bVar21 && !bVar23" (unary_expression "!bVar21" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }" if (parenthesized_expression "(bVar21)" ( identifier )) (compound_statement "{\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }" { (labeled_statement "LAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);" statement_identifier : (expression_statement "local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);" (assignment_expression "local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5)" identifier = (cast_expression "(undefined1 **)CONCAT31(local_48._1_3_,cVar5)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "CONCAT31(local_48._1_3_,cVar5)" identifier (argument_list "(local_48._1_3_,cVar5)" ( (field_expression "local_48._1_3_" identifier . field_identifier) , identifier ))))) ;)) (expression_statement "*(byte **)((int)pppuVar17 + -0x10) = pbVar6;" (assignment_expression "*(byte **)((int)pppuVar17 + -0x10) = pbVar6" (pointer_expression "*(byte **)((int)pppuVar17 + -0x10)" * (cast_expression "(byte **)((int)pppuVar17 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar17 + -0x10)" ( (binary_expression "(int)pppuVar17 + -0x10" (cast_expression "(int)pppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;" (assignment_expression "*(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b" (pointer_expression "*(undefined4 *)((int)pppuVar17 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar17 + -0x14)" ( (binary_expression "(int)pppuVar17 + -0x14" (cast_expression "(int)pppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "free(*(void **)((int)pppuVar17 + -0x10));" (call_expression "free(*(void **)((int)pppuVar17 + -0x10))" identifier (argument_list "(*(void **)((int)pppuVar17 + -0x10))" ( (pointer_expression "*(void **)((int)pppuVar17 + -0x10)" * (cast_expression "(void **)((int)pppuVar17 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar17 + -0x10)" ( (binary_expression "(int)pppuVar17 + -0x10" (cast_expression "(int)pppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (return_statement "return (uint)local_48 & 0xff;" return (binary_expression "(uint)local_48 & 0xff" (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ;) })) (expression_statement "iVar11 = 0xc;" (assignment_expression "iVar11 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar19 = pbVar6;" (assignment_expression "pbVar19 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar20 = (byte *)((int)local_44 + -0xf5733);" (assignment_expression "pbVar20 = (byte *)((int)local_44 + -0xf5733)" identifier = (cast_expression "(byte *)((int)local_44 + -0xf5733)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_44 + -0xf5733)" ( (binary_expression "(int)local_44 + -0xf5733" (cast_expression "(int)local_44" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (do_statement "do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);" do (compound_statement "{\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      }" { (if_statement "if (iVar11 == 0) break;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "bVar22 = *pbVar19 < *pbVar20;" (assignment_expression "bVar22 = *pbVar19 < *pbVar20" identifier = (binary_expression "*pbVar19 < *pbVar20" (pointer_expression "*pbVar19" * identifier) < (pointer_expression "*pbVar20" * identifier))) ;) (expression_statement "bVar21 = *pbVar19 == *pbVar20;" (assignment_expression "bVar21 = *pbVar19 == *pbVar20" identifier = (binary_expression "*pbVar19 == *pbVar20" (pointer_expression "*pbVar19" * identifier) == (pointer_expression "*pbVar20" * identifier))) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar20 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar20 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar21)" ( identifier )) ;) (if_statement "if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;" if (parenthesized_expression "((!bVar22 && !bVar21) == bVar22)" ( (binary_expression "(!bVar22 && !bVar21) == bVar22" (parenthesized_expression "(!bVar22 && !bVar21)" ( (binary_expression "!bVar22 && !bVar21" (unary_expression "!bVar22" ! identifier) && (unary_expression "!bVar21" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_00178d5c;" goto statement_identifier ;)) })) (expression_statement "*(byte **)((int)pppuVar17 + -0x10) = pbVar6;" (assignment_expression "*(byte **)((int)pppuVar17 + -0x10) = pbVar6" (pointer_expression "*(byte **)((int)pppuVar17 + -0x10)" * (cast_expression "(byte **)((int)pppuVar17 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar17 + -0x10)" ( (binary_expression "(int)pppuVar17 + -0x10" (cast_expression "(int)pppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;" (assignment_expression "*(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf" (pointer_expression "*(undefined4 *)((int)pppuVar17 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar17 + -0x14)" ( (binary_expression "(int)pppuVar17 + -0x14" (cast_expression "(int)pppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "free(*(void **)((int)pppuVar17 + -0x10));" (call_expression "free(*(void **)((int)pppuVar17 + -0x10))" identifier (argument_list "(*(void **)((int)pppuVar17 + -0x10))" ( (pointer_expression "*(void **)((int)pppuVar17 + -0x10)" * (cast_expression "(void **)((int)pppuVar17 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar17 + -0x10)" ( (binary_expression "(int)pppuVar17 + -0x10" (cast_expression "(int)pppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) })) (expression_statement "pbVar6 = *(byte **)(*local_48 + 8);" (assignment_expression "pbVar6 = *(byte **)(*local_48 + 8)" identifier = (pointer_expression "*(byte **)(*local_48 + 8)" * (cast_expression "(byte **)(*local_48 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 8)" ( (binary_expression "*local_48 + 8" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (if_statement "if (pbVar6 != (byte *)0x0) {\nLAB_00178a80:\n    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }\n    return 0;\n  }" if (parenthesized_expression "(pbVar6 != (byte *)0x0)" ( (binary_expression "pbVar6 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00178a80:\n    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }\n    return 0;\n  }" { (labeled_statement "LAB_00178a80:\n    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }" statement_identifier : (if_statement "if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }" if (parenthesized_expression "(((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10))))" ( (binary_expression "((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))" (parenthesized_expression "((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0))" ( (binary_expression "(pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)" (parenthesized_expression "(pbVar6[0x12b9] != 0)" ( (binary_expression "pbVar6[0x12b9] != 0" (subscript_expression "pbVar6[0x12b9]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(pbVar6[0x1a25] != 0)" ( (binary_expression "pbVar6[0x1a25] != 0" (subscript_expression "pbVar6[0x1a25]" identifier [ number_literal ]) != number_literal) ))) )) || (parenthesized_expression "((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))" ( (parenthesized_expression "(pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10))" ( (binary_expression "pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)" (binary_expression "pbVar6[0x19a9] != 0" (subscript_expression "pbVar6[0x19a9]" identifier [ number_literal ]) != number_literal) && (parenthesized_expression "(*(byte *)(param_1 + 10) >> 4 == 10)" ( (binary_expression "*(byte *)(param_1 + 10) >> 4 == 10" (binary_expression "*(byte *)(param_1 + 10) >> 4" (pointer_expression "*(byte *)(param_1 + 10)" * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) >> number_literal) == number_literal) ))) )) ))) )) (compound_statement "{\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }" { (if_statement "if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }" if (parenthesized_expression "((*(byte *)((int)param_1 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)((int)param_1 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_1 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_1 + 0x2a)" * (cast_expression "(byte *)((int)param_1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2a)" ( (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }" { (if_statement "if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }" if (parenthesized_expression "((*(byte *)(param_1[2] + 0x2c) & 1) != 0)" ( (binary_expression "(*(byte *)(param_1[2] + 0x2c) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1[2] + 0x2c) & 1)" ( (binary_expression "*(byte *)(param_1[2] + 0x2c) & 1" (pointer_expression "*(byte *)(param_1[2] + 0x2c)" * (cast_expression "(byte *)(param_1[2] + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[2] + 0x2c)" ( (binary_expression "param_1[2] + 0x2c" (subscript_expression "param_1[2]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }" if (parenthesized_expression "((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0))" ( (binary_expression "(param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)" (parenthesized_expression "(param_1[3] == 0)" ( (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)" ( (binary_expression "(*(byte *)((int)param_1 + 0x2b) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2b) & 0x20)" ( (binary_expression "*(byte *)((int)param_1 + 0x2b) & 0x20" (pointer_expression "*(byte *)((int)param_1 + 0x2b)" * (cast_expression "(byte *)((int)param_1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2b)" ( (binary_expression "(int)param_1 + 0x2b" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }" else (if_statement "if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }" if (parenthesized_expression "((*(byte *)((int)param_1 + 0x2a) & 7) == 4)" ( (binary_expression "(*(byte *)((int)param_1 + 0x2a) & 7) == 4" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_1 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_1 + 0x2a)" * (cast_expression "(byte *)((int)param_1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2a)" ( (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })))) (if_statement "if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }" if (parenthesized_expression "(((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         )" ( (binary_expression "((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)" (parenthesized_expression "((*(byte *)((int)param_1 + 0x29) & 3) == 0)" ( (binary_expression "(*(byte *)((int)param_1 + 0x29) & 3) == 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x29) & 3)" ( (binary_expression "*(byte *)((int)param_1 + 0x29) & 3" (pointer_expression "*(byte *)((int)param_1 + 0x29)" * (cast_expression "(byte *)((int)param_1 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x29)" ( (binary_expression "(int)param_1 + 0x29" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(byte *)((int)param_1 + 0x29) & 3) == 3)" ( (binary_expression "(*(byte *)((int)param_1 + 0x29) & 3) == 3" (parenthesized_expression "(*(byte *)((int)param_1 + 0x29) & 3)" ( (binary_expression "*(byte *)((int)param_1 + 0x29) & 3" (pointer_expression "*(byte *)((int)param_1 + 0x29)" * (cast_expression "(byte *)((int)param_1 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x29)" ( (binary_expression "(int)param_1 + 0x29" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }" { (return_statement "return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;" return (binary_expression "*(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1" (binary_expression "*(byte *)((int)param_1 + 0x2b) >> 4 & 1" (binary_expression "*(byte *)((int)param_1 + 0x2b) >> 4" (pointer_expression "*(byte *)((int)param_1 + 0x2b)" * (cast_expression "(byte *)((int)param_1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2b)" ( (binary_expression "(int)param_1 + 0x2b" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal) & number_literal) ^ number_literal) ;) })) }))) (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar6 = (byte *)0x0;" (assignment_expression "pbVar6 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" identifier = identifier) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) (labeled_statement "LAB_00178b58:\n  local_44 = ppuVar4;" statement_identifier : (expression_statement "local_44 = ppuVar4;" (assignment_expression "local_44 = ppuVar4" identifier = identifier) ;)) (expression_statement "local_48 = ppuVar3;" (assignment_expression "local_48 = ppuVar3" identifier = identifier) ;) (expression_statement "*(byte **)(puVar18 + -4) = pbVar6;" (assignment_expression "*(byte **)(puVar18 + -4) = pbVar6" (pointer_expression "*(byte **)(puVar18 + -4)" * (cast_expression "(byte **)(puVar18 + -4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + -4)" ( (binary_expression "puVar18 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined ***)(puVar18 + -8) = local_44 + -0x3d2de;" (assignment_expression "*(undefined ***)(puVar18 + -8) = local_44 + -0x3d2de" (pointer_expression "*(undefined ***)(puVar18 + -8)" * (cast_expression "(undefined ***)(puVar18 + -8)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar18 + -8)" ( (binary_expression "puVar18 + -8" identifier + number_literal) )))) = (binary_expression "local_44 + -0x3d2de" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar18 + -0xc) = 0x5c;" (assignment_expression "*(undefined4 *)(puVar18 + -0xc) = 0x5c" (pointer_expression "*(undefined4 *)(puVar18 + -0xc)" * (cast_expression "(undefined4 *)(puVar18 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + -0xc)" ( (binary_expression "puVar18 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)(puVar18 + -0x10) = local_44 + -0x41f7c;" (assignment_expression "*(undefined ***)(puVar18 + -0x10) = local_44 + -0x41f7c" (pointer_expression "*(undefined ***)(puVar18 + -0x10)" * (cast_expression "(undefined ***)(puVar18 + -0x10)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar18 + -0x10)" ( (binary_expression "puVar18 + -0x10" identifier + number_literal) )))) = (binary_expression "local_44 + -0x41f7c" identifier + number_literal)) ;) comment (expression_statement "*(undefined **)(puVar18 + -0x14) = &UNK_00178b71;" (assignment_expression "*(undefined **)(puVar18 + -0x14) = &UNK_00178b71" (pointer_expression "*(undefined **)(puVar18 + -0x14)" * (cast_expression "(undefined **)(puVar18 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + -0x14)" ( (binary_expression "puVar18 + -0x14" identifier + number_literal) )))) = (pointer_expression "&UNK_00178b71" & identifier)) ;) (expression_statement "FUN_00069d00();" (call_expression "FUN_00069d00()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Type propagation algorithm not settling */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: bool should_add_dynsym_entry(Symbol * this, Symbol_table * symtab) */\n\nbool __thiscall gold::Symbol::should_add_dynsym_entry(Symbol *this,Symbol_table *symtab)\n\n{\n  byte bVar1;\n  uint shndx;\n  pointer ppOVar2;\n  _Alloc_hider _Var3;\n  bool bVar4;\n  char *pcVar5;\n  General_options *pGVar6;\n  char *pcVar7;\n  size_t sVar8;\n  byte *__ptr;\n  byte bVar9;\n  int iVar10;\n  byte bVar11;\n  char cVar12;\n  Output_segment *pOVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  bool bVar16;\n  bool bVar17;\n  byte bVar18;\n  int local_40;\n  bool is_global;\n  char local_2c [28];\n  \n  bVar18 = 0;\n  bVar9 = this->field_0x2b;\n  bVar11 = bVar9 >> 6;\n  if ((bVar11 & 1) == 0) {\n    return false;\n  }\n  bVar1 = this->field_0x2a;\n  if ((bVar1 & 0x40) != 0) {\n    return (bool)(bVar11 & 1);\n  }\n  if (((((char)bVar1 < '\0') && ((bVar9 & 1) != 0)) &&\n      (((this->field_0x29 & 3) == 0 || ((this->field_0x29 & 3) == 3)))) && ((bVar9 & 0x10) == 0)) {\n    return (bool)(bVar11 & 1);\n  }\n  pGVar6 = parameters->options_;\n  if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n  if ((((pGVar6->gc_sections_).value == false) || ((pGVar6->shared_).value != false)) ||\n     ((bVar1 & 7) != 0)) {\n    if ((bVar1 & 7) == 0) {\n      if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) != 0) goto LAB_00178a1d;\n      pGVar6 = parameters->options_;\n    }\nLAB_00178962:\n    bVar4 = Version_script_info::get_symbol_version\n                      (&(pGVar6->dynamic_list_).version_script_info_,this->name_,(string *)0x0,\n                       &is_global);\n    if ((bVar4) && (is_global == false)) {\nLAB_00178990:\n      if ((this->field_0x2b & 0x10) == 0) {\n        return (bool)(bVar11 & 1);\n      }\n      demangle((string *)&is_global,this->name_);\n      _Var3._M_p = _is_global;\n      pcVar5 = (char *)gettext("Cannot export local symbol \'%s\'");\n                    /* try { // try from 001789c4 to 001789c8 has its CatchHandler @ 00178e46 */\n      gold_warning(pcVar5,_Var3._M_p);\n      if (_is_global == local_2c) {\n        return false;\n      }\n      operator_delete(_is_global);\n      return false;\n    }\n    pGVar6 = parameters->options_;\n    if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n    if ((pGVar6->export_dynamic_symbol_).value._M_h._M_element_count != 0) {\n      pcVar5 = this->name_;\n      pcVar7 = (char *)0xffffffff;\n      _is_global = local_2c;\n      if (pcVar5 != (char *)0x0) {\n        sVar8 = strlen(pcVar5);\n        pcVar7 = pcVar5 + sVar8;\n      }\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char_const*>((string *)&is_global,pcVar5,pcVar7,0);\n      std::\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      ::find(&(pGVar6->export_dynamic_symbol_).value._M_h,(string *)&is_global);\n      if (local_40 != 0) {\n        if (_is_global != local_2c) {\n          operator_delete(_is_global);\n        }\n        goto LAB_00178990;\n      }\n      if (_is_global != local_2c) {\n        operator_delete(_is_global);\n        bVar9 = this->field_0x2b;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar9 = this->field_0x2b;\n  }\n  else {\n    pOVar13 = (this->u1_).output_segment;\n    if ((((Object *)pOVar13->output_lists_)->field_0x2c & 1) == 0) {\n      shndx = (this->u2_).shndx;\n      if (((bVar9 & 0x20) == 0) || (shndx == 0)) {\nLAB_00178b48:\n        pGVar6 = parameters->options_;\n        if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      ppOVar2 = (((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_start;\n      if ((uint)((int)(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )._M_impl._M_finish - (int)ppOVar2 >> 2) <= shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n      }\n      if (ppOVar2[shndx] != (Output_section *)0x0) goto LAB_00178b48;\n      bVar4 = Symbol_table::is_section_folded(symtab,(Relobj *)pOVar13,shndx);\n      if (!bVar4) {\n        return false;\n      }\n      if (((this->field_0x2a & 7) != 0) ||\n         (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) == 0)) goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }\nLAB_00178a1d:\n  if ((bVar9 & 0x10) != 0) {\n    return false;\n  }\n  pGVar6 = parameters->options_;\n  if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n  if ((pGVar6->dynamic_list_data_).value == false) {\nLAB_00178c1e:\n    if (((pGVar6->dynamic_list_cpp_new_).value == false) &&\n       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false)) goto LAB_00178a80;\n    if ((this->field_0x2a & 7) == 0) {\n      pOVar13 = (this->u1_).output_segment;\n      goto LAB_00178a70;\n    }\n  }\n  else {\n    if (((this->field_0x2a & 7) != 0) ||\n       (pOVar13 = (this->u1_).output_segment,\n       ((uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_end_of_storage & 1) == 0)) {\n      if ((this->field_0x28 & 0xf) == 1) {\n        return (bool)(bVar11 & 1);\n      }\n      goto LAB_00178c1e;\n    }\n    if (((pGVar6->dynamic_list_cpp_new_).value != false) ||\n       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false)) goto LAB_00178a80;\nLAB_00178a70:\n    if (((uint)pOVar13->output_lists_[3].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_end_of_storage & 1) != 0) goto LAB_00178a80;\n  }\n  __ptr = (byte *)cplus_demangle(this->name_,3);\n  if (__ptr != (byte *)0x0) {\n    pGVar6 = parameters->options_;\n    if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n    cVar12 = (pGVar6->dynamic_list_cpp_new_).value;\n    bVar4 = false;\n    bVar17 = (bool)cVar12 == false;\n    if (!bVar17) {\n      iVar10 = 0xc;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"operator new";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar4 = *pbVar14 < *pbVar15;\n        bVar17 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar17);\n      bVar16 = false;\n      bVar4 = (!bVar4 && !bVar17) == bVar4;\n      if (bVar4) goto LAB_00178d5c;\n      iVar10 = 0xf;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"operator delete";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar16 = *pbVar14 < *pbVar15;\n        bVar4 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar4);\n      if ((!bVar16 && !bVar4) == bVar16) goto LAB_00178d5c;\n    }\n    cVar12 = (pGVar6->dynamic_list_cpp_typeinfo_).value;\n    bVar4 = false;\n    bVar17 = (bool)cVar12 == false;\n    if (!bVar17) {\n      iVar10 = 0x11;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"typeinfo name for";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar4 = *pbVar14 < *pbVar15;\n        bVar17 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar17);\n      bVar16 = false;\n      bVar4 = (!bVar4 && !bVar17) == bVar4;\n      if (bVar4) {\nLAB_00178d5c:\n        free(__ptr);\n        return (bool)cVar12;\n      }\n      iVar10 = 0xc;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"typeinfo for";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar16 = *pbVar14 < *pbVar15;\n        bVar4 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar4);\n      if ((!bVar16 && !bVar4) == bVar16) goto LAB_00178d5c;\n    }\n    free(__ptr);\n  }\n  pGVar6 = parameters->options_;\n  if (pGVar6 != (General_options *)0x0) {\nLAB_00178a80:\n    if ((((pGVar6->export_dynamic_).value != false) || ((pGVar6->shared_).value != false)) ||\n       (((pGVar6->gnu_unique_).value != false && ((byte)this->field_0x28 >> 4 == 10)))) {\n      if ((this->field_0x2a & 7) == 0) {\n        if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_end_of_storage & 1) != 0) {\n          return false;\n        }\n        if (((this->u2_).shndx == 0) && ((this->field_0x2b & 0x20) != 0)) {\n          return false;\n        }\n      }\n      else if ((this->field_0x2a & 7) == 4) {\n        return false;\n      }\n      if (((this->field_0x29 & 3) == 0) || ((this->field_0x29 & 3) == 3)) {\n        return (bool)((byte)this->field_0x2b >> 4 & 1 ^ 1);\n      }\n    }\n    return false;\n  }\nLAB_00178b58:\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n}\n\n" comment comment comment comment (function_definition "bool __thiscall gold::Symbol::should_add_dynsym_entry(Symbol *this,Symbol_table *symtab)\n\n{\n  byte bVar1;\n  uint shndx;\n  pointer ppOVar2;\n  _Alloc_hider _Var3;\n  bool bVar4;\n  char *pcVar5;\n  General_options *pGVar6;\n  char *pcVar7;\n  size_t sVar8;\n  byte *__ptr;\n  byte bVar9;\n  int iVar10;\n  byte bVar11;\n  char cVar12;\n  Output_segment *pOVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  bool bVar16;\n  bool bVar17;\n  byte bVar18;\n  int local_40;\n  bool is_global;\n  char local_2c [28];\n  \n  bVar18 = 0;\n  bVar9 = this->field_0x2b;\n  bVar11 = bVar9 >> 6;\n  if ((bVar11 & 1) == 0) {\n    return false;\n  }\n  bVar1 = this->field_0x2a;\n  if ((bVar1 & 0x40) != 0) {\n    return (bool)(bVar11 & 1);\n  }\n  if (((((char)bVar1 < '\0') && ((bVar9 & 1) != 0)) &&\n      (((this->field_0x29 & 3) == 0 || ((this->field_0x29 & 3) == 3)))) && ((bVar9 & 0x10) == 0)) {\n    return (bool)(bVar11 & 1);\n  }\n  pGVar6 = parameters->options_;\n  if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n  if ((((pGVar6->gc_sections_).value == false) || ((pGVar6->shared_).value != false)) ||\n     ((bVar1 & 7) != 0)) {\n    if ((bVar1 & 7) == 0) {\n      if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) != 0) goto LAB_00178a1d;\n      pGVar6 = parameters->options_;\n    }\nLAB_00178962:\n    bVar4 = Version_script_info::get_symbol_version\n                      (&(pGVar6->dynamic_list_).version_script_info_,this->name_,(string *)0x0,\n                       &is_global);\n    if ((bVar4) && (is_global == false)) {\nLAB_00178990:\n      if ((this->field_0x2b & 0x10) == 0) {\n        return (bool)(bVar11 & 1);\n      }\n      demangle((string *)&is_global,this->name_);\n      _Var3._M_p = _is_global;\n      pcVar5 = (char *)gettext("Cannot export local symbol \'%s\'");\n                    /* try { // try from 001789c4 to 001789c8 has its CatchHandler @ 00178e46 */\n      gold_warning(pcVar5,_Var3._M_p);\n      if (_is_global == local_2c) {\n        return false;\n      }\n      operator_delete(_is_global);\n      return false;\n    }\n    pGVar6 = parameters->options_;\n    if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n    if ((pGVar6->export_dynamic_symbol_).value._M_h._M_element_count != 0) {\n      pcVar5 = this->name_;\n      pcVar7 = (char *)0xffffffff;\n      _is_global = local_2c;\n      if (pcVar5 != (char *)0x0) {\n        sVar8 = strlen(pcVar5);\n        pcVar7 = pcVar5 + sVar8;\n      }\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char_const*>((string *)&is_global,pcVar5,pcVar7,0);\n      std::\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      ::find(&(pGVar6->export_dynamic_symbol_).value._M_h,(string *)&is_global);\n      if (local_40 != 0) {\n        if (_is_global != local_2c) {\n          operator_delete(_is_global);\n        }\n        goto LAB_00178990;\n      }\n      if (_is_global != local_2c) {\n        operator_delete(_is_global);\n        bVar9 = this->field_0x2b;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar9 = this->field_0x2b;\n  }\n  else {\n    pOVar13 = (this->u1_).output_segment;\n    if ((((Object *)pOVar13->output_lists_)->field_0x2c & 1) == 0) {\n      shndx = (this->u2_).shndx;\n      if (((bVar9 & 0x20) == 0) || (shndx == 0)) {\nLAB_00178b48:\n        pGVar6 = parameters->options_;\n        if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      ppOVar2 = (((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_start;\n      if ((uint)((int)(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )._M_impl._M_finish - (int)ppOVar2 >> 2) <= shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n      }\n      if (ppOVar2[shndx] != (Output_section *)0x0) goto LAB_00178b48;\n      bVar4 = Symbol_table::is_section_folded(symtab,(Relobj *)pOVar13,shndx);\n      if (!bVar4) {\n        return false;\n      }\n      if (((this->field_0x2a & 7) != 0) ||\n         (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) == 0)) goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }\nLAB_00178a1d:\n  if ((bVar9 & 0x10) != 0) {\n    return false;\n  }\n  pGVar6 = parameters->options_;\n  if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n  if ((pGVar6->dynamic_list_data_).value == false) {\nLAB_00178c1e:\n    if (((pGVar6->dynamic_list_cpp_new_).value == false) &&\n       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false)) goto LAB_00178a80;\n    if ((this->field_0x2a & 7) == 0) {\n      pOVar13 = (this->u1_).output_segment;\n      goto LAB_00178a70;\n    }\n  }\n  else {\n    if (((this->field_0x2a & 7) != 0) ||\n       (pOVar13 = (this->u1_).output_segment,\n       ((uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_end_of_storage & 1) == 0)) {\n      if ((this->field_0x28 & 0xf) == 1) {\n        return (bool)(bVar11 & 1);\n      }\n      goto LAB_00178c1e;\n    }\n    if (((pGVar6->dynamic_list_cpp_new_).value != false) ||\n       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false)) goto LAB_00178a80;\nLAB_00178a70:\n    if (((uint)pOVar13->output_lists_[3].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_end_of_storage & 1) != 0) goto LAB_00178a80;\n  }\n  __ptr = (byte *)cplus_demangle(this->name_,3);\n  if (__ptr != (byte *)0x0) {\n    pGVar6 = parameters->options_;\n    if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n    cVar12 = (pGVar6->dynamic_list_cpp_new_).value;\n    bVar4 = false;\n    bVar17 = (bool)cVar12 == false;\n    if (!bVar17) {\n      iVar10 = 0xc;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"operator new";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar4 = *pbVar14 < *pbVar15;\n        bVar17 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar17);\n      bVar16 = false;\n      bVar4 = (!bVar4 && !bVar17) == bVar4;\n      if (bVar4) goto LAB_00178d5c;\n      iVar10 = 0xf;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"operator delete";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar16 = *pbVar14 < *pbVar15;\n        bVar4 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar4);\n      if ((!bVar16 && !bVar4) == bVar16) goto LAB_00178d5c;\n    }\n    cVar12 = (pGVar6->dynamic_list_cpp_typeinfo_).value;\n    bVar4 = false;\n    bVar17 = (bool)cVar12 == false;\n    if (!bVar17) {\n      iVar10 = 0x11;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"typeinfo name for";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar4 = *pbVar14 < *pbVar15;\n        bVar17 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar17);\n      bVar16 = false;\n      bVar4 = (!bVar4 && !bVar17) == bVar4;\n      if (bVar4) {\nLAB_00178d5c:\n        free(__ptr);\n        return (bool)cVar12;\n      }\n      iVar10 = 0xc;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"typeinfo for";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar16 = *pbVar14 < *pbVar15;\n        bVar4 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar4);\n      if ((!bVar16 && !bVar4) == bVar16) goto LAB_00178d5c;\n    }\n    free(__ptr);\n  }\n  pGVar6 = parameters->options_;\n  if (pGVar6 != (General_options *)0x0) {\nLAB_00178a80:\n    if ((((pGVar6->export_dynamic_).value != false) || ((pGVar6->shared_).value != false)) ||\n       (((pGVar6->gnu_unique_).value != false && ((byte)this->field_0x28 >> 4 == 10)))) {\n      if ((this->field_0x2a & 7) == 0) {\n        if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_end_of_storage & 1) != 0) {\n          return false;\n        }\n        if (((this->u2_).shndx == 0) && ((this->field_0x2b & 0x20) != 0)) {\n          return false;\n        }\n      }\n      else if ((this->field_0x2a & 7) == 4) {\n        return false;\n      }\n      if (((this->field_0x29 & 3) == 0) || ((this->field_0x29 & 3) == 3)) {\n        return (bool)((byte)this->field_0x2b >> 4 & 1 ^ 1);\n      }\n    }\n    return false;\n  }\nLAB_00178b58:\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Symbol::" identifier : : identifier : :) (function_declarator "should_add_dynsym_entry(Symbol *this,Symbol_table *symtab)" identifier (parameter_list "(Symbol *this,Symbol_table *symtab)" ( (parameter_declaration "Symbol *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol_table *symtab" type_identifier (pointer_declarator "*symtab" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  uint shndx;\n  pointer ppOVar2;\n  _Alloc_hider _Var3;\n  bool bVar4;\n  char *pcVar5;\n  General_options *pGVar6;\n  char *pcVar7;\n  size_t sVar8;\n  byte *__ptr;\n  byte bVar9;\n  int iVar10;\n  byte bVar11;\n  char cVar12;\n  Output_segment *pOVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  bool bVar16;\n  bool bVar17;\n  byte bVar18;\n  int local_40;\n  bool is_global;\n  char local_2c [28];\n  \n  bVar18 = 0;\n  bVar9 = this->field_0x2b;\n  bVar11 = bVar9 >> 6;\n  if ((bVar11 & 1) == 0) {\n    return false;\n  }\n  bVar1 = this->field_0x2a;\n  if ((bVar1 & 0x40) != 0) {\n    return (bool)(bVar11 & 1);\n  }\n  if (((((char)bVar1 < '\0') && ((bVar9 & 1) != 0)) &&\n      (((this->field_0x29 & 3) == 0 || ((this->field_0x29 & 3) == 3)))) && ((bVar9 & 0x10) == 0)) {\n    return (bool)(bVar11 & 1);\n  }\n  pGVar6 = parameters->options_;\n  if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n  if ((((pGVar6->gc_sections_).value == false) || ((pGVar6->shared_).value != false)) ||\n     ((bVar1 & 7) != 0)) {\n    if ((bVar1 & 7) == 0) {\n      if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) != 0) goto LAB_00178a1d;\n      pGVar6 = parameters->options_;\n    }\nLAB_00178962:\n    bVar4 = Version_script_info::get_symbol_version\n                      (&(pGVar6->dynamic_list_).version_script_info_,this->name_,(string *)0x0,\n                       &is_global);\n    if ((bVar4) && (is_global == false)) {\nLAB_00178990:\n      if ((this->field_0x2b & 0x10) == 0) {\n        return (bool)(bVar11 & 1);\n      }\n      demangle((string *)&is_global,this->name_);\n      _Var3._M_p = _is_global;\n      pcVar5 = (char *)gettext("Cannot export local symbol \'%s\'");\n                    /* try { // try from 001789c4 to 001789c8 has its CatchHandler @ 00178e46 */\n      gold_warning(pcVar5,_Var3._M_p);\n      if (_is_global == local_2c) {\n        return false;\n      }\n      operator_delete(_is_global);\n      return false;\n    }\n    pGVar6 = parameters->options_;\n    if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n    if ((pGVar6->export_dynamic_symbol_).value._M_h._M_element_count != 0) {\n      pcVar5 = this->name_;\n      pcVar7 = (char *)0xffffffff;\n      _is_global = local_2c;\n      if (pcVar5 != (char *)0x0) {\n        sVar8 = strlen(pcVar5);\n        pcVar7 = pcVar5 + sVar8;\n      }\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char_const*>((string *)&is_global,pcVar5,pcVar7,0);\n      std::\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      ::find(&(pGVar6->export_dynamic_symbol_).value._M_h,(string *)&is_global);\n      if (local_40 != 0) {\n        if (_is_global != local_2c) {\n          operator_delete(_is_global);\n        }\n        goto LAB_00178990;\n      }\n      if (_is_global != local_2c) {\n        operator_delete(_is_global);\n        bVar9 = this->field_0x2b;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar9 = this->field_0x2b;\n  }\n  else {\n    pOVar13 = (this->u1_).output_segment;\n    if ((((Object *)pOVar13->output_lists_)->field_0x2c & 1) == 0) {\n      shndx = (this->u2_).shndx;\n      if (((bVar9 & 0x20) == 0) || (shndx == 0)) {\nLAB_00178b48:\n        pGVar6 = parameters->options_;\n        if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      ppOVar2 = (((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_start;\n      if ((uint)((int)(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )._M_impl._M_finish - (int)ppOVar2 >> 2) <= shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n      }\n      if (ppOVar2[shndx] != (Output_section *)0x0) goto LAB_00178b48;\n      bVar4 = Symbol_table::is_section_folded(symtab,(Relobj *)pOVar13,shndx);\n      if (!bVar4) {\n        return false;\n      }\n      if (((this->field_0x2a & 7) != 0) ||\n         (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) == 0)) goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }\nLAB_00178a1d:\n  if ((bVar9 & 0x10) != 0) {\n    return false;\n  }\n  pGVar6 = parameters->options_;\n  if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n  if ((pGVar6->dynamic_list_data_).value == false) {\nLAB_00178c1e:\n    if (((pGVar6->dynamic_list_cpp_new_).value == false) &&\n       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false)) goto LAB_00178a80;\n    if ((this->field_0x2a & 7) == 0) {\n      pOVar13 = (this->u1_).output_segment;\n      goto LAB_00178a70;\n    }\n  }\n  else {\n    if (((this->field_0x2a & 7) != 0) ||\n       (pOVar13 = (this->u1_).output_segment,\n       ((uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_end_of_storage & 1) == 0)) {\n      if ((this->field_0x28 & 0xf) == 1) {\n        return (bool)(bVar11 & 1);\n      }\n      goto LAB_00178c1e;\n    }\n    if (((pGVar6->dynamic_list_cpp_new_).value != false) ||\n       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false)) goto LAB_00178a80;\nLAB_00178a70:\n    if (((uint)pOVar13->output_lists_[3].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_end_of_storage & 1) != 0) goto LAB_00178a80;\n  }\n  __ptr = (byte *)cplus_demangle(this->name_,3);\n  if (__ptr != (byte *)0x0) {\n    pGVar6 = parameters->options_;\n    if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n    cVar12 = (pGVar6->dynamic_list_cpp_new_).value;\n    bVar4 = false;\n    bVar17 = (bool)cVar12 == false;\n    if (!bVar17) {\n      iVar10 = 0xc;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"operator new";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar4 = *pbVar14 < *pbVar15;\n        bVar17 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar17);\n      bVar16 = false;\n      bVar4 = (!bVar4 && !bVar17) == bVar4;\n      if (bVar4) goto LAB_00178d5c;\n      iVar10 = 0xf;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"operator delete";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar16 = *pbVar14 < *pbVar15;\n        bVar4 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar4);\n      if ((!bVar16 && !bVar4) == bVar16) goto LAB_00178d5c;\n    }\n    cVar12 = (pGVar6->dynamic_list_cpp_typeinfo_).value;\n    bVar4 = false;\n    bVar17 = (bool)cVar12 == false;\n    if (!bVar17) {\n      iVar10 = 0x11;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"typeinfo name for";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar4 = *pbVar14 < *pbVar15;\n        bVar17 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar17);\n      bVar16 = false;\n      bVar4 = (!bVar4 && !bVar17) == bVar4;\n      if (bVar4) {\nLAB_00178d5c:\n        free(__ptr);\n        return (bool)cVar12;\n      }\n      iVar10 = 0xc;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"typeinfo for";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar16 = *pbVar14 < *pbVar15;\n        bVar4 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar4);\n      if ((!bVar16 && !bVar4) == bVar16) goto LAB_00178d5c;\n    }\n    free(__ptr);\n  }\n  pGVar6 = parameters->options_;\n  if (pGVar6 != (General_options *)0x0) {\nLAB_00178a80:\n    if ((((pGVar6->export_dynamic_).value != false) || ((pGVar6->shared_).value != false)) ||\n       (((pGVar6->gnu_unique_).value != false && ((byte)this->field_0x28 >> 4 == 10)))) {\n      if ((this->field_0x2a & 7) == 0) {\n        if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_end_of_storage & 1) != 0) {\n          return false;\n        }\n        if (((this->u2_).shndx == 0) && ((this->field_0x2b & 0x20) != 0)) {\n          return false;\n        }\n      }\n      else if ((this->field_0x2a & 7) == 4) {\n        return false;\n      }\n      if (((this->field_0x29 & 3) == 0) || ((this->field_0x29 & 3) == 3)) {\n        return (bool)((byte)this->field_0x2b >> 4 & 1 ^ 1);\n      }\n    }\n    return false;\n  }\nLAB_00178b58:\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint shndx;" type_identifier identifier ;) (declaration "pointer ppOVar2;" type_identifier identifier ;) (declaration "_Alloc_hider _Var3;" type_identifier identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "General_options *pGVar6;" type_identifier (pointer_declarator "*pGVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "size_t sVar8;" primitive_type identifier ;) (declaration "byte *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "char cVar12;" primitive_type identifier ;) (declaration "Output_segment *pOVar13;" type_identifier (pointer_declarator "*pOVar13" * identifier) ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "byte *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "byte bVar18;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "bool is_global;" primitive_type identifier ;) (declaration "char local_2c [28];" primitive_type (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" identifier = number_literal) ;) (expression_statement "bVar9 = this->field_0x2b;" (assignment_expression "bVar9 = this->field_0x2b" identifier = (field_expression "this->field_0x2b" identifier -> field_identifier)) ;) (expression_statement "bVar11 = bVar9 >> 6;" (assignment_expression "bVar11 = bVar9 >> 6" identifier = (binary_expression "bVar9 >> 6" identifier >> number_literal)) ;) (if_statement "if ((bVar11 & 1) == 0) {\n    return false;\n  }" if (parenthesized_expression "((bVar11 & 1) == 0)" ( (binary_expression "(bVar11 & 1) == 0" (parenthesized_expression "(bVar11 & 1)" ( (binary_expression "bVar11 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "bVar1 = this->field_0x2a;" (assignment_expression "bVar1 = this->field_0x2a" identifier = (field_expression "this->field_0x2a" identifier -> field_identifier)) ;) (if_statement "if ((bVar1 & 0x40) != 0) {\n    return (bool)(bVar11 & 1);\n  }" if (parenthesized_expression "((bVar1 & 0x40) != 0)" ( (binary_expression "(bVar1 & 0x40) != 0" (parenthesized_expression "(bVar1 & 0x40)" ( (binary_expression "bVar1 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return (bool)(bVar11 & 1);\n  }" { (return_statement "return (bool)(bVar11 & 1);" return (cast_expression "(bool)(bVar11 & 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(bVar11 & 1)" ( (binary_expression "bVar11 & 1" identifier & number_literal) ))) ;) })) (if_statement "if (((((char)bVar1 < '\0') && ((bVar9 & 1) != 0)) &&\n      (((this->field_0x29 & 3) == 0 || ((this->field_0x29 & 3) == 3)))) && ((bVar9 & 0x10) == 0)) {\n    return (bool)(bVar11 & 1);\n  }" if (parenthesized_expression "(((((char)bVar1 < '\0') && ((bVar9 & 1) != 0)) &&\n      (((this->field_0x29 & 3) == 0 || ((this->field_0x29 & 3) == 3)))) && ((bVar9 & 0x10) == 0))" ( (binary_expression "((((char)bVar1 < '\0') && ((bVar9 & 1) != 0)) &&\n      (((this->field_0x29 & 3) == 0 || ((this->field_0x29 & 3) == 3)))) && ((bVar9 & 0x10) == 0)" (parenthesized_expression "((((char)bVar1 < '\0') && ((bVar9 & 1) != 0)) &&\n      (((this->field_0x29 & 3) == 0 || ((this->field_0x29 & 3) == 3))))" ( (binary_expression "(((char)bVar1 < '\0') && ((bVar9 & 1) != 0)) &&\n      (((this->field_0x29 & 3) == 0 || ((this->field_0x29 & 3) == 3)))" (parenthesized_expression "(((char)bVar1 < '\0') && ((bVar9 & 1) != 0))" ( (binary_expression "((char)bVar1 < '\0') && ((bVar9 & 1) != 0)" (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((bVar9 & 1) != 0)" ( (binary_expression "(bVar9 & 1) != 0" (parenthesized_expression "(bVar9 & 1)" ( (binary_expression "bVar9 & 1" identifier & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(((this->field_0x29 & 3) == 0 || ((this->field_0x29 & 3) == 3)))" ( (parenthesized_expression "((this->field_0x29 & 3) == 0 || ((this->field_0x29 & 3) == 3))" ( (binary_expression "(this->field_0x29 & 3) == 0 || ((this->field_0x29 & 3) == 3)" (binary_expression "(this->field_0x29 & 3) == 0" (parenthesized_expression "(this->field_0x29 & 3)" ( (binary_expression "this->field_0x29 & 3" (field_expression "this->field_0x29" identifier -> field_identifier) & number_literal) )) == number_literal) || (parenthesized_expression "((this->field_0x29 & 3) == 3)" ( (binary_expression "(this->field_0x29 & 3) == 3" (parenthesized_expression "(this->field_0x29 & 3)" ( (binary_expression "this->field_0x29 & 3" (field_expression "this->field_0x29" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) ))) )) && (parenthesized_expression "((bVar9 & 0x10) == 0)" ( (binary_expression "(bVar9 & 0x10) == 0" (parenthesized_expression "(bVar9 & 0x10)" ( (binary_expression "bVar9 & 0x10" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    return (bool)(bVar11 & 1);\n  }" { (return_statement "return (bool)(bVar11 & 1);" return (cast_expression "(bool)(bVar11 & 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(bVar11 & 1)" ( (binary_expression "bVar11 & 1" identifier & number_literal) ))) ;) })) (expression_statement "pGVar6 = parameters->options_;" (assignment_expression "pGVar6 = parameters->options_" identifier = (field_expression "parameters->options_" identifier -> field_identifier)) ;) (if_statement "if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;" if (parenthesized_expression "(pGVar6 == (General_options *)0x0)" ( (binary_expression "pGVar6 == (General_options *)0x0" identifier == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00178b58;" goto statement_identifier ;)) (if_statement "if ((((pGVar6->gc_sections_).value == false) || ((pGVar6->shared_).value != false)) ||\n     ((bVar1 & 7) != 0)) {\n    if ((bVar1 & 7) == 0) {\n      if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) != 0) goto LAB_00178a1d;\n      pGVar6 = parameters->options_;\n    }\nLAB_00178962:\n    bVar4 = Version_script_info::get_symbol_version\n                      (&(pGVar6->dynamic_list_).version_script_info_,this->name_,(string *)0x0,\n                       &is_global);\n    if ((bVar4) && (is_global == false)) {\nLAB_00178990:\n      if ((this->field_0x2b & 0x10) == 0) {\n        return (bool)(bVar11 & 1);\n      }\n      demangle((string *)&is_global,this->name_);\n      _Var3._M_p = _is_global;\n      pcVar5 = (char *)gettext("Cannot export local symbol \'%s\'");\n                    /* try { // try from 001789c4 to 001789c8 has its CatchHandler @ 00178e46 */\n      gold_warning(pcVar5,_Var3._M_p);\n      if (_is_global == local_2c) {\n        return false;\n      }\n      operator_delete(_is_global);\n      return false;\n    }\n    pGVar6 = parameters->options_;\n    if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n    if ((pGVar6->export_dynamic_symbol_).value._M_h._M_element_count != 0) {\n      pcVar5 = this->name_;\n      pcVar7 = (char *)0xffffffff;\n      _is_global = local_2c;\n      if (pcVar5 != (char *)0x0) {\n        sVar8 = strlen(pcVar5);\n        pcVar7 = pcVar5 + sVar8;\n      }\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char_const*>((string *)&is_global,pcVar5,pcVar7,0);\n      std::\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      ::find(&(pGVar6->export_dynamic_symbol_).value._M_h,(string *)&is_global);\n      if (local_40 != 0) {\n        if (_is_global != local_2c) {\n          operator_delete(_is_global);\n        }\n        goto LAB_00178990;\n      }\n      if (_is_global != local_2c) {\n        operator_delete(_is_global);\n        bVar9 = this->field_0x2b;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar9 = this->field_0x2b;\n  }\n  else {\n    pOVar13 = (this->u1_).output_segment;\n    if ((((Object *)pOVar13->output_lists_)->field_0x2c & 1) == 0) {\n      shndx = (this->u2_).shndx;\n      if (((bVar9 & 0x20) == 0) || (shndx == 0)) {\nLAB_00178b48:\n        pGVar6 = parameters->options_;\n        if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      ppOVar2 = (((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_start;\n      if ((uint)((int)(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )._M_impl._M_finish - (int)ppOVar2 >> 2) <= shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n      }\n      if (ppOVar2[shndx] != (Output_section *)0x0) goto LAB_00178b48;\n      bVar4 = Symbol_table::is_section_folded(symtab,(Relobj *)pOVar13,shndx);\n      if (!bVar4) {\n        return false;\n      }\n      if (((this->field_0x2a & 7) != 0) ||\n         (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) == 0)) goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }" if (parenthesized_expression "((((pGVar6->gc_sections_).value == false) || ((pGVar6->shared_).value != false)) ||\n     ((bVar1 & 7) != 0))" ( (binary_expression "(((pGVar6->gc_sections_).value == false) || ((pGVar6->shared_).value != false)) ||\n     ((bVar1 & 7) != 0)" (parenthesized_expression "(((pGVar6->gc_sections_).value == false) || ((pGVar6->shared_).value != false))" ( (binary_expression "((pGVar6->gc_sections_).value == false) || ((pGVar6->shared_).value != false)" (parenthesized_expression "((pGVar6->gc_sections_).value == false)" ( (binary_expression "(pGVar6->gc_sections_).value == false" (field_expression "(pGVar6->gc_sections_).value" (parenthesized_expression "(pGVar6->gc_sections_)" ( (field_expression "pGVar6->gc_sections_" identifier -> field_identifier) )) . field_identifier) == false) )) || (parenthesized_expression "((pGVar6->shared_).value != false)" ( (binary_expression "(pGVar6->shared_).value != false" (field_expression "(pGVar6->shared_).value" (parenthesized_expression "(pGVar6->shared_)" ( (field_expression "pGVar6->shared_" identifier -> field_identifier) )) . field_identifier) != false) ))) )) || (parenthesized_expression "((bVar1 & 7) != 0)" ( (binary_expression "(bVar1 & 7) != 0" (parenthesized_expression "(bVar1 & 7)" ( (binary_expression "bVar1 & 7" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    if ((bVar1 & 7) == 0) {\n      if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) != 0) goto LAB_00178a1d;\n      pGVar6 = parameters->options_;\n    }\nLAB_00178962:\n    bVar4 = Version_script_info::get_symbol_version\n                      (&(pGVar6->dynamic_list_).version_script_info_,this->name_,(string *)0x0,\n                       &is_global);\n    if ((bVar4) && (is_global == false)) {\nLAB_00178990:\n      if ((this->field_0x2b & 0x10) == 0) {\n        return (bool)(bVar11 & 1);\n      }\n      demangle((string *)&is_global,this->name_);\n      _Var3._M_p = _is_global;\n      pcVar5 = (char *)gettext("Cannot export local symbol \'%s\'");\n                    /* try { // try from 001789c4 to 001789c8 has its CatchHandler @ 00178e46 */\n      gold_warning(pcVar5,_Var3._M_p);\n      if (_is_global == local_2c) {\n        return false;\n      }\n      operator_delete(_is_global);\n      return false;\n    }\n    pGVar6 = parameters->options_;\n    if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n    if ((pGVar6->export_dynamic_symbol_).value._M_h._M_element_count != 0) {\n      pcVar5 = this->name_;\n      pcVar7 = (char *)0xffffffff;\n      _is_global = local_2c;\n      if (pcVar5 != (char *)0x0) {\n        sVar8 = strlen(pcVar5);\n        pcVar7 = pcVar5 + sVar8;\n      }\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char_const*>((string *)&is_global,pcVar5,pcVar7,0);\n      std::\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      ::find(&(pGVar6->export_dynamic_symbol_).value._M_h,(string *)&is_global);\n      if (local_40 != 0) {\n        if (_is_global != local_2c) {\n          operator_delete(_is_global);\n        }\n        goto LAB_00178990;\n      }\n      if (_is_global != local_2c) {\n        operator_delete(_is_global);\n        bVar9 = this->field_0x2b;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar9 = this->field_0x2b;\n  }" { (if_statement "if ((bVar1 & 7) == 0) {\n      if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) != 0) goto LAB_00178a1d;\n      pGVar6 = parameters->options_;\n    }" if (parenthesized_expression "((bVar1 & 7) == 0)" ( (binary_expression "(bVar1 & 7) == 0" (parenthesized_expression "(bVar1 & 7)" ( (binary_expression "bVar1 & 7" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) != 0) goto LAB_00178a1d;\n      pGVar6 = parameters->options_;\n    }" { (if_statement "if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) != 0) goto LAB_00178a1d;" if (parenthesized_expression "(((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) != 0)" ( (binary_expression "((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) != 0" (parenthesized_expression "((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1)" ( (binary_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1" (field_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage" (field_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std" (binary_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold" (field_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base" (subscript_expression "(uint)((this->u1_).output_segment)->output_lists_[3]" (field_expression "(uint)((this->u1_).output_segment)->output_lists_" (call_expression "(uint)((this->u1_).output_segment)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((this->u1_).output_segment)" ( (field_expression "(this->u1_).output_segment" (parenthesized_expression "(this->u1_)" ( (field_expression "this->u1_" 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) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00178a1d;" goto statement_identifier ;)) (expression_statement "pGVar6 = parameters->options_;" (assignment_expression "pGVar6 = parameters->options_" identifier = (field_expression "parameters->options_" identifier -> field_identifier)) ;) })) (labeled_statement "LAB_00178962:\n    bVar4 = Version_script_info::get_symbol_version\n                      (&(pGVar6->dynamic_list_).version_script_info_,this->name_,(string *)0x0,\n                       &is_global);" statement_identifier : (ERROR "bVar4 = Version_script_info::" (assignment_expression "bVar4 = Version_script_info" identifier = identifier) : :) (expression_statement "get_symbol_version\n                      (&(pGVar6->dynamic_list_).version_script_info_,this->name_,(string *)0x0,\n                       &is_global);" (call_expression "get_symbol_version\n                      (&(pGVar6->dynamic_list_).version_script_info_,this->name_,(string *)0x0,\n                       &is_global)" identifier (argument_list "(&(pGVar6->dynamic_list_).version_script_info_,this->name_,(string *)0x0,\n                       &is_global)" ( (pointer_expression "&(pGVar6->dynamic_list_).version_script_info_" & (field_expression "(pGVar6->dynamic_list_).version_script_info_" (parenthesized_expression "(pGVar6->dynamic_list_)" ( (field_expression "pGVar6->dynamic_list_" identifier -> field_identifier) )) . field_identifier)) , (field_expression "this->name_" identifier -> field_identifier) , (cast_expression "(string *)0x0" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (pointer_expression "&is_global" & identifier) ))) ;)) (if_statement "if ((bVar4) && (is_global == false)) {\nLAB_00178990:\n      if ((this->field_0x2b & 0x10) == 0) {\n        return (bool)(bVar11 & 1);\n      }\n      demangle((string *)&is_global,this->name_);\n      _Var3._M_p = _is_global;\n      pcVar5 = (char *)gettext("Cannot export local symbol \'%s\'");\n                    /* try { // try from 001789c4 to 001789c8 has its CatchHandler @ 00178e46 */\n      gold_warning(pcVar5,_Var3._M_p);\n      if (_is_global == local_2c) {\n        return false;\n      }\n      operator_delete(_is_global);\n      return false;\n    }" if (parenthesized_expression "((bVar4) && (is_global == false))" ( (binary_expression "(bVar4) && (is_global == false)" (parenthesized_expression "(bVar4)" ( identifier )) && (parenthesized_expression "(is_global == false)" ( (binary_expression "is_global == false" identifier == false) ))) )) (compound_statement "{\nLAB_00178990:\n      if ((this->field_0x2b & 0x10) == 0) {\n        return (bool)(bVar11 & 1);\n      }\n      demangle((string *)&is_global,this->name_);\n      _Var3._M_p = _is_global;\n      pcVar5 = (char *)gettext("Cannot export local symbol \'%s\'");\n                    /* try { // try from 001789c4 to 001789c8 has its CatchHandler @ 00178e46 */\n      gold_warning(pcVar5,_Var3._M_p);\n      if (_is_global == local_2c) {\n        return false;\n      }\n      operator_delete(_is_global);\n      return false;\n    }" { (labeled_statement "LAB_00178990:\n      if ((this->field_0x2b & 0x10) == 0) {\n        return (bool)(bVar11 & 1);\n      }" statement_identifier : (if_statement "if ((this->field_0x2b & 0x10) == 0) {\n        return (bool)(bVar11 & 1);\n      }" if (parenthesized_expression "((this->field_0x2b & 0x10) == 0)" ( (binary_expression "(this->field_0x2b & 0x10) == 0" (parenthesized_expression "(this->field_0x2b & 0x10)" ( (binary_expression "this->field_0x2b & 0x10" (field_expression "this->field_0x2b" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        return (bool)(bVar11 & 1);\n      }" { (return_statement "return (bool)(bVar11 & 1);" return (cast_expression "(bool)(bVar11 & 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(bVar11 & 1)" ( (binary_expression "bVar11 & 1" identifier & number_literal) ))) ;) }))) (expression_statement "demangle((string *)&is_global,this->name_);" (call_expression "demangle((string *)&is_global,this->name_)" identifier (argument_list "((string *)&is_global,this->name_)" ( (cast_expression "(string *)&is_global" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&is_global" & identifier)) , (field_expression "this->name_" identifier -> field_identifier) ))) ;) (expression_statement "_Var3._M_p = _is_global;" (assignment_expression "_Var3._M_p = _is_global" (field_expression "_Var3._M_p" identifier . field_identifier) = identifier) ;) (expression_statement "pcVar5 = (char *)gettext("Cannot export local symbol \'%s\'");" (assignment_expression "pcVar5 = (char *)gettext("Cannot export local symbol \'%s\'")" identifier = (cast_expression "(char *)gettext("Cannot export local symbol \'%s\'")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("Cannot export local symbol \'%s\'")" identifier (argument_list "("Cannot export local symbol \'%s\'")" ( (string_literal ""Cannot export local symbol \'%s\'"" " string_content escape_sequence string_content escape_sequence ") ))))) ;) comment (expression_statement "gold_warning(pcVar5,_Var3._M_p);" (call_expression "gold_warning(pcVar5,_Var3._M_p)" identifier (argument_list "(pcVar5,_Var3._M_p)" ( identifier , (field_expression "_Var3._M_p" identifier . field_identifier) ))) ;) (if_statement "if (_is_global == local_2c) {\n        return false;\n      }" if (parenthesized_expression "(_is_global == local_2c)" ( (binary_expression "_is_global == local_2c" identifier == identifier) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (expression_statement "operator_delete(_is_global);" (call_expression "operator_delete(_is_global)" identifier (argument_list "(_is_global)" ( identifier ))) ;) (return_statement "return false;" return false ;) })) (expression_statement "pGVar6 = parameters->options_;" (assignment_expression "pGVar6 = parameters->options_" identifier = (field_expression "parameters->options_" identifier -> field_identifier)) ;) (if_statement "if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;" if (parenthesized_expression "(pGVar6 == (General_options *)0x0)" ( (binary_expression "pGVar6 == (General_options *)0x0" identifier == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00178b58;" goto statement_identifier ;)) (if_statement "if ((pGVar6->export_dynamic_symbol_).value._M_h._M_element_count != 0) {\n      pcVar5 = this->name_;\n      pcVar7 = (char *)0xffffffff;\n      _is_global = local_2c;\n      if (pcVar5 != (char *)0x0) {\n        sVar8 = strlen(pcVar5);\n        pcVar7 = pcVar5 + sVar8;\n      }\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char_const*>((string *)&is_global,pcVar5,pcVar7,0);\n      std::\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      ::find(&(pGVar6->export_dynamic_symbol_).value._M_h,(string *)&is_global);\n      if (local_40 != 0) {\n        if (_is_global != local_2c) {\n          operator_delete(_is_global);\n        }\n        goto LAB_00178990;\n      }\n      if (_is_global != local_2c) {\n        operator_delete(_is_global);\n        bVar9 = this->field_0x2b;\n        goto LAB_00178a1d;\n      }\n    }" if (parenthesized_expression "((pGVar6->export_dynamic_symbol_).value._M_h._M_element_count != 0)" ( (binary_expression "(pGVar6->export_dynamic_symbol_).value._M_h._M_element_count != 0" (field_expression "(pGVar6->export_dynamic_symbol_).value._M_h._M_element_count" (field_expression "(pGVar6->export_dynamic_symbol_).value._M_h" (field_expression "(pGVar6->export_dynamic_symbol_).value" (parenthesized_expression "(pGVar6->export_dynamic_symbol_)" ( (field_expression "pGVar6->export_dynamic_symbol_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) != number_literal) )) (compound_statement "{\n      pcVar5 = this->name_;\n      pcVar7 = (char *)0xffffffff;\n      _is_global = local_2c;\n      if (pcVar5 != (char *)0x0) {\n        sVar8 = strlen(pcVar5);\n        pcVar7 = pcVar5 + sVar8;\n      }\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char_const*>((string *)&is_global,pcVar5,pcVar7,0);\n      std::\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      ::find(&(pGVar6->export_dynamic_symbol_).value._M_h,(string *)&is_global);\n      if (local_40 != 0) {\n        if (_is_global != local_2c) {\n          operator_delete(_is_global);\n        }\n        goto LAB_00178990;\n      }\n      if (_is_global != local_2c) {\n        operator_delete(_is_global);\n        bVar9 = this->field_0x2b;\n        goto LAB_00178a1d;\n      }\n    }" { (expression_statement "pcVar5 = this->name_;" (assignment_expression "pcVar5 = this->name_" identifier = (field_expression "this->name_" identifier -> field_identifier)) ;) (expression_statement "pcVar7 = (char *)0xffffffff;" (assignment_expression "pcVar7 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "_is_global = local_2c;" (assignment_expression "_is_global = local_2c" identifier = identifier) ;) (if_statement "if (pcVar5 != (char *)0x0) {\n        sVar8 = strlen(pcVar5);\n        pcVar7 = pcVar5 + sVar8;\n      }" if (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        sVar8 = strlen(pcVar5);\n        pcVar7 = pcVar5 + sVar8;\n      }" { (expression_statement "sVar8 = strlen(pcVar5);" (assignment_expression "sVar8 = strlen(pcVar5)" identifier = (call_expression "strlen(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;) (expression_statement "pcVar7 = pcVar5 + sVar8;" (assignment_expression "pcVar7 = pcVar5 + sVar8" identifier = (binary_expression "pcVar5 + sVar8" identifier + identifier)) ;) })) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char_const*>((string *)&is_global,pcVar5,pcVar7,0);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>((string *)&is_global,pcVar5,pcVar7,0);" (binary_expression "_M_construct<char_const*>((string *)&is_global,pcVar5,pcVar7,0)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "((string *)&is_global,pcVar5,pcVar7,0)" ( (comma_expression "(string *)&is_global,pcVar5,pcVar7,0" (cast_expression "(string *)&is_global" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&is_global" & identifier)) , (comma_expression "pcVar5,pcVar7,0" identifier , (comma_expression "pcVar7,0" identifier , number_literal))) ))) ;)) (ERROR "std::\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::" (comma_expression "std::\n      _Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std" identifier (ERROR "::\n      _Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>" : : (binary_expression "_Hashtable<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > 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" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (comma_expression "__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std" identifier (ERROR "::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>" : : (comma_expression "_Identity,_std" identifier , identifier) : : (binary_expression "equal_to<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) >) , identifier) : : (binary_expression "hash<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) 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      ::find(&(pGVar6->export_dynamic_symbol_).value._M_h,(string *)&is_global);" 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      ::find(&(pGVar6->export_dynamic_symbol_).value._M_h,(string *)&is_global);" 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      ::find(&(pGVar6->export_dynamic_symbol_).value._M_h,(string *)&is_global);" statement_identifier (ERROR "::_Prime_rehash_policy,_std:" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<true,_true,_true>_>\n      ::find(&(pGVar6->export_dynamic_symbol_).value._M_h,(string *)&is_global);" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<true,_true,_true>_>\n      ::find(&(pGVar6->export_dynamic_symbol_).value._M_h,(string *)&is_global);" (comma_expression "_Hashtable_traits<true,_true,_true>_>\n      ::find(&(pGVar6->export_dynamic_symbol_).value._M_h,(string *)&is_global)" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_true,_true>_>\n      ::find(&(pGVar6->export_dynamic_symbol_).value._M_h,(string *)&is_global)" identifier , (binary_expression "_true>_>\n      ::find(&(pGVar6->export_dynamic_symbol_).value._M_h,(string *)&is_global)" (binary_expression "_true>_" identifier > identifier) > (ERROR "::" : :) (call_expression "find(&(pGVar6->export_dynamic_symbol_).value._M_h,(string *)&is_global)" identifier (argument_list "(&(pGVar6->export_dynamic_symbol_).value._M_h,(string *)&is_global)" ( (pointer_expression "&(pGVar6->export_dynamic_symbol_).value._M_h" & (field_expression "(pGVar6->export_dynamic_symbol_).value._M_h" (field_expression "(pGVar6->export_dynamic_symbol_).value" (parenthesized_expression "(pGVar6->export_dynamic_symbol_)" ( (field_expression "pGVar6->export_dynamic_symbol_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (cast_expression "(string *)&is_global" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&is_global" & identifier)) )))))) ;))))) (if_statement "if (local_40 != 0) {\n        if (_is_global != local_2c) {\n          operator_delete(_is_global);\n        }\n        goto LAB_00178990;\n      }" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (compound_statement "{\n        if (_is_global != local_2c) {\n          operator_delete(_is_global);\n        }\n        goto LAB_00178990;\n      }" { (if_statement "if (_is_global != local_2c) {\n          operator_delete(_is_global);\n        }" if (parenthesized_expression "(_is_global != local_2c)" ( (binary_expression "_is_global != local_2c" identifier != identifier) )) (compound_statement "{\n          operator_delete(_is_global);\n        }" { (expression_statement "operator_delete(_is_global);" (call_expression "operator_delete(_is_global)" identifier (argument_list "(_is_global)" ( identifier ))) ;) })) (goto_statement "goto LAB_00178990;" goto statement_identifier ;) })) (if_statement "if (_is_global != local_2c) {\n        operator_delete(_is_global);\n        bVar9 = this->field_0x2b;\n        goto LAB_00178a1d;\n      }" if (parenthesized_expression "(_is_global != local_2c)" ( (binary_expression "_is_global != local_2c" identifier != identifier) )) (compound_statement "{\n        operator_delete(_is_global);\n        bVar9 = this->field_0x2b;\n        goto LAB_00178a1d;\n      }" { (expression_statement "operator_delete(_is_global);" (call_expression "operator_delete(_is_global)" identifier (argument_list "(_is_global)" ( identifier ))) ;) (expression_statement "bVar9 = this->field_0x2b;" (assignment_expression "bVar9 = this->field_0x2b" identifier = (field_expression "this->field_0x2b" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00178a1d;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00178a19:\n    bVar9 = this->field_0x2b;" statement_identifier : (expression_statement "bVar9 = this->field_0x2b;" (assignment_expression "bVar9 = this->field_0x2b" identifier = (field_expression "this->field_0x2b" identifier -> field_identifier)) ;)) }) (else_clause "else {\n    pOVar13 = (this->u1_).output_segment;\n    if ((((Object *)pOVar13->output_lists_)->field_0x2c & 1) == 0) {\n      shndx = (this->u2_).shndx;\n      if (((bVar9 & 0x20) == 0) || (shndx == 0)) {\nLAB_00178b48:\n        pGVar6 = parameters->options_;\n        if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      ppOVar2 = (((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_start;\n      if ((uint)((int)(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )._M_impl._M_finish - (int)ppOVar2 >> 2) <= shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n      }\n      if (ppOVar2[shndx] != (Output_section *)0x0) goto LAB_00178b48;\n      bVar4 = Symbol_table::is_section_folded(symtab,(Relobj *)pOVar13,shndx);\n      if (!bVar4) {\n        return false;\n      }\n      if (((this->field_0x2a & 7) != 0) ||\n         (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) == 0)) goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }" else (compound_statement "{\n    pOVar13 = (this->u1_).output_segment;\n    if ((((Object *)pOVar13->output_lists_)->field_0x2c & 1) == 0) {\n      shndx = (this->u2_).shndx;\n      if (((bVar9 & 0x20) == 0) || (shndx == 0)) {\nLAB_00178b48:\n        pGVar6 = parameters->options_;\n        if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      ppOVar2 = (((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_start;\n      if ((uint)((int)(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )._M_impl._M_finish - (int)ppOVar2 >> 2) <= shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n      }\n      if (ppOVar2[shndx] != (Output_section *)0x0) goto LAB_00178b48;\n      bVar4 = Symbol_table::is_section_folded(symtab,(Relobj *)pOVar13,shndx);\n      if (!bVar4) {\n        return false;\n      }\n      if (((this->field_0x2a & 7) != 0) ||\n         (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) == 0)) goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }" { (expression_statement "pOVar13 = (this->u1_).output_segment;" (assignment_expression "pOVar13 = (this->u1_).output_segment" identifier = (field_expression "(this->u1_).output_segment" (parenthesized_expression "(this->u1_)" ( (field_expression "this->u1_" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((((Object *)pOVar13->output_lists_)->field_0x2c & 1) == 0) {\n      shndx = (this->u2_).shndx;\n      if (((bVar9 & 0x20) == 0) || (shndx == 0)) {\nLAB_00178b48:\n        pGVar6 = parameters->options_;\n        if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      ppOVar2 = (((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_start;\n      if ((uint)((int)(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )._M_impl._M_finish - (int)ppOVar2 >> 2) <= shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n      }\n      if (ppOVar2[shndx] != (Output_section *)0x0) goto LAB_00178b48;\n      bVar4 = Symbol_table::is_section_folded(symtab,(Relobj *)pOVar13,shndx);\n      if (!bVar4) {\n        return false;\n      }\n      if (((this->field_0x2a & 7) != 0) ||\n         (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) == 0)) goto LAB_00178b48;\n      goto LAB_00178a19;\n    }" if (parenthesized_expression "((((Object *)pOVar13->output_lists_)->field_0x2c & 1) == 0)" ( (binary_expression "(((Object *)pOVar13->output_lists_)->field_0x2c & 1) == 0" (parenthesized_expression "(((Object *)pOVar13->output_lists_)->field_0x2c & 1)" ( (binary_expression "((Object *)pOVar13->output_lists_)->field_0x2c & 1" (field_expression "((Object *)pOVar13->output_lists_)->field_0x2c" (parenthesized_expression "((Object *)pOVar13->output_lists_)" ( (cast_expression "(Object *)pOVar13->output_lists_" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pOVar13->output_lists_" identifier -> field_identifier)) )) -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      shndx = (this->u2_).shndx;\n      if (((bVar9 & 0x20) == 0) || (shndx == 0)) {\nLAB_00178b48:\n        pGVar6 = parameters->options_;\n        if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      ppOVar2 = (((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_start;\n      if ((uint)((int)(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )._M_impl._M_finish - (int)ppOVar2 >> 2) <= shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n      }\n      if (ppOVar2[shndx] != (Output_section *)0x0) goto LAB_00178b48;\n      bVar4 = Symbol_table::is_section_folded(symtab,(Relobj *)pOVar13,shndx);\n      if (!bVar4) {\n        return false;\n      }\n      if (((this->field_0x2a & 7) != 0) ||\n         (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) == 0)) goto LAB_00178b48;\n      goto LAB_00178a19;\n    }" { (expression_statement "shndx = (this->u2_).shndx;" (assignment_expression "shndx = (this->u2_).shndx" identifier = (field_expression "(this->u2_).shndx" (parenthesized_expression "(this->u2_)" ( (field_expression "this->u2_" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (((bVar9 & 0x20) == 0) || (shndx == 0)) {\nLAB_00178b48:\n        pGVar6 = parameters->options_;\n        if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }" if (parenthesized_expression "(((bVar9 & 0x20) == 0) || (shndx == 0))" ( (binary_expression "((bVar9 & 0x20) == 0) || (shndx == 0)" (parenthesized_expression "((bVar9 & 0x20) == 0)" ( (binary_expression "(bVar9 & 0x20) == 0" (parenthesized_expression "(bVar9 & 0x20)" ( (binary_expression "bVar9 & 0x20" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(shndx == 0)" ( (binary_expression "shndx == 0" identifier == number_literal) ))) )) (compound_statement "{\nLAB_00178b48:\n        pGVar6 = parameters->options_;\n        if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }" { (labeled_statement "LAB_00178b48:\n        pGVar6 = parameters->options_;" statement_identifier : (expression_statement "pGVar6 = parameters->options_;" (assignment_expression "pGVar6 = parameters->options_" identifier = (field_expression "parameters->options_" identifier -> field_identifier)) ;)) (if_statement "if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;" if (parenthesized_expression "(pGVar6 == (General_options *)0x0)" ( (binary_expression "pGVar6 == (General_options *)0x0" identifier == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00178b58;" goto statement_identifier ;)) (goto_statement "goto LAB_00178962;" goto statement_identifier ;) })) (expression_statement "ppOVar2 = (((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_start;" (assignment_expression "ppOVar2 = (((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_start" identifier = (field_expression "(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_start" (field_expression "(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl" (parenthesized_expression "(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)" ( (binary_expression "((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>" (binary_expression "((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base<gold::Output_section*,_std" (binary_expression "((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base<gold" (field_expression "((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                super__Vector_base" (parenthesized_expression "((Output_sections *)((Object *)pOVar13->output_lists_ + 1))" ( (cast_expression "(Output_sections *)((Object *)pOVar13->output_lists_ + 1)" ( (type_descriptor "Output_sections *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((Object *)pOVar13->output_lists_ + 1)" ( (binary_expression "(Object *)pOVar13->output_lists_ + 1" (cast_expression "(Object *)pOVar13->output_lists_" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pOVar13->output_lists_" identifier -> field_identifier)) + number_literal) ))) )) -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if ((uint)((int)(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )._M_impl._M_finish - (int)ppOVar2 >> 2) <= shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n      }" if (parenthesized_expression "((uint)((int)(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )._M_impl._M_finish - (int)ppOVar2 >> 2) <= shndx)" ( (binary_expression "(uint)((int)(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )._M_impl._M_finish - (int)ppOVar2 >> 2) <= shndx" (call_expression "(uint)((int)(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )._M_impl._M_finish - (int)ppOVar2 >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )._M_impl._M_finish - (int)ppOVar2 >> 2)" ( (binary_expression "(int)(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )._M_impl._M_finish - (int)ppOVar2 >> 2" (binary_expression "(int)(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )._M_impl._M_finish - (int)ppOVar2" (cast_expression "(int)(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )._M_impl._M_finish" ( (type_descriptor "int" primitive_type) ) (field_expression "(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )._M_impl._M_finish" (field_expression "(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )._M_impl" (parenthesized_expression "(((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      )" ( (binary_expression "((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>" (binary_expression "((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold::Output_section*,_std" (binary_expression "((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base<gold" (field_expression "((Output_sections *)((Object *)pOVar13->output_lists_ + 1))->\n                      super__Vector_base" (parenthesized_expression "((Output_sections *)((Object *)pOVar13->output_lists_ + 1))" ( (cast_expression "(Output_sections *)((Object *)pOVar13->output_lists_ + 1)" ( (type_descriptor "Output_sections *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((Object *)pOVar13->output_lists_ + 1)" ( (binary_expression "(Object *)pOVar13->output_lists_ + 1" (cast_expression "(Object *)pOVar13->output_lists_" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pOVar13->output_lists_" identifier -> field_identifier)) + number_literal) ))) )) -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) - (cast_expression "(int)ppOVar2" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n      }" { comment (expression_statement "do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");" (call_expression "do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included")" identifier (argument_list "("../../gold/object.h",0x50b,"is_section_included")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""is_section_included"" " string_content ") ))) ;) })) (if_statement "if (ppOVar2[shndx] != (Output_section *)0x0) goto LAB_00178b48;" if (parenthesized_expression "(ppOVar2[shndx] != (Output_section *)0x0)" ( (binary_expression "ppOVar2[shndx] != (Output_section *)0x0" (subscript_expression "ppOVar2[shndx]" identifier [ identifier ]) != (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00178b48;" goto statement_identifier ;)) (ERROR "bVar4 = Symbol_table::" (assignment_expression "bVar4 = Symbol_table" identifier = identifier) : :) (expression_statement "is_section_folded(symtab,(Relobj *)pOVar13,shndx);" (call_expression "is_section_folded(symtab,(Relobj *)pOVar13,shndx)" identifier (argument_list "(symtab,(Relobj *)pOVar13,shndx)" ( identifier , (cast_expression "(Relobj *)pOVar13" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (if_statement "if (!bVar4) {\n        return false;\n      }" if (parenthesized_expression "(!bVar4)" ( (unary_expression "!bVar4" ! identifier) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (if_statement "if (((this->field_0x2a & 7) != 0) ||\n         (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) == 0)) goto LAB_00178b48;" if (parenthesized_expression "(((this->field_0x2a & 7) != 0) ||\n         (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) == 0))" ( (binary_expression "((this->field_0x2a & 7) != 0) ||\n         (((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) == 0)" (parenthesized_expression "((this->field_0x2a & 7) != 0)" ( (binary_expression "(this->field_0x2a & 7) != 0" (parenthesized_expression "(this->field_0x2a & 7)" ( (binary_expression "this->field_0x2a & 7" (field_expression "this->field_0x2a" identifier -> field_identifier) & number_literal) )) != number_literal) )) || (parenthesized_expression "(((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) == 0)" ( (binary_expression "((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1) == 0" (parenthesized_expression "((uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1)" ( (binary_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage & 1" (field_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_end_of_storage" (field_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold::Output_data*,_std" (binary_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base<gold" (field_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                 super__Vector_base" (subscript_expression "(uint)((this->u1_).output_segment)->output_lists_[3]" (field_expression "(uint)((this->u1_).output_segment)->output_lists_" (call_expression "(uint)((this->u1_).output_segment)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((this->u1_).output_segment)" ( (field_expression "(this->u1_).output_segment" (parenthesized_expression "(this->u1_)" ( (field_expression "this->u1_" 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) & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_00178b48;" goto statement_identifier ;)) (goto_statement "goto LAB_00178a19;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00178a1d:\n  if ((bVar9 & 0x10) != 0) {\n    return false;\n  }" statement_identifier : (if_statement "if ((bVar9 & 0x10) != 0) {\n    return false;\n  }" if (parenthesized_expression "((bVar9 & 0x10) != 0)" ( (binary_expression "(bVar9 & 0x10) != 0" (parenthesized_expression "(bVar9 & 0x10)" ( (binary_expression "bVar9 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) }))) (expression_statement "pGVar6 = parameters->options_;" (assignment_expression "pGVar6 = parameters->options_" identifier = (field_expression "parameters->options_" identifier -> field_identifier)) ;) (if_statement "if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;" if (parenthesized_expression "(pGVar6 == (General_options *)0x0)" ( (binary_expression "pGVar6 == (General_options *)0x0" identifier == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00178b58;" goto statement_identifier ;)) (if_statement "if ((pGVar6->dynamic_list_data_).value == false) {\nLAB_00178c1e:\n    if (((pGVar6->dynamic_list_cpp_new_).value == false) &&\n       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false)) goto LAB_00178a80;\n    if ((this->field_0x2a & 7) == 0) {\n      pOVar13 = (this->u1_).output_segment;\n      goto LAB_00178a70;\n    }\n  }\n  else {\n    if (((this->field_0x2a & 7) != 0) ||\n       (pOVar13 = (this->u1_).output_segment,\n       ((uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_end_of_storage & 1) == 0)) {\n      if ((this->field_0x28 & 0xf) == 1) {\n        return (bool)(bVar11 & 1);\n      }\n      goto LAB_00178c1e;\n    }\n    if (((pGVar6->dynamic_list_cpp_new_).value != false) ||\n       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false)) goto LAB_00178a80;\nLAB_00178a70:\n    if (((uint)pOVar13->output_lists_[3].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_end_of_storage & 1) != 0) goto LAB_00178a80;\n  }" if (parenthesized_expression "((pGVar6->dynamic_list_data_).value == false)" ( (binary_expression "(pGVar6->dynamic_list_data_).value == false" (field_expression "(pGVar6->dynamic_list_data_).value" (parenthesized_expression "(pGVar6->dynamic_list_data_)" ( (field_expression "pGVar6->dynamic_list_data_" identifier -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\nLAB_00178c1e:\n    if (((pGVar6->dynamic_list_cpp_new_).value == false) &&\n       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false)) goto LAB_00178a80;\n    if ((this->field_0x2a & 7) == 0) {\n      pOVar13 = (this->u1_).output_segment;\n      goto LAB_00178a70;\n    }\n  }" { (labeled_statement "LAB_00178c1e:\n    if (((pGVar6->dynamic_list_cpp_new_).value == false) &&\n       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false)) goto LAB_00178a80;" statement_identifier : (if_statement "if (((pGVar6->dynamic_list_cpp_new_).value == false) &&\n       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false)) goto LAB_00178a80;" if (parenthesized_expression "(((pGVar6->dynamic_list_cpp_new_).value == false) &&\n       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false))" ( (binary_expression "((pGVar6->dynamic_list_cpp_new_).value == false) &&\n       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false)" (parenthesized_expression "((pGVar6->dynamic_list_cpp_new_).value == false)" ( (binary_expression "(pGVar6->dynamic_list_cpp_new_).value == false" (field_expression "(pGVar6->dynamic_list_cpp_new_).value" (parenthesized_expression "(pGVar6->dynamic_list_cpp_new_)" ( (field_expression "pGVar6->dynamic_list_cpp_new_" identifier -> field_identifier) )) . field_identifier) == false) )) && (parenthesized_expression "((pGVar6->dynamic_list_cpp_typeinfo_).value == false)" ( (binary_expression "(pGVar6->dynamic_list_cpp_typeinfo_).value == false" (field_expression "(pGVar6->dynamic_list_cpp_typeinfo_).value" (parenthesized_expression "(pGVar6->dynamic_list_cpp_typeinfo_)" ( (field_expression "pGVar6->dynamic_list_cpp_typeinfo_" identifier -> field_identifier) )) . field_identifier) == false) ))) )) (goto_statement "goto LAB_00178a80;" goto statement_identifier ;))) (if_statement "if ((this->field_0x2a & 7) == 0) {\n      pOVar13 = (this->u1_).output_segment;\n      goto LAB_00178a70;\n    }" if (parenthesized_expression "((this->field_0x2a & 7) == 0)" ( (binary_expression "(this->field_0x2a & 7) == 0" (parenthesized_expression "(this->field_0x2a & 7)" ( (binary_expression "this->field_0x2a & 7" (field_expression "this->field_0x2a" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      pOVar13 = (this->u1_).output_segment;\n      goto LAB_00178a70;\n    }" { (expression_statement "pOVar13 = (this->u1_).output_segment;" (assignment_expression "pOVar13 = (this->u1_).output_segment" identifier = (field_expression "(this->u1_).output_segment" (parenthesized_expression "(this->u1_)" ( (field_expression "this->u1_" identifier -> field_identifier) )) . field_identifier)) ;) (goto_statement "goto LAB_00178a70;" goto statement_identifier ;) })) }) (else_clause "else {\n    if (((this->field_0x2a & 7) != 0) ||\n       (pOVar13 = (this->u1_).output_segment,\n       ((uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_end_of_storage & 1) == 0)) {\n      if ((this->field_0x28 & 0xf) == 1) {\n        return (bool)(bVar11 & 1);\n      }\n      goto LAB_00178c1e;\n    }\n    if (((pGVar6->dynamic_list_cpp_new_).value != false) ||\n       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false)) goto LAB_00178a80;\nLAB_00178a70:\n    if (((uint)pOVar13->output_lists_[3].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_end_of_storage & 1) != 0) goto LAB_00178a80;\n  }" else (compound_statement "{\n    if (((this->field_0x2a & 7) != 0) ||\n       (pOVar13 = (this->u1_).output_segment,\n       ((uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_end_of_storage & 1) == 0)) {\n      if ((this->field_0x28 & 0xf) == 1) {\n        return (bool)(bVar11 & 1);\n      }\n      goto LAB_00178c1e;\n    }\n    if (((pGVar6->dynamic_list_cpp_new_).value != false) ||\n       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false)) goto LAB_00178a80;\nLAB_00178a70:\n    if (((uint)pOVar13->output_lists_[3].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_end_of_storage & 1) != 0) goto LAB_00178a80;\n  }" { (if_statement "if (((this->field_0x2a & 7) != 0) ||\n       (pOVar13 = (this->u1_).output_segment,\n       ((uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_end_of_storage & 1) == 0)) {\n      if ((this->field_0x28 & 0xf) == 1) {\n        return (bool)(bVar11 & 1);\n      }\n      goto LAB_00178c1e;\n    }" if (parenthesized_expression "(((this->field_0x2a & 7) != 0) ||\n       (pOVar13 = (this->u1_).output_segment,\n       ((uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_end_of_storage & 1) == 0))" ( (binary_expression "((this->field_0x2a & 7) != 0) ||\n       (pOVar13 = (this->u1_).output_segment,\n       ((uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_end_of_storage & 1) == 0)" (parenthesized_expression "((this->field_0x2a & 7) != 0)" ( (binary_expression "(this->field_0x2a & 7) != 0" (parenthesized_expression "(this->field_0x2a & 7)" ( (binary_expression "this->field_0x2a & 7" (field_expression "this->field_0x2a" identifier -> field_identifier) & number_literal) )) != number_literal) )) || (parenthesized_expression "(pOVar13 = (this->u1_).output_segment,\n       ((uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_end_of_storage & 1) == 0)" ( (comma_expression "pOVar13 = (this->u1_).output_segment,\n       ((uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_end_of_storage & 1) == 0" (assignment_expression "pOVar13 = (this->u1_).output_segment" identifier = (field_expression "(this->u1_).output_segment" (parenthesized_expression "(this->u1_)" ( (field_expression "this->u1_" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "((uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_end_of_storage & 1) == 0" (parenthesized_expression "((uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_end_of_storage & 1)" ( (binary_expression "(uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_end_of_storage & 1" (field_expression "(uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_end_of_storage" (field_expression "(uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "(uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "(uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "(uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std" (binary_expression "(uint)pOVar13->output_lists_[3].\n              super__Vector_base<gold" (cast_expression "(uint)pOVar13->output_lists_[3].\n              super__Vector_base" ( (type_descriptor "uint" type_identifier) ) (field_expression "pOVar13->output_lists_[3].\n              super__Vector_base" (subscript_expression "pOVar13->output_lists_[3]" (field_expression "pOVar13->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier)) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n      if ((this->field_0x28 & 0xf) == 1) {\n        return (bool)(bVar11 & 1);\n      }\n      goto LAB_00178c1e;\n    }" { (if_statement "if ((this->field_0x28 & 0xf) == 1) {\n        return (bool)(bVar11 & 1);\n      }" if (parenthesized_expression "((this->field_0x28 & 0xf) == 1)" ( (binary_expression "(this->field_0x28 & 0xf) == 1" (parenthesized_expression "(this->field_0x28 & 0xf)" ( (binary_expression "this->field_0x28 & 0xf" (field_expression "this->field_0x28" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        return (bool)(bVar11 & 1);\n      }" { (return_statement "return (bool)(bVar11 & 1);" return (cast_expression "(bool)(bVar11 & 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(bVar11 & 1)" ( (binary_expression "bVar11 & 1" identifier & number_literal) ))) ;) })) (goto_statement "goto LAB_00178c1e;" goto statement_identifier ;) })) (if_statement "if (((pGVar6->dynamic_list_cpp_new_).value != false) ||\n       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false)) goto LAB_00178a80;" if (parenthesized_expression "(((pGVar6->dynamic_list_cpp_new_).value != false) ||\n       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false))" ( (binary_expression "((pGVar6->dynamic_list_cpp_new_).value != false) ||\n       ((pGVar6->dynamic_list_cpp_typeinfo_).value == false)" (parenthesized_expression "((pGVar6->dynamic_list_cpp_new_).value != false)" ( (binary_expression "(pGVar6->dynamic_list_cpp_new_).value != false" (field_expression "(pGVar6->dynamic_list_cpp_new_).value" (parenthesized_expression "(pGVar6->dynamic_list_cpp_new_)" ( (field_expression "pGVar6->dynamic_list_cpp_new_" identifier -> field_identifier) )) . field_identifier) != false) )) || (parenthesized_expression "((pGVar6->dynamic_list_cpp_typeinfo_).value == false)" ( (binary_expression "(pGVar6->dynamic_list_cpp_typeinfo_).value == false" (field_expression "(pGVar6->dynamic_list_cpp_typeinfo_).value" (parenthesized_expression "(pGVar6->dynamic_list_cpp_typeinfo_)" ( (field_expression "pGVar6->dynamic_list_cpp_typeinfo_" identifier -> field_identifier) )) . field_identifier) == false) ))) )) (goto_statement "goto LAB_00178a80;" goto statement_identifier ;)) (labeled_statement "LAB_00178a70:\n    if (((uint)pOVar13->output_lists_[3].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_end_of_storage & 1) != 0) goto LAB_00178a80;" statement_identifier : (if_statement "if (((uint)pOVar13->output_lists_[3].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_end_of_storage & 1) != 0) goto LAB_00178a80;" if (parenthesized_expression "(((uint)pOVar13->output_lists_[3].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_end_of_storage & 1) != 0)" ( (binary_expression "((uint)pOVar13->output_lists_[3].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_end_of_storage & 1) != 0" (parenthesized_expression "((uint)pOVar13->output_lists_[3].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_end_of_storage & 1)" ( (binary_expression "(uint)pOVar13->output_lists_[3].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_end_of_storage & 1" (field_expression "(uint)pOVar13->output_lists_[3].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_end_of_storage" (field_expression "(uint)pOVar13->output_lists_[3].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "(uint)pOVar13->output_lists_[3].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "(uint)pOVar13->output_lists_[3].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "(uint)pOVar13->output_lists_[3].\n               super__Vector_base<gold::Output_data*,_std" (binary_expression "(uint)pOVar13->output_lists_[3].\n               super__Vector_base<gold" (cast_expression "(uint)pOVar13->output_lists_[3].\n               super__Vector_base" ( (type_descriptor "uint" type_identifier) ) (field_expression "pOVar13->output_lists_[3].\n               super__Vector_base" (subscript_expression "pOVar13->output_lists_[3]" (field_expression "pOVar13->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier)) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00178a80;" goto statement_identifier ;))) }))) (expression_statement "__ptr = (byte *)cplus_demangle(this->name_,3);" (assignment_expression "__ptr = (byte *)cplus_demangle(this->name_,3)" identifier = (cast_expression "(byte *)cplus_demangle(this->name_,3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "cplus_demangle(this->name_,3)" identifier (argument_list "(this->name_,3)" ( (field_expression "this->name_" identifier -> field_identifier) , number_literal ))))) ;) (if_statement "if (__ptr != (byte *)0x0) {\n    pGVar6 = parameters->options_;\n    if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n    cVar12 = (pGVar6->dynamic_list_cpp_new_).value;\n    bVar4 = false;\n    bVar17 = (bool)cVar12 == false;\n    if (!bVar17) {\n      iVar10 = 0xc;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"operator new";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar4 = *pbVar14 < *pbVar15;\n        bVar17 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar17);\n      bVar16 = false;\n      bVar4 = (!bVar4 && !bVar17) == bVar4;\n      if (bVar4) goto LAB_00178d5c;\n      iVar10 = 0xf;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"operator delete";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar16 = *pbVar14 < *pbVar15;\n        bVar4 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar4);\n      if ((!bVar16 && !bVar4) == bVar16) goto LAB_00178d5c;\n    }\n    cVar12 = (pGVar6->dynamic_list_cpp_typeinfo_).value;\n    bVar4 = false;\n    bVar17 = (bool)cVar12 == false;\n    if (!bVar17) {\n      iVar10 = 0x11;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"typeinfo name for";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar4 = *pbVar14 < *pbVar15;\n        bVar17 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar17);\n      bVar16 = false;\n      bVar4 = (!bVar4 && !bVar17) == bVar4;\n      if (bVar4) {\nLAB_00178d5c:\n        free(__ptr);\n        return (bool)cVar12;\n      }\n      iVar10 = 0xc;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"typeinfo for";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar16 = *pbVar14 < *pbVar15;\n        bVar4 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar4);\n      if ((!bVar16 && !bVar4) == bVar16) goto LAB_00178d5c;\n    }\n    free(__ptr);\n  }" if (parenthesized_expression "(__ptr != (byte *)0x0)" ( (binary_expression "__ptr != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pGVar6 = parameters->options_;\n    if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;\n    cVar12 = (pGVar6->dynamic_list_cpp_new_).value;\n    bVar4 = false;\n    bVar17 = (bool)cVar12 == false;\n    if (!bVar17) {\n      iVar10 = 0xc;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"operator new";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar4 = *pbVar14 < *pbVar15;\n        bVar17 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar17);\n      bVar16 = false;\n      bVar4 = (!bVar4 && !bVar17) == bVar4;\n      if (bVar4) goto LAB_00178d5c;\n      iVar10 = 0xf;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"operator delete";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar16 = *pbVar14 < *pbVar15;\n        bVar4 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar4);\n      if ((!bVar16 && !bVar4) == bVar16) goto LAB_00178d5c;\n    }\n    cVar12 = (pGVar6->dynamic_list_cpp_typeinfo_).value;\n    bVar4 = false;\n    bVar17 = (bool)cVar12 == false;\n    if (!bVar17) {\n      iVar10 = 0x11;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"typeinfo name for";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar4 = *pbVar14 < *pbVar15;\n        bVar17 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar17);\n      bVar16 = false;\n      bVar4 = (!bVar4 && !bVar17) == bVar4;\n      if (bVar4) {\nLAB_00178d5c:\n        free(__ptr);\n        return (bool)cVar12;\n      }\n      iVar10 = 0xc;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"typeinfo for";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar16 = *pbVar14 < *pbVar15;\n        bVar4 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar4);\n      if ((!bVar16 && !bVar4) == bVar16) goto LAB_00178d5c;\n    }\n    free(__ptr);\n  }" { (expression_statement "pGVar6 = parameters->options_;" (assignment_expression "pGVar6 = parameters->options_" identifier = (field_expression "parameters->options_" identifier -> field_identifier)) ;) (if_statement "if (pGVar6 == (General_options *)0x0) goto LAB_00178b58;" if (parenthesized_expression "(pGVar6 == (General_options *)0x0)" ( (binary_expression "pGVar6 == (General_options *)0x0" identifier == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00178b58;" goto statement_identifier ;)) (expression_statement "cVar12 = (pGVar6->dynamic_list_cpp_new_).value;" (assignment_expression "cVar12 = (pGVar6->dynamic_list_cpp_new_).value" identifier = (field_expression "(pGVar6->dynamic_list_cpp_new_).value" (parenthesized_expression "(pGVar6->dynamic_list_cpp_new_)" ( (field_expression "pGVar6->dynamic_list_cpp_new_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "bVar17 = (bool)cVar12 == false;" (assignment_expression "bVar17 = (bool)cVar12 == false" identifier = (binary_expression "(bool)cVar12 == false" (cast_expression "(bool)cVar12" ( (type_descriptor "bool" primitive_type) ) identifier) == false)) ;) (if_statement "if (!bVar17) {\n      iVar10 = 0xc;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"operator new";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar4 = *pbVar14 < *pbVar15;\n        bVar17 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar17);\n      bVar16 = false;\n      bVar4 = (!bVar4 && !bVar17) == bVar4;\n      if (bVar4) goto LAB_00178d5c;\n      iVar10 = 0xf;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"operator delete";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar16 = *pbVar14 < *pbVar15;\n        bVar4 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar4);\n      if ((!bVar16 && !bVar4) == bVar16) goto LAB_00178d5c;\n    }" if (parenthesized_expression "(!bVar17)" ( (unary_expression "!bVar17" ! identifier) )) (compound_statement "{\n      iVar10 = 0xc;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"operator new";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar4 = *pbVar14 < *pbVar15;\n        bVar17 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar17);\n      bVar16 = false;\n      bVar4 = (!bVar4 && !bVar17) == bVar4;\n      if (bVar4) goto LAB_00178d5c;\n      iVar10 = 0xf;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"operator delete";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar16 = *pbVar14 < *pbVar15;\n        bVar4 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar4);\n      if ((!bVar16 && !bVar4) == bVar16) goto LAB_00178d5c;\n    }" { (expression_statement "iVar10 = 0xc;" (assignment_expression "iVar10 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar14 = __ptr;" (assignment_expression "pbVar14 = __ptr" identifier = identifier) ;) (expression_statement "pbVar15 = (byte *)"operator new";" (assignment_expression "pbVar15 = (byte *)"operator new"" identifier = (cast_expression "(byte *)"operator new"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""operator new"" " string_content "))) ;) (do_statement "do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar4 = *pbVar14 < *pbVar15;\n        bVar17 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar17);" do (compound_statement "{\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar4 = *pbVar14 < *pbVar15;\n        bVar17 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar4 = *pbVar14 < *pbVar15;" (assignment_expression "bVar4 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar17 = *pbVar14 == *pbVar15;" (assignment_expression "bVar17 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar18 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar18 * -2" identifier + (binary_expression "(uint)bVar18 * -2" (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar18 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar18 * -2" identifier + (binary_expression "(uint)bVar18 * -2" (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar17)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar4 = (!bVar4 && !bVar17) == bVar4;" (assignment_expression "bVar4 = (!bVar4 && !bVar17) == bVar4" identifier = (binary_expression "(!bVar4 && !bVar17) == bVar4" (parenthesized_expression "(!bVar4 && !bVar17)" ( (binary_expression "!bVar4 && !bVar17" (unary_expression "!bVar4" ! identifier) && (unary_expression "!bVar17" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar4) goto LAB_00178d5c;" if (parenthesized_expression "(bVar4)" ( identifier )) (goto_statement "goto LAB_00178d5c;" goto statement_identifier ;)) (expression_statement "iVar10 = 0xf;" (assignment_expression "iVar10 = 0xf" identifier = number_literal) ;) (expression_statement "pbVar14 = __ptr;" (assignment_expression "pbVar14 = __ptr" identifier = identifier) ;) (expression_statement "pbVar15 = (byte *)"operator delete";" (assignment_expression "pbVar15 = (byte *)"operator delete"" identifier = (cast_expression "(byte *)"operator delete"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""operator delete"" " string_content "))) ;) (do_statement "do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar16 = *pbVar14 < *pbVar15;\n        bVar4 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar4);" do (compound_statement "{\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar16 = *pbVar14 < *pbVar15;\n        bVar4 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar14 < *pbVar15;" (assignment_expression "bVar16 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar4 = *pbVar14 == *pbVar15;" (assignment_expression "bVar4 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar18 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar18 * -2" identifier + (binary_expression "(uint)bVar18 * -2" (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar18 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar18 * -2" identifier + (binary_expression "(uint)bVar18 * -2" (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar4)" ( identifier )) ;) (if_statement "if ((!bVar16 && !bVar4) == bVar16) goto LAB_00178d5c;" if (parenthesized_expression "((!bVar16 && !bVar4) == bVar16)" ( (binary_expression "(!bVar16 && !bVar4) == bVar16" (parenthesized_expression "(!bVar16 && !bVar4)" ( (binary_expression "!bVar16 && !bVar4" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar4" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_00178d5c;" goto statement_identifier ;)) })) (expression_statement "cVar12 = (pGVar6->dynamic_list_cpp_typeinfo_).value;" (assignment_expression "cVar12 = (pGVar6->dynamic_list_cpp_typeinfo_).value" identifier = (field_expression "(pGVar6->dynamic_list_cpp_typeinfo_).value" (parenthesized_expression "(pGVar6->dynamic_list_cpp_typeinfo_)" ( (field_expression "pGVar6->dynamic_list_cpp_typeinfo_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "bVar17 = (bool)cVar12 == false;" (assignment_expression "bVar17 = (bool)cVar12 == false" identifier = (binary_expression "(bool)cVar12 == false" (cast_expression "(bool)cVar12" ( (type_descriptor "bool" primitive_type) ) identifier) == false)) ;) (if_statement "if (!bVar17) {\n      iVar10 = 0x11;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"typeinfo name for";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar4 = *pbVar14 < *pbVar15;\n        bVar17 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar17);\n      bVar16 = false;\n      bVar4 = (!bVar4 && !bVar17) == bVar4;\n      if (bVar4) {\nLAB_00178d5c:\n        free(__ptr);\n        return (bool)cVar12;\n      }\n      iVar10 = 0xc;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"typeinfo for";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar16 = *pbVar14 < *pbVar15;\n        bVar4 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar4);\n      if ((!bVar16 && !bVar4) == bVar16) goto LAB_00178d5c;\n    }" if (parenthesized_expression "(!bVar17)" ( (unary_expression "!bVar17" ! identifier) )) (compound_statement "{\n      iVar10 = 0x11;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"typeinfo name for";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar4 = *pbVar14 < *pbVar15;\n        bVar17 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar17);\n      bVar16 = false;\n      bVar4 = (!bVar4 && !bVar17) == bVar4;\n      if (bVar4) {\nLAB_00178d5c:\n        free(__ptr);\n        return (bool)cVar12;\n      }\n      iVar10 = 0xc;\n      pbVar14 = __ptr;\n      pbVar15 = (byte *)"typeinfo for";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar16 = *pbVar14 < *pbVar15;\n        bVar4 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar4);\n      if ((!bVar16 && !bVar4) == bVar16) goto LAB_00178d5c;\n    }" { (expression_statement "iVar10 = 0x11;" (assignment_expression "iVar10 = 0x11" identifier = number_literal) ;) (expression_statement "pbVar14 = __ptr;" (assignment_expression "pbVar14 = __ptr" identifier = identifier) ;) (expression_statement "pbVar15 = (byte *)"typeinfo name for";" (assignment_expression "pbVar15 = (byte *)"typeinfo name for"" identifier = (cast_expression "(byte *)"typeinfo name for"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""typeinfo name for"" " string_content "))) ;) (do_statement "do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar4 = *pbVar14 < *pbVar15;\n        bVar17 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar17);" do (compound_statement "{\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar4 = *pbVar14 < *pbVar15;\n        bVar17 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar4 = *pbVar14 < *pbVar15;" (assignment_expression "bVar4 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar17 = *pbVar14 == *pbVar15;" (assignment_expression "bVar17 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar18 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar18 * -2" identifier + (binary_expression "(uint)bVar18 * -2" (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar18 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar18 * -2" identifier + (binary_expression "(uint)bVar18 * -2" (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar17)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar4 = (!bVar4 && !bVar17) == bVar4;" (assignment_expression "bVar4 = (!bVar4 && !bVar17) == bVar4" identifier = (binary_expression "(!bVar4 && !bVar17) == bVar4" (parenthesized_expression "(!bVar4 && !bVar17)" ( (binary_expression "!bVar4 && !bVar17" (unary_expression "!bVar4" ! identifier) && (unary_expression "!bVar17" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar4) {\nLAB_00178d5c:\n        free(__ptr);\n        return (bool)cVar12;\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\nLAB_00178d5c:\n        free(__ptr);\n        return (bool)cVar12;\n      }" { (labeled_statement "LAB_00178d5c:\n        free(__ptr);" statement_identifier : (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;)) (return_statement "return (bool)cVar12;" return (cast_expression "(bool)cVar12" ( (type_descriptor "bool" primitive_type) ) identifier) ;) })) (expression_statement "iVar10 = 0xc;" (assignment_expression "iVar10 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar14 = __ptr;" (assignment_expression "pbVar14 = __ptr" identifier = identifier) ;) (expression_statement "pbVar15 = (byte *)"typeinfo for";" (assignment_expression "pbVar15 = (byte *)"typeinfo for"" identifier = (cast_expression "(byte *)"typeinfo for"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""typeinfo for"" " string_content "))) ;) (do_statement "do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar16 = *pbVar14 < *pbVar15;\n        bVar4 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      } while (bVar4);" do (compound_statement "{\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar16 = *pbVar14 < *pbVar15;\n        bVar4 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;\n      }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar14 < *pbVar15;" (assignment_expression "bVar16 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar4 = *pbVar14 == *pbVar15;" (assignment_expression "bVar4 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar18 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar18 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar18 * -2" identifier + (binary_expression "(uint)bVar18 * -2" (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar18 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar18 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar18 * -2" identifier + (binary_expression "(uint)bVar18 * -2" (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar4)" ( identifier )) ;) (if_statement "if ((!bVar16 && !bVar4) == bVar16) goto LAB_00178d5c;" if (parenthesized_expression "((!bVar16 && !bVar4) == bVar16)" ( (binary_expression "(!bVar16 && !bVar4) == bVar16" (parenthesized_expression "(!bVar16 && !bVar4)" ( (binary_expression "!bVar16 && !bVar4" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar4" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_00178d5c;" goto statement_identifier ;)) })) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) })) (expression_statement "pGVar6 = parameters->options_;" (assignment_expression "pGVar6 = parameters->options_" identifier = (field_expression "parameters->options_" identifier -> field_identifier)) ;) (if_statement "if (pGVar6 != (General_options *)0x0) {\nLAB_00178a80:\n    if ((((pGVar6->export_dynamic_).value != false) || ((pGVar6->shared_).value != false)) ||\n       (((pGVar6->gnu_unique_).value != false && ((byte)this->field_0x28 >> 4 == 10)))) {\n      if ((this->field_0x2a & 7) == 0) {\n        if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_end_of_storage & 1) != 0) {\n          return false;\n        }\n        if (((this->u2_).shndx == 0) && ((this->field_0x2b & 0x20) != 0)) {\n          return false;\n        }\n      }\n      else if ((this->field_0x2a & 7) == 4) {\n        return false;\n      }\n      if (((this->field_0x29 & 3) == 0) || ((this->field_0x29 & 3) == 3)) {\n        return (bool)((byte)this->field_0x2b >> 4 & 1 ^ 1);\n      }\n    }\n    return false;\n  }" if (parenthesized_expression "(pGVar6 != (General_options *)0x0)" ( (binary_expression "pGVar6 != (General_options *)0x0" identifier != (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00178a80:\n    if ((((pGVar6->export_dynamic_).value != false) || ((pGVar6->shared_).value != false)) ||\n       (((pGVar6->gnu_unique_).value != false && ((byte)this->field_0x28 >> 4 == 10)))) {\n      if ((this->field_0x2a & 7) == 0) {\n        if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_end_of_storage & 1) != 0) {\n          return false;\n        }\n        if (((this->u2_).shndx == 0) && ((this->field_0x2b & 0x20) != 0)) {\n          return false;\n        }\n      }\n      else if ((this->field_0x2a & 7) == 4) {\n        return false;\n      }\n      if (((this->field_0x29 & 3) == 0) || ((this->field_0x29 & 3) == 3)) {\n        return (bool)((byte)this->field_0x2b >> 4 & 1 ^ 1);\n      }\n    }\n    return false;\n  }" { (labeled_statement "LAB_00178a80:\n    if ((((pGVar6->export_dynamic_).value != false) || ((pGVar6->shared_).value != false)) ||\n       (((pGVar6->gnu_unique_).value != false && ((byte)this->field_0x28 >> 4 == 10)))) {\n      if ((this->field_0x2a & 7) == 0) {\n        if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_end_of_storage & 1) != 0) {\n          return false;\n        }\n        if (((this->u2_).shndx == 0) && ((this->field_0x2b & 0x20) != 0)) {\n          return false;\n        }\n      }\n      else if ((this->field_0x2a & 7) == 4) {\n        return false;\n      }\n      if (((this->field_0x29 & 3) == 0) || ((this->field_0x29 & 3) == 3)) {\n        return (bool)((byte)this->field_0x2b >> 4 & 1 ^ 1);\n      }\n    }" statement_identifier : (if_statement "if ((((pGVar6->export_dynamic_).value != false) || ((pGVar6->shared_).value != false)) ||\n       (((pGVar6->gnu_unique_).value != false && ((byte)this->field_0x28 >> 4 == 10)))) {\n      if ((this->field_0x2a & 7) == 0) {\n        if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_end_of_storage & 1) != 0) {\n          return false;\n        }\n        if (((this->u2_).shndx == 0) && ((this->field_0x2b & 0x20) != 0)) {\n          return false;\n        }\n      }\n      else if ((this->field_0x2a & 7) == 4) {\n        return false;\n      }\n      if (((this->field_0x29 & 3) == 0) || ((this->field_0x29 & 3) == 3)) {\n        return (bool)((byte)this->field_0x2b >> 4 & 1 ^ 1);\n      }\n    }" if (parenthesized_expression "((((pGVar6->export_dynamic_).value != false) || ((pGVar6->shared_).value != false)) ||\n       (((pGVar6->gnu_unique_).value != false && ((byte)this->field_0x28 >> 4 == 10))))" ( (binary_expression "(((pGVar6->export_dynamic_).value != false) || ((pGVar6->shared_).value != false)) ||\n       (((pGVar6->gnu_unique_).value != false && ((byte)this->field_0x28 >> 4 == 10)))" (parenthesized_expression "(((pGVar6->export_dynamic_).value != false) || ((pGVar6->shared_).value != false))" ( (binary_expression "((pGVar6->export_dynamic_).value != false) || ((pGVar6->shared_).value != false)" (parenthesized_expression "((pGVar6->export_dynamic_).value != false)" ( (binary_expression "(pGVar6->export_dynamic_).value != false" (field_expression "(pGVar6->export_dynamic_).value" (parenthesized_expression "(pGVar6->export_dynamic_)" ( (field_expression "pGVar6->export_dynamic_" identifier -> field_identifier) )) . field_identifier) != false) )) || (parenthesized_expression "((pGVar6->shared_).value != false)" ( (binary_expression "(pGVar6->shared_).value != false" (field_expression "(pGVar6->shared_).value" (parenthesized_expression "(pGVar6->shared_)" ( (field_expression "pGVar6->shared_" identifier -> field_identifier) )) . field_identifier) != false) ))) )) || (parenthesized_expression "(((pGVar6->gnu_unique_).value != false && ((byte)this->field_0x28 >> 4 == 10)))" ( (parenthesized_expression "((pGVar6->gnu_unique_).value != false && ((byte)this->field_0x28 >> 4 == 10))" ( (binary_expression "(pGVar6->gnu_unique_).value != false && ((byte)this->field_0x28 >> 4 == 10)" (binary_expression "(pGVar6->gnu_unique_).value != false" (field_expression "(pGVar6->gnu_unique_).value" (parenthesized_expression "(pGVar6->gnu_unique_)" ( (field_expression "pGVar6->gnu_unique_" identifier -> field_identifier) )) . field_identifier) != false) && (parenthesized_expression "((byte)this->field_0x28 >> 4 == 10)" ( (binary_expression "(byte)this->field_0x28 >> 4 == 10" (binary_expression "(byte)this->field_0x28 >> 4" (cast_expression "(byte)this->field_0x28" ( (type_descriptor "byte" type_identifier) ) (field_expression "this->field_0x28" identifier -> field_identifier)) >> number_literal) == number_literal) ))) )) ))) )) (compound_statement "{\n      if ((this->field_0x2a & 7) == 0) {\n        if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_end_of_storage & 1) != 0) {\n          return false;\n        }\n        if (((this->u2_).shndx == 0) && ((this->field_0x2b & 0x20) != 0)) {\n          return false;\n        }\n      }\n      else if ((this->field_0x2a & 7) == 4) {\n        return false;\n      }\n      if (((this->field_0x29 & 3) == 0) || ((this->field_0x29 & 3) == 3)) {\n        return (bool)((byte)this->field_0x2b >> 4 & 1 ^ 1);\n      }\n    }" { (if_statement "if ((this->field_0x2a & 7) == 0) {\n        if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_end_of_storage & 1) != 0) {\n          return false;\n        }\n        if (((this->u2_).shndx == 0) && ((this->field_0x2b & 0x20) != 0)) {\n          return false;\n        }\n      }\n      else if ((this->field_0x2a & 7) == 4) {\n        return false;\n      }" if (parenthesized_expression "((this->field_0x2a & 7) == 0)" ( (binary_expression "(this->field_0x2a & 7) == 0" (parenthesized_expression "(this->field_0x2a & 7)" ( (binary_expression "this->field_0x2a & 7" (field_expression "this->field_0x2a" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_end_of_storage & 1) != 0) {\n          return false;\n        }\n        if (((this->u2_).shndx == 0) && ((this->field_0x2b & 0x20) != 0)) {\n          return false;\n        }\n      }" { (if_statement "if (((uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_end_of_storage & 1) != 0) {\n          return false;\n        }" if (parenthesized_expression "(((uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_end_of_storage & 1) != 0)" ( (binary_expression "((uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_end_of_storage & 1) != 0" (parenthesized_expression "((uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_end_of_storage & 1)" ( (binary_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_end_of_storage & 1" (field_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_end_of_storage" (field_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl" (binary_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold::Output_data*,_std" (binary_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base<gold" (field_expression "(uint)((this->u1_).output_segment)->output_lists_[3].\n                   super__Vector_base" (subscript_expression "(uint)((this->u1_).output_segment)->output_lists_[3]" (field_expression "(uint)((this->u1_).output_segment)->output_lists_" (call_expression "(uint)((this->u1_).output_segment)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((this->u1_).output_segment)" ( (field_expression "(this->u1_).output_segment" (parenthesized_expression "(this->u1_)" ( (field_expression "this->u1_" 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) & number_literal) )) != number_literal) )) (compound_statement "{\n          return false;\n        }" { (return_statement "return false;" return false ;) })) (if_statement "if (((this->u2_).shndx == 0) && ((this->field_0x2b & 0x20) != 0)) {\n          return false;\n        }" if (parenthesized_expression "(((this->u2_).shndx == 0) && ((this->field_0x2b & 0x20) != 0))" ( (binary_expression "((this->u2_).shndx == 0) && ((this->field_0x2b & 0x20) != 0)" (parenthesized_expression "((this->u2_).shndx == 0)" ( (binary_expression "(this->u2_).shndx == 0" (field_expression "(this->u2_).shndx" (parenthesized_expression "(this->u2_)" ( (field_expression "this->u2_" identifier -> field_identifier) )) . field_identifier) == number_literal) )) && (parenthesized_expression "((this->field_0x2b & 0x20) != 0)" ( (binary_expression "(this->field_0x2b & 0x20) != 0" (parenthesized_expression "(this->field_0x2b & 0x20)" ( (binary_expression "this->field_0x2b & 0x20" (field_expression "this->field_0x2b" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          return false;\n        }" { (return_statement "return false;" return false ;) })) }) (else_clause "else if ((this->field_0x2a & 7) == 4) {\n        return false;\n      }" else (if_statement "if ((this->field_0x2a & 7) == 4) {\n        return false;\n      }" if (parenthesized_expression "((this->field_0x2a & 7) == 4)" ( (binary_expression "(this->field_0x2a & 7) == 4" (parenthesized_expression "(this->field_0x2a & 7)" ( (binary_expression "this->field_0x2a & 7" (field_expression "this->field_0x2a" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })))) (if_statement "if (((this->field_0x29 & 3) == 0) || ((this->field_0x29 & 3) == 3)) {\n        return (bool)((byte)this->field_0x2b >> 4 & 1 ^ 1);\n      }" if (parenthesized_expression "(((this->field_0x29 & 3) == 0) || ((this->field_0x29 & 3) == 3))" ( (binary_expression "((this->field_0x29 & 3) == 0) || ((this->field_0x29 & 3) == 3)" (parenthesized_expression "((this->field_0x29 & 3) == 0)" ( (binary_expression "(this->field_0x29 & 3) == 0" (parenthesized_expression "(this->field_0x29 & 3)" ( (binary_expression "this->field_0x29 & 3" (field_expression "this->field_0x29" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "((this->field_0x29 & 3) == 3)" ( (binary_expression "(this->field_0x29 & 3) == 3" (parenthesized_expression "(this->field_0x29 & 3)" ( (binary_expression "this->field_0x29 & 3" (field_expression "this->field_0x29" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n        return (bool)((byte)this->field_0x2b >> 4 & 1 ^ 1);\n      }" { (return_statement "return (bool)((byte)this->field_0x2b >> 4 & 1 ^ 1);" return (cast_expression "(bool)((byte)this->field_0x2b >> 4 & 1 ^ 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "((byte)this->field_0x2b >> 4 & 1 ^ 1)" ( (binary_expression "(byte)this->field_0x2b >> 4 & 1 ^ 1" (binary_expression "(byte)this->field_0x2b >> 4 & 1" (binary_expression "(byte)this->field_0x2b >> 4" (cast_expression "(byte)this->field_0x2b" ( (type_descriptor "byte" type_identifier) ) (field_expression "this->field_0x2b" identifier -> field_identifier)) >> number_literal) & number_literal) ^ number_literal) ))) ;) })) }))) (return_statement "return false;" return false ;) })) (labeled_statement "LAB_00178b58:\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 ") ))) ;)) })))
(translation_unit "uint FUN_001788c0(undefined4 *param_1,undefined4 param_2)\n\n{\n  byte bVar1;\n  undefined **ppuVar2;\n  undefined1 **ppuVar3;\n  undefined **ppuVar4;\n  char cVar5;\n  byte *pbVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  size_t sVar9;\n  byte bVar10;\n  char *__s;\n  int iVar11;\n  int iVar12;\n  undefined1 uVar13;\n  uint uVar14;\n  undefined1 ***pppuVar15;\n  undefined1 ***pppuVar16;\n  undefined1 ***pppuVar17;\n  undefined1 *puVar18;\n  byte *pbVar19;\n  byte *pbVar20;\n  bool bVar21;\n  bool bVar22;\n  bool bVar23;\n  byte bVar24;\n  undefined1 **ppuStack_60;\n  undefined1 auStack_5c [11];\n  undefined1 local_51;\n  char *local_50;\n  undefined1 *local_4c;\n  undefined1 **local_48;\n  undefined **local_44;\n  int local_40 [3];\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  bVar24 = 0;\n  pppuVar17 = (undefined1 ***)auStack_5c;\n  local_44 = &__DT_PLTGOT;\n  bVar10 = *(byte *)((int)param_1 + 0x2b);\n  uVar14 = bVar10 >> 6 & 1;\n  uVar13 = (undefined1)uVar14;\n  if ((bVar10 >> 6 & 1) == 0) {\n    return 0;\n  }\n  bVar1 = *(byte *)((int)param_1 + 0x2a);\n  pbVar6 = (byte *)(uint)bVar1;\n  if ((bVar1 & 0x40) != 0) {\n    return uVar14;\n  }\n  if (((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))\n     && ((bVar10 & 0x10) == 0)) {\n    return uVar14;\n  }\n  local_48 = (undefined1 **)&DAT_0038f378;\n  iVar11 = *(int *)(DAT_0038f378 + 8);\n  puVar18 = auStack_5c;\n  ppuVar3 = (undefined1 **)&DAT_0038f378;\n  ppuVar4 = &__DT_PLTGOT;\n  if (iVar11 == 0) goto LAB_00178b58;\n  if (((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||\n     ((bVar1 & 7) != 0)) {\n    local_48 = (undefined1 **)&DAT_0038f378;\n    if ((bVar1 & 7) == 0) {\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }\nLAB_00178962:\n    local_44 = ppuVar4;\n    pppuVar15 = (undefined1 ***)auStack_5c;\n    pppuVar16 = (undefined1 ***)auStack_5c;\n    local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n    ppuStack_60 = local_34;\n    cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);\n    uVar14 = (uint)local_4c & 0xff;\n    if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    \n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }\n    pbVar6 = *local_48;\n    iVar11 = *(int *)(pbVar6 + 8);\n    puVar18 = auStack_5c;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    if (*(int *)(iVar11 + 0x1344) != 0) {\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar10 = *(byte *)((int)param_1 + 0x2b);\n    pppuVar17 = pppuVar16;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n  }\n  else {\n    iVar11 = param_1[2];\n    ppuVar4 = local_44;\n    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }\nLAB_00178a1d:\n  local_44 = ppuVar4;\n  local_48 = ppuVar3;\n  ppuVar2 = local_44;\n  if ((bVar10 & 0x10) != 0) {\n    return 0;\n  }\n  pbVar6 = *(byte **)(*local_48 + 8);\n  puVar18 = (undefined1 *)pppuVar17;\n  ppuVar3 = local_48;\n  ppuVar4 = local_44;\n  if (pbVar6 == (byte *)0x0) goto LAB_00178b58;\n  if (pbVar6[0xe89] == 0) {\nLAB_00178c1e:\n    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;\n    if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }\n  }\n  else {\n    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }\n    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;\nLAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;\n  }\n  *(undefined4 *)((int)pppuVar17 + -0xc) = 3;\n  *(undefined4 *)((int)pppuVar17 + -0x10) = *param_1;\n  *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178c55;\n  pbVar6 = (byte *)FUN_001cef00();\n  if (pbVar6 != (byte *)0x0) {\n    iVar11 = *(int *)(*local_48 + 8);\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    cVar5 = *(char *)(iVar11 + 0xf05);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    cVar5 = *(char *)(iVar11 + 0xf81);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n    *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;\n    free(*(void **)((int)pppuVar17 + -0x10));\n  }\n  pbVar6 = *(byte **)(*local_48 + 8);\n  if (pbVar6 != (byte *)0x0) {\nLAB_00178a80:\n    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }\n    return 0;\n  }\n  pbVar6 = (byte *)0x0;\n  ppuVar3 = local_48;\n  ppuVar4 = local_44;\nLAB_00178b58:\n  local_44 = ppuVar4;\n  local_48 = ppuVar3;\n  *(byte **)(puVar18 + -4) = pbVar6;\n  *(undefined ***)(puVar18 + -8) = local_44 + -0x3d2de;\n  *(undefined4 *)(puVar18 + -0xc) = 0x5c;\n  *(undefined ***)(puVar18 + -0x10) = local_44 + -0x41f7c;\n                    \n  *(undefined **)(puVar18 + -0x14) = &UNK_00178b71;\n  FUN_00069d00();\n}\n\n" (function_definition "uint FUN_001788c0(undefined4 *param_1,undefined4 param_2)\n\n{\n  byte bVar1;\n  undefined **ppuVar2;\n  undefined1 **ppuVar3;\n  undefined **ppuVar4;\n  char cVar5;\n  byte *pbVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  size_t sVar9;\n  byte bVar10;\n  char *__s;\n  int iVar11;\n  int iVar12;\n  undefined1 uVar13;\n  uint uVar14;\n  undefined1 ***pppuVar15;\n  undefined1 ***pppuVar16;\n  undefined1 ***pppuVar17;\n  undefined1 *puVar18;\n  byte *pbVar19;\n  byte *pbVar20;\n  bool bVar21;\n  bool bVar22;\n  bool bVar23;\n  byte bVar24;\n  undefined1 **ppuStack_60;\n  undefined1 auStack_5c [11];\n  undefined1 local_51;\n  char *local_50;\n  undefined1 *local_4c;\n  undefined1 **local_48;\n  undefined **local_44;\n  int local_40 [3];\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  bVar24 = 0;\n  pppuVar17 = (undefined1 ***)auStack_5c;\n  local_44 = &__DT_PLTGOT;\n  bVar10 = *(byte *)((int)param_1 + 0x2b);\n  uVar14 = bVar10 >> 6 & 1;\n  uVar13 = (undefined1)uVar14;\n  if ((bVar10 >> 6 & 1) == 0) {\n    return 0;\n  }\n  bVar1 = *(byte *)((int)param_1 + 0x2a);\n  pbVar6 = (byte *)(uint)bVar1;\n  if ((bVar1 & 0x40) != 0) {\n    return uVar14;\n  }\n  if (((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))\n     && ((bVar10 & 0x10) == 0)) {\n    return uVar14;\n  }\n  local_48 = (undefined1 **)&DAT_0038f378;\n  iVar11 = *(int *)(DAT_0038f378 + 8);\n  puVar18 = auStack_5c;\n  ppuVar3 = (undefined1 **)&DAT_0038f378;\n  ppuVar4 = &__DT_PLTGOT;\n  if (iVar11 == 0) goto LAB_00178b58;\n  if (((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||\n     ((bVar1 & 7) != 0)) {\n    local_48 = (undefined1 **)&DAT_0038f378;\n    if ((bVar1 & 7) == 0) {\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }\nLAB_00178962:\n    local_44 = ppuVar4;\n    pppuVar15 = (undefined1 ***)auStack_5c;\n    pppuVar16 = (undefined1 ***)auStack_5c;\n    local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n    ppuStack_60 = local_34;\n    cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);\n    uVar14 = (uint)local_4c & 0xff;\n    if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    \n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }\n    pbVar6 = *local_48;\n    iVar11 = *(int *)(pbVar6 + 8);\n    puVar18 = auStack_5c;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    if (*(int *)(iVar11 + 0x1344) != 0) {\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar10 = *(byte *)((int)param_1 + 0x2b);\n    pppuVar17 = pppuVar16;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n  }\n  else {\n    iVar11 = param_1[2];\n    ppuVar4 = local_44;\n    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }\nLAB_00178a1d:\n  local_44 = ppuVar4;\n  local_48 = ppuVar3;\n  ppuVar2 = local_44;\n  if ((bVar10 & 0x10) != 0) {\n    return 0;\n  }\n  pbVar6 = *(byte **)(*local_48 + 8);\n  puVar18 = (undefined1 *)pppuVar17;\n  ppuVar3 = local_48;\n  ppuVar4 = local_44;\n  if (pbVar6 == (byte *)0x0) goto LAB_00178b58;\n  if (pbVar6[0xe89] == 0) {\nLAB_00178c1e:\n    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;\n    if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }\n  }\n  else {\n    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }\n    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;\nLAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;\n  }\n  *(undefined4 *)((int)pppuVar17 + -0xc) = 3;\n  *(undefined4 *)((int)pppuVar17 + -0x10) = *param_1;\n  *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178c55;\n  pbVar6 = (byte *)FUN_001cef00();\n  if (pbVar6 != (byte *)0x0) {\n    iVar11 = *(int *)(*local_48 + 8);\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    cVar5 = *(char *)(iVar11 + 0xf05);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    cVar5 = *(char *)(iVar11 + 0xf81);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n    *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;\n    free(*(void **)((int)pppuVar17 + -0x10));\n  }\n  pbVar6 = *(byte **)(*local_48 + 8);\n  if (pbVar6 != (byte *)0x0) {\nLAB_00178a80:\n    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }\n    return 0;\n  }\n  pbVar6 = (byte *)0x0;\n  ppuVar3 = local_48;\n  ppuVar4 = local_44;\nLAB_00178b58:\n  local_44 = ppuVar4;\n  local_48 = ppuVar3;\n  *(byte **)(puVar18 + -4) = pbVar6;\n  *(undefined ***)(puVar18 + -8) = local_44 + -0x3d2de;\n  *(undefined4 *)(puVar18 + -0xc) = 0x5c;\n  *(undefined ***)(puVar18 + -0x10) = local_44 + -0x41f7c;\n                    \n  *(undefined **)(puVar18 + -0x14) = &UNK_00178b71;\n  FUN_00069d00();\n}" type_identifier (function_declarator "FUN_001788c0(undefined4 *param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  undefined **ppuVar2;\n  undefined1 **ppuVar3;\n  undefined **ppuVar4;\n  char cVar5;\n  byte *pbVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  size_t sVar9;\n  byte bVar10;\n  char *__s;\n  int iVar11;\n  int iVar12;\n  undefined1 uVar13;\n  uint uVar14;\n  undefined1 ***pppuVar15;\n  undefined1 ***pppuVar16;\n  undefined1 ***pppuVar17;\n  undefined1 *puVar18;\n  byte *pbVar19;\n  byte *pbVar20;\n  bool bVar21;\n  bool bVar22;\n  bool bVar23;\n  byte bVar24;\n  undefined1 **ppuStack_60;\n  undefined1 auStack_5c [11];\n  undefined1 local_51;\n  char *local_50;\n  undefined1 *local_4c;\n  undefined1 **local_48;\n  undefined **local_44;\n  int local_40 [3];\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  bVar24 = 0;\n  pppuVar17 = (undefined1 ***)auStack_5c;\n  local_44 = &__DT_PLTGOT;\n  bVar10 = *(byte *)((int)param_1 + 0x2b);\n  uVar14 = bVar10 >> 6 & 1;\n  uVar13 = (undefined1)uVar14;\n  if ((bVar10 >> 6 & 1) == 0) {\n    return 0;\n  }\n  bVar1 = *(byte *)((int)param_1 + 0x2a);\n  pbVar6 = (byte *)(uint)bVar1;\n  if ((bVar1 & 0x40) != 0) {\n    return uVar14;\n  }\n  if (((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))\n     && ((bVar10 & 0x10) == 0)) {\n    return uVar14;\n  }\n  local_48 = (undefined1 **)&DAT_0038f378;\n  iVar11 = *(int *)(DAT_0038f378 + 8);\n  puVar18 = auStack_5c;\n  ppuVar3 = (undefined1 **)&DAT_0038f378;\n  ppuVar4 = &__DT_PLTGOT;\n  if (iVar11 == 0) goto LAB_00178b58;\n  if (((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||\n     ((bVar1 & 7) != 0)) {\n    local_48 = (undefined1 **)&DAT_0038f378;\n    if ((bVar1 & 7) == 0) {\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }\nLAB_00178962:\n    local_44 = ppuVar4;\n    pppuVar15 = (undefined1 ***)auStack_5c;\n    pppuVar16 = (undefined1 ***)auStack_5c;\n    local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n    ppuStack_60 = local_34;\n    cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);\n    uVar14 = (uint)local_4c & 0xff;\n    if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    \n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }\n    pbVar6 = *local_48;\n    iVar11 = *(int *)(pbVar6 + 8);\n    puVar18 = auStack_5c;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    if (*(int *)(iVar11 + 0x1344) != 0) {\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar10 = *(byte *)((int)param_1 + 0x2b);\n    pppuVar17 = pppuVar16;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n  }\n  else {\n    iVar11 = param_1[2];\n    ppuVar4 = local_44;\n    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }\nLAB_00178a1d:\n  local_44 = ppuVar4;\n  local_48 = ppuVar3;\n  ppuVar2 = local_44;\n  if ((bVar10 & 0x10) != 0) {\n    return 0;\n  }\n  pbVar6 = *(byte **)(*local_48 + 8);\n  puVar18 = (undefined1 *)pppuVar17;\n  ppuVar3 = local_48;\n  ppuVar4 = local_44;\n  if (pbVar6 == (byte *)0x0) goto LAB_00178b58;\n  if (pbVar6[0xe89] == 0) {\nLAB_00178c1e:\n    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;\n    if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }\n  }\n  else {\n    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }\n    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;\nLAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;\n  }\n  *(undefined4 *)((int)pppuVar17 + -0xc) = 3;\n  *(undefined4 *)((int)pppuVar17 + -0x10) = *param_1;\n  *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178c55;\n  pbVar6 = (byte *)FUN_001cef00();\n  if (pbVar6 != (byte *)0x0) {\n    iVar11 = *(int *)(*local_48 + 8);\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    cVar5 = *(char *)(iVar11 + 0xf05);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    cVar5 = *(char *)(iVar11 + 0xf81);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n    *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;\n    free(*(void **)((int)pppuVar17 + -0x10));\n  }\n  pbVar6 = *(byte **)(*local_48 + 8);\n  if (pbVar6 != (byte *)0x0) {\nLAB_00178a80:\n    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }\n    return 0;\n  }\n  pbVar6 = (byte *)0x0;\n  ppuVar3 = local_48;\n  ppuVar4 = local_44;\nLAB_00178b58:\n  local_44 = ppuVar4;\n  local_48 = ppuVar3;\n  *(byte **)(puVar18 + -4) = pbVar6;\n  *(undefined ***)(puVar18 + -8) = local_44 + -0x3d2de;\n  *(undefined4 *)(puVar18 + -0xc) = 0x5c;\n  *(undefined ***)(puVar18 + -0x10) = local_44 + -0x41f7c;\n                    \n  *(undefined **)(puVar18 + -0x14) = &UNK_00178b71;\n  FUN_00069d00();\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined **ppuVar2;" type_identifier (pointer_declarator "**ppuVar2" * (pointer_declarator "*ppuVar2" * identifier)) ;) (declaration "undefined1 **ppuVar3;" type_identifier (pointer_declarator "**ppuVar3" * (pointer_declarator "*ppuVar3" * identifier)) ;) (declaration "undefined **ppuVar4;" type_identifier (pointer_declarator "**ppuVar4" * (pointer_declarator "*ppuVar4" * identifier)) ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "size_t sVar9;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined1 uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "undefined1 ***pppuVar15;" type_identifier (pointer_declarator "***pppuVar15" * (pointer_declarator "**pppuVar15" * (pointer_declarator "*pppuVar15" * identifier))) ;) (declaration "undefined1 ***pppuVar16;" type_identifier (pointer_declarator "***pppuVar16" * (pointer_declarator "**pppuVar16" * (pointer_declarator "*pppuVar16" * identifier))) ;) (declaration "undefined1 ***pppuVar17;" type_identifier (pointer_declarator "***pppuVar17" * (pointer_declarator "**pppuVar17" * (pointer_declarator "*pppuVar17" * identifier))) ;) (declaration "undefined1 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "byte *pbVar19;" type_identifier (pointer_declarator "*pbVar19" * identifier) ;) (declaration "byte *pbVar20;" type_identifier (pointer_declarator "*pbVar20" * identifier) ;) (declaration "bool bVar21;" primitive_type identifier ;) (declaration "bool bVar22;" primitive_type identifier ;) (declaration "bool bVar23;" primitive_type identifier ;) (declaration "byte bVar24;" type_identifier identifier ;) (declaration "undefined1 **ppuStack_60;" type_identifier (pointer_declarator "**ppuStack_60" * (pointer_declarator "*ppuStack_60" * identifier)) ;) (declaration "undefined1 auStack_5c [11];" type_identifier (array_declarator "auStack_5c [11]" identifier [ number_literal ]) ;) (declaration "undefined1 local_51;" type_identifier identifier ;) (declaration "char *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined1 *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "undefined1 **local_48;" type_identifier (pointer_declarator "**local_48" * (pointer_declarator "*local_48" * identifier)) ;) (declaration "undefined **local_44;" type_identifier (pointer_declarator "**local_44" * (pointer_declarator "*local_44" * identifier)) ;) (declaration "int local_40 [3];" primitive_type (array_declarator "local_40 [3]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_34 [2];" type_identifier (pointer_declarator "*local_34 [2]" * (array_declarator "local_34 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "bVar24 = 0;" (assignment_expression "bVar24 = 0" identifier = number_literal) ;) (expression_statement "pppuVar17 = (undefined1 ***)auStack_5c;" (assignment_expression "pppuVar17 = (undefined1 ***)auStack_5c" identifier = (cast_expression "(undefined1 ***)auStack_5c" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (expression_statement "local_44 = &__DT_PLTGOT;" (assignment_expression "local_44 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "bVar10 = *(byte *)((int)param_1 + 0x2b);" (assignment_expression "bVar10 = *(byte *)((int)param_1 + 0x2b)" identifier = (pointer_expression "*(byte *)((int)param_1 + 0x2b)" * (cast_expression "(byte *)((int)param_1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2b)" ( (binary_expression "(int)param_1 + 0x2b" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar14 = bVar10 >> 6 & 1;" (assignment_expression "uVar14 = bVar10 >> 6 & 1" identifier = (binary_expression "bVar10 >> 6 & 1" (binary_expression "bVar10 >> 6" identifier >> number_literal) & number_literal)) ;) (expression_statement "uVar13 = (undefined1)uVar14;" (assignment_expression "uVar13 = (undefined1)uVar14" identifier = (cast_expression "(undefined1)uVar14" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (if_statement "if ((bVar10 >> 6 & 1) == 0) {\n    return 0;\n  }" if (parenthesized_expression "((bVar10 >> 6 & 1) == 0)" ( (binary_expression "(bVar10 >> 6 & 1) == 0" (parenthesized_expression "(bVar10 >> 6 & 1)" ( (binary_expression "bVar10 >> 6 & 1" (binary_expression "bVar10 >> 6" identifier >> number_literal) & number_literal) )) == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar1 = *(byte *)((int)param_1 + 0x2a);" (assignment_expression "bVar1 = *(byte *)((int)param_1 + 0x2a)" identifier = (pointer_expression "*(byte *)((int)param_1 + 0x2a)" * (cast_expression "(byte *)((int)param_1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2a)" ( (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pbVar6 = (byte *)(uint)bVar1;" (assignment_expression "pbVar6 = (byte *)(uint)bVar1" identifier = (cast_expression "(byte *)(uint)bVar1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if ((bVar1 & 0x40) != 0) {\n    return uVar14;\n  }" if (parenthesized_expression "((bVar1 & 0x40) != 0)" ( (binary_expression "(bVar1 & 0x40) != 0" (parenthesized_expression "(bVar1 & 0x40)" ( (binary_expression "bVar1 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return uVar14;\n  }" { (return_statement "return uVar14;" return identifier ;) })) (if_statement "if (((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))\n     && ((bVar10 & 0x10) == 0)) {\n    return uVar14;\n  }" if (parenthesized_expression "(((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))\n     && ((bVar10 & 0x10) == 0))" ( (binary_expression "((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))\n     && ((bVar10 & 0x10) == 0)" (parenthesized_expression "((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))" ( (binary_expression "(((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)))" (parenthesized_expression "(((char)bVar1 < '\0') && ((bVar10 & 1) != 0))" ( (binary_expression "((char)bVar1 < '\0') && ((bVar10 & 1) != 0)" (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((bVar10 & 1) != 0)" ( (binary_expression "(bVar10 & 1) != 0" (parenthesized_expression "(bVar10 & 1)" ( (binary_expression "bVar10 & 1" identifier & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)))" ( (parenthesized_expression "((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))" ( (binary_expression "(*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)" (binary_expression "(*(byte *)((int)param_1 + 0x29) & 3) == 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x29) & 3)" ( (binary_expression "*(byte *)((int)param_1 + 0x29) & 3" (pointer_expression "*(byte *)((int)param_1 + 0x29)" * (cast_expression "(byte *)((int)param_1 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x29)" ( (binary_expression "(int)param_1 + 0x29" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) || (parenthesized_expression "((*(byte *)((int)param_1 + 0x29) & 3) == 3)" ( (binary_expression "(*(byte *)((int)param_1 + 0x29) & 3) == 3" (parenthesized_expression "(*(byte *)((int)param_1 + 0x29) & 3)" ( (binary_expression "*(byte *)((int)param_1 + 0x29) & 3" (pointer_expression "*(byte *)((int)param_1 + 0x29)" * (cast_expression "(byte *)((int)param_1 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x29)" ( (binary_expression "(int)param_1 + 0x29" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) ))) )) ))) )) && (parenthesized_expression "((bVar10 & 0x10) == 0)" ( (binary_expression "(bVar10 & 0x10) == 0" (parenthesized_expression "(bVar10 & 0x10)" ( (binary_expression "bVar10 & 0x10" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    return uVar14;\n  }" { (return_statement "return uVar14;" return identifier ;) })) (expression_statement "local_48 = (undefined1 **)&DAT_0038f378;" (assignment_expression "local_48 = (undefined1 **)&DAT_0038f378" identifier = (cast_expression "(undefined1 **)&DAT_0038f378" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_0038f378" & identifier))) ;) (expression_statement "iVar11 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar11 = *(int *)(DAT_0038f378 + 8)" identifier = (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) ))))) ;) (expression_statement "puVar18 = auStack_5c;" (assignment_expression "puVar18 = auStack_5c" identifier = identifier) ;) (expression_statement "ppuVar3 = (undefined1 **)&DAT_0038f378;" (assignment_expression "ppuVar3 = (undefined1 **)&DAT_0038f378" identifier = (cast_expression "(undefined1 **)&DAT_0038f378" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_0038f378" & identifier))) ;) (expression_statement "ppuVar4 = &__DT_PLTGOT;" (assignment_expression "ppuVar4 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (if_statement "if (iVar11 == 0) goto LAB_00178b58;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00178b58;" goto statement_identifier ;)) (if_statement "if (((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||\n     ((bVar1 & 7) != 0)) {\n    local_48 = (undefined1 **)&DAT_0038f378;\n    if ((bVar1 & 7) == 0) {\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }\nLAB_00178962:\n    local_44 = ppuVar4;\n    pppuVar15 = (undefined1 ***)auStack_5c;\n    pppuVar16 = (undefined1 ***)auStack_5c;\n    local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n    ppuStack_60 = local_34;\n    cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);\n    uVar14 = (uint)local_4c & 0xff;\n    if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    \n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }\n    pbVar6 = *local_48;\n    iVar11 = *(int *)(pbVar6 + 8);\n    puVar18 = auStack_5c;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    if (*(int *)(iVar11 + 0x1344) != 0) {\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar10 = *(byte *)((int)param_1 + 0x2b);\n    pppuVar17 = pppuVar16;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n  }\n  else {\n    iVar11 = param_1[2];\n    ppuVar4 = local_44;\n    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }" if (parenthesized_expression "(((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||\n     ((bVar1 & 7) != 0))" ( (binary_expression "((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||\n     ((bVar1 & 7) != 0)" (parenthesized_expression "((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0'))" ( (binary_expression "(*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')" (parenthesized_expression "(*(char *)(iVar11 + 0x18b1) == '\0')" ( (binary_expression "*(char *)(iVar11 + 0x18b1) == '\0'" (pointer_expression "*(char *)(iVar11 + 0x18b1)" * (cast_expression "(char *)(iVar11 + 0x18b1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x18b1)" ( (binary_expression "iVar11 + 0x18b1" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(char *)(iVar11 + 0x1a25) != '\0')" ( (binary_expression "*(char *)(iVar11 + 0x1a25) != '\0'" (pointer_expression "*(char *)(iVar11 + 0x1a25)" * (cast_expression "(char *)(iVar11 + 0x1a25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x1a25)" ( (binary_expression "iVar11 + 0x1a25" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) || (parenthesized_expression "((bVar1 & 7) != 0)" ( (binary_expression "(bVar1 & 7) != 0" (parenthesized_expression "(bVar1 & 7)" ( (binary_expression "bVar1 & 7" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    local_48 = (undefined1 **)&DAT_0038f378;\n    if ((bVar1 & 7) == 0) {\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }\nLAB_00178962:\n    local_44 = ppuVar4;\n    pppuVar15 = (undefined1 ***)auStack_5c;\n    pppuVar16 = (undefined1 ***)auStack_5c;\n    local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n    ppuStack_60 = local_34;\n    cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);\n    uVar14 = (uint)local_4c & 0xff;\n    if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    \n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }\n    pbVar6 = *local_48;\n    iVar11 = *(int *)(pbVar6 + 8);\n    puVar18 = auStack_5c;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    if (*(int *)(iVar11 + 0x1344) != 0) {\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar10 = *(byte *)((int)param_1 + 0x2b);\n    pppuVar17 = pppuVar16;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n  }" { (expression_statement "local_48 = (undefined1 **)&DAT_0038f378;" (assignment_expression "local_48 = (undefined1 **)&DAT_0038f378" identifier = (cast_expression "(undefined1 **)&DAT_0038f378" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_0038f378" & identifier))) ;) (if_statement "if ((bVar1 & 7) == 0) {\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }" if (parenthesized_expression "((bVar1 & 7) == 0)" ( (binary_expression "(bVar1 & 7) == 0" (parenthesized_expression "(bVar1 & 7)" ( (binary_expression "bVar1 & 7" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }" { (expression_statement "pppuVar17 = (undefined1 ***)auStack_5c;" (assignment_expression "pppuVar17 = (undefined1 ***)auStack_5c" identifier = (cast_expression "(undefined1 ***)auStack_5c" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (if_statement "if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;" if (parenthesized_expression "((*(byte *)(param_1[2] + 0x2c) & 1) != 0)" ( (binary_expression "(*(byte *)(param_1[2] + 0x2c) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1[2] + 0x2c) & 1)" ( (binary_expression "*(byte *)(param_1[2] + 0x2c) & 1" (pointer_expression "*(byte *)(param_1[2] + 0x2c)" * (cast_expression "(byte *)(param_1[2] + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[2] + 0x2c)" ( (binary_expression "param_1[2] + 0x2c" (subscript_expression "param_1[2]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00178a1d;" goto statement_identifier ;)) (expression_statement "iVar11 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar11 = *(int *)(DAT_0038f378 + 8)" identifier = (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) ))))) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) })) (labeled_statement "LAB_00178962:\n    local_44 = ppuVar4;" statement_identifier : (expression_statement "local_44 = ppuVar4;" (assignment_expression "local_44 = ppuVar4" identifier = identifier) ;)) (expression_statement "pppuVar15 = (undefined1 ***)auStack_5c;" (assignment_expression "pppuVar15 = (undefined1 ***)auStack_5c" identifier = (cast_expression "(undefined1 ***)auStack_5c" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (expression_statement "pppuVar16 = (undefined1 ***)auStack_5c;" (assignment_expression "pppuVar16 = (undefined1 ***)auStack_5c" identifier = (cast_expression "(undefined1 ***)auStack_5c" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (expression_statement "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);" (assignment_expression "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13)" identifier = (cast_expression "(undefined1 *)CONCAT31(local_4c._1_3_,uVar13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT31(local_4c._1_3_,uVar13)" identifier (argument_list "(local_4c._1_3_,uVar13)" ( (field_expression "local_4c._1_3_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "ppuStack_60 = local_34;" (assignment_expression "ppuStack_60 = local_34" identifier = identifier) ;) (expression_statement "cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);" (assignment_expression "cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0)" identifier = (call_expression "FUN_0016e030(iVar11 + 0x59a8,*param_1,0)" identifier (argument_list "(iVar11 + 0x59a8,*param_1,0)" ( (binary_expression "iVar11 + 0x59a8" identifier + number_literal) , (pointer_expression "*param_1" * identifier) , number_literal )))) ;) (expression_statement "uVar14 = (uint)local_4c & 0xff;" (assignment_expression "uVar14 = (uint)local_4c & 0xff" identifier = (binary_expression "(uint)local_4c & 0xff" (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (if_statement "if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    \n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }" if (parenthesized_expression "((cVar5 != '\0') && ((char)local_34[0] == '\0'))" ( (binary_expression "(cVar5 != '\0') && ((char)local_34[0] == '\0')" (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((char)local_34[0] == '\0')" ( (binary_expression "(char)local_34[0] == '\0'" (cast_expression "(char)local_34[0]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "local_34[0]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    \n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }" { (labeled_statement "LAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }" statement_identifier : (if_statement "if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }" if (parenthesized_expression "((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0)" ( (binary_expression "(*(byte *)((int)param_1 + 0x2b) & 0x10) == 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2b) & 0x10)" ( (binary_expression "*(byte *)((int)param_1 + 0x2b) & 0x10" (pointer_expression "*(byte *)((int)param_1 + 0x2b)" * (cast_expression "(byte *)((int)param_1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2b)" ( (binary_expression "(int)param_1 + 0x2b" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        return uVar14;\n      }" { (return_statement "return uVar14;" return identifier ;) }))) (expression_statement "*(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;" (assignment_expression "*(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9" (pointer_expression "*(undefined4 *)((int)pppuVar15 + -4)" * (cast_expression "(undefined4 *)((int)pppuVar15 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar15 + -4)" ( (binary_expression "(int)pppuVar15 + -4" (cast_expression "(int)pppuVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00178770();" (call_expression "FUN_00178770()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar18 = local_34[0];" (assignment_expression "puVar18 = local_34[0]" identifier = (subscript_expression "local_34[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;" (assignment_expression "*(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6" (pointer_expression "*(undefined ***)((int)pppuVar15 + -0x10)" * (cast_expression "(undefined ***)((int)pppuVar15 + -0x10)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar15 + -0x10)" ( (binary_expression "(int)pppuVar15 + -0x10" (cast_expression "(int)pppuVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_44 + -0x3d5b6" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;" (assignment_expression "*(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0" (pointer_expression "*(undefined4 *)((int)pppuVar15 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar15 + -0x14)" ( (binary_expression "(int)pppuVar15 + -0x14" (cast_expression "(int)pppuVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = gettext();" (assignment_expression "uVar7 = gettext()" identifier = (call_expression "gettext()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;" (assignment_expression "*(undefined1 **)((int)pppuVar15 + -0xc) = puVar18" (pointer_expression "*(undefined1 **)((int)pppuVar15 + -0xc)" * (cast_expression "(undefined1 **)((int)pppuVar15 + -0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar15 + -0xc)" ( (binary_expression "(int)pppuVar15 + -0xc" (cast_expression "(int)pppuVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;" (assignment_expression "*(undefined4 *)((int)pppuVar15 + -0x10) = uVar7" (pointer_expression "*(undefined4 *)((int)pppuVar15 + -0x10)" * (cast_expression "(undefined4 *)((int)pppuVar15 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar15 + -0x10)" ( (binary_expression "(int)pppuVar15 + -0x10" (cast_expression "(int)pppuVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;" (assignment_expression "*(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9" (pointer_expression "*(undefined4 *)((int)pppuVar15 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar15 + -0x14)" ( (binary_expression "(int)pppuVar15 + -0x14" (cast_expression "(int)pppuVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000654e0();" (call_expression "FUN_000654e0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_34[0] == local_2c) {\n        return 0;\n      }" if (parenthesized_expression "(local_34[0] == local_2c)" ( (binary_expression "local_34[0] == local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];" (assignment_expression "*(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0]" (pointer_expression "*(undefined1 **)((int)pppuVar15 + -0x10)" * (cast_expression "(undefined1 **)((int)pppuVar15 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar15 + -0x10)" ( (binary_expression "(int)pppuVar15 + -0x10" (cast_expression "(int)pppuVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (subscript_expression "local_34[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;" (assignment_expression "*(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df" (pointer_expression "*(undefined4 *)((int)pppuVar15 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar15 + -0x14)" ( (binary_expression "(int)pppuVar15 + -0x14" (cast_expression "(int)pppuVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001e6dc0();" (call_expression "FUN_001e6dc0()" identifier (argument_list "()" ( ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar6 = *local_48;" (assignment_expression "pbVar6 = *local_48" identifier = (pointer_expression "*local_48" * identifier)) ;) (expression_statement "iVar11 = *(int *)(pbVar6 + 8);" (assignment_expression "iVar11 = *(int *)(pbVar6 + 8)" identifier = (pointer_expression "*(int *)(pbVar6 + 8)" * (cast_expression "(int *)(pbVar6 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 8)" ( (binary_expression "pbVar6 + 8" identifier + number_literal) ))))) ;) (expression_statement "puVar18 = auStack_5c;" (assignment_expression "puVar18 = auStack_5c" identifier = identifier) ;) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" identifier = identifier) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) (if_statement "if (iVar11 == 0) goto LAB_00178b58;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00178b58;" goto statement_identifier ;)) (if_statement "if (*(int *)(iVar11 + 0x1344) != 0) {\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }" if (parenthesized_expression "(*(int *)(iVar11 + 0x1344) != 0)" ( (binary_expression "*(int *)(iVar11 + 0x1344) != 0" (pointer_expression "*(int *)(iVar11 + 0x1344)" * (cast_expression "(int *)(iVar11 + 0x1344)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x1344)" ( (binary_expression "iVar11 + 0x1344" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }" { (expression_statement "__s = (char *)*param_1;" (assignment_expression "__s = (char *)*param_1" identifier = (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "local_34[0] = local_2c;" (assignment_expression "local_34[0] = local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar8 = (char *)0xffffffff;" (assignment_expression "pcVar8 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar13 = local_4c._0_1_;" (assignment_expression "uVar13 = local_4c._0_1_" identifier = (field_expression "local_4c._0_1_" identifier . field_identifier)) ;) (expression_statement "puVar18 = local_34[0];" (assignment_expression "puVar18 = local_34[0]" identifier = (subscript_expression "local_34[0]" identifier [ number_literal ])) ;) (if_statement "if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }" if (parenthesized_expression "(__s != (char *)0x0)" ( (binary_expression "__s != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }" { (expression_statement "local_51 = local_4c._0_1_;" (assignment_expression "local_51 = local_4c._0_1_" identifier = (field_expression "local_4c._0_1_" identifier . field_identifier)) ;) (expression_statement "local_50 = __s;" (assignment_expression "local_50 = __s" identifier = identifier) ;) (expression_statement "local_4c = local_34[0];" (assignment_expression "local_4c = local_34[0]" identifier = (subscript_expression "local_34[0]" identifier [ number_literal ])) ;) (expression_statement "sVar9 = strlen(__s);" (assignment_expression "sVar9 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "pcVar8 = local_50 + sVar9;" (assignment_expression "pcVar8 = local_50 + sVar9" identifier = (binary_expression "local_50 + sVar9" identifier + identifier)) ;) (expression_statement "__s = local_50;" (assignment_expression "__s = local_50" identifier = identifier) ;) (expression_statement "uVar13 = local_51;" (assignment_expression "uVar13 = local_51" identifier = identifier) ;) (expression_statement "puVar18 = local_4c;" (assignment_expression "puVar18 = local_4c" identifier = identifier) ;) })) (expression_statement "local_4c = puVar18;" (assignment_expression "local_4c = puVar18" identifier = identifier) ;) (expression_statement "ppuStack_60 = (undefined1 **)0x0;" (assignment_expression "ppuStack_60 = (undefined1 **)0x0" identifier = (cast_expression "(undefined1 **)0x0" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);" (assignment_expression "local_50 = (char *)CONCAT31(local_50._1_3_,uVar13)" identifier = (cast_expression "(char *)CONCAT31(local_50._1_3_,uVar13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT31(local_50._1_3_,uVar13)" identifier (argument_list "(local_50._1_3_,uVar13)" ( (field_expression "local_50._1_3_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "FUN_00050e40(local_34,__s,pcVar8);" (call_expression "FUN_00050e40(local_34,__s,pcVar8)" identifier (argument_list "(local_34,__s,pcVar8)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_000ba920(local_40,iVar11 + 0x1338,local_34);" (call_expression "FUN_000ba920(local_40,iVar11 + 0x1338,local_34)" identifier (argument_list "(local_40,iVar11 + 0x1338,local_34)" ( identifier , (binary_expression "iVar11 + 0x1338" identifier + number_literal) , identifier ))) ;) (expression_statement "pppuVar16 = &ppuStack_60;" (assignment_expression "pppuVar16 = &ppuStack_60" identifier = (pointer_expression "&ppuStack_60" & identifier)) ;) (expression_statement "pppuVar15 = &ppuStack_60;" (assignment_expression "pppuVar15 = &ppuStack_60" identifier = (pointer_expression "&ppuStack_60" & identifier)) ;) (expression_statement "uVar14 = (uint)local_50 & 0xff;" (assignment_expression "uVar14 = (uint)local_50 & 0xff" identifier = (binary_expression "(uint)local_50 & 0xff" (cast_expression "(uint)local_50" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (if_statement "if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }" if (parenthesized_expression "(local_40[0] != 0)" ( (binary_expression "local_40[0] != 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }" { (if_statement "if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }" if (parenthesized_expression "(local_34[0] != local_4c)" ( (binary_expression "local_34[0] != local_4c" (subscript_expression "local_34[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }" { (expression_statement "local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);" (assignment_expression "local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_)" identifier = (cast_expression "(undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "CONCAT31(local_48._1_3_,local_50._0_1_)" identifier (argument_list "(local_48._1_3_,local_50._0_1_)" ( (field_expression "local_48._1_3_" identifier . field_identifier) , (field_expression "local_50._0_1_" identifier . field_identifier) ))))) ;) (expression_statement "FUN_001e6dc0(local_34[0]);" (call_expression "FUN_001e6dc0(local_34[0])" identifier (argument_list "(local_34[0])" ( (subscript_expression "local_34[0]" identifier [ number_literal ]) ))) ;) (expression_statement "pppuVar15 = &ppuStack_60;" (assignment_expression "pppuVar15 = &ppuStack_60" identifier = (pointer_expression "&ppuStack_60" & identifier)) ;) (expression_statement "uVar14 = (uint)local_48 & 0xff;" (assignment_expression "uVar14 = (uint)local_48 & 0xff" identifier = (binary_expression "(uint)local_48 & 0xff" (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) })) (goto_statement "goto LAB_00178990;" goto statement_identifier ;) })) (if_statement "if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }" if (parenthesized_expression "(local_34[0] != local_4c)" ( (binary_expression "local_34[0] != local_4c" (subscript_expression "local_34[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }" { (expression_statement "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);" (assignment_expression "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_)" identifier = (cast_expression "(undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT31(local_4c._1_3_,local_50._0_1_)" identifier (argument_list "(local_4c._1_3_,local_50._0_1_)" ( (field_expression "local_4c._1_3_" identifier . field_identifier) , (field_expression "local_50._0_1_" identifier . field_identifier) ))))) ;) (expression_statement "FUN_001e6dc0(local_34[0]);" (call_expression "FUN_001e6dc0(local_34[0])" identifier (argument_list "(local_34[0])" ( (subscript_expression "local_34[0]" identifier [ number_literal ]) ))) ;) (expression_statement "uVar14 = (uint)local_4c & 0xff;" (assignment_expression "uVar14 = (uint)local_4c & 0xff" identifier = (binary_expression "(uint)local_4c & 0xff" (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "bVar10 = *(byte *)((int)param_1 + 0x2b);" (assignment_expression "bVar10 = *(byte *)((int)param_1 + 0x2b)" identifier = (pointer_expression "*(byte *)((int)param_1 + 0x2b)" * (cast_expression "(byte *)((int)param_1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2b)" ( (binary_expression "(int)param_1 + 0x2b" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pppuVar17 = &ppuStack_60;" (assignment_expression "pppuVar17 = &ppuStack_60" identifier = (pointer_expression "&ppuStack_60" & identifier)) ;) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" identifier = identifier) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) (goto_statement "goto LAB_00178a1d;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00178a19:\n    bVar10 = *(byte *)((int)param_1 + 0x2b);" statement_identifier : (expression_statement "bVar10 = *(byte *)((int)param_1 + 0x2b);" (assignment_expression "bVar10 = *(byte *)((int)param_1 + 0x2b)" identifier = (pointer_expression "*(byte *)((int)param_1 + 0x2b)" * (cast_expression "(byte *)((int)param_1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2b)" ( (binary_expression "(int)param_1 + 0x2b" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;)) (expression_statement "pppuVar17 = pppuVar16;" (assignment_expression "pppuVar17 = pppuVar16" identifier = identifier) ;) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" identifier = identifier) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) }) (else_clause "else {\n    iVar11 = param_1[2];\n    ppuVar4 = local_44;\n    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }" else (compound_statement "{\n    iVar11 = param_1[2];\n    ppuVar4 = local_44;\n    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }" { (expression_statement "iVar11 = param_1[2];" (assignment_expression "iVar11 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) (if_statement "if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }" if (parenthesized_expression "((*(byte *)(iVar11 + 0x2c) & 1) == 0)" ( (binary_expression "(*(byte *)(iVar11 + 0x2c) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x2c) & 1)" ( (binary_expression "*(byte *)(iVar11 + 0x2c) & 1" (pointer_expression "*(byte *)(iVar11 + 0x2c)" * (cast_expression "(byte *)(iVar11 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x2c)" ( (binary_expression "iVar11 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }" { (expression_statement "uVar14 = param_1[3];" (assignment_expression "uVar14 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "ppuVar4 = &__DT_PLTGOT;" (assignment_expression "ppuVar4 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (if_statement "if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }" if (parenthesized_expression "(((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0))" ( (binary_expression "((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)" (parenthesized_expression "((bVar10 & 0x20) == 0)" ( (binary_expression "(bVar10 & 0x20) == 0" (parenthesized_expression "(bVar10 & 0x20)" ( (binary_expression "bVar10 & 0x20" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(ppuVar4 = local_44, uVar14 == 0)" ( (comma_expression "ppuVar4 = local_44, uVar14 == 0" (assignment_expression "ppuVar4 = local_44" identifier = identifier) , (binary_expression "uVar14 == 0" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }" { (labeled_statement "LAB_00178b48:\n        local_44 = ppuVar4;" statement_identifier : (expression_statement "local_44 = ppuVar4;" (assignment_expression "local_44 = ppuVar4" identifier = identifier) ;)) (expression_statement "local_48 = ppuVar3;" (assignment_expression "local_48 = ppuVar3" identifier = identifier) ;) (expression_statement "puVar18 = auStack_5c;" (assignment_expression "puVar18 = auStack_5c" identifier = identifier) ;) (expression_statement "pbVar6 = *local_48;" (assignment_expression "pbVar6 = *local_48" identifier = (pointer_expression "*local_48" * identifier)) ;) (expression_statement "iVar11 = *(int *)(pbVar6 + 8);" (assignment_expression "iVar11 = *(int *)(pbVar6 + 8)" identifier = (pointer_expression "*(int *)(pbVar6 + 8)" * (cast_expression "(int *)(pbVar6 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 8)" ( (binary_expression "pbVar6 + 8" identifier + number_literal) ))))) ;) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" identifier = identifier) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) (if_statement "if (iVar11 == 0) goto LAB_00178b58;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00178b58;" goto statement_identifier ;)) (goto_statement "goto LAB_00178962;" goto statement_identifier ;) })) (if_statement "if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }" if (parenthesized_expression "((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14)" ( (binary_expression "(uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14" (call_expression "(uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2)" ( (binary_expression "*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2" (binary_expression "*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38)" (pointer_expression "*(int *)(iVar11 + 0x3c)" * (cast_expression "(int *)(iVar11 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x3c)" ( (binary_expression "iVar11 + 0x3c" identifier + number_literal) )))) - (pointer_expression "*(int *)(iVar11 + 0x38)" * (cast_expression "(int *)(iVar11 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x38)" ( (binary_expression "iVar11 + 0x38" identifier + number_literal) ))))) >> number_literal) ))) <= identifier) )) (compound_statement "{\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }" { (expression_statement "ppuStack_60 = (undefined1 **)&DAT_0038f378;" (assignment_expression "ppuStack_60 = (undefined1 **)&DAT_0038f378" identifier = (cast_expression "(undefined1 **)&DAT_0038f378" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_0038f378" & identifier))) ;) (expression_statement "local_48 = (undefined1 **)&DAT_0038f378;" (assignment_expression "local_48 = (undefined1 **)&DAT_0038f378" identifier = (cast_expression "(undefined1 **)&DAT_0038f378" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_0038f378" & identifier))) ;) (expression_statement "local_44 = &__DT_PLTGOT;" (assignment_expression "local_44 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");" (call_expression "FUN_00069d00("../../gold/object.h",0x50b,"is_section_included")" identifier (argument_list "("../../gold/object.h",0x50b,"is_section_included")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""is_section_included"" " string_content ") ))) ;) })) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" identifier = identifier) ;) (if_statement "if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;" if (parenthesized_expression "(*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0)" ( (binary_expression "*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0" (pointer_expression "*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4)" * (cast_expression "(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar11 + 0x38) + uVar14 * 4)" ( (binary_expression "*(int *)(iVar11 + 0x38) + uVar14 * 4" (pointer_expression "*(int *)(iVar11 + 0x38)" * (cast_expression "(int *)(iVar11 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x38)" ( (binary_expression "iVar11 + 0x38" identifier + number_literal) )))) + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) != number_literal) )) (goto_statement "goto LAB_00178b48;" goto statement_identifier ;)) (expression_statement "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);" (assignment_expression "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13)" identifier = (cast_expression "(undefined1 *)CONCAT31(local_4c._1_3_,uVar13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT31(local_4c._1_3_,uVar13)" identifier (argument_list "(local_4c._1_3_,uVar13)" ( (field_expression "local_4c._1_3_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_48 = (undefined1 **)&DAT_0038f378;" (assignment_expression "local_48 = (undefined1 **)&DAT_0038f378" identifier = (cast_expression "(undefined1 **)&DAT_0038f378" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_0038f378" & identifier))) ;) (expression_statement "local_44 = &__DT_PLTGOT;" (assignment_expression "local_44 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "cVar5 = FUN_00177880(param_2,iVar11,uVar14);" (assignment_expression "cVar5 = FUN_00177880(param_2,iVar11,uVar14)" identifier = (call_expression "FUN_00177880(param_2,iVar11,uVar14)" identifier (argument_list "(param_2,iVar11,uVar14)" ( identifier , identifier , identifier )))) ;) (expression_statement "pppuVar16 = (undefined1 ***)auStack_5c;" (assignment_expression "pppuVar16 = (undefined1 ***)auStack_5c" identifier = (cast_expression "(undefined1 ***)auStack_5c" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (if_statement "if (cVar5 == '\0') {\n        return 0;\n      }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar14 = (uint)local_4c & 0xff;" (assignment_expression "uVar14 = (uint)local_4c & 0xff" identifier = (binary_expression "(uint)local_4c & 0xff" (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar13 = SUB41(local_4c,0);" (assignment_expression "uVar13 = SUB41(local_4c,0)" identifier = (call_expression "SUB41(local_4c,0)" identifier (argument_list "(local_4c,0)" ( identifier , number_literal )))) ;) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" identifier = identifier) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) (if_statement "if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;" if (parenthesized_expression "(((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))" ( (binary_expression "((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0)" (parenthesized_expression "((*(byte *)((int)param_1 + 0x2a) & 7) != 0)" ( (binary_expression "(*(byte *)((int)param_1 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_1 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_1 + 0x2a)" * (cast_expression "(byte *)((int)param_1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2a)" ( (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "((*(byte *)(param_1[2] + 0x2c) & 1) == 0)" ( (binary_expression "(*(byte *)(param_1[2] + 0x2c) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1[2] + 0x2c) & 1)" ( (binary_expression "*(byte *)(param_1[2] + 0x2c) & 1" (pointer_expression "*(byte *)(param_1[2] + 0x2c)" * (cast_expression "(byte *)(param_1[2] + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[2] + 0x2c)" ( (binary_expression "param_1[2] + 0x2c" (subscript_expression "param_1[2]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_00178b48;" goto statement_identifier ;)) (goto_statement "goto LAB_00178a19;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00178a1d:\n  local_44 = ppuVar4;" statement_identifier : (expression_statement "local_44 = ppuVar4;" (assignment_expression "local_44 = ppuVar4" identifier = identifier) ;)) (expression_statement "local_48 = ppuVar3;" (assignment_expression "local_48 = ppuVar3" identifier = identifier) ;) (expression_statement "ppuVar2 = local_44;" (assignment_expression "ppuVar2 = local_44" identifier = identifier) ;) (if_statement "if ((bVar10 & 0x10) != 0) {\n    return 0;\n  }" if (parenthesized_expression "((bVar10 & 0x10) != 0)" ( (binary_expression "(bVar10 & 0x10) != 0" (parenthesized_expression "(bVar10 & 0x10)" ( (binary_expression "bVar10 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar6 = *(byte **)(*local_48 + 8);" (assignment_expression "pbVar6 = *(byte **)(*local_48 + 8)" identifier = (pointer_expression "*(byte **)(*local_48 + 8)" * (cast_expression "(byte **)(*local_48 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 8)" ( (binary_expression "*local_48 + 8" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "puVar18 = (undefined1 *)pppuVar17;" (assignment_expression "puVar18 = (undefined1 *)pppuVar17" identifier = (cast_expression "(undefined1 *)pppuVar17" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" identifier = identifier) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) (if_statement "if (pbVar6 == (byte *)0x0) goto LAB_00178b58;" if (parenthesized_expression "(pbVar6 == (byte *)0x0)" ( (binary_expression "pbVar6 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00178b58;" goto statement_identifier ;)) (if_statement "if (pbVar6[0xe89] == 0) {\nLAB_00178c1e:\n    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;\n    if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }\n  }\n  else {\n    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }\n    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;\nLAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;\n  }" if (parenthesized_expression "(pbVar6[0xe89] == 0)" ( (binary_expression "pbVar6[0xe89] == 0" (subscript_expression "pbVar6[0xe89]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_00178c1e:\n    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;\n    if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }\n  }" { (labeled_statement "LAB_00178c1e:\n    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;" statement_identifier : (if_statement "if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;" if (parenthesized_expression "((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0))" ( (binary_expression "(pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)" (parenthesized_expression "(pbVar6[0xf05] == 0)" ( (binary_expression "pbVar6[0xf05] == 0" (subscript_expression "pbVar6[0xf05]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(pbVar6[0xf81] == 0)" ( (binary_expression "pbVar6[0xf81] == 0" (subscript_expression "pbVar6[0xf81]" identifier [ number_literal ]) == number_literal) ))) )) (goto_statement "goto LAB_00178a80;" goto statement_identifier ;))) (if_statement "if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }" if (parenthesized_expression "((*(byte *)((int)param_1 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)((int)param_1 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_1 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_1 + 0x2a)" * (cast_expression "(byte *)((int)param_1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2a)" ( (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }" { (expression_statement "iVar11 = param_1[2];" (assignment_expression "iVar11 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00178a70;" goto statement_identifier ;) })) }) (else_clause "else {\n    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }\n    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;\nLAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;\n  }" else (compound_statement "{\n    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }\n    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;\nLAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;\n  }" { (if_statement "if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }" if (parenthesized_expression "(((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0))" ( (binary_expression "((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)" (parenthesized_expression "((*(byte *)((int)param_1 + 0x2a) & 7) != 0)" ( (binary_expression "(*(byte *)((int)param_1 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_1 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_1 + 0x2a)" * (cast_expression "(byte *)((int)param_1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2a)" ( (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "(iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)" ( (comma_expression "iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0" (assignment_expression "iVar11 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) , (binary_expression "(*(byte *)(iVar11 + 0x2c) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x2c) & 1)" ( (binary_expression "*(byte *)(iVar11 + 0x2c) & 1" (pointer_expression "*(byte *)(iVar11 + 0x2c)" * (cast_expression "(byte *)(iVar11 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x2c)" ( (binary_expression "iVar11 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }" { (expression_statement "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));" (assignment_expression "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10))" identifier = (cast_expression "(undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10))" identifier (argument_list "(local_4c._1_3_,*(byte *)(param_1 + 10))" ( (field_expression "local_4c._1_3_" identifier . field_identifier) , (pointer_expression "*(byte *)(param_1 + 10)" * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) ))))) ;) (if_statement "if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }" if (parenthesized_expression "((*(byte *)(param_1 + 10) & 0xf) == 1)" ( (binary_expression "(*(byte *)(param_1 + 10) & 0xf) == 1" (parenthesized_expression "(*(byte *)(param_1 + 10) & 0xf)" ( (binary_expression "*(byte *)(param_1 + 10) & 0xf" (pointer_expression "*(byte *)(param_1 + 10)" * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        return uVar14;\n      }" { (return_statement "return uVar14;" return identifier ;) })) (goto_statement "goto LAB_00178c1e;" goto statement_identifier ;) })) (if_statement "if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;" if (parenthesized_expression "((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0))" ( (binary_expression "(pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)" (parenthesized_expression "(pbVar6[0xf05] != 0)" ( (binary_expression "pbVar6[0xf05] != 0" (subscript_expression "pbVar6[0xf05]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(pbVar6[0xf81] == 0)" ( (binary_expression "pbVar6[0xf81] == 0" (subscript_expression "pbVar6[0xf81]" identifier [ number_literal ]) == number_literal) ))) )) (goto_statement "goto LAB_00178a80;" goto statement_identifier ;)) (labeled_statement "LAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;" statement_identifier : (if_statement "if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;" if (parenthesized_expression "((*(byte *)(iVar11 + 0x2c) & 1) != 0)" ( (binary_expression "(*(byte *)(iVar11 + 0x2c) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x2c) & 1)" ( (binary_expression "*(byte *)(iVar11 + 0x2c) & 1" (pointer_expression "*(byte *)(iVar11 + 0x2c)" * (cast_expression "(byte *)(iVar11 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x2c)" ( (binary_expression "iVar11 + 0x2c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00178a80;" goto statement_identifier ;))) }))) (expression_statement "*(undefined4 *)((int)pppuVar17 + -0xc) = 3;" (assignment_expression "*(undefined4 *)((int)pppuVar17 + -0xc) = 3" (pointer_expression "*(undefined4 *)((int)pppuVar17 + -0xc)" * (cast_expression "(undefined4 *)((int)pppuVar17 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar17 + -0xc)" ( (binary_expression "(int)pppuVar17 + -0xc" (cast_expression "(int)pppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)pppuVar17 + -0x10) = *param_1;" (assignment_expression "*(undefined4 *)((int)pppuVar17 + -0x10) = *param_1" (pointer_expression "*(undefined4 *)((int)pppuVar17 + -0x10)" * (cast_expression "(undefined4 *)((int)pppuVar17 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar17 + -0x10)" ( (binary_expression "(int)pppuVar17 + -0x10" (cast_expression "(int)pppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(undefined4 *)((int)pppuVar17 + -0x14) = 0x178c55;" (assignment_expression "*(undefined4 *)((int)pppuVar17 + -0x14) = 0x178c55" (pointer_expression "*(undefined4 *)((int)pppuVar17 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar17 + -0x14)" ( (binary_expression "(int)pppuVar17 + -0x14" (cast_expression "(int)pppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pbVar6 = (byte *)FUN_001cef00();" (assignment_expression "pbVar6 = (byte *)FUN_001cef00()" identifier = (cast_expression "(byte *)FUN_001cef00()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001cef00()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (pbVar6 != (byte *)0x0) {\n    iVar11 = *(int *)(*local_48 + 8);\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    cVar5 = *(char *)(iVar11 + 0xf05);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    cVar5 = *(char *)(iVar11 + 0xf81);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n    *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;\n    free(*(void **)((int)pppuVar17 + -0x10));\n  }" if (parenthesized_expression "(pbVar6 != (byte *)0x0)" ( (binary_expression "pbVar6 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar11 = *(int *)(*local_48 + 8);\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    cVar5 = *(char *)(iVar11 + 0xf05);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    cVar5 = *(char *)(iVar11 + 0xf81);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n    *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;\n    free(*(void **)((int)pppuVar17 + -0x10));\n  }" { (expression_statement "iVar11 = *(int *)(*local_48 + 8);" (assignment_expression "iVar11 = *(int *)(*local_48 + 8)" identifier = (pointer_expression "*(int *)(*local_48 + 8)" * (cast_expression "(int *)(*local_48 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_48 + 8)" ( (binary_expression "*local_48 + 8" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" identifier = identifier) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) (if_statement "if (iVar11 == 0) goto LAB_00178b58;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00178b58;" goto statement_identifier ;)) (expression_statement "cVar5 = *(char *)(iVar11 + 0xf05);" (assignment_expression "cVar5 = *(char *)(iVar11 + 0xf05)" identifier = (pointer_expression "*(char *)(iVar11 + 0xf05)" * (cast_expression "(char *)(iVar11 + 0xf05)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0xf05)" ( (binary_expression "iVar11 + 0xf05" identifier + number_literal) ))))) ;) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) (expression_statement "bVar23 = cVar5 == '\0';" (assignment_expression "bVar23 = cVar5 == '\0'" identifier = (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (!bVar23) {\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }" if (parenthesized_expression "(!bVar23)" ( (unary_expression "!bVar23" ! identifier) )) (compound_statement "{\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }" { (expression_statement "iVar12 = 0xc;" (assignment_expression "iVar12 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar19 = pbVar6;" (assignment_expression "pbVar19 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);" (assignment_expression "pbVar20 = (byte *)((int)ppuVar2 + -0xf5762)" identifier = (cast_expression "(byte *)((int)ppuVar2 + -0xf5762)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar2 + -0xf5762)" ( (binary_expression "(int)ppuVar2 + -0xf5762" (cast_expression "(int)ppuVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (do_statement "do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);" do (compound_statement "{\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      }" { (if_statement "if (iVar12 == 0) break;" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "bVar21 = *pbVar19 < *pbVar20;" (assignment_expression "bVar21 = *pbVar19 < *pbVar20" identifier = (binary_expression "*pbVar19 < *pbVar20" (pointer_expression "*pbVar19" * identifier) < (pointer_expression "*pbVar20" * identifier))) ;) (expression_statement "bVar23 = *pbVar19 == *pbVar20;" (assignment_expression "bVar23 = *pbVar19 == *pbVar20" identifier = (binary_expression "*pbVar19 == *pbVar20" (pointer_expression "*pbVar19" * identifier) == (pointer_expression "*pbVar20" * identifier))) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar20 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar20 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (expression_statement "bVar22 = false;" (assignment_expression "bVar22 = false" identifier = false) ;) (expression_statement "bVar21 = (!bVar21 && !bVar23) == bVar21;" (assignment_expression "bVar21 = (!bVar21 && !bVar23) == bVar21" identifier = (binary_expression "(!bVar21 && !bVar23) == bVar21" (parenthesized_expression "(!bVar21 && !bVar23)" ( (binary_expression "!bVar21 && !bVar23" (unary_expression "!bVar21" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) == identifier)) ;) (expression_statement "local_44 = ppuVar2;" (assignment_expression "local_44 = ppuVar2" identifier = identifier) ;) (if_statement "if (bVar21) goto LAB_00178d5c;" if (parenthesized_expression "(bVar21)" ( identifier )) (goto_statement "goto LAB_00178d5c;" goto statement_identifier ;)) (expression_statement "iVar12 = 0xf;" (assignment_expression "iVar12 = 0xf" identifier = number_literal) ;) (expression_statement "pbVar19 = pbVar6;" (assignment_expression "pbVar19 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);" (assignment_expression "pbVar20 = (byte *)((int)ppuVar2 + -0xf5755)" identifier = (cast_expression "(byte *)((int)ppuVar2 + -0xf5755)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar2 + -0xf5755)" ( (binary_expression "(int)ppuVar2 + -0xf5755" (cast_expression "(int)ppuVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (do_statement "do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);" do (compound_statement "{\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      }" { (if_statement "if (iVar12 == 0) break;" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "bVar22 = *pbVar19 < *pbVar20;" (assignment_expression "bVar22 = *pbVar19 < *pbVar20" identifier = (binary_expression "*pbVar19 < *pbVar20" (pointer_expression "*pbVar19" * identifier) < (pointer_expression "*pbVar20" * identifier))) ;) (expression_statement "bVar21 = *pbVar19 == *pbVar20;" (assignment_expression "bVar21 = *pbVar19 == *pbVar20" identifier = (binary_expression "*pbVar19 == *pbVar20" (pointer_expression "*pbVar19" * identifier) == (pointer_expression "*pbVar20" * identifier))) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar20 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar20 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar21)" ( identifier )) ;) (if_statement "if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;" if (parenthesized_expression "((!bVar22 && !bVar21) == bVar22)" ( (binary_expression "(!bVar22 && !bVar21) == bVar22" (parenthesized_expression "(!bVar22 && !bVar21)" ( (binary_expression "!bVar22 && !bVar21" (unary_expression "!bVar22" ! identifier) && (unary_expression "!bVar21" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_00178d5c;" goto statement_identifier ;)) })) (expression_statement "cVar5 = *(char *)(iVar11 + 0xf81);" (assignment_expression "cVar5 = *(char *)(iVar11 + 0xf81)" identifier = (pointer_expression "*(char *)(iVar11 + 0xf81)" * (cast_expression "(char *)(iVar11 + 0xf81)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0xf81)" ( (binary_expression "iVar11 + 0xf81" identifier + number_literal) ))))) ;) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) (expression_statement "bVar23 = cVar5 == '\0';" (assignment_expression "bVar23 = cVar5 == '\0'" identifier = (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (!bVar23) {\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }" if (parenthesized_expression "(!bVar23)" ( (unary_expression "!bVar23" ! identifier) )) (compound_statement "{\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }" { (expression_statement "iVar11 = 0x11;" (assignment_expression "iVar11 = 0x11" identifier = number_literal) ;) (expression_statement "pbVar19 = pbVar6;" (assignment_expression "pbVar19 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar20 = (byte *)((int)local_44 + -0xf5745);" (assignment_expression "pbVar20 = (byte *)((int)local_44 + -0xf5745)" identifier = (cast_expression "(byte *)((int)local_44 + -0xf5745)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_44 + -0xf5745)" ( (binary_expression "(int)local_44 + -0xf5745" (cast_expression "(int)local_44" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (do_statement "do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);" do (compound_statement "{\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      }" { (if_statement "if (iVar11 == 0) break;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "bVar21 = *pbVar19 < *pbVar20;" (assignment_expression "bVar21 = *pbVar19 < *pbVar20" identifier = (binary_expression "*pbVar19 < *pbVar20" (pointer_expression "*pbVar19" * identifier) < (pointer_expression "*pbVar20" * identifier))) ;) (expression_statement "bVar23 = *pbVar19 == *pbVar20;" (assignment_expression "bVar23 = *pbVar19 == *pbVar20" identifier = (binary_expression "*pbVar19 == *pbVar20" (pointer_expression "*pbVar19" * identifier) == (pointer_expression "*pbVar20" * identifier))) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar20 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar20 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (expression_statement "bVar22 = false;" (assignment_expression "bVar22 = false" identifier = false) ;) (expression_statement "bVar21 = (!bVar21 && !bVar23) == bVar21;" (assignment_expression "bVar21 = (!bVar21 && !bVar23) == bVar21" identifier = (binary_expression "(!bVar21 && !bVar23) == bVar21" (parenthesized_expression "(!bVar21 && !bVar23)" ( (binary_expression "!bVar21 && !bVar23" (unary_expression "!bVar21" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }" if (parenthesized_expression "(bVar21)" ( identifier )) (compound_statement "{\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }" { (labeled_statement "LAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);" statement_identifier : (expression_statement "local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);" (assignment_expression "local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5)" identifier = (cast_expression "(undefined1 **)CONCAT31(local_48._1_3_,cVar5)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "CONCAT31(local_48._1_3_,cVar5)" identifier (argument_list "(local_48._1_3_,cVar5)" ( (field_expression "local_48._1_3_" identifier . field_identifier) , identifier ))))) ;)) (expression_statement "*(byte **)((int)pppuVar17 + -0x10) = pbVar6;" (assignment_expression "*(byte **)((int)pppuVar17 + -0x10) = pbVar6" (pointer_expression "*(byte **)((int)pppuVar17 + -0x10)" * (cast_expression "(byte **)((int)pppuVar17 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar17 + -0x10)" ( (binary_expression "(int)pppuVar17 + -0x10" (cast_expression "(int)pppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;" (assignment_expression "*(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b" (pointer_expression "*(undefined4 *)((int)pppuVar17 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar17 + -0x14)" ( (binary_expression "(int)pppuVar17 + -0x14" (cast_expression "(int)pppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "free(*(void **)((int)pppuVar17 + -0x10));" (call_expression "free(*(void **)((int)pppuVar17 + -0x10))" identifier (argument_list "(*(void **)((int)pppuVar17 + -0x10))" ( (pointer_expression "*(void **)((int)pppuVar17 + -0x10)" * (cast_expression "(void **)((int)pppuVar17 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar17 + -0x10)" ( (binary_expression "(int)pppuVar17 + -0x10" (cast_expression "(int)pppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (return_statement "return (uint)local_48 & 0xff;" return (binary_expression "(uint)local_48 & 0xff" (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ;) })) (expression_statement "iVar11 = 0xc;" (assignment_expression "iVar11 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar19 = pbVar6;" (assignment_expression "pbVar19 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar20 = (byte *)((int)local_44 + -0xf5733);" (assignment_expression "pbVar20 = (byte *)((int)local_44 + -0xf5733)" identifier = (cast_expression "(byte *)((int)local_44 + -0xf5733)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_44 + -0xf5733)" ( (binary_expression "(int)local_44 + -0xf5733" (cast_expression "(int)local_44" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (do_statement "do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);" do (compound_statement "{\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      }" { (if_statement "if (iVar11 == 0) break;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "bVar22 = *pbVar19 < *pbVar20;" (assignment_expression "bVar22 = *pbVar19 < *pbVar20" identifier = (binary_expression "*pbVar19 < *pbVar20" (pointer_expression "*pbVar19" * identifier) < (pointer_expression "*pbVar20" * identifier))) ;) (expression_statement "bVar21 = *pbVar19 == *pbVar20;" (assignment_expression "bVar21 = *pbVar19 == *pbVar20" identifier = (binary_expression "*pbVar19 == *pbVar20" (pointer_expression "*pbVar19" * identifier) == (pointer_expression "*pbVar20" * identifier))) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar20 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar20 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar21)" ( identifier )) ;) (if_statement "if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;" if (parenthesized_expression "((!bVar22 && !bVar21) == bVar22)" ( (binary_expression "(!bVar22 && !bVar21) == bVar22" (parenthesized_expression "(!bVar22 && !bVar21)" ( (binary_expression "!bVar22 && !bVar21" (unary_expression "!bVar22" ! identifier) && (unary_expression "!bVar21" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_00178d5c;" goto statement_identifier ;)) })) (expression_statement "*(byte **)((int)pppuVar17 + -0x10) = pbVar6;" (assignment_expression "*(byte **)((int)pppuVar17 + -0x10) = pbVar6" (pointer_expression "*(byte **)((int)pppuVar17 + -0x10)" * (cast_expression "(byte **)((int)pppuVar17 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar17 + -0x10)" ( (binary_expression "(int)pppuVar17 + -0x10" (cast_expression "(int)pppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;" (assignment_expression "*(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf" (pointer_expression "*(undefined4 *)((int)pppuVar17 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar17 + -0x14)" ( (binary_expression "(int)pppuVar17 + -0x14" (cast_expression "(int)pppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "free(*(void **)((int)pppuVar17 + -0x10));" (call_expression "free(*(void **)((int)pppuVar17 + -0x10))" identifier (argument_list "(*(void **)((int)pppuVar17 + -0x10))" ( (pointer_expression "*(void **)((int)pppuVar17 + -0x10)" * (cast_expression "(void **)((int)pppuVar17 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar17 + -0x10)" ( (binary_expression "(int)pppuVar17 + -0x10" (cast_expression "(int)pppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) })) (expression_statement "pbVar6 = *(byte **)(*local_48 + 8);" (assignment_expression "pbVar6 = *(byte **)(*local_48 + 8)" identifier = (pointer_expression "*(byte **)(*local_48 + 8)" * (cast_expression "(byte **)(*local_48 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_48 + 8)" ( (binary_expression "*local_48 + 8" (pointer_expression "*local_48" * identifier) + number_literal) ))))) ;) (if_statement "if (pbVar6 != (byte *)0x0) {\nLAB_00178a80:\n    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }\n    return 0;\n  }" if (parenthesized_expression "(pbVar6 != (byte *)0x0)" ( (binary_expression "pbVar6 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00178a80:\n    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }\n    return 0;\n  }" { (labeled_statement "LAB_00178a80:\n    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }" statement_identifier : (if_statement "if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }" if (parenthesized_expression "(((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10))))" ( (binary_expression "((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))" (parenthesized_expression "((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0))" ( (binary_expression "(pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)" (parenthesized_expression "(pbVar6[0x12b9] != 0)" ( (binary_expression "pbVar6[0x12b9] != 0" (subscript_expression "pbVar6[0x12b9]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(pbVar6[0x1a25] != 0)" ( (binary_expression "pbVar6[0x1a25] != 0" (subscript_expression "pbVar6[0x1a25]" identifier [ number_literal ]) != number_literal) ))) )) || (parenthesized_expression "((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))" ( (parenthesized_expression "(pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10))" ( (binary_expression "pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)" (binary_expression "pbVar6[0x19a9] != 0" (subscript_expression "pbVar6[0x19a9]" identifier [ number_literal ]) != number_literal) && (parenthesized_expression "(*(byte *)(param_1 + 10) >> 4 == 10)" ( (binary_expression "*(byte *)(param_1 + 10) >> 4 == 10" (binary_expression "*(byte *)(param_1 + 10) >> 4" (pointer_expression "*(byte *)(param_1 + 10)" * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) >> number_literal) == number_literal) ))) )) ))) )) (compound_statement "{\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }" { (if_statement "if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }" if (parenthesized_expression "((*(byte *)((int)param_1 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)((int)param_1 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_1 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_1 + 0x2a)" * (cast_expression "(byte *)((int)param_1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2a)" ( (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }" { (if_statement "if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }" if (parenthesized_expression "((*(byte *)(param_1[2] + 0x2c) & 1) != 0)" ( (binary_expression "(*(byte *)(param_1[2] + 0x2c) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1[2] + 0x2c) & 1)" ( (binary_expression "*(byte *)(param_1[2] + 0x2c) & 1" (pointer_expression "*(byte *)(param_1[2] + 0x2c)" * (cast_expression "(byte *)(param_1[2] + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[2] + 0x2c)" ( (binary_expression "param_1[2] + 0x2c" (subscript_expression "param_1[2]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }" if (parenthesized_expression "((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0))" ( (binary_expression "(param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)" (parenthesized_expression "(param_1[3] == 0)" ( (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)" ( (binary_expression "(*(byte *)((int)param_1 + 0x2b) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2b) & 0x20)" ( (binary_expression "*(byte *)((int)param_1 + 0x2b) & 0x20" (pointer_expression "*(byte *)((int)param_1 + 0x2b)" * (cast_expression "(byte *)((int)param_1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2b)" ( (binary_expression "(int)param_1 + 0x2b" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }" else (if_statement "if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }" if (parenthesized_expression "((*(byte *)((int)param_1 + 0x2a) & 7) == 4)" ( (binary_expression "(*(byte *)((int)param_1 + 0x2a) & 7) == 4" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_1 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_1 + 0x2a)" * (cast_expression "(byte *)((int)param_1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2a)" ( (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })))) (if_statement "if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }" if (parenthesized_expression "(((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         )" ( (binary_expression "((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)" (parenthesized_expression "((*(byte *)((int)param_1 + 0x29) & 3) == 0)" ( (binary_expression "(*(byte *)((int)param_1 + 0x29) & 3) == 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x29) & 3)" ( (binary_expression "*(byte *)((int)param_1 + 0x29) & 3" (pointer_expression "*(byte *)((int)param_1 + 0x29)" * (cast_expression "(byte *)((int)param_1 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x29)" ( (binary_expression "(int)param_1 + 0x29" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(byte *)((int)param_1 + 0x29) & 3) == 3)" ( (binary_expression "(*(byte *)((int)param_1 + 0x29) & 3) == 3" (parenthesized_expression "(*(byte *)((int)param_1 + 0x29) & 3)" ( (binary_expression "*(byte *)((int)param_1 + 0x29) & 3" (pointer_expression "*(byte *)((int)param_1 + 0x29)" * (cast_expression "(byte *)((int)param_1 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x29)" ( (binary_expression "(int)param_1 + 0x29" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }" { (return_statement "return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;" return (binary_expression "*(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1" (binary_expression "*(byte *)((int)param_1 + 0x2b) >> 4 & 1" (binary_expression "*(byte *)((int)param_1 + 0x2b) >> 4" (pointer_expression "*(byte *)((int)param_1 + 0x2b)" * (cast_expression "(byte *)((int)param_1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2b)" ( (binary_expression "(int)param_1 + 0x2b" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal) & number_literal) ^ number_literal) ;) })) }))) (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar6 = (byte *)0x0;" (assignment_expression "pbVar6 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" identifier = identifier) ;) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" identifier = identifier) ;) (labeled_statement "LAB_00178b58:\n  local_44 = ppuVar4;" statement_identifier : (expression_statement "local_44 = ppuVar4;" (assignment_expression "local_44 = ppuVar4" identifier = identifier) ;)) (expression_statement "local_48 = ppuVar3;" (assignment_expression "local_48 = ppuVar3" identifier = identifier) ;) (expression_statement "*(byte **)(puVar18 + -4) = pbVar6;" (assignment_expression "*(byte **)(puVar18 + -4) = pbVar6" (pointer_expression "*(byte **)(puVar18 + -4)" * (cast_expression "(byte **)(puVar18 + -4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + -4)" ( (binary_expression "puVar18 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined ***)(puVar18 + -8) = local_44 + -0x3d2de;" (assignment_expression "*(undefined ***)(puVar18 + -8) = local_44 + -0x3d2de" (pointer_expression "*(undefined ***)(puVar18 + -8)" * (cast_expression "(undefined ***)(puVar18 + -8)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar18 + -8)" ( (binary_expression "puVar18 + -8" identifier + number_literal) )))) = (binary_expression "local_44 + -0x3d2de" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar18 + -0xc) = 0x5c;" (assignment_expression "*(undefined4 *)(puVar18 + -0xc) = 0x5c" (pointer_expression "*(undefined4 *)(puVar18 + -0xc)" * (cast_expression "(undefined4 *)(puVar18 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + -0xc)" ( (binary_expression "puVar18 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)(puVar18 + -0x10) = local_44 + -0x41f7c;" (assignment_expression "*(undefined ***)(puVar18 + -0x10) = local_44 + -0x41f7c" (pointer_expression "*(undefined ***)(puVar18 + -0x10)" * (cast_expression "(undefined ***)(puVar18 + -0x10)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar18 + -0x10)" ( (binary_expression "puVar18 + -0x10" identifier + number_literal) )))) = (binary_expression "local_44 + -0x41f7c" identifier + number_literal)) ;) (expression_statement "*(undefined **)(puVar18 + -0x14) = &UNK_00178b71;" (assignment_expression "*(undefined **)(puVar18 + -0x14) = &UNK_00178b71" (pointer_expression "*(undefined **)(puVar18 + -0x14)" * (cast_expression "(undefined **)(puVar18 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + -0x14)" ( (binary_expression "puVar18 + -0x14" identifier + number_literal) )))) = (pointer_expression "&UNK_00178b71" & identifier)) ;) (expression_statement "FUN_00069d00();" (call_expression "FUN_00069d00()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (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 (pointer_declarator * IDENT) ;) (declaration TYPE 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 = (pointer_expression & IDENT)) ;) (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) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) == LIT) )) (compound_statement { (return_statement return LIT ;) })) (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) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) && (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 (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 ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression & IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (labeled_statement statement_identifier : (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression * IDENT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (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) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (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) )))) = (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 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) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) )) (compound_statement { (return_statement return 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) )))) = (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) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = 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 IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (subscript_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 = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (field_expression IDENT . field_identifier) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (field_expression IDENT . field_identifier) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (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) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (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) ))))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_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 IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (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 = (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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) >> LIT) ))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (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) )))) + (binary_expression IDENT * LIT)) )))) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , 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 IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) & LIT) )) == LIT) ))) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (return_statement return 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) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (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 *)) ) (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) )))) ))))) ;) (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 { (return_statement return IDENT ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (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) )))) = 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) )))) = (pointer_expression * 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (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 (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (char_literal ' escape_sequence '))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (char_literal ' escape_sequence '))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))) ;) (return_statement return (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (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 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 { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) && (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) == LIT) ))) )) ))) )) (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 { (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) )))) & LIT) )) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ 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) ))) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (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 { (return_statement return 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 ( (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 { (return_statement return (binary_expression (binary_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) ;) })) }))) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "uint FUN_001788c0(undefined4 *param_1,undefined4 param_2)\n\n{\n  byte bVar1;\n  undefined **ppuVar2;\n  undefined1 **ppuVar3;\n  undefined **ppuVar4;\n  char cVar5;\n  byte *pbVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  size_t sVar9;\n  byte bVar10;\n  char *__s;\n  int iVar11;\n  int iVar12;\n  undefined1 uVar13;\n  uint uVar14;\n  undefined1 ***pppuVar15;\n  undefined1 ***pppuVar16;\n  undefined1 ***pppuVar17;\n  undefined1 *puVar18;\n  byte *pbVar19;\n  byte *pbVar20;\n  bool bVar21;\n  bool bVar22;\n  bool bVar23;\n  byte bVar24;\n  undefined1 **ppuStack_60;\n  undefined1 auStack_5c [11];\n  undefined1 local_51;\n  char *local_50;\n  undefined1 *local_4c;\n  undefined1 **local_48;\n  undefined **local_44;\n  int local_40 [3];\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  bVar24 = 0;\n  pppuVar17 = (undefined1 ***)auStack_5c;\n  local_44 = &__DT_PLTGOT;\n  bVar10 = *(byte *)((int)param_1 + 0x2b);\n  uVar14 = bVar10 >> 6 & 1;\n  uVar13 = (undefined1)uVar14;\n  if ((bVar10 >> 6 & 1) == 0) {\n    return 0;\n  }\n  bVar1 = *(byte *)((int)param_1 + 0x2a);\n  pbVar6 = (byte *)(uint)bVar1;\n  if ((bVar1 & 0x40) != 0) {\n    return uVar14;\n  }\n  if (((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))\n     && ((bVar10 & 0x10) == 0)) {\n    return uVar14;\n  }\n  local_48 = (undefined1 **)&DAT_0038f378;\n  iVar11 = *(int *)(DAT_0038f378 + 8);\n  puVar18 = auStack_5c;\n  ppuVar3 = (undefined1 **)&DAT_0038f378;\n  ppuVar4 = &__DT_PLTGOT;\n  if (iVar11 == 0) goto LAB_00178b58;\n  if (((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||\n     ((bVar1 & 7) != 0)) {\n    local_48 = (undefined1 **)&DAT_0038f378;\n    if ((bVar1 & 7) == 0) {\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }\nLAB_00178962:\n    local_44 = ppuVar4;\n    pppuVar15 = (undefined1 ***)auStack_5c;\n    pppuVar16 = (undefined1 ***)auStack_5c;\n    local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n    ppuStack_60 = local_34;\n    cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);\n    uVar14 = (uint)local_4c & 0xff;\n    if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    \n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }\n    pbVar6 = *local_48;\n    iVar11 = *(int *)(pbVar6 + 8);\n    puVar18 = auStack_5c;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    if (*(int *)(iVar11 + 0x1344) != 0) {\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar10 = *(byte *)((int)param_1 + 0x2b);\n    pppuVar17 = pppuVar16;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n  }\n  else {\n    iVar11 = param_1[2];\n    ppuVar4 = local_44;\n    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }\nLAB_00178a1d:\n  local_44 = ppuVar4;\n  local_48 = ppuVar3;\n  ppuVar2 = local_44;\n  if ((bVar10 & 0x10) != 0) {\n    return 0;\n  }\n  pbVar6 = *(byte **)(*local_48 + 8);\n  puVar18 = (undefined1 *)pppuVar17;\n  ppuVar3 = local_48;\n  ppuVar4 = local_44;\n  if (pbVar6 == (byte *)0x0) goto LAB_00178b58;\n  if (pbVar6[0xe89] == 0) {\nLAB_00178c1e:\n    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;\n    if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }\n  }\n  else {\n    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }\n    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;\nLAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;\n  }\n  *(undefined4 *)((int)pppuVar17 + -0xc) = 3;\n  *(undefined4 *)((int)pppuVar17 + -0x10) = *param_1;\n  *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178c55;\n  pbVar6 = (byte *)FUN_001cef00();\n  if (pbVar6 != (byte *)0x0) {\n    iVar11 = *(int *)(*local_48 + 8);\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    cVar5 = *(char *)(iVar11 + 0xf05);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    cVar5 = *(char *)(iVar11 + 0xf81);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n    *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;\n    free(*(void **)((int)pppuVar17 + -0x10));\n  }\n  pbVar6 = *(byte **)(*local_48 + 8);\n  if (pbVar6 != (byte *)0x0) {\nLAB_00178a80:\n    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }\n    return 0;\n  }\n  pbVar6 = (byte *)0x0;\n  ppuVar3 = local_48;\n  ppuVar4 = local_44;\nLAB_00178b58:\n  local_44 = ppuVar4;\n  local_48 = ppuVar3;\n  *(byte **)(puVar18 + -4) = pbVar6;\n  *(undefined ***)(puVar18 + -8) = local_44 + -0x3d2de;\n  *(undefined4 *)(puVar18 + -0xc) = 0x5c;\n  *(undefined ***)(puVar18 + -0x10) = local_44 + -0x41f7c;\n                    \n  *(undefined **)(puVar18 + -0x14) = &UNK_00178b71;\n  FUN_00069d00();\n}" (type_identifier "uint") (function_declarator "FUN_001788c0(undefined4 *param_1,undefined4 param_2)" (identifier "FUN_001788c0") (parameter_list "(undefined4 *param_1,undefined4 param_2)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")"))) (compound_statement "{\n  byte bVar1;\n  undefined **ppuVar2;\n  undefined1 **ppuVar3;\n  undefined **ppuVar4;\n  char cVar5;\n  byte *pbVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  size_t sVar9;\n  byte bVar10;\n  char *__s;\n  int iVar11;\n  int iVar12;\n  undefined1 uVar13;\n  uint uVar14;\n  undefined1 ***pppuVar15;\n  undefined1 ***pppuVar16;\n  undefined1 ***pppuVar17;\n  undefined1 *puVar18;\n  byte *pbVar19;\n  byte *pbVar20;\n  bool bVar21;\n  bool bVar22;\n  bool bVar23;\n  byte bVar24;\n  undefined1 **ppuStack_60;\n  undefined1 auStack_5c [11];\n  undefined1 local_51;\n  char *local_50;\n  undefined1 *local_4c;\n  undefined1 **local_48;\n  undefined **local_44;\n  int local_40 [3];\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  bVar24 = 0;\n  pppuVar17 = (undefined1 ***)auStack_5c;\n  local_44 = &__DT_PLTGOT;\n  bVar10 = *(byte *)((int)param_1 + 0x2b);\n  uVar14 = bVar10 >> 6 & 1;\n  uVar13 = (undefined1)uVar14;\n  if ((bVar10 >> 6 & 1) == 0) {\n    return 0;\n  }\n  bVar1 = *(byte *)((int)param_1 + 0x2a);\n  pbVar6 = (byte *)(uint)bVar1;\n  if ((bVar1 & 0x40) != 0) {\n    return uVar14;\n  }\n  if (((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))\n     && ((bVar10 & 0x10) == 0)) {\n    return uVar14;\n  }\n  local_48 = (undefined1 **)&DAT_0038f378;\n  iVar11 = *(int *)(DAT_0038f378 + 8);\n  puVar18 = auStack_5c;\n  ppuVar3 = (undefined1 **)&DAT_0038f378;\n  ppuVar4 = &__DT_PLTGOT;\n  if (iVar11 == 0) goto LAB_00178b58;\n  if (((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||\n     ((bVar1 & 7) != 0)) {\n    local_48 = (undefined1 **)&DAT_0038f378;\n    if ((bVar1 & 7) == 0) {\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }\nLAB_00178962:\n    local_44 = ppuVar4;\n    pppuVar15 = (undefined1 ***)auStack_5c;\n    pppuVar16 = (undefined1 ***)auStack_5c;\n    local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n    ppuStack_60 = local_34;\n    cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);\n    uVar14 = (uint)local_4c & 0xff;\n    if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    \n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }\n    pbVar6 = *local_48;\n    iVar11 = *(int *)(pbVar6 + 8);\n    puVar18 = auStack_5c;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    if (*(int *)(iVar11 + 0x1344) != 0) {\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar10 = *(byte *)((int)param_1 + 0x2b);\n    pppuVar17 = pppuVar16;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n  }\n  else {\n    iVar11 = param_1[2];\n    ppuVar4 = local_44;\n    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }\nLAB_00178a1d:\n  local_44 = ppuVar4;\n  local_48 = ppuVar3;\n  ppuVar2 = local_44;\n  if ((bVar10 & 0x10) != 0) {\n    return 0;\n  }\n  pbVar6 = *(byte **)(*local_48 + 8);\n  puVar18 = (undefined1 *)pppuVar17;\n  ppuVar3 = local_48;\n  ppuVar4 = local_44;\n  if (pbVar6 == (byte *)0x0) goto LAB_00178b58;\n  if (pbVar6[0xe89] == 0) {\nLAB_00178c1e:\n    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;\n    if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }\n  }\n  else {\n    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }\n    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;\nLAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;\n  }\n  *(undefined4 *)((int)pppuVar17 + -0xc) = 3;\n  *(undefined4 *)((int)pppuVar17 + -0x10) = *param_1;\n  *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178c55;\n  pbVar6 = (byte *)FUN_001cef00();\n  if (pbVar6 != (byte *)0x0) {\n    iVar11 = *(int *)(*local_48 + 8);\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    cVar5 = *(char *)(iVar11 + 0xf05);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    cVar5 = *(char *)(iVar11 + 0xf81);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n    *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;\n    free(*(void **)((int)pppuVar17 + -0x10));\n  }\n  pbVar6 = *(byte **)(*local_48 + 8);\n  if (pbVar6 != (byte *)0x0) {\nLAB_00178a80:\n    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }\n    return 0;\n  }\n  pbVar6 = (byte *)0x0;\n  ppuVar3 = local_48;\n  ppuVar4 = local_44;\nLAB_00178b58:\n  local_44 = ppuVar4;\n  local_48 = ppuVar3;\n  *(byte **)(puVar18 + -4) = pbVar6;\n  *(undefined ***)(puVar18 + -8) = local_44 + -0x3d2de;\n  *(undefined4 *)(puVar18 + -0xc) = 0x5c;\n  *(undefined ***)(puVar18 + -0x10) = local_44 + -0x41f7c;\n                    \n  *(undefined **)(puVar18 + -0x14) = &UNK_00178b71;\n  FUN_00069d00();\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "undefined **ppuVar2;" (type_identifier "undefined") (pointer_declarator "**ppuVar2" (* "*") (pointer_declarator "*ppuVar2" (* "*") (identifier "ppuVar2"))) (; ";")) (declaration "undefined1 **ppuVar3;" (type_identifier "undefined1") (pointer_declarator "**ppuVar3" (* "*") (pointer_declarator "*ppuVar3" (* "*") (identifier "ppuVar3"))) (; ";")) (declaration "undefined **ppuVar4;" (type_identifier "undefined") (pointer_declarator "**ppuVar4" (* "*") (pointer_declarator "*ppuVar4" (* "*") (identifier "ppuVar4"))) (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "char *pcVar8;" (primitive_type "char") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (declaration "size_t sVar9;" (primitive_type "size_t") (identifier "sVar9") (; ";")) (declaration "byte bVar10;" (type_identifier "byte") (identifier "bVar10") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "undefined1 uVar13;" (type_identifier "undefined1") (identifier "uVar13") (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "undefined1 ***pppuVar15;" (type_identifier "undefined1") (pointer_declarator "***pppuVar15" (* "*") (pointer_declarator "**pppuVar15" (* "*") (pointer_declarator "*pppuVar15" (* "*") (identifier "pppuVar15")))) (; ";")) (declaration "undefined1 ***pppuVar16;" (type_identifier "undefined1") (pointer_declarator "***pppuVar16" (* "*") (pointer_declarator "**pppuVar16" (* "*") (pointer_declarator "*pppuVar16" (* "*") (identifier "pppuVar16")))) (; ";")) (declaration "undefined1 ***pppuVar17;" (type_identifier "undefined1") (pointer_declarator "***pppuVar17" (* "*") (pointer_declarator "**pppuVar17" (* "*") (pointer_declarator "*pppuVar17" (* "*") (identifier "pppuVar17")))) (; ";")) (declaration "undefined1 *puVar18;" (type_identifier "undefined1") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "byte *pbVar19;" (type_identifier "byte") (pointer_declarator "*pbVar19" (* "*") (identifier "pbVar19")) (; ";")) (declaration "byte *pbVar20;" (type_identifier "byte") (pointer_declarator "*pbVar20" (* "*") (identifier "pbVar20")) (; ";")) (declaration "bool bVar21;" (primitive_type "bool") (identifier "bVar21") (; ";")) (declaration "bool bVar22;" (primitive_type "bool") (identifier "bVar22") (; ";")) (declaration "bool bVar23;" (primitive_type "bool") (identifier "bVar23") (; ";")) (declaration "byte bVar24;" (type_identifier "byte") (identifier "bVar24") (; ";")) (declaration "undefined1 **ppuStack_60;" (type_identifier "undefined1") (pointer_declarator "**ppuStack_60" (* "*") (pointer_declarator "*ppuStack_60" (* "*") (identifier "ppuStack_60"))) (; ";")) (declaration "undefined1 auStack_5c [11];" (type_identifier "undefined1") (array_declarator "auStack_5c [11]" (identifier "auStack_5c") ([ "[") (number_literal "11") (] "]")) (; ";")) (declaration "undefined1 local_51;" (type_identifier "undefined1") (identifier "local_51") (; ";")) (declaration "char *local_50;" (primitive_type "char") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "undefined1 *local_4c;" (type_identifier "undefined1") (pointer_declarator "*local_4c" (* "*") (identifier "local_4c")) (; ";")) (declaration "undefined1 **local_48;" (type_identifier "undefined1") (pointer_declarator "**local_48" (* "*") (pointer_declarator "*local_48" (* "*") (identifier "local_48"))) (; ";")) (declaration "undefined **local_44;" (type_identifier "undefined") (pointer_declarator "**local_44" (* "*") (pointer_declarator "*local_44" (* "*") (identifier "local_44"))) (; ";")) (declaration "int local_40 [3];" (primitive_type "int") (array_declarator "local_40 [3]" (identifier "local_40") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "undefined1 *local_34 [2];" (type_identifier "undefined1") (pointer_declarator "*local_34 [2]" (* "*") (array_declarator "local_34 [2]" (identifier "local_34") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_2c [28];" (type_identifier "undefined1") (array_declarator "local_2c [28]" (identifier "local_2c") ([ "[") (number_literal "28") (] "]")) (; ";")) (expression_statement "bVar24 = 0;" (assignment_expression "bVar24 = 0" (identifier "bVar24") (= "=") (number_literal "0")) (; ";")) (expression_statement "pppuVar17 = (undefined1 ***)auStack_5c;" (assignment_expression "pppuVar17 = (undefined1 ***)auStack_5c" (identifier "pppuVar17") (= "=") (cast_expression "(undefined1 ***)auStack_5c" (( "(") (type_descriptor "undefined1 ***" (type_identifier "undefined1") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "auStack_5c"))) (; ";")) (expression_statement "local_44 = &__DT_PLTGOT;" (assignment_expression "local_44 = &__DT_PLTGOT" (identifier "local_44") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "bVar10 = *(byte *)((int)param_1 + 0x2b);" (assignment_expression "bVar10 = *(byte *)((int)param_1 + 0x2b)" (identifier "bVar10") (= "=") (pointer_expression "*(byte *)((int)param_1 + 0x2b)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x2b)" (( "(") (binary_expression "(int)param_1 + 0x2b" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x2b")) () ")"))))) (; ";")) (expression_statement "uVar14 = bVar10 >> 6 & 1;" (assignment_expression "uVar14 = bVar10 >> 6 & 1" (identifier "uVar14") (= "=") (binary_expression "bVar10 >> 6 & 1" (binary_expression "bVar10 >> 6" (identifier "bVar10") (>> ">>") (number_literal "6")) (& "&") (number_literal "1"))) (; ";")) (expression_statement "uVar13 = (undefined1)uVar14;" (assignment_expression "uVar13 = (undefined1)uVar14" (identifier "uVar13") (= "=") (cast_expression "(undefined1)uVar14" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (identifier "uVar14"))) (; ";")) (if_statement "if ((bVar10 >> 6 & 1) == 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "((bVar10 >> 6 & 1) == 0)" (( "(") (binary_expression "(bVar10 >> 6 & 1) == 0" (parenthesized_expression "(bVar10 >> 6 & 1)" (( "(") (binary_expression "bVar10 >> 6 & 1" (binary_expression "bVar10 >> 6" (identifier "bVar10") (>> ">>") (number_literal "6")) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar1 = *(byte *)((int)param_1 + 0x2a);" (assignment_expression "bVar1 = *(byte *)((int)param_1 + 0x2a)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)((int)param_1 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x2a)" (( "(") (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x2a")) () ")"))))) (; ";")) (expression_statement "pbVar6 = (byte *)(uint)bVar1;" (assignment_expression "pbVar6 = (byte *)(uint)bVar1" (identifier "pbVar6") (= "=") (cast_expression "(byte *)(uint)bVar1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")))) (; ";")) (if_statement "if ((bVar1 & 0x40) != 0) {\n    return uVar14;\n  }" (if "if") (parenthesized_expression "((bVar1 & 0x40) != 0)" (( "(") (binary_expression "(bVar1 & 0x40) != 0" (parenthesized_expression "(bVar1 & 0x40)" (( "(") (binary_expression "bVar1 & 0x40" (identifier "bVar1") (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return uVar14;\n  }" ({ "{") (return_statement "return uVar14;" (return "return") (identifier "uVar14") (; ";")) (} "}"))) (if_statement "if (((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))\n     && ((bVar10 & 0x10) == 0)) {\n    return uVar14;\n  }" (if "if") (parenthesized_expression "(((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))\n     && ((bVar10 & 0x10) == 0))" (( "(") (binary_expression "((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))\n     && ((bVar10 & 0x10) == 0)" (parenthesized_expression "((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))" (( "(") (binary_expression "(((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&\n      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)))" (parenthesized_expression "(((char)bVar1 < '\0') && ((bVar10 & 1) != 0))" (( "(") (binary_expression "((char)bVar1 < '\0') && ((bVar10 & 1) != 0)" (parenthesized_expression "((char)bVar1 < '\0')" (( "(") (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "((bVar10 & 1) != 0)" (( "(") (binary_expression "(bVar10 & 1) != 0" (parenthesized_expression "(bVar10 & 1)" (( "(") (binary_expression "bVar10 & 1" (identifier "bVar10") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)))" (( "(") (parenthesized_expression "((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))" (( "(") (binary_expression "(*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)" (binary_expression "(*(byte *)((int)param_1 + 0x29) & 3) == 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x29) & 3)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0x29) & 3" (pointer_expression "*(byte *)((int)param_1 + 0x29)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x29)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x29)" (( "(") (binary_expression "(int)param_1 + 0x29" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x29")) () ")")))) (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "((*(byte *)((int)param_1 + 0x29) & 3) == 3)" (( "(") (binary_expression "(*(byte *)((int)param_1 + 0x29) & 3) == 3" (parenthesized_expression "(*(byte *)((int)param_1 + 0x29) & 3)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0x29) & 3" (pointer_expression "*(byte *)((int)param_1 + 0x29)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x29)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x29)" (( "(") (binary_expression "(int)param_1 + 0x29" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x29")) () ")")))) (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "3")) () ")"))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((bVar10 & 0x10) == 0)" (( "(") (binary_expression "(bVar10 & 0x10) == 0" (parenthesized_expression "(bVar10 & 0x10)" (( "(") (binary_expression "bVar10 & 0x10" (identifier "bVar10") (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    return uVar14;\n  }" ({ "{") (return_statement "return uVar14;" (return "return") (identifier "uVar14") (; ";")) (} "}"))) (expression_statement "local_48 = (undefined1 **)&DAT_0038f378;" (assignment_expression "local_48 = (undefined1 **)&DAT_0038f378" (identifier "local_48") (= "=") (cast_expression "(undefined1 **)&DAT_0038f378" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "&DAT_0038f378" (& "&") (identifier "DAT_0038f378")))) (; ";")) (expression_statement "iVar11 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar11 = *(int *)(DAT_0038f378 + 8)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(DAT_0038f378 + 8)" (* "*") (cast_expression "(int *)(DAT_0038f378 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 8)" (( "(") (binary_expression "DAT_0038f378 + 8" (identifier "DAT_0038f378") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "puVar18 = auStack_5c;" (assignment_expression "puVar18 = auStack_5c" (identifier "puVar18") (= "=") (identifier "auStack_5c")) (; ";")) (expression_statement "ppuVar3 = (undefined1 **)&DAT_0038f378;" (assignment_expression "ppuVar3 = (undefined1 **)&DAT_0038f378" (identifier "ppuVar3") (= "=") (cast_expression "(undefined1 **)&DAT_0038f378" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "&DAT_0038f378" (& "&") (identifier "DAT_0038f378")))) (; ";")) (expression_statement "ppuVar4 = &__DT_PLTGOT;" (assignment_expression "ppuVar4 = &__DT_PLTGOT" (identifier "ppuVar4") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (if_statement "if (iVar11 == 0) goto LAB_00178b58;" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00178b58;" (goto "goto") (statement_identifier "LAB_00178b58") (; ";"))) (if_statement "if (((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||\n     ((bVar1 & 7) != 0)) {\n    local_48 = (undefined1 **)&DAT_0038f378;\n    if ((bVar1 & 7) == 0) {\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }\nLAB_00178962:\n    local_44 = ppuVar4;\n    pppuVar15 = (undefined1 ***)auStack_5c;\n    pppuVar16 = (undefined1 ***)auStack_5c;\n    local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n    ppuStack_60 = local_34;\n    cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);\n    uVar14 = (uint)local_4c & 0xff;\n    if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    \n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }\n    pbVar6 = *local_48;\n    iVar11 = *(int *)(pbVar6 + 8);\n    puVar18 = auStack_5c;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    if (*(int *)(iVar11 + 0x1344) != 0) {\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar10 = *(byte *)((int)param_1 + 0x2b);\n    pppuVar17 = pppuVar16;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n  }\n  else {\n    iVar11 = param_1[2];\n    ppuVar4 = local_44;\n    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }" (if "if") (parenthesized_expression "(((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||\n     ((bVar1 & 7) != 0))" (( "(") (binary_expression "((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||\n     ((bVar1 & 7) != 0)" (parenthesized_expression "((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0'))" (( "(") (binary_expression "(*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')" (parenthesized_expression "(*(char *)(iVar11 + 0x18b1) == '\0')" (( "(") (binary_expression "*(char *)(iVar11 + 0x18b1) == '\0'" (pointer_expression "*(char *)(iVar11 + 0x18b1)" (* "*") (cast_expression "(char *)(iVar11 + 0x18b1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x18b1)" (( "(") (binary_expression "iVar11 + 0x18b1" (identifier "iVar11") (+ "+") (number_literal "0x18b1")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(*(char *)(iVar11 + 0x1a25) != '\0')" (( "(") (binary_expression "*(char *)(iVar11 + 0x1a25) != '\0'" (pointer_expression "*(char *)(iVar11 + 0x1a25)" (* "*") (cast_expression "(char *)(iVar11 + 0x1a25)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x1a25)" (( "(") (binary_expression "iVar11 + 0x1a25" (identifier "iVar11") (+ "+") (number_literal "0x1a25")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "((bVar1 & 7) != 0)" (( "(") (binary_expression "(bVar1 & 7) != 0" (parenthesized_expression "(bVar1 & 7)" (( "(") (binary_expression "bVar1 & 7" (identifier "bVar1") (& "&") (number_literal "7")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    local_48 = (undefined1 **)&DAT_0038f378;\n    if ((bVar1 & 7) == 0) {\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }\nLAB_00178962:\n    local_44 = ppuVar4;\n    pppuVar15 = (undefined1 ***)auStack_5c;\n    pppuVar16 = (undefined1 ***)auStack_5c;\n    local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n    ppuStack_60 = local_34;\n    cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);\n    uVar14 = (uint)local_4c & 0xff;\n    if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    \n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }\n    pbVar6 = *local_48;\n    iVar11 = *(int *)(pbVar6 + 8);\n    puVar18 = auStack_5c;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    if (*(int *)(iVar11 + 0x1344) != 0) {\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }\nLAB_00178a19:\n    bVar10 = *(byte *)((int)param_1 + 0x2b);\n    pppuVar17 = pppuVar16;\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n  }" ({ "{") (expression_statement "local_48 = (undefined1 **)&DAT_0038f378;" (assignment_expression "local_48 = (undefined1 **)&DAT_0038f378" (identifier "local_48") (= "=") (cast_expression "(undefined1 **)&DAT_0038f378" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "&DAT_0038f378" (& "&") (identifier "DAT_0038f378")))) (; ";")) (if_statement "if ((bVar1 & 7) == 0) {\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }" (if "if") (parenthesized_expression "((bVar1 & 7) == 0)" (( "(") (binary_expression "(bVar1 & 7) == 0" (parenthesized_expression "(bVar1 & 7)" (( "(") (binary_expression "bVar1 & 7" (identifier "bVar1") (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      pppuVar17 = (undefined1 ***)auStack_5c;\n      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;\n      iVar11 = *(int *)(DAT_0038f378 + 8);\n      ppuVar4 = local_44;\n    }" ({ "{") (expression_statement "pppuVar17 = (undefined1 ***)auStack_5c;" (assignment_expression "pppuVar17 = (undefined1 ***)auStack_5c" (identifier "pppuVar17") (= "=") (cast_expression "(undefined1 ***)auStack_5c" (( "(") (type_descriptor "undefined1 ***" (type_identifier "undefined1") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "auStack_5c"))) (; ";")) (if_statement "if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;" (if "if") (parenthesized_expression "((*(byte *)(param_1[2] + 0x2c) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(param_1[2] + 0x2c) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1[2] + 0x2c) & 1)" (( "(") (binary_expression "*(byte *)(param_1[2] + 0x2c) & 1" (pointer_expression "*(byte *)(param_1[2] + 0x2c)" (* "*") (cast_expression "(byte *)(param_1[2] + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[2] + 0x2c)" (( "(") (binary_expression "param_1[2] + 0x2c" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00178a1d;" (goto "goto") (statement_identifier "LAB_00178a1d") (; ";"))) (expression_statement "iVar11 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar11 = *(int *)(DAT_0038f378 + 8)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(DAT_0038f378 + 8)" (* "*") (cast_expression "(int *)(DAT_0038f378 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 8)" (( "(") (binary_expression "DAT_0038f378 + 8" (identifier "DAT_0038f378") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" (identifier "ppuVar4") (= "=") (identifier "local_44")) (; ";")) (} "}"))) (labeled_statement "LAB_00178962:\n    local_44 = ppuVar4;" (statement_identifier "LAB_00178962") (: ":") (expression_statement "local_44 = ppuVar4;" (assignment_expression "local_44 = ppuVar4" (identifier "local_44") (= "=") (identifier "ppuVar4")) (; ";"))) (expression_statement "pppuVar15 = (undefined1 ***)auStack_5c;" (assignment_expression "pppuVar15 = (undefined1 ***)auStack_5c" (identifier "pppuVar15") (= "=") (cast_expression "(undefined1 ***)auStack_5c" (( "(") (type_descriptor "undefined1 ***" (type_identifier "undefined1") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "auStack_5c"))) (; ";")) (expression_statement "pppuVar16 = (undefined1 ***)auStack_5c;" (assignment_expression "pppuVar16 = (undefined1 ***)auStack_5c" (identifier "pppuVar16") (= "=") (cast_expression "(undefined1 ***)auStack_5c" (( "(") (type_descriptor "undefined1 ***" (type_identifier "undefined1") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "auStack_5c"))) (; ";")) (expression_statement "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);" (assignment_expression "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13)" (identifier "local_4c") (= "=") (cast_expression "(undefined1 *)CONCAT31(local_4c._1_3_,uVar13)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT31(local_4c._1_3_,uVar13)" (identifier "CONCAT31") (argument_list "(local_4c._1_3_,uVar13)" (( "(") (field_expression "local_4c._1_3_" (identifier "local_4c") (. ".") (field_identifier "_1_3_")) (, ",") (identifier "uVar13") () ")"))))) (; ";")) (expression_statement "ppuStack_60 = local_34;" (assignment_expression "ppuStack_60 = local_34" (identifier "ppuStack_60") (= "=") (identifier "local_34")) (; ";")) (expression_statement "cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);" (assignment_expression "cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0)" (identifier "cVar5") (= "=") (call_expression "FUN_0016e030(iVar11 + 0x59a8,*param_1,0)" (identifier "FUN_0016e030") (argument_list "(iVar11 + 0x59a8,*param_1,0)" (( "(") (binary_expression "iVar11 + 0x59a8" (identifier "iVar11") (+ "+") (number_literal "0x59a8")) (, ",") (pointer_expression "*param_1" (* "*") (identifier "param_1")) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar14 = (uint)local_4c & 0xff;" (assignment_expression "uVar14 = (uint)local_4c & 0xff" (identifier "uVar14") (= "=") (binary_expression "(uint)local_4c & 0xff" (cast_expression "(uint)local_4c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_4c")) (& "&") (number_literal "0xff"))) (; ";")) (if_statement "if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    \n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }" (if "if") (parenthesized_expression "((cVar5 != '\0') && ((char)local_34[0] == '\0'))" (( "(") (binary_expression "(cVar5 != '\0') && ((char)local_34[0] == '\0')" (parenthesized_expression "(cVar5 != '\0')" (( "(") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "((char)local_34[0] == '\0')" (( "(") (binary_expression "(char)local_34[0] == '\0'" (cast_expression "(char)local_34[0]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]"))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\nLAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }\n      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;\n      FUN_00178770();\n      puVar18 = local_34[0];\n      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;\n      uVar7 = gettext();\n      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;\n      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;\n                    \n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;\n      FUN_000654e0();\n      if (local_34[0] == local_2c) {\n        return 0;\n      }\n      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];\n      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;\n      FUN_001e6dc0();\n      return 0;\n    }" ({ "{") (labeled_statement "LAB_00178990:\n      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }" (statement_identifier "LAB_00178990") (: ":") (if_statement "if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {\n        return uVar14;\n      }" (if "if") (parenthesized_expression "((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0)" (( "(") (binary_expression "(*(byte *)((int)param_1 + 0x2b) & 0x10) == 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2b) & 0x10)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0x2b) & 0x10" (pointer_expression "*(byte *)((int)param_1 + 0x2b)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x2b)" (( "(") (binary_expression "(int)param_1 + 0x2b" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x2b")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return uVar14;\n      }" ({ "{") (return_statement "return uVar14;" (return "return") (identifier "uVar14") (; ";")) (} "}")))) (expression_statement "*(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;" (assignment_expression "*(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9" (pointer_expression "*(undefined4 *)((int)pppuVar15 + -4)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar15 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar15 + -4)" (( "(") (binary_expression "(int)pppuVar15 + -4" (cast_expression "(int)pppuVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar15")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (number_literal "0x1789a9")) (; ";")) (expression_statement "FUN_00178770();" (call_expression "FUN_00178770()" (identifier "FUN_00178770") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar18 = local_34[0];" (assignment_expression "puVar18 = local_34[0]" (identifier "puVar18") (= "=") (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "*(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;" (assignment_expression "*(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6" (pointer_expression "*(undefined ***)((int)pppuVar15 + -0x10)" (* "*") (cast_expression "(undefined ***)((int)pppuVar15 + -0x10)" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)pppuVar15 + -0x10)" (( "(") (binary_expression "(int)pppuVar15 + -0x10" (cast_expression "(int)pppuVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar15")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "local_44 + -0x3d5b6" (identifier "local_44") (+ "+") (number_literal "-0x3d5b6"))) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;" (assignment_expression "*(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0" (pointer_expression "*(undefined4 *)((int)pppuVar15 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar15 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar15 + -0x14)" (( "(") (binary_expression "(int)pppuVar15 + -0x14" (cast_expression "(int)pppuVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar15")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1789c0")) (; ";")) (expression_statement "uVar7 = gettext();" (assignment_expression "uVar7 = gettext()" (identifier "uVar7") (= "=") (call_expression "gettext()" (identifier "gettext") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;" (assignment_expression "*(undefined1 **)((int)pppuVar15 + -0xc) = puVar18" (pointer_expression "*(undefined1 **)((int)pppuVar15 + -0xc)" (* "*") (cast_expression "(undefined1 **)((int)pppuVar15 + -0xc)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar15 + -0xc)" (( "(") (binary_expression "(int)pppuVar15 + -0xc" (cast_expression "(int)pppuVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar15")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "puVar18")) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;" (assignment_expression "*(undefined4 *)((int)pppuVar15 + -0x10) = uVar7" (pointer_expression "*(undefined4 *)((int)pppuVar15 + -0x10)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar15 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar15 + -0x10)" (( "(") (binary_expression "(int)pppuVar15 + -0x10" (cast_expression "(int)pppuVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar15")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;" (assignment_expression "*(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9" (pointer_expression "*(undefined4 *)((int)pppuVar15 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar15 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar15 + -0x14)" (( "(") (binary_expression "(int)pppuVar15 + -0x14" (cast_expression "(int)pppuVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar15")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1789c9")) (; ";")) (expression_statement "FUN_000654e0();" (call_expression "FUN_000654e0()" (identifier "FUN_000654e0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (local_34[0] == local_2c) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(local_34[0] == local_2c)" (( "(") (binary_expression "local_34[0] == local_2c" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (== "==") (identifier "local_2c")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];" (assignment_expression "*(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0]" (pointer_expression "*(undefined1 **)((int)pppuVar15 + -0x10)" (* "*") (cast_expression "(undefined1 **)((int)pppuVar15 + -0x10)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar15 + -0x10)" (( "(") (binary_expression "(int)pppuVar15 + -0x10" (cast_expression "(int)pppuVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar15")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;" (assignment_expression "*(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df" (pointer_expression "*(undefined4 *)((int)pppuVar15 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar15 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar15 + -0x14)" (( "(") (binary_expression "(int)pppuVar15 + -0x14" (cast_expression "(int)pppuVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar15")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1789df")) (; ";")) (expression_statement "FUN_001e6dc0();" (call_expression "FUN_001e6dc0()" (identifier "FUN_001e6dc0") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pbVar6 = *local_48;" (assignment_expression "pbVar6 = *local_48" (identifier "pbVar6") (= "=") (pointer_expression "*local_48" (* "*") (identifier "local_48"))) (; ";")) (expression_statement "iVar11 = *(int *)(pbVar6 + 8);" (assignment_expression "iVar11 = *(int *)(pbVar6 + 8)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(pbVar6 + 8)" (* "*") (cast_expression "(int *)(pbVar6 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar6 + 8)" (( "(") (binary_expression "pbVar6 + 8" (identifier "pbVar6") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "puVar18 = auStack_5c;" (assignment_expression "puVar18 = auStack_5c" (identifier "puVar18") (= "=") (identifier "auStack_5c")) (; ";")) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" (identifier "ppuVar3") (= "=") (identifier "local_48")) (; ";")) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" (identifier "ppuVar4") (= "=") (identifier "local_44")) (; ";")) (if_statement "if (iVar11 == 0) goto LAB_00178b58;" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00178b58;" (goto "goto") (statement_identifier "LAB_00178b58") (; ";"))) (if_statement "if (*(int *)(iVar11 + 0x1344) != 0) {\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar11 + 0x1344) != 0)" (( "(") (binary_expression "*(int *)(iVar11 + 0x1344) != 0" (pointer_expression "*(int *)(iVar11 + 0x1344)" (* "*") (cast_expression "(int *)(iVar11 + 0x1344)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x1344)" (( "(") (binary_expression "iVar11 + 0x1344" (identifier "iVar11") (+ "+") (number_literal "0x1344")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      __s = (char *)*param_1;\n      local_34[0] = local_2c;\n      pcVar8 = (char *)0xffffffff;\n      uVar13 = local_4c._0_1_;\n      puVar18 = local_34[0];\n      if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }\n      local_4c = puVar18;\n      ppuStack_60 = (undefined1 **)0x0;\n      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);\n      FUN_00050e40(local_34,__s,pcVar8);\n      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);\n      pppuVar16 = &ppuStack_60;\n      pppuVar15 = &ppuStack_60;\n      uVar14 = (uint)local_50 & 0xff;\n      if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }\n      if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }\n    }" ({ "{") (expression_statement "__s = (char *)*param_1;" (assignment_expression "__s = (char *)*param_1" (identifier "__s") (= "=") (cast_expression "(char *)*param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "local_34[0] = local_2c;" (assignment_expression "local_34[0] = local_2c" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_2c")) (; ";")) (expression_statement "pcVar8 = (char *)0xffffffff;" (assignment_expression "pcVar8 = (char *)0xffffffff" (identifier "pcVar8") (= "=") (cast_expression "(char *)0xffffffff" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (expression_statement "uVar13 = local_4c._0_1_;" (assignment_expression "uVar13 = local_4c._0_1_" (identifier "uVar13") (= "=") (field_expression "local_4c._0_1_" (identifier "local_4c") (. ".") (field_identifier "_0_1_"))) (; ";")) (expression_statement "puVar18 = local_34[0];" (assignment_expression "puVar18 = local_34[0]" (identifier "puVar18") (= "=") (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]"))) (; ";")) (if_statement "if (__s != (char *)0x0) {\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }" (if "if") (parenthesized_expression "(__s != (char *)0x0)" (( "(") (binary_expression "__s != (char *)0x0" (identifier "__s") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        local_51 = local_4c._0_1_;\n        local_50 = __s;\n        local_4c = local_34[0];\n        sVar9 = strlen(__s);\n        pcVar8 = local_50 + sVar9;\n        __s = local_50;\n        uVar13 = local_51;\n        puVar18 = local_4c;\n      }" ({ "{") (expression_statement "local_51 = local_4c._0_1_;" (assignment_expression "local_51 = local_4c._0_1_" (identifier "local_51") (= "=") (field_expression "local_4c._0_1_" (identifier "local_4c") (. ".") (field_identifier "_0_1_"))) (; ";")) (expression_statement "local_50 = __s;" (assignment_expression "local_50 = __s" (identifier "local_50") (= "=") (identifier "__s")) (; ";")) (expression_statement "local_4c = local_34[0];" (assignment_expression "local_4c = local_34[0]" (identifier "local_4c") (= "=") (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "sVar9 = strlen(__s);" (assignment_expression "sVar9 = strlen(__s)" (identifier "sVar9") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (expression_statement "pcVar8 = local_50 + sVar9;" (assignment_expression "pcVar8 = local_50 + sVar9" (identifier "pcVar8") (= "=") (binary_expression "local_50 + sVar9" (identifier "local_50") (+ "+") (identifier "sVar9"))) (; ";")) (expression_statement "__s = local_50;" (assignment_expression "__s = local_50" (identifier "__s") (= "=") (identifier "local_50")) (; ";")) (expression_statement "uVar13 = local_51;" (assignment_expression "uVar13 = local_51" (identifier "uVar13") (= "=") (identifier "local_51")) (; ";")) (expression_statement "puVar18 = local_4c;" (assignment_expression "puVar18 = local_4c" (identifier "puVar18") (= "=") (identifier "local_4c")) (; ";")) (} "}"))) (expression_statement "local_4c = puVar18;" (assignment_expression "local_4c = puVar18" (identifier "local_4c") (= "=") (identifier "puVar18")) (; ";")) (expression_statement "ppuStack_60 = (undefined1 **)0x0;" (assignment_expression "ppuStack_60 = (undefined1 **)0x0" (identifier "ppuStack_60") (= "=") (cast_expression "(undefined1 **)0x0" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);" (assignment_expression "local_50 = (char *)CONCAT31(local_50._1_3_,uVar13)" (identifier "local_50") (= "=") (cast_expression "(char *)CONCAT31(local_50._1_3_,uVar13)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT31(local_50._1_3_,uVar13)" (identifier "CONCAT31") (argument_list "(local_50._1_3_,uVar13)" (( "(") (field_expression "local_50._1_3_" (identifier "local_50") (. ".") (field_identifier "_1_3_")) (, ",") (identifier "uVar13") () ")"))))) (; ";")) (expression_statement "FUN_00050e40(local_34,__s,pcVar8);" (call_expression "FUN_00050e40(local_34,__s,pcVar8)" (identifier "FUN_00050e40") (argument_list "(local_34,__s,pcVar8)" (( "(") (identifier "local_34") (, ",") (identifier "__s") (, ",") (identifier "pcVar8") () ")"))) (; ";")) (expression_statement "FUN_000ba920(local_40,iVar11 + 0x1338,local_34);" (call_expression "FUN_000ba920(local_40,iVar11 + 0x1338,local_34)" (identifier "FUN_000ba920") (argument_list "(local_40,iVar11 + 0x1338,local_34)" (( "(") (identifier "local_40") (, ",") (binary_expression "iVar11 + 0x1338" (identifier "iVar11") (+ "+") (number_literal "0x1338")) (, ",") (identifier "local_34") () ")"))) (; ";")) (expression_statement "pppuVar16 = &ppuStack_60;" (assignment_expression "pppuVar16 = &ppuStack_60" (identifier "pppuVar16") (= "=") (pointer_expression "&ppuStack_60" (& "&") (identifier "ppuStack_60"))) (; ";")) (expression_statement "pppuVar15 = &ppuStack_60;" (assignment_expression "pppuVar15 = &ppuStack_60" (identifier "pppuVar15") (= "=") (pointer_expression "&ppuStack_60" (& "&") (identifier "ppuStack_60"))) (; ";")) (expression_statement "uVar14 = (uint)local_50 & 0xff;" (assignment_expression "uVar14 = (uint)local_50 & 0xff" (identifier "uVar14") (= "=") (binary_expression "(uint)local_50 & 0xff" (cast_expression "(uint)local_50" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_50")) (& "&") (number_literal "0xff"))) (; ";")) (if_statement "if (local_40[0] != 0) {\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }" (if "if") (parenthesized_expression "(local_40[0] != 0)" (( "(") (binary_expression "local_40[0] != 0" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }\n        goto LAB_00178990;\n      }" ({ "{") (if_statement "if (local_34[0] != local_4c) {\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }" (if "if") (parenthesized_expression "(local_34[0] != local_4c)" (( "(") (binary_expression "local_34[0] != local_4c" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "local_4c")) () ")")) (compound_statement "{\n          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);\n          FUN_001e6dc0(local_34[0]);\n          pppuVar15 = &ppuStack_60;\n          uVar14 = (uint)local_48 & 0xff;\n        }" ({ "{") (expression_statement "local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);" (assignment_expression "local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_)" (identifier "local_48") (= "=") (cast_expression "(undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (call_expression "CONCAT31(local_48._1_3_,local_50._0_1_)" (identifier "CONCAT31") (argument_list "(local_48._1_3_,local_50._0_1_)" (( "(") (field_expression "local_48._1_3_" (identifier "local_48") (. ".") (field_identifier "_1_3_")) (, ",") (field_expression "local_50._0_1_" (identifier "local_50") (. ".") (field_identifier "_0_1_")) () ")"))))) (; ";")) (expression_statement "FUN_001e6dc0(local_34[0]);" (call_expression "FUN_001e6dc0(local_34[0])" (identifier "FUN_001e6dc0") (argument_list "(local_34[0])" (( "(") (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) () ")"))) (; ";")) (expression_statement "pppuVar15 = &ppuStack_60;" (assignment_expression "pppuVar15 = &ppuStack_60" (identifier "pppuVar15") (= "=") (pointer_expression "&ppuStack_60" (& "&") (identifier "ppuStack_60"))) (; ";")) (expression_statement "uVar14 = (uint)local_48 & 0xff;" (assignment_expression "uVar14 = (uint)local_48 & 0xff" (identifier "uVar14") (= "=") (binary_expression "(uint)local_48 & 0xff" (cast_expression "(uint)local_48" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_48")) (& "&") (number_literal "0xff"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00178990;" (goto "goto") (statement_identifier "LAB_00178990") (; ";")) (} "}"))) (if_statement "if (local_34[0] != local_4c) {\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }" (if "if") (parenthesized_expression "(local_34[0] != local_4c)" (( "(") (binary_expression "local_34[0] != local_4c" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "local_4c")) () ")")) (compound_statement "{\n        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);\n        FUN_001e6dc0(local_34[0]);\n        uVar14 = (uint)local_4c & 0xff;\n        bVar10 = *(byte *)((int)param_1 + 0x2b);\n        pppuVar17 = &ppuStack_60;\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        goto LAB_00178a1d;\n      }" ({ "{") (expression_statement "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);" (assignment_expression "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_)" (identifier "local_4c") (= "=") (cast_expression "(undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT31(local_4c._1_3_,local_50._0_1_)" (identifier "CONCAT31") (argument_list "(local_4c._1_3_,local_50._0_1_)" (( "(") (field_expression "local_4c._1_3_" (identifier "local_4c") (. ".") (field_identifier "_1_3_")) (, ",") (field_expression "local_50._0_1_" (identifier "local_50") (. ".") (field_identifier "_0_1_")) () ")"))))) (; ";")) (expression_statement "FUN_001e6dc0(local_34[0]);" (call_expression "FUN_001e6dc0(local_34[0])" (identifier "FUN_001e6dc0") (argument_list "(local_34[0])" (( "(") (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) () ")"))) (; ";")) (expression_statement "uVar14 = (uint)local_4c & 0xff;" (assignment_expression "uVar14 = (uint)local_4c & 0xff" (identifier "uVar14") (= "=") (binary_expression "(uint)local_4c & 0xff" (cast_expression "(uint)local_4c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_4c")) (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "bVar10 = *(byte *)((int)param_1 + 0x2b);" (assignment_expression "bVar10 = *(byte *)((int)param_1 + 0x2b)" (identifier "bVar10") (= "=") (pointer_expression "*(byte *)((int)param_1 + 0x2b)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x2b)" (( "(") (binary_expression "(int)param_1 + 0x2b" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x2b")) () ")"))))) (; ";")) (expression_statement "pppuVar17 = &ppuStack_60;" (assignment_expression "pppuVar17 = &ppuStack_60" (identifier "pppuVar17") (= "=") (pointer_expression "&ppuStack_60" (& "&") (identifier "ppuStack_60"))) (; ";")) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" (identifier "ppuVar3") (= "=") (identifier "local_48")) (; ";")) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" (identifier "ppuVar4") (= "=") (identifier "local_44")) (; ";")) (goto_statement "goto LAB_00178a1d;" (goto "goto") (statement_identifier "LAB_00178a1d") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00178a19:\n    bVar10 = *(byte *)((int)param_1 + 0x2b);" (statement_identifier "LAB_00178a19") (: ":") (expression_statement "bVar10 = *(byte *)((int)param_1 + 0x2b);" (assignment_expression "bVar10 = *(byte *)((int)param_1 + 0x2b)" (identifier "bVar10") (= "=") (pointer_expression "*(byte *)((int)param_1 + 0x2b)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x2b)" (( "(") (binary_expression "(int)param_1 + 0x2b" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x2b")) () ")"))))) (; ";"))) (expression_statement "pppuVar17 = pppuVar16;" (assignment_expression "pppuVar17 = pppuVar16" (identifier "pppuVar17") (= "=") (identifier "pppuVar16")) (; ";")) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" (identifier "ppuVar3") (= "=") (identifier "local_48")) (; ";")) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" (identifier "ppuVar4") (= "=") (identifier "local_44")) (; ";")) (} "}")) (else_clause "else {\n    iVar11 = param_1[2];\n    ppuVar4 = local_44;\n    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }" (else "else") (compound_statement "{\n    iVar11 = param_1[2];\n    ppuVar4 = local_44;\n    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }\n  }" ({ "{") (expression_statement "iVar11 = param_1[2];" (assignment_expression "iVar11 = param_1[2]" (identifier "iVar11") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" (identifier "ppuVar4") (= "=") (identifier "local_44")) (; ";")) (if_statement "if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }" (if "if") (parenthesized_expression "((*(byte *)(iVar11 + 0x2c) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(iVar11 + 0x2c) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x2c) & 1)" (( "(") (binary_expression "*(byte *)(iVar11 + 0x2c) & 1" (pointer_expression "*(byte *)(iVar11 + 0x2c)" (* "*") (cast_expression "(byte *)(iVar11 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x2c)" (( "(") (binary_expression "iVar11 + 0x2c" (identifier "iVar11") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar14 = param_1[3];\n      ppuVar4 = &__DT_PLTGOT;\n      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }\n      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }\n      ppuVar3 = local_48;\n      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);\n      local_48 = (undefined1 **)&DAT_0038f378;\n      local_44 = &__DT_PLTGOT;\n      cVar5 = FUN_00177880(param_2,iVar11,uVar14);\n      pppuVar16 = (undefined1 ***)auStack_5c;\n      if (cVar5 == '\0') {\n        return 0;\n      }\n      uVar14 = (uint)local_4c & 0xff;\n      uVar13 = SUB41(local_4c,0);\n      ppuVar3 = local_48;\n      ppuVar4 = local_44;\n      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;\n      goto LAB_00178a19;\n    }" ({ "{") (expression_statement "uVar14 = param_1[3];" (assignment_expression "uVar14 = param_1[3]" (identifier "uVar14") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "ppuVar4 = &__DT_PLTGOT;" (assignment_expression "ppuVar4 = &__DT_PLTGOT" (identifier "ppuVar4") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (if_statement "if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }" (if "if") (parenthesized_expression "(((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0))" (( "(") (binary_expression "((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)" (parenthesized_expression "((bVar10 & 0x20) == 0)" (( "(") (binary_expression "(bVar10 & 0x20) == 0" (parenthesized_expression "(bVar10 & 0x20)" (( "(") (binary_expression "bVar10 & 0x20" (identifier "bVar10") (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(ppuVar4 = local_44, uVar14 == 0)" (( "(") (comma_expression "ppuVar4 = local_44, uVar14 == 0" (assignment_expression "ppuVar4 = local_44" (identifier "ppuVar4") (= "=") (identifier "local_44")) (, ",") (binary_expression "uVar14 == 0" (identifier "uVar14") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\nLAB_00178b48:\n        local_44 = ppuVar4;\n        local_48 = ppuVar3;\n        puVar18 = auStack_5c;\n        pbVar6 = *local_48;\n        iVar11 = *(int *)(pbVar6 + 8);\n        ppuVar3 = local_48;\n        ppuVar4 = local_44;\n        if (iVar11 == 0) goto LAB_00178b58;\n        goto LAB_00178962;\n      }" ({ "{") (labeled_statement "LAB_00178b48:\n        local_44 = ppuVar4;" (statement_identifier "LAB_00178b48") (: ":") (expression_statement "local_44 = ppuVar4;" (assignment_expression "local_44 = ppuVar4" (identifier "local_44") (= "=") (identifier "ppuVar4")) (; ";"))) (expression_statement "local_48 = ppuVar3;" (assignment_expression "local_48 = ppuVar3" (identifier "local_48") (= "=") (identifier "ppuVar3")) (; ";")) (expression_statement "puVar18 = auStack_5c;" (assignment_expression "puVar18 = auStack_5c" (identifier "puVar18") (= "=") (identifier "auStack_5c")) (; ";")) (expression_statement "pbVar6 = *local_48;" (assignment_expression "pbVar6 = *local_48" (identifier "pbVar6") (= "=") (pointer_expression "*local_48" (* "*") (identifier "local_48"))) (; ";")) (expression_statement "iVar11 = *(int *)(pbVar6 + 8);" (assignment_expression "iVar11 = *(int *)(pbVar6 + 8)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(pbVar6 + 8)" (* "*") (cast_expression "(int *)(pbVar6 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar6 + 8)" (( "(") (binary_expression "pbVar6 + 8" (identifier "pbVar6") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" (identifier "ppuVar3") (= "=") (identifier "local_48")) (; ";")) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" (identifier "ppuVar4") (= "=") (identifier "local_44")) (; ";")) (if_statement "if (iVar11 == 0) goto LAB_00178b58;" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00178b58;" (goto "goto") (statement_identifier "LAB_00178b58") (; ";"))) (goto_statement "goto LAB_00178962;" (goto "goto") (statement_identifier "LAB_00178962") (; ";")) (} "}"))) (if_statement "if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }" (if "if") (parenthesized_expression "((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14)" (( "(") (binary_expression "(uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14" (call_expression "(uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2)" (( "(") (binary_expression "*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2" (binary_expression "*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38)" (pointer_expression "*(int *)(iVar11 + 0x3c)" (* "*") (cast_expression "(int *)(iVar11 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x3c)" (( "(") (binary_expression "iVar11 + 0x3c" (identifier "iVar11") (+ "+") (number_literal "0x3c")) () ")")))) (- "-") (pointer_expression "*(int *)(iVar11 + 0x38)" (* "*") (cast_expression "(int *)(iVar11 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x38)" (( "(") (binary_expression "iVar11 + 0x38" (identifier "iVar11") (+ "+") (number_literal "0x38")) () ")"))))) (>> ">>") (number_literal "2")) () ")"))) (<= "<=") (identifier "uVar14")) () ")")) (compound_statement "{\n        ppuStack_60 = (undefined1 **)&DAT_0038f378;\n        local_48 = (undefined1 **)&DAT_0038f378;\n        local_44 = &__DT_PLTGOT;\n                    \n        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");\n      }" ({ "{") (expression_statement "ppuStack_60 = (undefined1 **)&DAT_0038f378;" (assignment_expression "ppuStack_60 = (undefined1 **)&DAT_0038f378" (identifier "ppuStack_60") (= "=") (cast_expression "(undefined1 **)&DAT_0038f378" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "&DAT_0038f378" (& "&") (identifier "DAT_0038f378")))) (; ";")) (expression_statement "local_48 = (undefined1 **)&DAT_0038f378;" (assignment_expression "local_48 = (undefined1 **)&DAT_0038f378" (identifier "local_48") (= "=") (cast_expression "(undefined1 **)&DAT_0038f378" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "&DAT_0038f378" (& "&") (identifier "DAT_0038f378")))) (; ";")) (expression_statement "local_44 = &__DT_PLTGOT;" (assignment_expression "local_44 = &__DT_PLTGOT" (identifier "local_44") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");" (call_expression "FUN_00069d00("../../gold/object.h",0x50b,"is_section_included")" (identifier "FUN_00069d00") (argument_list "("../../gold/object.h",0x50b,"is_section_included")" (( "(") (string_literal ""../../gold/object.h"" (" """) (string_content "../../gold/object.h") (" """)) (, ",") (number_literal "0x50b") (, ",") (string_literal ""is_section_included"" (" """) (string_content "is_section_included") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" (identifier "ppuVar3") (= "=") (identifier "local_48")) (; ";")) (if_statement "if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;" (if "if") (parenthesized_expression "(*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0)" (( "(") (binary_expression "*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0" (pointer_expression "*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4)" (* "*") (cast_expression "(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar11 + 0x38) + uVar14 * 4)" (( "(") (binary_expression "*(int *)(iVar11 + 0x38) + uVar14 * 4" (pointer_expression "*(int *)(iVar11 + 0x38)" (* "*") (cast_expression "(int *)(iVar11 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x38)" (( "(") (binary_expression "iVar11 + 0x38" (identifier "iVar11") (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (binary_expression "uVar14 * 4" (identifier "uVar14") (* "*") (number_literal "4"))) () ")")))) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00178b48;" (goto "goto") (statement_identifier "LAB_00178b48") (; ";"))) (expression_statement "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);" (assignment_expression "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13)" (identifier "local_4c") (= "=") (cast_expression "(undefined1 *)CONCAT31(local_4c._1_3_,uVar13)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT31(local_4c._1_3_,uVar13)" (identifier "CONCAT31") (argument_list "(local_4c._1_3_,uVar13)" (( "(") (field_expression "local_4c._1_3_" (identifier "local_4c") (. ".") (field_identifier "_1_3_")) (, ",") (identifier "uVar13") () ")"))))) (; ";")) (expression_statement "local_48 = (undefined1 **)&DAT_0038f378;" (assignment_expression "local_48 = (undefined1 **)&DAT_0038f378" (identifier "local_48") (= "=") (cast_expression "(undefined1 **)&DAT_0038f378" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "&DAT_0038f378" (& "&") (identifier "DAT_0038f378")))) (; ";")) (expression_statement "local_44 = &__DT_PLTGOT;" (assignment_expression "local_44 = &__DT_PLTGOT" (identifier "local_44") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "cVar5 = FUN_00177880(param_2,iVar11,uVar14);" (assignment_expression "cVar5 = FUN_00177880(param_2,iVar11,uVar14)" (identifier "cVar5") (= "=") (call_expression "FUN_00177880(param_2,iVar11,uVar14)" (identifier "FUN_00177880") (argument_list "(param_2,iVar11,uVar14)" (( "(") (identifier "param_2") (, ",") (identifier "iVar11") (, ",") (identifier "uVar14") () ")")))) (; ";")) (expression_statement "pppuVar16 = (undefined1 ***)auStack_5c;" (assignment_expression "pppuVar16 = (undefined1 ***)auStack_5c" (identifier "pppuVar16") (= "=") (cast_expression "(undefined1 ***)auStack_5c" (( "(") (type_descriptor "undefined1 ***" (type_identifier "undefined1") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "auStack_5c"))) (; ";")) (if_statement "if (cVar5 == '\0') {\n        return 0;\n      }" (if "if") (parenthesized_expression "(cVar5 == '\0')" (( "(") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar14 = (uint)local_4c & 0xff;" (assignment_expression "uVar14 = (uint)local_4c & 0xff" (identifier "uVar14") (= "=") (binary_expression "(uint)local_4c & 0xff" (cast_expression "(uint)local_4c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_4c")) (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "uVar13 = SUB41(local_4c,0);" (assignment_expression "uVar13 = SUB41(local_4c,0)" (identifier "uVar13") (= "=") (call_expression "SUB41(local_4c,0)" (identifier "SUB41") (argument_list "(local_4c,0)" (( "(") (identifier "local_4c") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" (identifier "ppuVar3") (= "=") (identifier "local_48")) (; ";")) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" (identifier "ppuVar4") (= "=") (identifier "local_44")) (; ";")) (if_statement "if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))\n      goto LAB_00178b48;" (if "if") (parenthesized_expression "(((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))" (( "(") (binary_expression "((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0)" (parenthesized_expression "((*(byte *)((int)param_1 + 0x2a) & 7) != 0)" (( "(") (binary_expression "(*(byte *)((int)param_1 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_1 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x2a)" (( "(") (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(param_1[2] + 0x2c) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(param_1[2] + 0x2c) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1[2] + 0x2c) & 1)" (( "(") (binary_expression "*(byte *)(param_1[2] + 0x2c) & 1" (pointer_expression "*(byte *)(param_1[2] + 0x2c)" (* "*") (cast_expression "(byte *)(param_1[2] + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[2] + 0x2c)" (( "(") (binary_expression "param_1[2] + 0x2c" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00178b48;" (goto "goto") (statement_identifier "LAB_00178b48") (; ";"))) (goto_statement "goto LAB_00178a19;" (goto "goto") (statement_identifier "LAB_00178a19") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_00178a1d:\n  local_44 = ppuVar4;" (statement_identifier "LAB_00178a1d") (: ":") (expression_statement "local_44 = ppuVar4;" (assignment_expression "local_44 = ppuVar4" (identifier "local_44") (= "=") (identifier "ppuVar4")) (; ";"))) (expression_statement "local_48 = ppuVar3;" (assignment_expression "local_48 = ppuVar3" (identifier "local_48") (= "=") (identifier "ppuVar3")) (; ";")) (expression_statement "ppuVar2 = local_44;" (assignment_expression "ppuVar2 = local_44" (identifier "ppuVar2") (= "=") (identifier "local_44")) (; ";")) (if_statement "if ((bVar10 & 0x10) != 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "((bVar10 & 0x10) != 0)" (( "(") (binary_expression "(bVar10 & 0x10) != 0" (parenthesized_expression "(bVar10 & 0x10)" (( "(") (binary_expression "bVar10 & 0x10" (identifier "bVar10") (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pbVar6 = *(byte **)(*local_48 + 8);" (assignment_expression "pbVar6 = *(byte **)(*local_48 + 8)" (identifier "pbVar6") (= "=") (pointer_expression "*(byte **)(*local_48 + 8)" (* "*") (cast_expression "(byte **)(*local_48 + 8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_48 + 8)" (( "(") (binary_expression "*local_48 + 8" (pointer_expression "*local_48" (* "*") (identifier "local_48")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "puVar18 = (undefined1 *)pppuVar17;" (assignment_expression "puVar18 = (undefined1 *)pppuVar17" (identifier "puVar18") (= "=") (cast_expression "(undefined1 *)pppuVar17" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pppuVar17"))) (; ";")) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" (identifier "ppuVar3") (= "=") (identifier "local_48")) (; ";")) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" (identifier "ppuVar4") (= "=") (identifier "local_44")) (; ";")) (if_statement "if (pbVar6 == (byte *)0x0) goto LAB_00178b58;" (if "if") (parenthesized_expression "(pbVar6 == (byte *)0x0)" (( "(") (binary_expression "pbVar6 == (byte *)0x0" (identifier "pbVar6") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00178b58;" (goto "goto") (statement_identifier "LAB_00178b58") (; ";"))) (if_statement "if (pbVar6[0xe89] == 0) {\nLAB_00178c1e:\n    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;\n    if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }\n  }\n  else {\n    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }\n    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;\nLAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;\n  }" (if "if") (parenthesized_expression "(pbVar6[0xe89] == 0)" (( "(") (binary_expression "pbVar6[0xe89] == 0" (subscript_expression "pbVar6[0xe89]" (identifier "pbVar6") ([ "[") (number_literal "0xe89") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00178c1e:\n    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;\n    if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }\n  }" ({ "{") (labeled_statement "LAB_00178c1e:\n    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;" (statement_identifier "LAB_00178c1e") (: ":") (if_statement "if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;" (if "if") (parenthesized_expression "((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0))" (( "(") (binary_expression "(pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)" (parenthesized_expression "(pbVar6[0xf05] == 0)" (( "(") (binary_expression "pbVar6[0xf05] == 0" (subscript_expression "pbVar6[0xf05]" (identifier "pbVar6") ([ "[") (number_literal "0xf05") (] "]")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(pbVar6[0xf81] == 0)" (( "(") (binary_expression "pbVar6[0xf81] == 0" (subscript_expression "pbVar6[0xf81]" (identifier "pbVar6") ([ "[") (number_literal "0xf81") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00178a80;" (goto "goto") (statement_identifier "LAB_00178a80") (; ";")))) (if_statement "if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }" (if "if") (parenthesized_expression "((*(byte *)((int)param_1 + 0x2a) & 7) == 0)" (( "(") (binary_expression "(*(byte *)((int)param_1 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_1 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x2a)" (( "(") (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar11 = param_1[2];\n      goto LAB_00178a70;\n    }" ({ "{") (expression_statement "iVar11 = param_1[2];" (assignment_expression "iVar11 = param_1[2]" (identifier "iVar11") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (goto_statement "goto LAB_00178a70;" (goto "goto") (statement_identifier "LAB_00178a70") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }\n    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;\nLAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;\n  }" (else "else") (compound_statement "{\n    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }\n    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;\nLAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;\n  }" ({ "{") (if_statement "if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }" (if "if") (parenthesized_expression "(((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0))" (( "(") (binary_expression "((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||\n       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)" (parenthesized_expression "((*(byte *)((int)param_1 + 0x2a) & 7) != 0)" (( "(") (binary_expression "(*(byte *)((int)param_1 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_1 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x2a)" (( "(") (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)" (( "(") (comma_expression "iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0" (assignment_expression "iVar11 = param_1[2]" (identifier "iVar11") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (, ",") (binary_expression "(*(byte *)(iVar11 + 0x2c) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x2c) & 1)" (( "(") (binary_expression "*(byte *)(iVar11 + 0x2c) & 1" (pointer_expression "*(byte *)(iVar11 + 0x2c)" (* "*") (cast_expression "(byte *)(iVar11 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x2c)" (( "(") (binary_expression "iVar11 + 0x2c" (identifier "iVar11") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));\n      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }\n      goto LAB_00178c1e;\n    }" ({ "{") (expression_statement "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));" (assignment_expression "local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10))" (identifier "local_4c") (= "=") (cast_expression "(undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10))" (identifier "CONCAT31") (argument_list "(local_4c._1_3_,*(byte *)(param_1 + 10))" (( "(") (field_expression "local_4c._1_3_" (identifier "local_4c") (. ".") (field_identifier "_1_3_")) (, ",") (pointer_expression "*(byte *)(param_1 + 10)" (* "*") (cast_expression "(byte *)(param_1 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(param_1 + 10) & 0xf) == 1) {\n        return uVar14;\n      }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 10) & 0xf) == 1)" (( "(") (binary_expression "(*(byte *)(param_1 + 10) & 0xf) == 1" (parenthesized_expression "(*(byte *)(param_1 + 10) & 0xf)" (( "(") (binary_expression "*(byte *)(param_1 + 10) & 0xf" (pointer_expression "*(byte *)(param_1 + 10)" (* "*") (cast_expression "(byte *)(param_1 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) (& "&") (number_literal "0xf")) () ")")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        return uVar14;\n      }" ({ "{") (return_statement "return uVar14;" (return "return") (identifier "uVar14") (; ";")) (} "}"))) (goto_statement "goto LAB_00178c1e;" (goto "goto") (statement_identifier "LAB_00178c1e") (; ";")) (} "}"))) (if_statement "if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;" (if "if") (parenthesized_expression "((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0))" (( "(") (binary_expression "(pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)" (parenthesized_expression "(pbVar6[0xf05] != 0)" (( "(") (binary_expression "pbVar6[0xf05] != 0" (subscript_expression "pbVar6[0xf05]" (identifier "pbVar6") ([ "[") (number_literal "0xf05") (] "]")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(pbVar6[0xf81] == 0)" (( "(") (binary_expression "pbVar6[0xf81] == 0" (subscript_expression "pbVar6[0xf81]" (identifier "pbVar6") ([ "[") (number_literal "0xf81") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00178a80;" (goto "goto") (statement_identifier "LAB_00178a80") (; ";"))) (labeled_statement "LAB_00178a70:\n    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;" (statement_identifier "LAB_00178a70") (: ":") (if_statement "if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;" (if "if") (parenthesized_expression "((*(byte *)(iVar11 + 0x2c) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(iVar11 + 0x2c) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x2c) & 1)" (( "(") (binary_expression "*(byte *)(iVar11 + 0x2c) & 1" (pointer_expression "*(byte *)(iVar11 + 0x2c)" (* "*") (cast_expression "(byte *)(iVar11 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x2c)" (( "(") (binary_expression "iVar11 + 0x2c" (identifier "iVar11") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00178a80;" (goto "goto") (statement_identifier "LAB_00178a80") (; ";")))) (} "}")))) (expression_statement "*(undefined4 *)((int)pppuVar17 + -0xc) = 3;" (assignment_expression "*(undefined4 *)((int)pppuVar17 + -0xc) = 3" (pointer_expression "*(undefined4 *)((int)pppuVar17 + -0xc)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar17 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar17 + -0xc)" (( "(") (binary_expression "(int)pppuVar17 + -0xc" (cast_expression "(int)pppuVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar17")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "3")) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar17 + -0x10) = *param_1;" (assignment_expression "*(undefined4 *)((int)pppuVar17 + -0x10) = *param_1" (pointer_expression "*(undefined4 *)((int)pppuVar17 + -0x10)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar17 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar17 + -0x10)" (( "(") (binary_expression "(int)pppuVar17 + -0x10" (cast_expression "(int)pppuVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar17")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar17 + -0x14) = 0x178c55;" (assignment_expression "*(undefined4 *)((int)pppuVar17 + -0x14) = 0x178c55" (pointer_expression "*(undefined4 *)((int)pppuVar17 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar17 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar17 + -0x14)" (( "(") (binary_expression "(int)pppuVar17 + -0x14" (cast_expression "(int)pppuVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar17")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x178c55")) (; ";")) (expression_statement "pbVar6 = (byte *)FUN_001cef00();" (assignment_expression "pbVar6 = (byte *)FUN_001cef00()" (identifier "pbVar6") (= "=") (cast_expression "(byte *)FUN_001cef00()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001cef00()" (identifier "FUN_001cef00") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (pbVar6 != (byte *)0x0) {\n    iVar11 = *(int *)(*local_48 + 8);\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    cVar5 = *(char *)(iVar11 + 0xf05);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    cVar5 = *(char *)(iVar11 + 0xf81);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n    *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;\n    free(*(void **)((int)pppuVar17 + -0x10));\n  }" (if "if") (parenthesized_expression "(pbVar6 != (byte *)0x0)" (( "(") (binary_expression "pbVar6 != (byte *)0x0" (identifier "pbVar6") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar11 = *(int *)(*local_48 + 8);\n    ppuVar3 = local_48;\n    ppuVar4 = local_44;\n    if (iVar11 == 0) goto LAB_00178b58;\n    cVar5 = *(char *)(iVar11 + 0xf05);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    cVar5 = *(char *)(iVar11 + 0xf81);\n    bVar21 = false;\n    bVar23 = cVar5 == '\0';\n    if (!bVar23) {\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }\n    *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n    *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;\n    free(*(void **)((int)pppuVar17 + -0x10));\n  }" ({ "{") (expression_statement "iVar11 = *(int *)(*local_48 + 8);" (assignment_expression "iVar11 = *(int *)(*local_48 + 8)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(*local_48 + 8)" (* "*") (cast_expression "(int *)(*local_48 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*local_48 + 8)" (( "(") (binary_expression "*local_48 + 8" (pointer_expression "*local_48" (* "*") (identifier "local_48")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" (identifier "ppuVar3") (= "=") (identifier "local_48")) (; ";")) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" (identifier "ppuVar4") (= "=") (identifier "local_44")) (; ";")) (if_statement "if (iVar11 == 0) goto LAB_00178b58;" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00178b58;" (goto "goto") (statement_identifier "LAB_00178b58") (; ";"))) (expression_statement "cVar5 = *(char *)(iVar11 + 0xf05);" (assignment_expression "cVar5 = *(char *)(iVar11 + 0xf05)" (identifier "cVar5") (= "=") (pointer_expression "*(char *)(iVar11 + 0xf05)" (* "*") (cast_expression "(char *)(iVar11 + 0xf05)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0xf05)" (( "(") (binary_expression "iVar11 + 0xf05" (identifier "iVar11") (+ "+") (number_literal "0xf05")) () ")"))))) (; ";")) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" (identifier "bVar21") (= "=") (false "false")) (; ";")) (expression_statement "bVar23 = cVar5 == '\0';" (assignment_expression "bVar23 = cVar5 == '\0'" (identifier "bVar23") (= "=") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (if_statement "if (!bVar23) {\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }" (if "if") (parenthesized_expression "(!bVar23)" (( "(") (unary_expression "!bVar23" (! "!") (identifier "bVar23")) () ")")) (compound_statement "{\n      iVar12 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      local_44 = ppuVar2;\n      if (bVar21) goto LAB_00178d5c;\n      iVar12 = 0xf;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);\n      do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }" ({ "{") (expression_statement "iVar12 = 0xc;" (assignment_expression "iVar12 = 0xc" (identifier "iVar12") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar19 = pbVar6;" (assignment_expression "pbVar19 = pbVar6" (identifier "pbVar19") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);" (assignment_expression "pbVar20 = (byte *)((int)ppuVar2 + -0xf5762)" (identifier "pbVar20") (= "=") (cast_expression "(byte *)((int)ppuVar2 + -0xf5762)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar2 + -0xf5762)" (( "(") (binary_expression "(int)ppuVar2 + -0xf5762" (cast_expression "(int)ppuVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar2")) (+ "+") (number_literal "-0xf5762")) () ")")))) (; ";")) (do_statement "do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);" (do "do") (compound_statement "{\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar12 == 0) break;" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" (identifier "iVar12") (= "=") (binary_expression "iVar12 + -1" (identifier "iVar12") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar21 = *pbVar19 < *pbVar20;" (assignment_expression "bVar21 = *pbVar19 < *pbVar20" (identifier "bVar21") (= "=") (binary_expression "*pbVar19 < *pbVar20" (pointer_expression "*pbVar19" (* "*") (identifier "pbVar19")) (< "<") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20")))) (; ";")) (expression_statement "bVar23 = *pbVar19 == *pbVar20;" (assignment_expression "bVar23 = *pbVar19 == *pbVar20" (identifier "bVar23") (= "=") (binary_expression "*pbVar19 == *pbVar20" (pointer_expression "*pbVar19" (* "*") (identifier "pbVar19")) (== "==") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20")))) (; ";")) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" (identifier "pbVar19") (= "=") (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" (identifier "pbVar19") (+ "+") (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar24")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1" (identifier "pbVar20") (= "=") (binary_expression "pbVar20 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar20 + (uint)bVar24 * -2" (identifier "pbVar20") (+ "+") (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar24")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar23)" (( "(") (identifier "bVar23") () ")")) (; ";")) (expression_statement "bVar22 = false;" (assignment_expression "bVar22 = false" (identifier "bVar22") (= "=") (false "false")) (; ";")) (expression_statement "bVar21 = (!bVar21 && !bVar23) == bVar21;" (assignment_expression "bVar21 = (!bVar21 && !bVar23) == bVar21" (identifier "bVar21") (= "=") (binary_expression "(!bVar21 && !bVar23) == bVar21" (parenthesized_expression "(!bVar21 && !bVar23)" (( "(") (binary_expression "!bVar21 && !bVar23" (unary_expression "!bVar21" (! "!") (identifier "bVar21")) (&& "&&") (unary_expression "!bVar23" (! "!") (identifier "bVar23"))) () ")")) (== "==") (identifier "bVar21"))) (; ";")) (expression_statement "local_44 = ppuVar2;" (assignment_expression "local_44 = ppuVar2" (identifier "local_44") (= "=") (identifier "ppuVar2")) (; ";")) (if_statement "if (bVar21) goto LAB_00178d5c;" (if "if") (parenthesized_expression "(bVar21)" (( "(") (identifier "bVar21") () ")")) (goto_statement "goto LAB_00178d5c;" (goto "goto") (statement_identifier "LAB_00178d5c") (; ";"))) (expression_statement "iVar12 = 0xf;" (assignment_expression "iVar12 = 0xf" (identifier "iVar12") (= "=") (number_literal "0xf")) (; ";")) (expression_statement "pbVar19 = pbVar6;" (assignment_expression "pbVar19 = pbVar6" (identifier "pbVar19") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);" (assignment_expression "pbVar20 = (byte *)((int)ppuVar2 + -0xf5755)" (identifier "pbVar20") (= "=") (cast_expression "(byte *)((int)ppuVar2 + -0xf5755)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar2 + -0xf5755)" (( "(") (binary_expression "(int)ppuVar2 + -0xf5755" (cast_expression "(int)ppuVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar2")) (+ "+") (number_literal "-0xf5755")) () ")")))) (; ";")) (do_statement "do {\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);" (do "do") (compound_statement "{\n        if (iVar12 == 0) break;\n        iVar12 = iVar12 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar12 == 0) break;" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" (identifier "iVar12") (= "=") (binary_expression "iVar12 + -1" (identifier "iVar12") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar22 = *pbVar19 < *pbVar20;" (assignment_expression "bVar22 = *pbVar19 < *pbVar20" (identifier "bVar22") (= "=") (binary_expression "*pbVar19 < *pbVar20" (pointer_expression "*pbVar19" (* "*") (identifier "pbVar19")) (< "<") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20")))) (; ";")) (expression_statement "bVar21 = *pbVar19 == *pbVar20;" (assignment_expression "bVar21 = *pbVar19 == *pbVar20" (identifier "bVar21") (= "=") (binary_expression "*pbVar19 == *pbVar20" (pointer_expression "*pbVar19" (* "*") (identifier "pbVar19")) (== "==") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20")))) (; ";")) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" (identifier "pbVar19") (= "=") (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" (identifier "pbVar19") (+ "+") (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar24")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1" (identifier "pbVar20") (= "=") (binary_expression "pbVar20 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar20 + (uint)bVar24 * -2" (identifier "pbVar20") (+ "+") (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar24")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar21)" (( "(") (identifier "bVar21") () ")")) (; ";")) (if_statement "if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;" (if "if") (parenthesized_expression "((!bVar22 && !bVar21) == bVar22)" (( "(") (binary_expression "(!bVar22 && !bVar21) == bVar22" (parenthesized_expression "(!bVar22 && !bVar21)" (( "(") (binary_expression "!bVar22 && !bVar21" (unary_expression "!bVar22" (! "!") (identifier "bVar22")) (&& "&&") (unary_expression "!bVar21" (! "!") (identifier "bVar21"))) () ")")) (== "==") (identifier "bVar22")) () ")")) (goto_statement "goto LAB_00178d5c;" (goto "goto") (statement_identifier "LAB_00178d5c") (; ";"))) (} "}"))) (expression_statement "cVar5 = *(char *)(iVar11 + 0xf81);" (assignment_expression "cVar5 = *(char *)(iVar11 + 0xf81)" (identifier "cVar5") (= "=") (pointer_expression "*(char *)(iVar11 + 0xf81)" (* "*") (cast_expression "(char *)(iVar11 + 0xf81)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0xf81)" (( "(") (binary_expression "iVar11 + 0xf81" (identifier "iVar11") (+ "+") (number_literal "0xf81")) () ")"))))) (; ";")) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" (identifier "bVar21") (= "=") (false "false")) (; ";")) (expression_statement "bVar23 = cVar5 == '\0';" (assignment_expression "bVar23 = cVar5 == '\0'" (identifier "bVar23") (= "=") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (if_statement "if (!bVar23) {\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }" (if "if") (parenthesized_expression "(!bVar23)" (( "(") (unary_expression "!bVar23" (! "!") (identifier "bVar23")) () ")")) (compound_statement "{\n      iVar11 = 0x11;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5745);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar22 = false;\n      bVar21 = (!bVar21 && !bVar23) == bVar21;\n      if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }\n      iVar11 = 0xc;\n      pbVar19 = pbVar6;\n      pbVar20 = (byte *)((int)local_44 + -0xf5733);\n      do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;\n    }" ({ "{") (expression_statement "iVar11 = 0x11;" (assignment_expression "iVar11 = 0x11" (identifier "iVar11") (= "=") (number_literal "0x11")) (; ";")) (expression_statement "pbVar19 = pbVar6;" (assignment_expression "pbVar19 = pbVar6" (identifier "pbVar19") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "pbVar20 = (byte *)((int)local_44 + -0xf5745);" (assignment_expression "pbVar20 = (byte *)((int)local_44 + -0xf5745)" (identifier "pbVar20") (= "=") (cast_expression "(byte *)((int)local_44 + -0xf5745)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_44 + -0xf5745)" (( "(") (binary_expression "(int)local_44 + -0xf5745" (cast_expression "(int)local_44" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_44")) (+ "+") (number_literal "-0xf5745")) () ")")))) (; ";")) (do_statement "do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);" (do "do") (compound_statement "{\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar21 = *pbVar19 < *pbVar20;\n        bVar23 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar11 == 0) break;" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar21 = *pbVar19 < *pbVar20;" (assignment_expression "bVar21 = *pbVar19 < *pbVar20" (identifier "bVar21") (= "=") (binary_expression "*pbVar19 < *pbVar20" (pointer_expression "*pbVar19" (* "*") (identifier "pbVar19")) (< "<") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20")))) (; ";")) (expression_statement "bVar23 = *pbVar19 == *pbVar20;" (assignment_expression "bVar23 = *pbVar19 == *pbVar20" (identifier "bVar23") (= "=") (binary_expression "*pbVar19 == *pbVar20" (pointer_expression "*pbVar19" (* "*") (identifier "pbVar19")) (== "==") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20")))) (; ";")) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" (identifier "pbVar19") (= "=") (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" (identifier "pbVar19") (+ "+") (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar24")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1" (identifier "pbVar20") (= "=") (binary_expression "pbVar20 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar20 + (uint)bVar24 * -2" (identifier "pbVar20") (+ "+") (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar24")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar23)" (( "(") (identifier "bVar23") () ")")) (; ";")) (expression_statement "bVar22 = false;" (assignment_expression "bVar22 = false" (identifier "bVar22") (= "=") (false "false")) (; ";")) (expression_statement "bVar21 = (!bVar21 && !bVar23) == bVar21;" (assignment_expression "bVar21 = (!bVar21 && !bVar23) == bVar21" (identifier "bVar21") (= "=") (binary_expression "(!bVar21 && !bVar23) == bVar21" (parenthesized_expression "(!bVar21 && !bVar23)" (( "(") (binary_expression "!bVar21 && !bVar23" (unary_expression "!bVar21" (! "!") (identifier "bVar21")) (&& "&&") (unary_expression "!bVar23" (! "!") (identifier "bVar23"))) () ")")) (== "==") (identifier "bVar21"))) (; ";")) (if_statement "if (bVar21) {\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }" (if "if") (parenthesized_expression "(bVar21)" (( "(") (identifier "bVar21") () ")")) (compound_statement "{\nLAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);\n        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;\n        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;\n        free(*(void **)((int)pppuVar17 + -0x10));\n        return (uint)local_48 & 0xff;\n      }" ({ "{") (labeled_statement "LAB_00178d5c:\n        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);" (statement_identifier "LAB_00178d5c") (: ":") (expression_statement "local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);" (assignment_expression "local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5)" (identifier "local_48") (= "=") (cast_expression "(undefined1 **)CONCAT31(local_48._1_3_,cVar5)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (call_expression "CONCAT31(local_48._1_3_,cVar5)" (identifier "CONCAT31") (argument_list "(local_48._1_3_,cVar5)" (( "(") (field_expression "local_48._1_3_" (identifier "local_48") (. ".") (field_identifier "_1_3_")) (, ",") (identifier "cVar5") () ")"))))) (; ";"))) (expression_statement "*(byte **)((int)pppuVar17 + -0x10) = pbVar6;" (assignment_expression "*(byte **)((int)pppuVar17 + -0x10) = pbVar6" (pointer_expression "*(byte **)((int)pppuVar17 + -0x10)" (* "*") (cast_expression "(byte **)((int)pppuVar17 + -0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar17 + -0x10)" (( "(") (binary_expression "(int)pppuVar17 + -0x10" (cast_expression "(int)pppuVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar17")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;" (assignment_expression "*(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b" (pointer_expression "*(undefined4 *)((int)pppuVar17 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar17 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar17 + -0x14)" (( "(") (binary_expression "(int)pppuVar17 + -0x14" (cast_expression "(int)pppuVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar17")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x178d6b")) (; ";")) (expression_statement "free(*(void **)((int)pppuVar17 + -0x10));" (call_expression "free(*(void **)((int)pppuVar17 + -0x10))" (identifier "free") (argument_list "(*(void **)((int)pppuVar17 + -0x10))" (( "(") (pointer_expression "*(void **)((int)pppuVar17 + -0x10)" (* "*") (cast_expression "(void **)((int)pppuVar17 + -0x10)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar17 + -0x10)" (( "(") (binary_expression "(int)pppuVar17 + -0x10" (cast_expression "(int)pppuVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar17")) (+ "+") (number_literal "-0x10")) () ")")))) () ")"))) (; ";")) (return_statement "return (uint)local_48 & 0xff;" (return "return") (binary_expression "(uint)local_48 & 0xff" (cast_expression "(uint)local_48" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_48")) (& "&") (number_literal "0xff")) (; ";")) (} "}"))) (expression_statement "iVar11 = 0xc;" (assignment_expression "iVar11 = 0xc" (identifier "iVar11") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar19 = pbVar6;" (assignment_expression "pbVar19 = pbVar6" (identifier "pbVar19") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "pbVar20 = (byte *)((int)local_44 + -0xf5733);" (assignment_expression "pbVar20 = (byte *)((int)local_44 + -0xf5733)" (identifier "pbVar20") (= "=") (cast_expression "(byte *)((int)local_44 + -0xf5733)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_44 + -0xf5733)" (( "(") (binary_expression "(int)local_44 + -0xf5733" (cast_expression "(int)local_44" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_44")) (+ "+") (number_literal "-0xf5733")) () ")")))) (; ";")) (do_statement "do {\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);" (do "do") (compound_statement "{\n        if (iVar11 == 0) break;\n        iVar11 = iVar11 + -1;\n        bVar22 = *pbVar19 < *pbVar20;\n        bVar21 = *pbVar19 == *pbVar20;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar11 == 0) break;" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar22 = *pbVar19 < *pbVar20;" (assignment_expression "bVar22 = *pbVar19 < *pbVar20" (identifier "bVar22") (= "=") (binary_expression "*pbVar19 < *pbVar20" (pointer_expression "*pbVar19" (* "*") (identifier "pbVar19")) (< "<") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20")))) (; ";")) (expression_statement "bVar21 = *pbVar19 == *pbVar20;" (assignment_expression "bVar21 = *pbVar19 == *pbVar20" (identifier "bVar21") (= "=") (binary_expression "*pbVar19 == *pbVar20" (pointer_expression "*pbVar19" (* "*") (identifier "pbVar19")) (== "==") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20")))) (; ";")) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" (identifier "pbVar19") (= "=") (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" (identifier "pbVar19") (+ "+") (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar24")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1" (identifier "pbVar20") (= "=") (binary_expression "pbVar20 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar20 + (uint)bVar24 * -2" (identifier "pbVar20") (+ "+") (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar24")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar21)" (( "(") (identifier "bVar21") () ")")) (; ";")) (if_statement "if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;" (if "if") (parenthesized_expression "((!bVar22 && !bVar21) == bVar22)" (( "(") (binary_expression "(!bVar22 && !bVar21) == bVar22" (parenthesized_expression "(!bVar22 && !bVar21)" (( "(") (binary_expression "!bVar22 && !bVar21" (unary_expression "!bVar22" (! "!") (identifier "bVar22")) (&& "&&") (unary_expression "!bVar21" (! "!") (identifier "bVar21"))) () ")")) (== "==") (identifier "bVar22")) () ")")) (goto_statement "goto LAB_00178d5c;" (goto "goto") (statement_identifier "LAB_00178d5c") (; ";"))) (} "}"))) (expression_statement "*(byte **)((int)pppuVar17 + -0x10) = pbVar6;" (assignment_expression "*(byte **)((int)pppuVar17 + -0x10) = pbVar6" (pointer_expression "*(byte **)((int)pppuVar17 + -0x10)" (* "*") (cast_expression "(byte **)((int)pppuVar17 + -0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar17 + -0x10)" (( "(") (binary_expression "(int)pppuVar17 + -0x10" (cast_expression "(int)pppuVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar17")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;" (assignment_expression "*(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf" (pointer_expression "*(undefined4 *)((int)pppuVar17 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar17 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar17 + -0x14)" (( "(") (binary_expression "(int)pppuVar17 + -0x14" (cast_expression "(int)pppuVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar17")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x178ccf")) (; ";")) (expression_statement "free(*(void **)((int)pppuVar17 + -0x10));" (call_expression "free(*(void **)((int)pppuVar17 + -0x10))" (identifier "free") (argument_list "(*(void **)((int)pppuVar17 + -0x10))" (( "(") (pointer_expression "*(void **)((int)pppuVar17 + -0x10)" (* "*") (cast_expression "(void **)((int)pppuVar17 + -0x10)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar17 + -0x10)" (( "(") (binary_expression "(int)pppuVar17 + -0x10" (cast_expression "(int)pppuVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar17")) (+ "+") (number_literal "-0x10")) () ")")))) () ")"))) (; ";")) (} "}"))) (expression_statement "pbVar6 = *(byte **)(*local_48 + 8);" (assignment_expression "pbVar6 = *(byte **)(*local_48 + 8)" (identifier "pbVar6") (= "=") (pointer_expression "*(byte **)(*local_48 + 8)" (* "*") (cast_expression "(byte **)(*local_48 + 8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_48 + 8)" (( "(") (binary_expression "*local_48 + 8" (pointer_expression "*local_48" (* "*") (identifier "local_48")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (pbVar6 != (byte *)0x0) {\nLAB_00178a80:\n    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }\n    return 0;\n  }" (if "if") (parenthesized_expression "(pbVar6 != (byte *)0x0)" (( "(") (binary_expression "pbVar6 != (byte *)0x0" (identifier "pbVar6") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00178a80:\n    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }\n    return 0;\n  }" ({ "{") (labeled_statement "LAB_00178a80:\n    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }" (statement_identifier "LAB_00178a80") (: ":") (if_statement "if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }" (if "if") (parenthesized_expression "(((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10))))" (( "(") (binary_expression "((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||\n       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))" (parenthesized_expression "((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0))" (( "(") (binary_expression "(pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)" (parenthesized_expression "(pbVar6[0x12b9] != 0)" (( "(") (binary_expression "pbVar6[0x12b9] != 0" (subscript_expression "pbVar6[0x12b9]" (identifier "pbVar6") ([ "[") (number_literal "0x12b9") (] "]")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(pbVar6[0x1a25] != 0)" (( "(") (binary_expression "pbVar6[0x1a25] != 0" (subscript_expression "pbVar6[0x1a25]" (identifier "pbVar6") ([ "[") (number_literal "0x1a25") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))" (( "(") (parenthesized_expression "(pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10))" (( "(") (binary_expression "pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)" (binary_expression "pbVar6[0x19a9] != 0" (subscript_expression "pbVar6[0x19a9]" (identifier "pbVar6") ([ "[") (number_literal "0x19a9") (] "]")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(*(byte *)(param_1 + 10) >> 4 == 10)" (( "(") (binary_expression "*(byte *)(param_1 + 10) >> 4 == 10" (binary_expression "*(byte *)(param_1 + 10) >> 4" (pointer_expression "*(byte *)(param_1 + 10)" (* "*") (cast_expression "(byte *)(param_1 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) (>> ">>") (number_literal "4")) (== "==") (number_literal "10")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }\n      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }\n    }" ({ "{") (if_statement "if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }\n      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }" (if "if") (parenthesized_expression "((*(byte *)((int)param_1 + 0x2a) & 7) == 0)" (( "(") (binary_expression "(*(byte *)((int)param_1 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_1 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x2a)" (( "(") (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }\n        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }\n      }" ({ "{") (if_statement "if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {\n          return 0;\n        }" (if "if") (parenthesized_expression "((*(byte *)(param_1[2] + 0x2c) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(param_1[2] + 0x2c) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1[2] + 0x2c) & 1)" (( "(") (binary_expression "*(byte *)(param_1[2] + 0x2c) & 1" (pointer_expression "*(byte *)(param_1[2] + 0x2c)" (* "*") (cast_expression "(byte *)(param_1[2] + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[2] + 0x2c)" (( "(") (binary_expression "param_1[2] + 0x2c" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {\n          return 0;\n        }" (if "if") (parenthesized_expression "((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0))" (( "(") (binary_expression "(param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)" (parenthesized_expression "(param_1[3] == 0)" (( "(") (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)((int)param_1 + 0x2b) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2b) & 0x20)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0x2b) & 0x20" (pointer_expression "*(byte *)((int)param_1 + 0x2b)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x2b)" (( "(") (binary_expression "(int)param_1 + 0x2b" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x2b")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")) (else_clause "else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }" (else "else") (if_statement "if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {\n        return 0;\n      }" (if "if") (parenthesized_expression "((*(byte *)((int)param_1 + 0x2a) & 7) == 4)" (( "(") (binary_expression "(*(byte *)((int)param_1 + 0x2a) & 7) == 4" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_1 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x2a)" (( "(") (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "4")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))))) (if_statement "if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         ) {\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }" (if "if") (parenthesized_expression "(((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)\n         )" (( "(") (binary_expression "((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)" (parenthesized_expression "((*(byte *)((int)param_1 + 0x29) & 3) == 0)" (( "(") (binary_expression "(*(byte *)((int)param_1 + 0x29) & 3) == 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x29) & 3)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0x29) & 3" (pointer_expression "*(byte *)((int)param_1 + 0x29)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x29)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x29)" (( "(") (binary_expression "(int)param_1 + 0x29" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x29")) () ")")))) (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)((int)param_1 + 0x29) & 3) == 3)" (( "(") (binary_expression "(*(byte *)((int)param_1 + 0x29) & 3) == 3" (parenthesized_expression "(*(byte *)((int)param_1 + 0x29) & 3)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0x29) & 3" (pointer_expression "*(byte *)((int)param_1 + 0x29)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x29)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x29)" (( "(") (binary_expression "(int)param_1 + 0x29" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x29")) () ")")))) (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "3")) () ")"))) () ")")) (compound_statement "{\n        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;\n      }" ({ "{") (return_statement "return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;" (return "return") (binary_expression "*(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1" (binary_expression "*(byte *)((int)param_1 + 0x2b) >> 4 & 1" (binary_expression "*(byte *)((int)param_1 + 0x2b) >> 4" (pointer_expression "*(byte *)((int)param_1 + 0x2b)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x2b)" (( "(") (binary_expression "(int)param_1 + 0x2b" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x2b")) () ")")))) (>> ">>") (number_literal "4")) (& "&") (number_literal "1")) (^ "^") (number_literal "1")) (; ";")) (} "}"))) (} "}")))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pbVar6 = (byte *)0x0;" (assignment_expression "pbVar6 = (byte *)0x0" (identifier "pbVar6") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "ppuVar3 = local_48;" (assignment_expression "ppuVar3 = local_48" (identifier "ppuVar3") (= "=") (identifier "local_48")) (; ";")) (expression_statement "ppuVar4 = local_44;" (assignment_expression "ppuVar4 = local_44" (identifier "ppuVar4") (= "=") (identifier "local_44")) (; ";")) (labeled_statement "LAB_00178b58:\n  local_44 = ppuVar4;" (statement_identifier "LAB_00178b58") (: ":") (expression_statement "local_44 = ppuVar4;" (assignment_expression "local_44 = ppuVar4" (identifier "local_44") (= "=") (identifier "ppuVar4")) (; ";"))) (expression_statement "local_48 = ppuVar3;" (assignment_expression "local_48 = ppuVar3" (identifier "local_48") (= "=") (identifier "ppuVar3")) (; ";")) (expression_statement "*(byte **)(puVar18 + -4) = pbVar6;" (assignment_expression "*(byte **)(puVar18 + -4) = pbVar6" (pointer_expression "*(byte **)(puVar18 + -4)" (* "*") (cast_expression "(byte **)(puVar18 + -4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + -4)" (( "(") (binary_expression "puVar18 + -4" (identifier "puVar18") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "*(undefined ***)(puVar18 + -8) = local_44 + -0x3d2de;" (assignment_expression "*(undefined ***)(puVar18 + -8) = local_44 + -0x3d2de" (pointer_expression "*(undefined ***)(puVar18 + -8)" (* "*") (cast_expression "(undefined ***)(puVar18 + -8)" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar18 + -8)" (( "(") (binary_expression "puVar18 + -8" (identifier "puVar18") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "local_44 + -0x3d2de" (identifier "local_44") (+ "+") (number_literal "-0x3d2de"))) (; ";")) (expression_statement "*(undefined4 *)(puVar18 + -0xc) = 0x5c;" (assignment_expression "*(undefined4 *)(puVar18 + -0xc) = 0x5c" (pointer_expression "*(undefined4 *)(puVar18 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar18 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 + -0xc)" (( "(") (binary_expression "puVar18 + -0xc" (identifier "puVar18") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0x5c")) (; ";")) (expression_statement "*(undefined ***)(puVar18 + -0x10) = local_44 + -0x41f7c;" (assignment_expression "*(undefined ***)(puVar18 + -0x10) = local_44 + -0x41f7c" (pointer_expression "*(undefined ***)(puVar18 + -0x10)" (* "*") (cast_expression "(undefined ***)(puVar18 + -0x10)" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar18 + -0x10)" (( "(") (binary_expression "puVar18 + -0x10" (identifier "puVar18") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "local_44 + -0x41f7c" (identifier "local_44") (+ "+") (number_literal "-0x41f7c"))) (; ";")) (expression_statement "*(undefined **)(puVar18 + -0x14) = &UNK_00178b71;" (assignment_expression "*(undefined **)(puVar18 + -0x14) = &UNK_00178b71" (pointer_expression "*(undefined **)(puVar18 + -0x14)" (* "*") (cast_expression "(undefined **)(puVar18 + -0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + -0x14)" (( "(") (binary_expression "puVar18 + -0x14" (identifier "puVar18") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&UNK_00178b71" (& "&") (identifier "UNK_00178b71"))) (; ";")) (expression_statement "FUN_00069d00();" (call_expression "FUN_00069d00()" (identifier "FUN_00069d00") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: bool should_add_dynsym_entry(Symbol * this, Symbol_table * symtab) */

bool __thiscall var_5::type_1::function_1(type_1 *this,type_2 *symtab)

{
  type_3 var_3;
  type_4 var_25;
  type_5 ppOVar2;
  type_6 _Var3;
  bool var_34;
  char *var_16;
  type_7 *var_4;
  char *pcVar7;
  size_t var_18;
  type_3 *var_30;
  type_3 var_1;
  int var_31;
  type_3 var_2;
  char cVar12;
  type_8 *pOVar13;
  type_3 *var_32;
  type_3 *var_33;
  bool var_35;
  bool bVar17;
  type_3 bVar18;
  int var_24;
  bool var_9;
  char var_14 [28];
  
  bVar18 = 0;
  var_1 = this->field_0x2b;
  var_2 = var_1 >> 6;
  if ((var_2 & 1) == 0) {
    return false;
  }
  var_3 = this->field_0x2a;
  if ((var_3 & 0x40) != 0) {
    return (bool)(var_2 & 1);
  }
  if (((((char)var_3 < '\0') && ((var_1 & 1) != 0)) &&
      (((this->field_0x29 & 3) == 0 || ((this->field_0x29 & 3) == 3)))) && ((var_1 & 0x10) == 0)) {
    return (bool)(var_2 & 1);
  }
  var_4 = parameters->options_;
  if (var_4 == (type_7 *)0x0) goto LAB_00178b58;
  if ((((var_4->gc_sections_).value == false) || ((var_4->shared_).value != false)) ||
     ((var_3 & 7) != 0)) {
    if ((var_3 & 7) == 0) {
      if (((type_4)((this->u1_).output_segment)->output_lists_[3].
                 super__Vector_base<var_5::Output_data*,var_6::allocator<var_5::Output_data*>var_7>._M_impl
                 ._M_end_of_storage & 1) != 0) goto LAB_00178a1d;
      var_4 = parameters->options_;
    }
LAB_00178962:
    var_34 = Version_script_info::var_8
                      (&(var_4->dynamic_list_).version_script_info_,this->name_,(type_9 *)0x0,
                       &var_9);
    if ((var_34) && (var_9 == false)) {
LAB_00178990:
      if ((this->field_0x2b & 0x10) == 0) {
        return (bool)(var_2 & 1);
      }
      var_10((type_9 *)&var_9,this->name_);
      _Var3._M_p = var_13;
      var_16 = (char *)var_11("Cannot export local symbol \'%s\'");
                    /* try { // try from 001789c4 to 001789c8 has its CatchHandler @ 00178e46 */
      var_12(var_16,_Var3._M_p);
      if (var_13 == var_14) {
        return false;
      }
      var_15(var_13);
      return false;
    }
    var_4 = parameters->options_;
    if (var_4 == (type_7 *)0x0) goto LAB_00178b58;
    if ((var_4->export_dynamic_symbol_).value._M_h._M_element_count != 0) {
      var_16 = this->name_;
      pcVar7 = (char *)0xffffffff;
      var_13 = var_14;
      if (var_16 != (char *)0x0) {
        var_18 = var_17(var_16);
        pcVar7 = var_16 + var_18;
      }
      std::__cxx11::basic_string<char,var_6::char_traits<char>,var_6::allocator<char>var_7>::
      var_19<var_20*>((type_9 *)&var_9,var_16,pcVar7,0);
      std::
      _Hashtable<std::__cxx11::basic_string<char,var_6::char_traits<char>,var_6::allocator<char>var_7>,var_6::__cxx11::basic_string<char,var_6::char_traits<char>,var_6::allocator<char>var_7>,var_6::allocator<std::__cxx11::basic_string<char,var_6::char_traits<char>,var_6::allocator<char>var_7>var_7>,var_6::__detail::_Identity,var_6::equal_to<std::__cxx11::basic_string<char,var_6::char_traits<char>,var_6::allocator<char>var_7>var_7>,var_6::hash<std::__cxx11::basic_string<char,var_6::char_traits<char>,var_6::allocator<char>var_7>var_7>,var_6::__detail::_Mod_range_hashing,var_6::__detail::_Default_ranged_hash,var_6::__detail::_Prime_rehash_policy,var_6::__detail::var_21<true,var_22,var_22>var_7>
      ::var_23(&(var_4->export_dynamic_symbol_).value._M_h,(type_9 *)&var_9);
      if (var_24 != 0) {
        if (var_13 != var_14) {
          var_15(var_13);
        }
        goto LAB_00178990;
      }
      if (var_13 != var_14) {
        var_15(var_13);
        var_1 = this->field_0x2b;
        goto LAB_00178a1d;
      }
    }
LAB_00178a19:
    var_1 = this->field_0x2b;
  }
  else {
    pOVar13 = (this->u1_).output_segment;
    if ((((type_10 *)pOVar13->output_lists_)->field_0x2c & 1) == 0) {
      var_25 = (this->u2_).var_25;
      if (((var_1 & 0x20) == 0) || (var_25 == 0)) {
LAB_00178b48:
        var_4 = parameters->options_;
        if (var_4 == (type_7 *)0x0) goto LAB_00178b58;
        goto LAB_00178962;
      }
      ppOVar2 = (((type_11 *)((type_10 *)pOVar13->output_lists_ + 1))->
                super__Vector_base<var_5::type_12*,var_6::allocator<var_5::type_12*>var_7>var_26).
                _M_impl._M_start;
      if ((type_4)((int)(((type_11 *)((type_10 *)pOVar13->output_lists_ + 1))->
                      super__Vector_base<var_5::type_12*,var_6::allocator<var_5::type_12*>var_7>var_26
                      )._M_impl._M_finish - (int)ppOVar2 >> 2) <= var_25) {
                    /* WARNING: Subroutine does not return */
        var_27("../../gold/object.h",0x50b,"is_section_included");
      }
      if (ppOVar2[var_25] != (type_12 *)0x0) goto LAB_00178b48;
      var_34 = type_2::var_28(symtab,(type_13 *)pOVar13,var_25);
      if (!var_34) {
        return false;
      }
      if (((this->field_0x2a & 7) != 0) ||
         (((type_4)((this->u1_).output_segment)->output_lists_[3].
                 super__Vector_base<var_5::Output_data*,var_6::allocator<var_5::Output_data*>var_7>._M_impl
                 ._M_end_of_storage & 1) == 0)) goto LAB_00178b48;
      goto LAB_00178a19;
    }
  }
LAB_00178a1d:
  if ((var_1 & 0x10) != 0) {
    return false;
  }
  var_4 = parameters->options_;
  if (var_4 == (type_7 *)0x0) goto LAB_00178b58;
  if ((var_4->dynamic_list_data_).value == false) {
LAB_00178c1e:
    if (((var_4->dynamic_list_cpp_new_).value == false) &&
       ((var_4->dynamic_list_cpp_typeinfo_).value == false)) goto LAB_00178a80;
    if ((this->field_0x2a & 7) == 0) {
      pOVar13 = (this->u1_).output_segment;
      goto LAB_00178a70;
    }
  }
  else {
    if (((this->field_0x2a & 7) != 0) ||
       (pOVar13 = (this->u1_).output_segment,
       ((type_4)pOVar13->output_lists_[3].
              super__Vector_base<var_5::Output_data*,var_6::allocator<var_5::Output_data*>var_7>._M_impl.
              _M_end_of_storage & 1) == 0)) {
      if ((this->field_0x28 & 0xf) == 1) {
        return (bool)(var_2 & 1);
      }
      goto LAB_00178c1e;
    }
    if (((var_4->dynamic_list_cpp_new_).value != false) ||
       ((var_4->dynamic_list_cpp_typeinfo_).value == false)) goto LAB_00178a80;
LAB_00178a70:
    if (((type_4)pOVar13->output_lists_[3].
               super__Vector_base<var_5::Output_data*,var_6::allocator<var_5::Output_data*>var_7>._M_impl.
               _M_end_of_storage & 1) != 0) goto LAB_00178a80;
  }
  var_30 = (type_3 *)var_29(this->name_,3);
  if (var_30 != (type_3 *)0x0) {
    var_4 = parameters->options_;
    if (var_4 == (type_7 *)0x0) goto LAB_00178b58;
    cVar12 = (var_4->dynamic_list_cpp_new_).value;
    var_34 = false;
    bVar17 = (bool)cVar12 == false;
    if (!bVar17) {
      var_31 = 0xc;
      var_32 = var_30;
      var_33 = (type_3 *)"operator new";
      do {
        if (var_31 == 0) break;
        var_31 = var_31 + -1;
        var_34 = *var_32 < *var_33;
        bVar17 = *var_32 == *var_33;
        var_32 = var_32 + (type_4)bVar18 * -2 + 1;
        var_33 = var_33 + (type_4)bVar18 * -2 + 1;
      } while (bVar17);
      var_35 = false;
      var_34 = (!var_34 && !bVar17) == var_34;
      if (var_34) goto LAB_00178d5c;
      var_31 = 0xf;
      var_32 = var_30;
      var_33 = (type_3 *)"operator delete";
      do {
        if (var_31 == 0) break;
        var_31 = var_31 + -1;
        var_35 = *var_32 < *var_33;
        var_34 = *var_32 == *var_33;
        var_32 = var_32 + (type_4)bVar18 * -2 + 1;
        var_33 = var_33 + (type_4)bVar18 * -2 + 1;
      } while (var_34);
      if ((!var_35 && !var_34) == var_35) goto LAB_00178d5c;
    }
    cVar12 = (var_4->dynamic_list_cpp_typeinfo_).value;
    var_34 = false;
    bVar17 = (bool)cVar12 == false;
    if (!bVar17) {
      var_31 = 0x11;
      var_32 = var_30;
      var_33 = (type_3 *)"typeinfo name for";
      do {
        if (var_31 == 0) break;
        var_31 = var_31 + -1;
        var_34 = *var_32 < *var_33;
        bVar17 = *var_32 == *var_33;
        var_32 = var_32 + (type_4)bVar18 * -2 + 1;
        var_33 = var_33 + (type_4)bVar18 * -2 + 1;
      } while (bVar17);
      var_35 = false;
      var_34 = (!var_34 && !bVar17) == var_34;
      if (var_34) {
LAB_00178d5c:
        var_36(var_30);
        return (bool)cVar12;
      }
      var_31 = 0xc;
      var_32 = var_30;
      var_33 = (type_3 *)"typeinfo for";
      do {
        if (var_31 == 0) break;
        var_31 = var_31 + -1;
        var_35 = *var_32 < *var_33;
        var_34 = *var_32 == *var_33;
        var_32 = var_32 + (type_4)bVar18 * -2 + 1;
        var_33 = var_33 + (type_4)bVar18 * -2 + 1;
      } while (var_34);
      if ((!var_35 && !var_34) == var_35) goto LAB_00178d5c;
    }
    var_36(var_30);
  }
  var_4 = parameters->options_;
  if (var_4 != (type_7 *)0x0) {
LAB_00178a80:
    if ((((var_4->export_dynamic_).value != false) || ((var_4->shared_).value != false)) ||
       (((var_4->gnu_unique_).value != false && ((type_3)this->field_0x28 >> 4 == 10)))) {
      if ((this->field_0x2a & 7) == 0) {
        if (((type_4)((this->u1_).output_segment)->output_lists_[3].
                   super__Vector_base<var_5::Output_data*,var_6::allocator<var_5::Output_data*>var_7>.
                   _M_impl._M_end_of_storage & 1) != 0) {
          return false;
        }
        if (((this->u2_).var_25 == 0) && ((this->field_0x2b & 0x20) != 0)) {
          return false;
        }
      }
      else if ((this->field_0x2a & 7) == 4) {
        return false;
      }
      if (((this->field_0x29 & 3) == 0) || ((this->field_0x29 & 3) == 3)) {
        return (bool)((type_3)this->field_0x2b >> 4 & 1 ^ 1);
      }
    }
    return false;
  }
LAB_00178b58:
                    /* WARNING: Subroutine does not return */
  var_27("../../gold/parameters.h",0x5c,"options");
}


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

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

uint MASKED(undefined4 *param_1,undefined4 param_2)

{
  byte bVar1;
  undefined **ppuVar2;
  undefined1 **ppuVar3;
  undefined **ppuVar4;
  char cVar5;
  byte *pbVar6;
  undefined4 uVar7;
  char *pcVar8;
  size_t sVar9;
  byte bVar10;
  char *__s;
  int iVar11;
  int iVar12;
  undefined1 uVar13;
  uint uVar14;
  undefined1 ***pppuVar15;
  undefined1 ***pppuVar16;
  undefined1 ***pppuVar17;
  undefined1 *puVar18;
  byte *pbVar19;
  byte *pbVar20;
  bool bVar21;
  bool bVar22;
  bool bVar23;
  byte bVar24;
  undefined1 **ppuStack_60;
  undefined1 auStack_5c [11];
  undefined1 local_51;
  char *local_50;
  undefined1 *local_4c;
  undefined1 **local_48;
  undefined **local_44;
  int local_40 [3];
  undefined1 *local_34 [2];
  undefined1 local_2c [28];
  
  bVar24 = 0;
  pppuVar17 = (undefined1 ***)auStack_5c;
  local_44 = &__DT_PLTGOT;
  bVar10 = *(byte *)((int)param_1 + 0x2b);
  uVar14 = bVar10 >> 6 & 1;
  uVar13 = (undefined1)uVar14;
  if ((bVar10 >> 6 & 1) == 0) {
    return 0;
  }
  bVar1 = *(byte *)((int)param_1 + 0x2a);
  pbVar6 = (byte *)(uint)bVar1;
  if ((bVar1 & 0x40) != 0) {
    return uVar14;
  }
  if (((((char)bVar1 < '\0') && ((bVar10 & 1) != 0)) &&
      (((*(byte *)((int)param_1 + 0x29) & 3) == 0 || ((*(byte *)((int)param_1 + 0x29) & 3) == 3))))
     && ((bVar10 & 0x10) == 0)) {
    return uVar14;
  }
  local_48 = (undefined1 **)&DAT_0038f378;
  iVar11 = *(int *)(DAT_0038f378 + 8);
  puVar18 = auStack_5c;
  ppuVar3 = (undefined1 **)&DAT_0038f378;
  ppuVar4 = &__DT_PLTGOT;
  if (iVar11 == 0) goto LAB_00178b58;
  if (((*(char *)(iVar11 + 0x18b1) == '\0') || (*(char *)(iVar11 + 0x1a25) != '\0')) ||
     ((bVar1 & 7) != 0)) {
    local_48 = (undefined1 **)&DAT_0038f378;
    if ((bVar1 & 7) == 0) {
      pppuVar17 = (undefined1 ***)auStack_5c;
      if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) goto LAB_00178a1d;
      iVar11 = *(int *)(DAT_0038f378 + 8);
      ppuVar4 = local_44;
    }
LAB_00178962:
    local_44 = ppuVar4;
    pppuVar15 = (undefined1 ***)auStack_5c;
    pppuVar16 = (undefined1 ***)auStack_5c;
    local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);
    ppuStack_60 = local_34;
    cVar5 = FUN_0016e030(iVar11 + 0x59a8,*param_1,0);
    uVar14 = (uint)local_4c & 0xff;
    if ((cVar5 != '\0') && ((char)local_34[0] == '\0')) {
LAB_00178990:
      if ((*(byte *)((int)param_1 + 0x2b) & 0x10) == 0) {
        return uVar14;
      }
      *(undefined4 *)((int)pppuVar15 + -4) = 0x1789a9;
      FUN_00178770();
      puVar18 = local_34[0];
      *(undefined ***)((int)pppuVar15 + -0x10) = local_44 + -0x3d5b6;
      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c0;
      uVar7 = gettext();
      *(undefined1 **)((int)pppuVar15 + -0xc) = puVar18;
      *(undefined4 *)((int)pppuVar15 + -0x10) = uVar7;
                    /* try { // try from 001789c4 to 001789c8 has its CatchHandler @ 00178e46 */
      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789c9;
      FUN_000654e0();
      if (local_34[0] == local_2c) {
        return 0;
      }
      *(undefined1 **)((int)pppuVar15 + -0x10) = local_34[0];
      *(undefined4 *)((int)pppuVar15 + -0x14) = 0x1789df;
      FUN_001e6dc0();
      return 0;
    }
    pbVar6 = *local_48;
    iVar11 = *(int *)(pbVar6 + 8);
    puVar18 = auStack_5c;
    ppuVar3 = local_48;
    ppuVar4 = local_44;
    if (iVar11 == 0) goto LAB_00178b58;
    if (*(int *)(iVar11 + 0x1344) != 0) {
      __s = (char *)*param_1;
      local_34[0] = local_2c;
      pcVar8 = (char *)0xffffffff;
      uVar13 = local_4c._0_1_;
      puVar18 = local_34[0];
      if (__s != (char *)0x0) {
        local_51 = local_4c._0_1_;
        local_50 = __s;
        local_4c = local_34[0];
        sVar9 = strlen(__s);
        pcVar8 = local_50 + sVar9;
        __s = local_50;
        uVar13 = local_51;
        puVar18 = local_4c;
      }
      local_4c = puVar18;
      ppuStack_60 = (undefined1 **)0x0;
      local_50 = (char *)CONCAT31(local_50._1_3_,uVar13);
      FUN_00050e40(local_34,__s,pcVar8);
      FUN_000ba920(local_40,iVar11 + 0x1338,local_34);
      pppuVar16 = &ppuStack_60;
      pppuVar15 = &ppuStack_60;
      uVar14 = (uint)local_50 & 0xff;
      if (local_40[0] != 0) {
        if (local_34[0] != local_4c) {
          local_48 = (undefined1 **)CONCAT31(local_48._1_3_,local_50._0_1_);
          FUN_001e6dc0(local_34[0]);
          pppuVar15 = &ppuStack_60;
          uVar14 = (uint)local_48 & 0xff;
        }
        goto LAB_00178990;
      }
      if (local_34[0] != local_4c) {
        local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,local_50._0_1_);
        FUN_001e6dc0(local_34[0]);
        uVar14 = (uint)local_4c & 0xff;
        bVar10 = *(byte *)((int)param_1 + 0x2b);
        pppuVar17 = &ppuStack_60;
        ppuVar3 = local_48;
        ppuVar4 = local_44;
        goto LAB_00178a1d;
      }
    }
LAB_00178a19:
    bVar10 = *(byte *)((int)param_1 + 0x2b);
    pppuVar17 = pppuVar16;
    ppuVar3 = local_48;
    ppuVar4 = local_44;
  }
  else {
    iVar11 = param_1[2];
    ppuVar4 = local_44;
    if ((*(byte *)(iVar11 + 0x2c) & 1) == 0) {
      uVar14 = param_1[3];
      ppuVar4 = &__DT_PLTGOT;
      if (((bVar10 & 0x20) == 0) || (ppuVar4 = local_44, uVar14 == 0)) {
LAB_00178b48:
        local_44 = ppuVar4;
        local_48 = ppuVar3;
        puVar18 = auStack_5c;
        pbVar6 = *local_48;
        iVar11 = *(int *)(pbVar6 + 8);
        ppuVar3 = local_48;
        ppuVar4 = local_44;
        if (iVar11 == 0) goto LAB_00178b58;
        goto LAB_00178962;
      }
      if ((uint)(*(int *)(iVar11 + 0x3c) - *(int *)(iVar11 + 0x38) >> 2) <= uVar14) {
        ppuStack_60 = (undefined1 **)&DAT_0038f378;
        local_48 = (undefined1 **)&DAT_0038f378;
        local_44 = &__DT_PLTGOT;
                    /* WARNING: Subroutine does not return */
        FUN_00069d00("../../gold/object.h",0x50b,"is_section_included");
      }
      ppuVar3 = local_48;
      if (*(int *)(*(int *)(iVar11 + 0x38) + uVar14 * 4) != 0) goto LAB_00178b48;
      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,uVar13);
      local_48 = (undefined1 **)&DAT_0038f378;
      local_44 = &__DT_PLTGOT;
      cVar5 = FUN_00177880(param_2,iVar11,uVar14);
      pppuVar16 = (undefined1 ***)auStack_5c;
      if (cVar5 == '\0') {
        return 0;
      }
      uVar14 = (uint)local_4c & 0xff;
      uVar13 = SUB41(local_4c,0);
      ppuVar3 = local_48;
      ppuVar4 = local_44;
      if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) || ((*(byte *)(param_1[2] + 0x2c) & 1) == 0))
      goto LAB_00178b48;
      goto LAB_00178a19;
    }
  }
LAB_00178a1d:
  local_44 = ppuVar4;
  local_48 = ppuVar3;
  ppuVar2 = local_44;
  if ((bVar10 & 0x10) != 0) {
    return 0;
  }
  pbVar6 = *(byte **)(*local_48 + 8);
  puVar18 = (undefined1 *)pppuVar17;
  ppuVar3 = local_48;
  ppuVar4 = local_44;
  if (pbVar6 == (byte *)0x0) goto LAB_00178b58;
  if (pbVar6[0xe89] == 0) {
LAB_00178c1e:
    if ((pbVar6[0xf05] == 0) && (pbVar6[0xf81] == 0)) goto LAB_00178a80;
    if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {
      iVar11 = param_1[2];
      goto LAB_00178a70;
    }
  }
  else {
    if (((*(byte *)((int)param_1 + 0x2a) & 7) != 0) ||
       (iVar11 = param_1[2], (*(byte *)(iVar11 + 0x2c) & 1) == 0)) {
      local_4c = (undefined1 *)CONCAT31(local_4c._1_3_,*(byte *)(param_1 + 10));
      if ((*(byte *)(param_1 + 10) & 0xf) == 1) {
        return uVar14;
      }
      goto LAB_00178c1e;
    }
    if ((pbVar6[0xf05] != 0) || (pbVar6[0xf81] == 0)) goto LAB_00178a80;
LAB_00178a70:
    if ((*(byte *)(iVar11 + 0x2c) & 1) != 0) goto LAB_00178a80;
  }
  *(undefined4 *)((int)pppuVar17 + -0xc) = 3;
  *(undefined4 *)((int)pppuVar17 + -0x10) = *param_1;
  *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178c55;
  pbVar6 = (byte *)FUN_001cef00();
  if (pbVar6 != (byte *)0x0) {
    iVar11 = *(int *)(*local_48 + 8);
    ppuVar3 = local_48;
    ppuVar4 = local_44;
    if (iVar11 == 0) goto LAB_00178b58;
    cVar5 = *(char *)(iVar11 + 0xf05);
    bVar21 = false;
    bVar23 = cVar5 == '\0';
    if (!bVar23) {
      iVar12 = 0xc;
      pbVar19 = pbVar6;
      pbVar20 = (byte *)((int)ppuVar2 + -0xf5762);
      do {
        if (iVar12 == 0) break;
        iVar12 = iVar12 + -1;
        bVar21 = *pbVar19 < *pbVar20;
        bVar23 = *pbVar19 == *pbVar20;
        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;
      } while (bVar23);
      bVar22 = false;
      bVar21 = (!bVar21 && !bVar23) == bVar21;
      local_44 = ppuVar2;
      if (bVar21) goto LAB_00178d5c;
      iVar12 = 0xf;
      pbVar19 = pbVar6;
      pbVar20 = (byte *)((int)ppuVar2 + -0xf5755);
      do {
        if (iVar12 == 0) break;
        iVar12 = iVar12 + -1;
        bVar22 = *pbVar19 < *pbVar20;
        bVar21 = *pbVar19 == *pbVar20;
        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;
      } while (bVar21);
      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;
    }
    cVar5 = *(char *)(iVar11 + 0xf81);
    bVar21 = false;
    bVar23 = cVar5 == '\0';
    if (!bVar23) {
      iVar11 = 0x11;
      pbVar19 = pbVar6;
      pbVar20 = (byte *)((int)local_44 + -0xf5745);
      do {
        if (iVar11 == 0) break;
        iVar11 = iVar11 + -1;
        bVar21 = *pbVar19 < *pbVar20;
        bVar23 = *pbVar19 == *pbVar20;
        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;
      } while (bVar23);
      bVar22 = false;
      bVar21 = (!bVar21 && !bVar23) == bVar21;
      if (bVar21) {
LAB_00178d5c:
        local_48 = (undefined1 **)CONCAT31(local_48._1_3_,cVar5);
        *(byte **)((int)pppuVar17 + -0x10) = pbVar6;
        *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178d6b;
        free(*(void **)((int)pppuVar17 + -0x10));
        return (uint)local_48 & 0xff;
      }
      iVar11 = 0xc;
      pbVar19 = pbVar6;
      pbVar20 = (byte *)((int)local_44 + -0xf5733);
      do {
        if (iVar11 == 0) break;
        iVar11 = iVar11 + -1;
        bVar22 = *pbVar19 < *pbVar20;
        bVar21 = *pbVar19 == *pbVar20;
        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
        pbVar20 = pbVar20 + (uint)bVar24 * -2 + 1;
      } while (bVar21);
      if ((!bVar22 && !bVar21) == bVar22) goto LAB_00178d5c;
    }
    *(byte **)((int)pppuVar17 + -0x10) = pbVar6;
    *(undefined4 *)((int)pppuVar17 + -0x14) = 0x178ccf;
    free(*(void **)((int)pppuVar17 + -0x10));
  }
  pbVar6 = *(byte **)(*local_48 + 8);
  if (pbVar6 != (byte *)0x0) {
LAB_00178a80:
    if (((pbVar6[0x12b9] != 0) || (pbVar6[0x1a25] != 0)) ||
       ((pbVar6[0x19a9] != 0 && (*(byte *)(param_1 + 10) >> 4 == 10)))) {
      if ((*(byte *)((int)param_1 + 0x2a) & 7) == 0) {
        if ((*(byte *)(param_1[2] + 0x2c) & 1) != 0) {
          return 0;
        }
        if ((param_1[3] == 0) && ((*(byte *)((int)param_1 + 0x2b) & 0x20) != 0)) {
          return 0;
        }
      }
      else if ((*(byte *)((int)param_1 + 0x2a) & 7) == 4) {
        return 0;
      }
      if (((*(byte *)((int)param_1 + 0x29) & 3) == 0) || ((*(byte *)((int)param_1 + 0x29) & 3) == 3)
         ) {
        return *(byte *)((int)param_1 + 0x2b) >> 4 & 1 ^ 1;
      }
    }
    return 0;
  }
  pbVar6 = (byte *)0x0;
  ppuVar3 = local_48;
  ppuVar4 = local_44;
LAB_00178b58:
  local_44 = ppuVar4;
  local_48 = ppuVar3;
  *(byte **)(puVar18 + -4) = pbVar6;
  *(undefined ***)(puVar18 + -8) = local_44 + -0x3d2de;
  *(undefined4 *)(puVar18 + -0xc) = 0x5c;
  *(undefined ***)(puVar18 + -0x10) = local_44 + -0x41f7c;
                    /* WARNING: Subroutine does not return */
  *(undefined **)(puVar18 + -0x14) = &UNK_00178b71;
  FUN_00069d00();
}

