
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: Abbrev_code * do_get_abbrev(Dwarf_abbrev_table * this, uint code) */

Abbrev_code * __thiscall gold::Dwarf_abbrev_table::do_get_abbrev(Dwarf_abbrev_table *this,uint code)

{
  byte bVar1;
  byte bVar2;
  _Hash_node_base *p_Var3;
  pointer pAVar4;
  iterator __position;
  Abbrev_code *pAVar5;
  pointer pAVar6;
  undefined4 *__n_elt;
  _Hash_node_base *p_Var7;
  byte *pbVar8;
  __node_type *p_Var9;
  uint uVar10;
  byte *pbVar11;
  __bucket_type p_Var12;
  __bucket_type p_Var13;
  uint uVar14;
  ulonglong uVar15;
  uint64_t uVar16;
  undefined8 local_4c;
  undefined8 local_3c;
  undefined1 local_30 [8];
  size_t len;
  uint local_24;
  float local_20;
  
  uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count;
  uVar10 = code % uVar14;
  p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10];
  if (p_Var12 != (__bucket_type)0x0) {
    p_Var7 = p_Var12->_M_nxt[1]._M_nxt;
    p_Var13 = p_Var12->_M_nxt;
    while (p_Var7 != (_Hash_node_base *)code) {
      p_Var3 = p_Var13->_M_nxt;
      if ((p_Var3 == (_Hash_node_base *)0x0) ||
         (p_Var7 = p_Var3[1]._M_nxt, p_Var12 = p_Var13, p_Var13 = p_Var3,
         uVar10 != (uint)p_Var7 % uVar14)) goto LAB_00058af8;
    }
    if (p_Var12->_M_nxt != (_Hash_node_base *)0x0) {
      return (Abbrev_code *)p_Var12->_M_nxt[2]._M_nxt;
    }
  }
LAB_00058af8:
  pbVar8 = this->buffer_pos_;
  if (pbVar8 < this->buffer_end_) {
    while( true ) {
      bVar1 = *pbVar8;
      if ((char)bVar1 < '\0') {
        local_4c = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);
      }
      else {
        len = 1;
        local_4c = (uint64_t)bVar1;
      }
      pbVar8 = this->buffer_end_;
      if (local_4c._4_4_ == 0 && (__node_type *)local_4c == (__node_type *)0x0) break;
      pbVar11 = this->buffer_pos_ + len;
      this->buffer_pos_ = pbVar11;
      if (pbVar8 <= pbVar11) {
        return (Abbrev_code *)0x0;
      }
      bVar1 = *pbVar11;
      pbVar11 = pbVar11 + 1;
      if ((char)bVar1 < '\0') {
        uVar16 = read_unsigned_LEB_128_x(pbVar11,&len,bVar1);
        uVar14 = (uint)uVar16;
        pbVar8 = this->buffer_end_;
        pbVar11 = this->buffer_pos_ + len;
      }
      else {
        len = 1;
        uVar14 = (uint)bVar1;
      }
      this->buffer_pos_ = pbVar11;
      if (pbVar8 <= pbVar11) {
        return (Abbrev_code *)0x0;
      }
      bVar1 = *pbVar11;
      this->buffer_pos_ = pbVar11 + 1;
      pAVar5 = (Abbrev_code *)operator_new(0x14);
      pAVar5->tag = uVar14;
      bVar2 = pAVar5->field_0x4;
      (pAVar5->attributes).
      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>
      ._M_impl._M_start = (pointer)0x0;
      (pAVar5->attributes).
      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>
      ._M_impl._M_finish = (pointer)0x0;
      pAVar5->field_0x4 = bVar2 & 0xfc | bVar1 == 1;
      (pAVar5->attributes).
      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>
      ._M_impl._M_end_of_storage = (pointer)0x0;
                    /* try { // try from 00058be1 to 00058be5 has its CatchHandler @ 00058ea8 */
      pAVar6 = (pointer)operator_new(0x50);
      pAVar4 = (pAVar5->attributes).
               super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>
               ._M_impl._M_start;
      if (pAVar4 != (pointer)0x0) {
        operator_delete(pAVar4);
      }
      (pAVar5->attributes).
      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>
      ._M_impl._M_start = pAVar6;
      (pAVar5->attributes).
      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>
      ._M_impl._M_finish = pAVar6;
      (pAVar5->attributes).
      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>
      ._M_impl._M_end_of_storage = pAVar6 + 10;
      pbVar8 = this->buffer_pos_;
      if (this->buffer_end_ <= pbVar8) {
        return (Abbrev_code *)0x0;
      }
      while( true ) {
        bVar1 = *pbVar8;
        if ((char)bVar1 < '\0') {
          uVar15 = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);
          pbVar11 = this->buffer_pos_ + len;
          this->buffer_pos_ = pbVar11;
          if (this->buffer_end_ <= pbVar11) {
            return (Abbrev_code *)0x0;
          }
        }
        else {
          uVar15 = (ulonglong)bVar1;
          len = 1;
          pbVar11 = this->buffer_pos_ + 1;
          this->buffer_pos_ = pbVar11;
          if (this->buffer_end_ <= pbVar11) {
            return (Abbrev_code *)0x0;
          }
        }
        uVar14 = (uint)uVar15;
        pbVar8 = pbVar11 + 1;
        bVar1 = *pbVar11;
        if ((char)bVar1 < '\0') {
          local_3c = read_unsigned_LEB_128_x(pbVar8,&len,bVar1);
          pbVar8 = this->buffer_pos_ + len;
        }
        else {
          len = 1;
          local_3c = (uint64_t)bVar1;
        }
        this->buffer_pos_ = pbVar8;
        if ((local_3c._4_4_ == 0 && (int)(uVar15 >> 0x20) == 0) &&
            ((float)local_3c == 0.0 && uVar14 == 0)) break;
        if (uVar15 == 1) {
          pAVar5->field_0x4 = pAVar5->field_0x4 | 2;
        }
        local_20 = (float)local_3c;
        __position._M_current =
             (pAVar5->attributes).
             super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>
             ._M_impl._M_finish;
        local_24 = uVar14;
        if (__position._M_current ==
            (pAVar5->attributes).
            super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>
            ._M_impl._M_end_of_storage) {
          std::
          vector<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>
          ::_M_realloc_insert<gold::Dwarf_abbrev_table::Attribute>
                    (&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc);
          pbVar8 = this->buffer_pos_;
        }
        else {
          (__position._M_current)->attr = uVar14;
          (__position._M_current)->form = (uint)(float)local_3c;
          (pAVar5->attributes).
          super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>
          ._M_impl._M_finish = __position._M_current + 1;
        }
        if (this->buffer_end_ <= pbVar8) {
          return (Abbrev_code *)0x0;
        }
      }
      if ((__node_type *)local_4c < (__node_type *)0x100) {
        this->low_abbrev_codes_[(int)(__node_type *)local_4c] = pAVar5;
      }
      else {
        uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count;
        uVar10 = (uint)(__node_type *)local_4c % uVar14;
        p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10];
        if (p_Var12 != (__bucket_type)0x0) {
          p_Var9 = (__node_type *)p_Var12->_M_nxt[1]._M_nxt;
          p_Var7 = p_Var12->_M_nxt;
          while (p_Var13 = p_Var7, (__node_type *)local_4c != p_Var9) {
            p_Var7 = p_Var13->_M_nxt;
            if ((p_Var7 == (_Hash_node_base *)0x0) ||
               (p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,
               uVar10 != (uint)p_Var9 % uVar14)) goto LAB_00058e6b;
          }
          p_Var7 = p_Var12->_M_nxt;
          if (p_Var7 != (_Hash_node_base *)0x0) goto LAB_00058e56;
        }
LAB_00058e6b:
        __n_elt = (undefined4 *)operator_new(0xc);
        *__n_elt = 0;
        __n_elt[1] = (__node_type *)local_4c;
        __n_elt[2] = 0;
        std::
        _Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>
        ::_M_insert_unique_node
                  ((_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>
                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,
                   (size_type)__n_elt);
        p_Var7 = (_Hash_node_base *)local_30._0_4_;
LAB_00058e56:
        p_Var7[2]._M_nxt = (_Hash_node_base *)pAVar5;
      }
      if (local_4c._4_4_ == 0 && (__node_type *)code == (__node_type *)local_4c) {
        return pAVar5;
      }
      pbVar8 = this->buffer_pos_;
      if (this->buffer_end_ <= pbVar8) {
        return (Abbrev_code *)0x0;
      }
    }
    this->buffer_pos_ = pbVar8;
  }
  return (Abbrev_code *)0x0;
}



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

undefined4 * FUN_00058a70(int param_1,uint param_2)

{
  byte bVar1;
  uint *puVar2;
  uint uVar3;
  undefined4 *puVar4;
  int iVar5;
  byte *pbVar6;
  uint uVar7;
  byte *pbVar8;
  int *piVar9;
  int *piVar10;
  undefined1 *puVar11;
  int *piVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  int aiStack_80 [9];
  undefined1 auStack_5c [4];
  uint *local_58;
  undefined4 *local_54;
  int local_50;
  undefined8 local_4c;
  int *local_44;
  undefined **local_40;
  undefined8 local_3c;
  undefined4 *local_34;
  int local_30 [2];
  int local_28;
  uint local_24;
  uint local_20;
  
  uVar13 = CONCAT44(local_4c._4_4_,(uint)local_4c);
  local_40 = &__DT_PLTGOT;
  puVar11 = auStack_5c;
  local_50 = param_1 + 0x41c;
  local_3c._0_4_ = param_2 % *(uint *)(param_1 + 0x420);
  piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);
  if (piVar9 != (int *)0x0) {
    uVar7 = ((int *)*piVar9)[1];
    piVar12 = (int *)*piVar9;
    while (uVar7 != param_2) {
      piVar10 = (int *)*piVar12;
      if ((piVar10 == (int *)0x0) ||
         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,
         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;
    }
    if (*piVar9 != 0) {
      return *(undefined4 **)(*piVar9 + 8);
    }
  }
LAB_00058af8:
  pbVar6 = *(byte **)(param_1 + 0x18);
  if (pbVar6 < *(byte **)(param_1 + 0x10)) {
    local_44 = &local_28;
    while( true ) {
      bVar1 = *pbVar6;
      if ((char)bVar1 < '\0') {
        *(uint *)(puVar11 + -8) = (uint)bVar1;
        *(int **)(puVar11 + -0xc) = local_44;
        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;
        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;
        local_4c = uVar13;
        uVar13 = FUN_00095970();
      }
      else {
        local_28 = 1;
        uVar13 = (ulonglong)(uint)bVar1;
      }
      pbVar6 = *(byte **)(param_1 + 0x10);
      if (uVar13 == 0) break;
      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));
      *(byte **)(param_1 + 0x18) = pbVar8;
      if (pbVar6 <= pbVar8) {
        return (undefined4 *)0x0;
      }
      bVar1 = *pbVar8;
      pbVar8 = pbVar8 + 1;
      local_4c = uVar13;
      if ((char)bVar1 < '\0') {
        *(uint *)(puVar11 + -8) = (uint)bVar1;
        *(int **)(puVar11 + -0xc) = local_44;
        *(byte **)(puVar11 + -0x10) = pbVar8;
        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;
        local_3c = FUN_00095970();
        pbVar6 = *(byte **)(param_1 + 0x10);
        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));
      }
      else {
        local_28 = 1;
        local_3c = (ulonglong)(uint)bVar1;
      }
      *(byte **)(param_1 + 0x18) = pbVar8;
      if (pbVar6 <= pbVar8) {
        return (undefined4 *)0x0;
      }
      bVar1 = *pbVar8;
      *(byte **)(param_1 + 0x18) = pbVar8 + 1;
      *(undefined4 *)(puVar11 + -0x10) = 0x14;
      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;
      puVar4 = (undefined4 *)FUN_001e5200();
      *puVar4 = (uint)local_3c;
      puVar4[2] = 0;
      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));
      puVar4[3] = 0;
      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;
      local_54 = puVar4 + 2;
      puVar4[4] = 0;
      *(undefined4 *)(puVar11 + -0x10) = 0x50;
                    /* try { // try from 00058be1 to 00058be5 has its CatchHandler @ 00058ea8 */
      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;
      local_34 = puVar4;
      iVar5 = FUN_001e5200();
      if (puVar4[2] != 0) {
        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];
        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;
        local_3c._0_4_ = iVar5;
        FUN_001e6db0();
        iVar5 = (uint)local_3c;
      }
      local_34[2] = iVar5;
      local_34[3] = iVar5;
      local_34[4] = iVar5 + 0x50;
      pbVar6 = *(byte **)(param_1 + 0x18);
      if (*(byte **)(param_1 + 0x10) <= pbVar6) {
        return (undefined4 *)0x0;
      }
      local_58 = &local_24;
      while( true ) {
        bVar1 = *pbVar6;
        if ((char)bVar1 < '\0') {
          *(uint *)(puVar11 + -8) = (uint)bVar1;
          *(int **)(puVar11 + -0xc) = local_44;
          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;
          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;
          uVar13 = FUN_00095970();
          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));
          *(byte **)(param_1 + 0x18) = pbVar8;
          if (*(byte **)(param_1 + 0x10) <= pbVar8) {
            return (undefined4 *)0x0;
          }
        }
        else {
          uVar13 = (ulonglong)(uint)bVar1;
          local_28 = 1;
          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);
          *(byte **)(param_1 + 0x18) = pbVar8;
          if (*(byte **)(param_1 + 0x10) <= pbVar8) {
            return (undefined4 *)0x0;
          }
        }
        uVar7 = (uint)uVar13;
        pbVar6 = pbVar8 + 1;
        bVar1 = *pbVar8;
        if ((char)bVar1 < '\0') {
          *(uint *)(puVar11 + -8) = (uint)bVar1;
          *(int **)(puVar11 + -0xc) = local_44;
          *(byte **)(puVar11 + -0x10) = pbVar6;
          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;
          uVar14 = FUN_00095970();
          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));
        }
        else {
          local_28 = 1;
          uVar14 = (ulonglong)(uint)bVar1;
        }
        uVar3 = (uint)local_4c;
        local_3c._4_4_ = (int)(uVar14 >> 0x20);
        local_3c._0_4_ = (uint)uVar14;
        *(byte **)(param_1 + 0x18) = pbVar6;
        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&
            ((uint)local_3c == 0 && uVar7 == 0)) break;
        if (uVar13 == 1) {
          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;
        }
        local_20 = (uint)local_3c;
        puVar2 = (uint *)local_34[3];
        local_24 = uVar7;
        local_3c = uVar14;
        if (puVar2 == (uint *)local_34[4]) {
          *(uint **)(puVar11 + -8) = local_58;
          *(uint **)(puVar11 + -0xc) = puVar2;
          *(undefined4 **)(puVar11 + -0x10) = local_54;
          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;
          FUN_0005b5b0();
          pbVar6 = *(byte **)(param_1 + 0x18);
        }
        else {
          *puVar2 = uVar7;
          puVar2[1] = (uint)local_3c;
          local_34[3] = puVar2 + 2;
        }
        if (*(byte **)(param_1 + 0x10) <= pbVar6) {
          return (undefined4 *)0x0;
        }
      }
      uVar13 = local_4c;
      if ((uint)local_4c < 0x100) {
        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;
      }
      else {
        local_54 = *(undefined4 **)(param_1 + 0x420);
        local_3c._0_4_ = (uint)local_4c % (uint)local_54;
        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);
        if (piVar9 != (int *)0x0) {
          uVar7 = ((int *)*piVar9)[1];
          piVar12 = (int *)*piVar9;
          while (piVar10 = piVar12, (uint)local_4c != uVar7) {
            piVar12 = (int *)*piVar10;
            if ((piVar12 == (int *)0x0) ||
               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))
            goto LAB_00058e6b;
          }
          iVar5 = *piVar9;
          if (iVar5 != 0) goto LAB_00058e56;
        }
LAB_00058e6b:
        *(undefined4 *)(puVar11 + -0x10) = 0xc;
        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;
        puVar4 = (undefined4 *)FUN_001e5200();
        *puVar4 = 0;
        puVar4[1] = uVar3;
        puVar4[2] = 0;
        *(undefined4 *)(puVar11 + -0xc) = 1;
        *(undefined4 **)(puVar11 + -0x10) = puVar4;
        *(uint *)(puVar11 + -0x14) = uVar3;
        *(uint *)(puVar11 + -0x18) = (uint)local_3c;
        *(int *)(puVar11 + -0x1c) = local_50;
        *(int **)(puVar11 + -0x20) = local_30;
        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;
        FUN_0005d420();
        puVar11 = puVar11 + -4;
        iVar5 = local_30[0];
        uVar13 = local_4c;
LAB_00058e56:
        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);
        *(undefined4 **)(iVar5 + 8) = local_34;
      }
      local_4c._4_4_ = (int)(uVar13 >> 0x20);
      local_4c._0_4_ = (uint)uVar13;
      local_3c._4_4_ = (int)(uVar14 >> 0x20);
      local_3c._0_4_ = (uint)uVar14;
      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {
        return local_34;
      }
      pbVar6 = *(byte **)(param_1 + 0x18);
      if (*(byte **)(param_1 + 0x10) <= pbVar6) {
        return (undefined4 *)0x0;
      }
    }
    *(byte **)(param_1 + 0x18) = pbVar6;
  }
  return (undefined4 *)0x0;
}


CALL 0x000559e6
ADD EAX,0x33658b
PUSH EBP
XOR EDX,EDX
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x4c
MOV dword ptr [EBP + -0x3c],EAX
MOV EAX,dword ptr [EBP + 0x8]
ADD EAX,0x41c
MOV dword ptr [EBP + -0x4c],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV EDI,dword ptr [EAX + 0x420]
MOV EAX,dword ptr [EBP + 0xc]
DIV EDI
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x41c]
MOV EBX,dword ptr [EAX + EDX*0x4]
MOV dword ptr [EBP + -0x38],EDX
TEST EBX,EBX
JZ 0x00058af8
MOV ESI,dword ptr [EBX]
MOV ECX,dword ptr [ESI + 0x4]
JMP 0x00058ad8
MOV EAX,dword ptr [ESI]
TEST EAX,EAX
JZ 0x00058af8
MOV ECX,dword ptr [EAX + 0x4]
MOV EBX,ESI
XOR EDX,EDX
MOV ESI,EAX
MOV EAX,ECX
DIV EDI
CMP dword ptr [EBP + -0x38],EDX
JNZ 0x00058af8
CMP ECX,dword ptr [EBP + 0xc]
JNZ 0x00058ac0
MOV EAX,dword ptr [EBX]
TEST EAX,EAX
JZ 0x00058af8
MOV EAX,dword ptr [EAX + 0x8]
MOV dword ptr [EBP + -0x30],EAX
MOV EAX,dword ptr [EBP + -0x30]
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBP + 0x8]
MOV EDI,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x18]
CMP EAX,dword ptr [EDI + 0x10]
JNC 0x00058d01
LEA EDI,[EBP + -0x24]
MOV dword ptr [EBP + -0x40],EDI
MOVZX EDX,byte ptr [EAX]
TEST DL,DL
JS 0x00058d60
MOV dword ptr [EBP + -0x24],0x1
MOV dword ptr [EBP + -0x48],EDX
MOV dword ptr [EBP + -0x44],0x0
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EBP + -0x48]
MOV ECX,dword ptr [EBP + -0x44]
MOV ESI,dword ptr [EAX + 0x10]
MOV EAX,EDX
MOV EDX,ECX
OR EDX,EAX
JZ 0x00058e60
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EBP + -0x24]
ADD EDX,dword ptr [EAX + 0x18]
MOV dword ptr [EAX + 0x18],EDX
CMP EDX,ESI
JNC 0x00058d01
MOVZX ECX,byte ptr [EDX]
LEA EAX,[EDX + 0x1]
TEST CL,CL
JS 0x00058dd0
MOV dword ptr [EBP + -0x24],0x1
XOR EBX,EBX
MOV EDX,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x38],ECX
MOV dword ptr [EBP + -0x34],EBX
MOV dword ptr [EDX + 0x18],EAX
CMP ESI,EAX
JBE 0x00058d01
CMP byte ptr [EAX],0x1
MOV EBX,dword ptr [EBP + -0x3c]
SETZ DL
SUB ESP,0xc
ADD EAX,0x1
MOV ESI,EDX
MOV EDX,dword ptr [EBP + 0x8]
MOV dword ptr [EDX + 0x18],EAX
PUSH 0x14
CALL 0x001e5200
MOV ECX,dword ptr [EBP + -0x38]
MOV EDI,EAX
MOV dword ptr [EBP + -0x30],EAX
MOV dword ptr [EAX],ECX
MOVZX EAX,byte ptr [EAX + 0x4]
MOV dword ptr [EDI + 0x8],0x0
MOV byte ptr [EBP + -0x38],AL
AND EAX,0xfffffffc
OR EAX,ESI
MOV dword ptr [EDI + 0xc],0x0
MOV ESI,dword ptr [EBP + -0x3c]
MOV byte ptr [EDI + 0x4],AL
LEA EAX,[EDI + 0x8]
MOV dword ptr [EDI + 0x10],0x0
MOV EBX,ESI
MOV dword ptr [EBP + -0x50],EAX
MOV dword ptr [ESP],0x50
CALL 0x001e5200
MOV EDX,dword ptr [EDI + 0x8]
ADD ESP,0x10
TEST EDX,EDX
JZ 0x00058c02
SUB ESP,0xc
MOV dword ptr [EBP + -0x38],EAX
PUSH EDX
CALL 0x001e6db0
MOV EAX,dword ptr [EBP + -0x38]
ADD ESP,0x10
MOV EDI,dword ptr [EBP + -0x30]
MOV dword ptr [EDI + 0x8],EAX
MOV dword ptr [EDI + 0xc],EAX
ADD EAX,0x50
MOV dword ptr [EDI + 0x10],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV ECX,dword ptr [EAX + 0x18]
CMP dword ptr [EAX + 0x10],ECX
JBE 0x00058d01
LEA EAX,[EBP + -0x20]
MOV dword ptr [EBP + -0x54],EAX
JMP 0x00058cc7
MOV EDX,dword ptr [EBP + 0x8]
MOV ESI,EAX
MOV EAX,0x1
XOR EDI,EDI
MOV dword ptr [EBP + -0x24],0x1
ADD EAX,dword ptr [EDX + 0x18]
MOV dword ptr [EDX + 0x18],EAX
CMP EAX,dword ptr [EDX + 0x10]
JNC 0x00058d01
LEA ECX,[EAX + 0x1]
MOVZX EAX,byte ptr [EAX]
TEST AL,AL
JS 0x00058d18
MOV dword ptr [EBP + -0x24],0x1
MOV dword ptr [EBP + -0x38],EAX
MOV dword ptr [EBP + -0x34],0x0
MOV EAX,dword ptr [EBP + 0x8]
MOV EBX,dword ptr [EBP + -0x38]
MOV dword ptr [EAX + 0x18],ECX
MOV EAX,dword ptr [EBP + -0x34]
OR EBX,ESI
OR EAX,EDI
OR EAX,EBX
JZ 0x00058d88
MOV EAX,ESI
XOR EAX,0x1
OR EAX,EDI
JNZ 0x00058c99
MOV EAX,dword ptr [EBP + -0x30]
OR byte ptr [EAX + 0x4],0x2
MOV EAX,dword ptr [EBP + -0x38]
MOV dword ptr [EBP + -0x20],ESI
MOV dword ptr [EBP + -0x1c],EAX
MOV EAX,dword ptr [EBP + -0x30]
MOV EBX,dword ptr [EAX + 0xc]
CMP EBX,dword ptr [EAX + 0x10]
JZ 0x00058d40
MOV EDI,dword ptr [EBP + -0x38]
MOV dword ptr [EBX],ESI
ADD EBX,0x8
MOV dword ptr [EBX + -0x4],EDI
MOV dword ptr [EAX + 0xc],EBX
MOV EAX,dword ptr [EBP + 0x8]
CMP dword ptr [EAX + 0x10],ECX
JBE 0x00058d01
MOVZX EAX,byte ptr [ECX]
TEST AL,AL
JNS 0x00058c30
SUB ESP,0x4
ADD ECX,0x1
MOV EBX,dword ptr [EBP + -0x3c]
PUSH EAX
PUSH dword ptr [EBP + -0x40]
PUSH ECX
CALL 0x00095970
ADD ESP,0x10
MOV EDI,EDX
MOV EDX,dword ptr [EBP + 0x8]
MOV ESI,EAX
MOV EAX,dword ptr [EBP + -0x24]
ADD EAX,dword ptr [EDX + 0x18]
MOV dword ptr [EDX + 0x18],EAX
CMP EAX,dword ptr [EDX + 0x10]
JC 0x00058c52
MOV dword ptr [EBP + -0x30],0x0
MOV EAX,dword ptr [EBP + -0x30]
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x4
MOV EBX,dword ptr [EBP + -0x3c]
PUSH EAX
PUSH dword ptr [EBP + -0x40]
PUSH ECX
CALL 0x00095970
MOV ECX,dword ptr [EBP + -0x24]
ADD ESP,0x10
MOV dword ptr [EBP + -0x38],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x34],EDX
ADD ECX,dword ptr [EAX + 0x18]
JMP 0x00058c71
SUB ESP,0x4
PUSH dword ptr [EBP + -0x54]
PUSH EBX
PUSH dword ptr [EBP + -0x50]
CALL 0x0005b5b0
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x10
MOV ECX,dword ptr [EAX + 0x18]
JMP 0x00058cbf
SUB ESP,0x4
ADD EAX,0x1
MOV EBX,dword ptr [EBP + -0x3c]
PUSH EDX
PUSH dword ptr [EBP + -0x40]
PUSH EAX
CALL 0x00095970
ADD ESP,0x10
MOV dword ptr [EBP + -0x48],EAX
MOV dword ptr [EBP + -0x44],EDX
JMP 0x00058b2c
MOV EDI,dword ptr [EBP + -0x48]
MOV EAX,dword ptr [EBP + 0x8]
CMP EDI,0xff
JA 0x00058e00
MOV EDX,dword ptr [EBP + -0x30]
MOV dword ptr [EAX + EDI*0x4 + 0x1c],EDX
MOV EDX,dword ptr [EBP + -0x48]
MOV ECX,dword ptr [EBP + -0x44]
MOV EAX,dword ptr [EBP + 0xc]
XOR EAX,EDX
MOV EDX,ECX
OR EDX,EAX
JZ 0x00058ae9
MOV EAX,dword ptr [EBP + 0x8]
MOV EDI,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x18]
CMP EAX,dword ptr [EDI + 0x10]
JC 0x00058b10
JMP 0x00058d01
SUB ESP,0x4
MOV EBX,dword ptr [EBP + -0x3c]
PUSH ECX
PUSH dword ptr [EBP + -0x40]
PUSH EAX
CALL 0x00095970
ADD ESP,0x10
MOV EBX,EDX
MOV EDX,dword ptr [EBP + 0x8]
MOV ECX,EAX
MOV EAX,dword ptr [EBP + -0x24]
MOV ESI,dword ptr [EDX + 0x10]
ADD EAX,dword ptr [EDX + 0x18]
JMP 0x00058b6f
MOV EAX,dword ptr [EBP + 0x8]
XOR EDX,EDX
MOV ECX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x420]
MOV ESI,EAX
MOV EAX,EDI
DIV ESI
MOV EAX,dword ptr [ECX + 0x41c]
MOV dword ptr [EBP + -0x50],ESI
MOV ESI,dword ptr [EAX + EDX*0x4]
MOV dword ptr [EBP + -0x38],EDX
TEST ESI,ESI
JZ 0x00058e6b
MOV EBX,dword ptr [ESI]
MOV ECX,dword ptr [EBX + 0x4]
JMP 0x00058e49
MOV EAX,dword ptr [EBX]
TEST EAX,EAX
JZ 0x00058e6b
MOV ECX,dword ptr [EAX + 0x4]
MOV ESI,EBX
XOR EDX,EDX
MOV EBX,EAX
MOV EAX,ECX
DIV dword ptr [EBP + -0x50]
CMP dword ptr [EBP + -0x38],EDX
JNZ 0x00058e6b
CMP EDI,ECX
JNZ 0x00058e30
MOV EAX,dword ptr [ESI]
TEST EAX,EAX
JZ 0x00058e6b
ADD EAX,0x8
MOV EDI,dword ptr [EBP + -0x30]
MOV dword ptr [EAX],EDI
JMP 0x00058d9d
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EAX + 0x18],ESI
JMP 0x00058d01
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x3c]
PUSH 0xc
CALL 0x001e5200
LEA EDX,[EBP + -0x2c]
MOV dword ptr [EAX],0x0
MOV dword ptr [EAX + 0x4],EDI
MOV dword ptr [EAX + 0x8],0x0
POP ECX
POP EBX
PUSH 0x1
PUSH EAX
PUSH EDI
PUSH dword ptr [EBP + -0x38]
PUSH dword ptr [EBP + -0x4c]
PUSH EDX
CALL 0x0005d420
MOV EAX,dword ptr [EBP + -0x2c]
ADD ESP,0x1c
ADD EAX,0x8
JMP 0x00058e56
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nundefined4 * FUN_00058a70(int param_1,uint param_2)\n\n{\n  byte bVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int *piVar9;\n  int *piVar10;\n  undefined1 *puVar11;\n  int *piVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  int aiStack_80 [9];\n  undefined1 auStack_5c [4];\n  uint *local_58;\n  undefined4 *local_54;\n  int local_50;\n  undefined8 local_4c;\n  int *local_44;\n  undefined **local_40;\n  undefined8 local_3c;\n  undefined4 *local_34;\n  int local_30 [2];\n  int local_28;\n  uint local_24;\n  uint local_20;\n  \n  uVar13 = CONCAT44(local_4c._4_4_,(uint)local_4c);\n  local_40 = &__DT_PLTGOT;\n  puVar11 = auStack_5c;\n  local_50 = param_1 + 0x41c;\n  local_3c._0_4_ = param_2 % *(uint *)(param_1 + 0x420);\n  piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n  if (piVar9 != (int *)0x0) {\n    uVar7 = ((int *)*piVar9)[1];\n    piVar12 = (int *)*piVar9;\n    while (uVar7 != param_2) {\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }\n    if (*piVar9 != 0) {\n      return *(undefined4 **)(*piVar9 + 8);\n    }\n  }\nLAB_00058af8:\n  pbVar6 = *(byte **)(param_1 + 0x18);\n  if (pbVar6 < *(byte **)(param_1 + 0x10)) {\n    local_44 = &local_28;\n    while( true ) {\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    /* try { // try from 00058be1 to 00058be5 has its CatchHandler @ 00058ea8 */\n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }\n    *(byte **)(param_1 + 0x18) = pbVar6;\n  }\n  return (undefined4 *)0x0;\n}\n\n" comment (function_definition "undefined4 * FUN_00058a70(int param_1,uint param_2)\n\n{\n  byte bVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int *piVar9;\n  int *piVar10;\n  undefined1 *puVar11;\n  int *piVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  int aiStack_80 [9];\n  undefined1 auStack_5c [4];\n  uint *local_58;\n  undefined4 *local_54;\n  int local_50;\n  undefined8 local_4c;\n  int *local_44;\n  undefined **local_40;\n  undefined8 local_3c;\n  undefined4 *local_34;\n  int local_30 [2];\n  int local_28;\n  uint local_24;\n  uint local_20;\n  \n  uVar13 = CONCAT44(local_4c._4_4_,(uint)local_4c);\n  local_40 = &__DT_PLTGOT;\n  puVar11 = auStack_5c;\n  local_50 = param_1 + 0x41c;\n  local_3c._0_4_ = param_2 % *(uint *)(param_1 + 0x420);\n  piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n  if (piVar9 != (int *)0x0) {\n    uVar7 = ((int *)*piVar9)[1];\n    piVar12 = (int *)*piVar9;\n    while (uVar7 != param_2) {\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }\n    if (*piVar9 != 0) {\n      return *(undefined4 **)(*piVar9 + 8);\n    }\n  }\nLAB_00058af8:\n  pbVar6 = *(byte **)(param_1 + 0x18);\n  if (pbVar6 < *(byte **)(param_1 + 0x10)) {\n    local_44 = &local_28;\n    while( true ) {\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    /* try { // try from 00058be1 to 00058be5 has its CatchHandler @ 00058ea8 */\n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }\n    *(byte **)(param_1 + 0x18) = pbVar6;\n  }\n  return (undefined4 *)0x0;\n}" type_identifier (pointer_declarator "* FUN_00058a70(int param_1,uint param_2)" * (function_declarator "FUN_00058a70(int param_1,uint param_2)" identifier (parameter_list "(int param_1,uint param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) )))) (compound_statement "{\n  byte bVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int *piVar9;\n  int *piVar10;\n  undefined1 *puVar11;\n  int *piVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  int aiStack_80 [9];\n  undefined1 auStack_5c [4];\n  uint *local_58;\n  undefined4 *local_54;\n  int local_50;\n  undefined8 local_4c;\n  int *local_44;\n  undefined **local_40;\n  undefined8 local_3c;\n  undefined4 *local_34;\n  int local_30 [2];\n  int local_28;\n  uint local_24;\n  uint local_20;\n  \n  uVar13 = CONCAT44(local_4c._4_4_,(uint)local_4c);\n  local_40 = &__DT_PLTGOT;\n  puVar11 = auStack_5c;\n  local_50 = param_1 + 0x41c;\n  local_3c._0_4_ = param_2 % *(uint *)(param_1 + 0x420);\n  piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n  if (piVar9 != (int *)0x0) {\n    uVar7 = ((int *)*piVar9)[1];\n    piVar12 = (int *)*piVar9;\n    while (uVar7 != param_2) {\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }\n    if (*piVar9 != 0) {\n      return *(undefined4 **)(*piVar9 + 8);\n    }\n  }\nLAB_00058af8:\n  pbVar6 = *(byte **)(param_1 + 0x18);\n  if (pbVar6 < *(byte **)(param_1 + 0x10)) {\n    local_44 = &local_28;\n    while( true ) {\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    /* try { // try from 00058be1 to 00058be5 has its CatchHandler @ 00058ea8 */\n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }\n    *(byte **)(param_1 + 0x18) = pbVar6;\n  }\n  return (undefined4 *)0x0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "ulonglong uVar13;" type_identifier identifier ;) (declaration "ulonglong uVar14;" type_identifier identifier ;) (declaration "int aiStack_80 [9];" primitive_type (array_declarator "aiStack_80 [9]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_5c [4];" type_identifier (array_declarator "auStack_5c [4]" identifier [ number_literal ]) ;) (declaration "uint *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "undefined4 *local_54;" type_identifier (pointer_declarator "*local_54" * identifier) ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "undefined8 local_4c;" type_identifier identifier ;) (declaration "int *local_44;" primitive_type (pointer_declarator "*local_44" * identifier) ;) (declaration "undefined **local_40;" type_identifier (pointer_declarator "**local_40" * (pointer_declarator "*local_40" * identifier)) ;) (declaration "undefined8 local_3c;" type_identifier identifier ;) (declaration "undefined4 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30 [2];" primitive_type (array_declarator "local_30 [2]" identifier [ number_literal ]) ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "uint local_20;" type_identifier identifier ;) (expression_statement "uVar13 = CONCAT44(local_4c._4_4_,(uint)local_4c);" (assignment_expression "uVar13 = CONCAT44(local_4c._4_4_,(uint)local_4c)" identifier = (call_expression "CONCAT44(local_4c._4_4_,(uint)local_4c)" identifier (argument_list "(local_4c._4_4_,(uint)local_4c)" ( (field_expression "local_4c._4_4_" identifier . field_identifier) , (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) )))) ;) (expression_statement "local_40 = &__DT_PLTGOT;" (assignment_expression "local_40 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "puVar11 = auStack_5c;" (assignment_expression "puVar11 = auStack_5c" identifier = identifier) ;) (expression_statement "local_50 = param_1 + 0x41c;" (assignment_expression "local_50 = param_1 + 0x41c" identifier = (binary_expression "param_1 + 0x41c" identifier + number_literal)) ;) (expression_statement "local_3c._0_4_ = param_2 % *(uint *)(param_1 + 0x420);" (assignment_expression "local_3c._0_4_ = param_2 % *(uint *)(param_1 + 0x420)" (field_expression "local_3c._0_4_" identifier . field_identifier) = (binary_expression "param_2 % *(uint *)(param_1 + 0x420)" identifier % (pointer_expression "*(uint *)(param_1 + 0x420)" * (cast_expression "(uint *)(param_1 + 0x420)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x420)" ( (binary_expression "param_1 + 0x420" identifier + number_literal) )))))) ;) (expression_statement "piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);" (assignment_expression "piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" identifier = (pointer_expression "*(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" * (cast_expression "(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" ( (binary_expression "*(int *)(param_1 + 0x41c) + (uint)local_3c * 4" (pointer_expression "*(int *)(param_1 + 0x41c)" * (cast_expression "(int *)(param_1 + 0x41c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x41c)" ( (binary_expression "param_1 + 0x41c" identifier + number_literal) )))) + (binary_expression "(uint)local_3c * 4" (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (if_statement "if (piVar9 != (int *)0x0) {\n    uVar7 = ((int *)*piVar9)[1];\n    piVar12 = (int *)*piVar9;\n    while (uVar7 != param_2) {\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }\n    if (*piVar9 != 0) {\n      return *(undefined4 **)(*piVar9 + 8);\n    }\n  }" if (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar7 = ((int *)*piVar9)[1];\n    piVar12 = (int *)*piVar9;\n    while (uVar7 != param_2) {\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }\n    if (*piVar9 != 0) {\n      return *(undefined4 **)(*piVar9 + 8);\n    }\n  }" { (expression_statement "uVar7 = ((int *)*piVar9)[1];" (assignment_expression "uVar7 = ((int *)*piVar9)[1]" identifier = (subscript_expression "((int *)*piVar9)[1]" (parenthesized_expression "((int *)*piVar9)" ( (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier)) )) [ number_literal ])) ;) (expression_statement "piVar12 = (int *)*piVar9;" (assignment_expression "piVar12 = (int *)*piVar9" identifier = (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) (while_statement "while (uVar7 != param_2) {\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }" while (parenthesized_expression "(uVar7 != param_2)" ( (binary_expression "uVar7 != param_2" identifier != identifier) )) (compound_statement "{\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }" { (expression_statement "piVar10 = (int *)*piVar12;" (assignment_expression "piVar10 = (int *)*piVar12" identifier = (cast_expression "(int *)*piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) ;) (if_statement "if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;" if (parenthesized_expression "((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420)))" ( (binary_expression "(piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))" (parenthesized_expression "(piVar10 == (int *)0x0)" ( (binary_expression "piVar10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))" ( (comma_expression "uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420)" (assignment_expression "uVar7 = piVar10[1]" identifier = (subscript_expression "piVar10[1]" identifier [ number_literal ])) , (comma_expression "piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420)" (assignment_expression "piVar9 = piVar12" identifier = identifier) , (comma_expression "piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420)" (assignment_expression "piVar12 = piVar10" identifier = identifier) , (binary_expression "(uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420)" (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier) != (binary_expression "uVar7 % *(uint *)(param_1 + 0x420)" identifier % (pointer_expression "*(uint *)(param_1 + 0x420)" * (cast_expression "(uint *)(param_1 + 0x420)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x420)" ( (binary_expression "param_1 + 0x420" identifier + number_literal) ))))))))) ))) )) (goto_statement "goto LAB_00058af8;" goto statement_identifier ;)) })) (if_statement "if (*piVar9 != 0) {\n      return *(undefined4 **)(*piVar9 + 8);\n    }" if (parenthesized_expression "(*piVar9 != 0)" ( (binary_expression "*piVar9 != 0" (pointer_expression "*piVar9" * identifier) != number_literal) )) (compound_statement "{\n      return *(undefined4 **)(*piVar9 + 8);\n    }" { (return_statement "return *(undefined4 **)(*piVar9 + 8);" return (pointer_expression "*(undefined4 **)(*piVar9 + 8)" * (cast_expression "(undefined4 **)(*piVar9 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar9 + 8)" ( (binary_expression "*piVar9 + 8" (pointer_expression "*piVar9" * identifier) + number_literal) )))) ;) })) })) (labeled_statement "LAB_00058af8:\n  pbVar6 = *(byte **)(param_1 + 0x18);" statement_identifier : (expression_statement "pbVar6 = *(byte **)(param_1 + 0x18);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x18)" identifier = (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;)) (if_statement "if (pbVar6 < *(byte **)(param_1 + 0x10)) {\n    local_44 = &local_28;\n    while( true ) {\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    /* try { // try from 00058be1 to 00058be5 has its CatchHandler @ 00058ea8 */\n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }\n    *(byte **)(param_1 + 0x18) = pbVar6;\n  }" if (parenthesized_expression "(pbVar6 < *(byte **)(param_1 + 0x10))" ( (binary_expression "pbVar6 < *(byte **)(param_1 + 0x10)" identifier < (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )) (compound_statement "{\n    local_44 = &local_28;\n    while( true ) {\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    /* try { // try from 00058be1 to 00058be5 has its CatchHandler @ 00058ea8 */\n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }\n    *(byte **)(param_1 + 0x18) = pbVar6;\n  }" { (expression_statement "local_44 = &local_28;" (assignment_expression "local_44 = &local_28" identifier = (pointer_expression "&local_28" & identifier)) ;) (while_statement "while( true ) {\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    /* try { // try from 00058be1 to 00058be5 has its CatchHandler @ 00058ea8 */\n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    /* try { // try from 00058be1 to 00058be5 has its CatchHandler @ 00058ea8 */\n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }" { (expression_statement "bVar1 = *pbVar6;" (assignment_expression "bVar1 = *pbVar6" identifier = (pointer_expression "*pbVar6" * identifier)) ;) (if_statement "if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }" if (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 ')) )) (compound_statement "{\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }" { (expression_statement "*(uint *)(puVar11 + -8) = (uint)bVar1;" (assignment_expression "*(uint *)(puVar11 + -8) = (uint)bVar1" (pointer_expression "*(uint *)(puVar11 + -8)" * (cast_expression "(uint *)(puVar11 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -8)" ( (binary_expression "puVar11 + -8" identifier + number_literal) )))) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(int **)(puVar11 + -0xc) = local_44;" (assignment_expression "*(int **)(puVar11 + -0xc) = local_44" (pointer_expression "*(int **)(puVar11 + -0xc)" * (cast_expression "(int **)(puVar11 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar11 + -0x10) = pbVar6 + 1;" (assignment_expression "*(byte **)(puVar11 + -0x10) = pbVar6 + 1" (pointer_expression "*(byte **)(puVar11 + -0x10)" * (cast_expression "(byte **)(puVar11 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58d73;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58d73" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_4c = uVar13;" (assignment_expression "local_4c = uVar13" identifier = identifier) ;) (expression_statement "uVar13 = FUN_00095970();" (assignment_expression "uVar13 = FUN_00095970()" identifier = (call_expression "FUN_00095970()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }" else (compound_statement "{\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }" { (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (expression_statement "uVar13 = (ulonglong)(uint)bVar1;" (assignment_expression "uVar13 = (ulonglong)(uint)bVar1" identifier = (cast_expression "(ulonglong)(uint)bVar1" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }))) (expression_statement "pbVar6 = *(byte **)(param_1 + 0x10);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x10)" identifier = (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (uVar13 == 0) break;" if (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));" (assignment_expression "pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18))" identifier = (cast_expression "(byte *)(local_28 + *(int *)(param_1 + 0x18))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + *(int *)(param_1 + 0x18))" ( (binary_expression "local_28 + *(int *)(param_1 + 0x18)" identifier + (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )))) ;) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar8;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar8" (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }" if (parenthesized_expression "(pbVar6 <= pbVar8)" ( (binary_expression "pbVar6 <= pbVar8" identifier <= identifier) )) (compound_statement "{\n        return (undefined4 *)0x0;\n      }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (expression_statement "local_4c = uVar13;" (assignment_expression "local_4c = uVar13" identifier = identifier) ;) (if_statement "if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }" if (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 ')) )) (compound_statement "{\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }" { (expression_statement "*(uint *)(puVar11 + -8) = (uint)bVar1;" (assignment_expression "*(uint *)(puVar11 + -8) = (uint)bVar1" (pointer_expression "*(uint *)(puVar11 + -8)" * (cast_expression "(uint *)(puVar11 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -8)" ( (binary_expression "puVar11 + -8" identifier + number_literal) )))) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(int **)(puVar11 + -0xc) = local_44;" (assignment_expression "*(int **)(puVar11 + -0xc) = local_44" (pointer_expression "*(int **)(puVar11 + -0xc)" * (cast_expression "(int **)(puVar11 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar11 + -0x10) = pbVar8;" (assignment_expression "*(byte **)(puVar11 + -0x10) = pbVar8" (pointer_expression "*(byte **)(puVar11 + -0x10)" * (cast_expression "(byte **)(puVar11 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58de0;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58de0" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_3c = FUN_00095970();" (assignment_expression "local_3c = FUN_00095970()" identifier = (call_expression "FUN_00095970()" identifier (argument_list "()" ( )))) ;) (expression_statement "pbVar6 = *(byte **)(param_1 + 0x10);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x10)" identifier = (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));" (assignment_expression "pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18))" identifier = (cast_expression "(byte *)(local_28 + *(int *)(param_1 + 0x18))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + *(int *)(param_1 + 0x18))" ( (binary_expression "local_28 + *(int *)(param_1 + 0x18)" identifier + (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )))) ;) }) (else_clause "else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }" else (compound_statement "{\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }" { (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (expression_statement "local_3c = (ulonglong)(uint)bVar1;" (assignment_expression "local_3c = (ulonglong)(uint)bVar1" identifier = (cast_expression "(ulonglong)(uint)bVar1" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }))) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar8;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar8" (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }" if (parenthesized_expression "(pbVar6 <= pbVar8)" ( (binary_expression "pbVar6 <= pbVar8" identifier <= identifier) )) (compound_statement "{\n        return (undefined4 *)0x0;\n      }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar8 + 1;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar8 + 1" (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = 0x14;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = 0x14" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" * (cast_expression "(undefined4 *)(puVar11 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58ba1;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58ba1" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)FUN_001e5200();" (assignment_expression "puVar4 = (undefined4 *)FUN_001e5200()" identifier = (cast_expression "(undefined4 *)FUN_001e5200()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5200()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*puVar4 = (uint)local_3c;" (assignment_expression "*puVar4 = (uint)local_3c" (pointer_expression "*puVar4" * identifier) = (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar4[2] = 0;" (assignment_expression "puVar4[2] = 0" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));" (assignment_expression "local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1))" (field_expression "local_3c._0_4_" identifier . field_identifier) = (call_expression "CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1))" identifier (argument_list "(local_3c._1_3_,*(byte *)(puVar4 + 1))" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , (pointer_expression "*(byte *)(puVar4 + 1)" * (cast_expression "(byte *)(puVar4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) )))) )))) ;) (expression_statement "puVar4[3] = 0;" (assignment_expression "puVar4[3] = 0" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;" (assignment_expression "*(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1" (pointer_expression "*(byte *)(puVar4 + 1)" * (cast_expression "(byte *)(puVar4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1" (binary_expression "*(byte *)(puVar4 + 1) & 0xfc" (pointer_expression "*(byte *)(puVar4 + 1)" * (cast_expression "(byte *)(puVar4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) )))) & number_literal) | (binary_expression "bVar1 == 1" identifier == number_literal))) ;) (expression_statement "local_54 = puVar4 + 2;" (assignment_expression "local_54 = puVar4 + 2" identifier = (binary_expression "puVar4 + 2" identifier + number_literal)) ;) (expression_statement "puVar4[4] = 0;" (assignment_expression "puVar4[4] = 0" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = 0x50;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = 0x50" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" * (cast_expression "(undefined4 *)(puVar11 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = number_literal) ;) comment (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58be6;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58be6" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_34 = puVar4;" (assignment_expression "local_34 = puVar4" identifier = identifier) ;) (expression_statement "iVar5 = FUN_001e5200();" (assignment_expression "iVar5 = FUN_001e5200()" identifier = (call_expression "FUN_001e5200()" identifier (argument_list "()" ( )))) ;) (if_statement "if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }" if (parenthesized_expression "(puVar4[2] != 0)" ( (binary_expression "puVar4[2] != 0" (subscript_expression "puVar4[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }" { (expression_statement "*(undefined4 *)(puVar11 + -0x10) = puVar4[2];" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = puVar4[2]" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" * (cast_expression "(undefined4 *)(puVar11 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = (subscript_expression "puVar4[2]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58bfc;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58bfc" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_3c._0_4_ = iVar5;" (assignment_expression "local_3c._0_4_ = iVar5" (field_expression "local_3c._0_4_" identifier . field_identifier) = identifier) ;) (expression_statement "FUN_001e6db0();" (call_expression "FUN_001e6db0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar5 = (uint)local_3c;" (assignment_expression "iVar5 = (uint)local_3c" identifier = (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "local_34[2] = iVar5;" (assignment_expression "local_34[2] = iVar5" (subscript_expression "local_34[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_34[3] = iVar5;" (assignment_expression "local_34[3] = iVar5" (subscript_expression "local_34[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_34[4] = iVar5 + 0x50;" (assignment_expression "local_34[4] = iVar5 + 0x50" (subscript_expression "local_34[4]" identifier [ number_literal ]) = (binary_expression "iVar5 + 0x50" identifier + number_literal)) ;) (expression_statement "pbVar6 = *(byte **)(param_1 + 0x18);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x18)" identifier = (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }" if (parenthesized_expression "(*(byte **)(param_1 + 0x10) <= pbVar6)" ( (binary_expression "*(byte **)(param_1 + 0x10) <= pbVar6" (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n        return (undefined4 *)0x0;\n      }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "local_58 = &local_24;" (assignment_expression "local_58 = &local_24" identifier = (pointer_expression "&local_24" & identifier)) ;) (while_statement "while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }" { (expression_statement "bVar1 = *pbVar6;" (assignment_expression "bVar1 = *pbVar6" identifier = (pointer_expression "*pbVar6" * identifier)) ;) (if_statement "if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }" if (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 ')) )) (compound_statement "{\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }" { (expression_statement "*(uint *)(puVar11 + -8) = (uint)bVar1;" (assignment_expression "*(uint *)(puVar11 + -8) = (uint)bVar1" (pointer_expression "*(uint *)(puVar11 + -8)" * (cast_expression "(uint *)(puVar11 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -8)" ( (binary_expression "puVar11 + -8" identifier + number_literal) )))) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(int **)(puVar11 + -0xc) = local_44;" (assignment_expression "*(int **)(puVar11 + -0xc) = local_44" (pointer_expression "*(int **)(puVar11 + -0xc)" * (cast_expression "(int **)(puVar11 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar11 + -0x10) = pbVar6 + 1;" (assignment_expression "*(byte **)(puVar11 + -0x10) = pbVar6 + 1" (pointer_expression "*(byte **)(puVar11 + -0x10)" * (cast_expression "(byte **)(puVar11 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58ce5;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58ce5" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar13 = FUN_00095970();" (assignment_expression "uVar13 = FUN_00095970()" identifier = (call_expression "FUN_00095970()" identifier (argument_list "()" ( )))) ;) (expression_statement "pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));" (assignment_expression "pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18))" identifier = (cast_expression "(byte *)(local_28 + *(int *)(param_1 + 0x18))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + *(int *)(param_1 + 0x18))" ( (binary_expression "local_28 + *(int *)(param_1 + 0x18)" identifier + (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )))) ;) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar8;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar8" (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }" if (parenthesized_expression "(*(byte **)(param_1 + 0x10) <= pbVar8)" ( (binary_expression "*(byte **)(param_1 + 0x10) <= pbVar8" (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n            return (undefined4 *)0x0;\n          }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }" else (compound_statement "{\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }" { (expression_statement "uVar13 = (ulonglong)(uint)bVar1;" (assignment_expression "uVar13 = (ulonglong)(uint)bVar1" identifier = (cast_expression "(ulonglong)(uint)bVar1" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (expression_statement "pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);" (assignment_expression "pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1)" identifier = (cast_expression "(byte *)(*(int *)(param_1 + 0x18) + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x18) + 1)" ( (binary_expression "*(int *)(param_1 + 0x18) + 1" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar8;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar8" (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }" if (parenthesized_expression "(*(byte **)(param_1 + 0x10) <= pbVar8)" ( (binary_expression "*(byte **)(param_1 + 0x10) <= pbVar8" (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n            return (undefined4 *)0x0;\n          }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }))) (expression_statement "uVar7 = (uint)uVar13;" (assignment_expression "uVar7 = (uint)uVar13" identifier = (cast_expression "(uint)uVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "pbVar6 = pbVar8 + 1;" (assignment_expression "pbVar6 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (if_statement "if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }" if (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 ')) )) (compound_statement "{\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }" { (expression_statement "*(uint *)(puVar11 + -8) = (uint)bVar1;" (assignment_expression "*(uint *)(puVar11 + -8) = (uint)bVar1" (pointer_expression "*(uint *)(puVar11 + -8)" * (cast_expression "(uint *)(puVar11 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -8)" ( (binary_expression "puVar11 + -8" identifier + number_literal) )))) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(int **)(puVar11 + -0xc) = local_44;" (assignment_expression "*(int **)(puVar11 + -0xc) = local_44" (pointer_expression "*(int **)(puVar11 + -0xc)" * (cast_expression "(int **)(puVar11 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar11 + -0x10) = pbVar6;" (assignment_expression "*(byte **)(puVar11 + -0x10) = pbVar6" (pointer_expression "*(byte **)(puVar11 + -0x10)" * (cast_expression "(byte **)(puVar11 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58d28;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58d28" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar14 = FUN_00095970();" (assignment_expression "uVar14 = FUN_00095970()" identifier = (call_expression "FUN_00095970()" identifier (argument_list "()" ( )))) ;) (expression_statement "pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));" (assignment_expression "pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18))" identifier = (cast_expression "(byte *)(local_28 + *(int *)(param_1 + 0x18))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + *(int *)(param_1 + 0x18))" ( (binary_expression "local_28 + *(int *)(param_1 + 0x18)" identifier + (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )))) ;) }) (else_clause "else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }" else (compound_statement "{\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }" { (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (expression_statement "uVar14 = (ulonglong)(uint)bVar1;" (assignment_expression "uVar14 = (ulonglong)(uint)bVar1" identifier = (cast_expression "(ulonglong)(uint)bVar1" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }))) (expression_statement "uVar3 = (uint)local_4c;" (assignment_expression "uVar3 = (uint)local_4c" identifier = (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_3c._4_4_ = (int)(uVar14 >> 0x20);" (assignment_expression "local_3c._4_4_ = (int)(uVar14 >> 0x20)" (field_expression "local_3c._4_4_" identifier . field_identifier) = (cast_expression "(int)(uVar14 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar14 >> 0x20)" ( (binary_expression "uVar14 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "local_3c._0_4_ = (uint)uVar14;" (assignment_expression "local_3c._0_4_ = (uint)uVar14" (field_expression "local_3c._0_4_" identifier . field_identifier) = (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar6;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar6" (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;" if (parenthesized_expression "((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0))" ( (binary_expression "(local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)" (parenthesized_expression "(local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0)" ( (binary_expression "local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0" (binary_expression "local_3c._4_4_ == 0" (field_expression "local_3c._4_4_" identifier . field_identifier) == number_literal) && (binary_expression "(int)(uVar13 >> 0x20) == 0" (cast_expression "(int)(uVar13 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar13 >> 0x20)" ( (binary_expression "uVar13 >> 0x20" identifier >> number_literal) ))) == number_literal)) )) && (parenthesized_expression "((uint)local_3c == 0 && uVar7 == 0)" ( (binary_expression "(uint)local_3c == 0 && uVar7 == 0" (binary_expression "(uint)local_3c == 0" (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier) == number_literal) && (binary_expression "uVar7 == 0" identifier == number_literal)) ))) )) (break_statement "break;" break ;)) (if_statement "if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }" if (parenthesized_expression "(uVar13 == 1)" ( (binary_expression "uVar13 == 1" identifier == number_literal) )) (compound_statement "{\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }" { (expression_statement "*(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;" (assignment_expression "*(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2" (pointer_expression "*(byte *)(local_34 + 1)" * (cast_expression "(byte *)(local_34 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_34 + 1)" ( (binary_expression "local_34 + 1" identifier + number_literal) )))) = (binary_expression "*(byte *)(local_34 + 1) | 2" (pointer_expression "*(byte *)(local_34 + 1)" * (cast_expression "(byte *)(local_34 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_34 + 1)" ( (binary_expression "local_34 + 1" identifier + number_literal) )))) | number_literal)) ;) })) (expression_statement "local_20 = (uint)local_3c;" (assignment_expression "local_20 = (uint)local_3c" identifier = (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar2 = (uint *)local_34[3];" (assignment_expression "puVar2 = (uint *)local_34[3]" identifier = (cast_expression "(uint *)local_34[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_34[3]" identifier [ number_literal ]))) ;) (expression_statement "local_24 = uVar7;" (assignment_expression "local_24 = uVar7" identifier = identifier) ;) (expression_statement "local_3c = uVar14;" (assignment_expression "local_3c = uVar14" identifier = identifier) ;) (if_statement "if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }" if (parenthesized_expression "(puVar2 == (uint *)local_34[4])" ( (binary_expression "puVar2 == (uint *)local_34[4]" identifier == (cast_expression "(uint *)local_34[4]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_34[4]" identifier [ number_literal ]))) )) (compound_statement "{\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }" { (expression_statement "*(uint **)(puVar11 + -8) = local_58;" (assignment_expression "*(uint **)(puVar11 + -8) = local_58" (pointer_expression "*(uint **)(puVar11 + -8)" * (cast_expression "(uint **)(puVar11 + -8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -8)" ( (binary_expression "puVar11 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar11 + -0xc) = puVar2;" (assignment_expression "*(uint **)(puVar11 + -0xc) = puVar2" (pointer_expression "*(uint **)(puVar11 + -0xc)" * (cast_expression "(uint **)(puVar11 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar11 + -0x10) = local_54;" (assignment_expression "*(undefined4 **)(puVar11 + -0x10) = local_54" (pointer_expression "*(undefined4 **)(puVar11 + -0x10)" * (cast_expression "(undefined4 **)(puVar11 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58d4f;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58d4f" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0005b5b0();" (call_expression "FUN_0005b5b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "pbVar6 = *(byte **)(param_1 + 0x18);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x18)" identifier = (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }" else (compound_statement "{\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }" { (expression_statement "*puVar2 = uVar7;" (assignment_expression "*puVar2 = uVar7" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar2[1] = (uint)local_3c;" (assignment_expression "puVar2[1] = (uint)local_3c" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_34[3] = puVar2 + 2;" (assignment_expression "local_34[3] = puVar2 + 2" (subscript_expression "local_34[3]" identifier [ number_literal ]) = (binary_expression "puVar2 + 2" identifier + number_literal)) ;) }))) (if_statement "if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }" if (parenthesized_expression "(*(byte **)(param_1 + 0x10) <= pbVar6)" ( (binary_expression "*(byte **)(param_1 + 0x10) <= pbVar6" (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n          return (undefined4 *)0x0;\n        }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) })) (expression_statement "uVar13 = local_4c;" (assignment_expression "uVar13 = local_4c" identifier = identifier) ;) (if_statement "if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }" if (parenthesized_expression "((uint)local_4c < 0x100)" ( (binary_expression "(uint)local_4c < 0x100" (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }" { (expression_statement "*(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;" (assignment_expression "*(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34" (pointer_expression "*(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4)" * (cast_expression "(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1c + (uint)local_4c * 4)" ( (binary_expression "param_1 + 0x1c + (uint)local_4c * 4" (binary_expression "param_1 + 0x1c" identifier + number_literal) + (binary_expression "(uint)local_4c * 4" (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) = identifier) ;) }) (else_clause "else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }" else (compound_statement "{\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }" { (expression_statement "local_54 = *(undefined4 **)(param_1 + 0x420);" (assignment_expression "local_54 = *(undefined4 **)(param_1 + 0x420)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 0x420)" * (cast_expression "(undefined4 **)(param_1 + 0x420)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x420)" ( (binary_expression "param_1 + 0x420" identifier + number_literal) ))))) ;) (expression_statement "local_3c._0_4_ = (uint)local_4c % (uint)local_54;" (assignment_expression "local_3c._0_4_ = (uint)local_4c % (uint)local_54" (field_expression "local_3c._0_4_" identifier . field_identifier) = (binary_expression "(uint)local_4c % (uint)local_54" (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) % (cast_expression "(uint)local_54" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);" (assignment_expression "piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" identifier = (pointer_expression "*(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" * (cast_expression "(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" ( (binary_expression "*(int *)(param_1 + 0x41c) + (uint)local_3c * 4" (pointer_expression "*(int *)(param_1 + 0x41c)" * (cast_expression "(int *)(param_1 + 0x41c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x41c)" ( (binary_expression "param_1 + 0x41c" identifier + number_literal) )))) + (binary_expression "(uint)local_3c * 4" (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (if_statement "if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }" if (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }" { (expression_statement "uVar7 = ((int *)*piVar9)[1];" (assignment_expression "uVar7 = ((int *)*piVar9)[1]" identifier = (subscript_expression "((int *)*piVar9)[1]" (parenthesized_expression "((int *)*piVar9)" ( (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier)) )) [ number_literal ])) ;) (expression_statement "piVar12 = (int *)*piVar9;" (assignment_expression "piVar12 = (int *)*piVar9" identifier = (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) (while_statement "while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }" while (parenthesized_expression "(piVar10 = piVar12, (uint)local_4c != uVar7)" ( (comma_expression "piVar10 = piVar12, (uint)local_4c != uVar7" (assignment_expression "piVar10 = piVar12" identifier = identifier) , (binary_expression "(uint)local_4c != uVar7" (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) != identifier)) )) (compound_statement "{\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }" { (expression_statement "piVar12 = (int *)*piVar10;" (assignment_expression "piVar12 = (int *)*piVar10" identifier = (cast_expression "(int *)*piVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier))) ;) (if_statement "if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;" if (parenthesized_expression "((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))" ( (binary_expression "(piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54)" (parenthesized_expression "(piVar12 == (int *)0x0)" ( (binary_expression "piVar12 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54)" ( (comma_expression "uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54" (assignment_expression "uVar7 = piVar12[1]" identifier = (subscript_expression "piVar12[1]" identifier [ number_literal ])) , (comma_expression "piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54" (assignment_expression "piVar9 = piVar10" identifier = identifier) , (binary_expression "(uint)local_3c != uVar7 % (uint)local_54" (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier) != (binary_expression "uVar7 % (uint)local_54" identifier % (cast_expression "(uint)local_54" ( (type_descriptor "uint" type_identifier) ) identifier))))) ))) )) (goto_statement "goto LAB_00058e6b;" goto statement_identifier ;)) })) (expression_statement "iVar5 = *piVar9;" (assignment_expression "iVar5 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (if_statement "if (iVar5 != 0) goto LAB_00058e56;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00058e56;" goto statement_identifier ;)) })) (labeled_statement "LAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;" statement_identifier : (expression_statement "*(undefined4 *)(puVar11 + -0x10) = 0xc;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = 0xc" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" * (cast_expression "(undefined4 *)(puVar11 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58e78;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58e78" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)FUN_001e5200();" (assignment_expression "puVar4 = (undefined4 *)FUN_001e5200()" identifier = (cast_expression "(undefined4 *)FUN_001e5200()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5200()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4[1] = uVar3;" (assignment_expression "puVar4[1] = uVar3" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[2] = 0;" (assignment_expression "puVar4[2] = 0" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar11 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar11 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar11 + -0xc)" * (cast_expression "(undefined4 *)(puVar11 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 **)(puVar11 + -0x10) = puVar4;" (assignment_expression "*(undefined4 **)(puVar11 + -0x10) = puVar4" (pointer_expression "*(undefined4 **)(puVar11 + -0x10)" * (cast_expression "(undefined4 **)(puVar11 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar11 + -0x14) = uVar3;" (assignment_expression "*(uint *)(puVar11 + -0x14) = uVar3" (pointer_expression "*(uint *)(puVar11 + -0x14)" * (cast_expression "(uint *)(puVar11 + -0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar11 + -0x18) = (uint)local_3c;" (assignment_expression "*(uint *)(puVar11 + -0x18) = (uint)local_3c" (pointer_expression "*(uint *)(puVar11 + -0x18)" * (cast_expression "(uint *)(puVar11 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x18)" ( (binary_expression "puVar11 + -0x18" identifier + number_literal) )))) = (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(int *)(puVar11 + -0x1c) = local_50;" (assignment_expression "*(int *)(puVar11 + -0x1c) = local_50" (pointer_expression "*(int *)(puVar11 + -0x1c)" * (cast_expression "(int *)(puVar11 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x1c)" ( (binary_expression "puVar11 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar11 + -0x20) = local_30;" (assignment_expression "*(int **)(puVar11 + -0x20) = local_30" (pointer_expression "*(int **)(puVar11 + -0x20)" * (cast_expression "(int **)(puVar11 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x20)" ( (binary_expression "puVar11 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x24) = 0x58e9d;" (assignment_expression "*(undefined4 *)(puVar11 + -0x24) = 0x58e9d" (pointer_expression "*(undefined4 *)(puVar11 + -0x24)" * (cast_expression "(undefined4 *)(puVar11 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x24)" ( (binary_expression "puVar11 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0005d420();" (call_expression "FUN_0005d420()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar11 = puVar11 + -4;" (assignment_expression "puVar11 = puVar11 + -4" identifier = (binary_expression "puVar11 + -4" identifier + number_literal)) ;) (expression_statement "iVar5 = local_30[0];" (assignment_expression "iVar5 = local_30[0]" identifier = (subscript_expression "local_30[0]" identifier [ number_literal ])) ;) (expression_statement "uVar13 = local_4c;" (assignment_expression "uVar13 = local_4c" identifier = identifier) ;) (labeled_statement "LAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);" statement_identifier : (expression_statement "uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);" (assignment_expression "uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c)" identifier = (call_expression "CONCAT44(local_3c._4_4_,(uint)local_3c)" identifier (argument_list "(local_3c._4_4_,(uint)local_3c)" ( (field_expression "local_3c._4_4_" identifier . field_identifier) , (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier) )))) ;)) (expression_statement "*(undefined4 **)(iVar5 + 8) = local_34;" (assignment_expression "*(undefined4 **)(iVar5 + 8) = local_34" (pointer_expression "*(undefined4 **)(iVar5 + 8)" * (cast_expression "(undefined4 **)(iVar5 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "local_4c._4_4_ = (int)(uVar13 >> 0x20);" (assignment_expression "local_4c._4_4_ = (int)(uVar13 >> 0x20)" (field_expression "local_4c._4_4_" identifier . field_identifier) = (cast_expression "(int)(uVar13 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar13 >> 0x20)" ( (binary_expression "uVar13 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "local_4c._0_4_ = (uint)uVar13;" (assignment_expression "local_4c._0_4_ = (uint)uVar13" (field_expression "local_4c._0_4_" identifier . field_identifier) = (cast_expression "(uint)uVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_3c._4_4_ = (int)(uVar14 >> 0x20);" (assignment_expression "local_3c._4_4_ = (int)(uVar14 >> 0x20)" (field_expression "local_3c._4_4_" identifier . field_identifier) = (cast_expression "(int)(uVar14 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar14 >> 0x20)" ( (binary_expression "uVar14 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "local_3c._0_4_ = (uint)uVar14;" (assignment_expression "local_3c._0_4_ = (uint)uVar14" (field_expression "local_3c._0_4_" identifier . field_identifier) = (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }" if (parenthesized_expression "(local_4c._4_4_ == 0 && param_2 == (uint)local_4c)" ( (binary_expression "local_4c._4_4_ == 0 && param_2 == (uint)local_4c" (binary_expression "local_4c._4_4_ == 0" (field_expression "local_4c._4_4_" identifier . field_identifier) == number_literal) && (binary_expression "param_2 == (uint)local_4c" identifier == (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier))) )) (compound_statement "{\n        return local_34;\n      }" { (return_statement "return local_34;" return identifier ;) })) (expression_statement "pbVar6 = *(byte **)(param_1 + 0x18);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x18)" identifier = (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }" if (parenthesized_expression "(*(byte **)(param_1 + 0x10) <= pbVar6)" ( (binary_expression "*(byte **)(param_1 + 0x10) <= pbVar6" (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n        return (undefined4 *)0x0;\n      }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) })) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar6;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar6" (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) })) (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Type propagation algorithm not settling */\n/* DWARF original prototype: Abbrev_code * do_get_abbrev(Dwarf_abbrev_table * this, uint code) */\n\nAbbrev_code * __thiscall gold::Dwarf_abbrev_table::do_get_abbrev(Dwarf_abbrev_table *this,uint code)\n\n{\n  byte bVar1;\n  byte bVar2;\n  _Hash_node_base *p_Var3;\n  pointer pAVar4;\n  iterator __position;\n  Abbrev_code *pAVar5;\n  pointer pAVar6;\n  undefined4 *__n_elt;\n  _Hash_node_base *p_Var7;\n  byte *pbVar8;\n  __node_type *p_Var9;\n  uint uVar10;\n  byte *pbVar11;\n  __bucket_type p_Var12;\n  __bucket_type p_Var13;\n  uint uVar14;\n  ulonglong uVar15;\n  uint64_t uVar16;\n  undefined8 local_4c;\n  undefined8 local_3c;\n  undefined1 local_30 [8];\n  size_t len;\n  uint local_24;\n  float local_20;\n  \n  uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count;\n  uVar10 = code % uVar14;\n  p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10];\n  if (p_Var12 != (__bucket_type)0x0) {\n    p_Var7 = p_Var12->_M_nxt[1]._M_nxt;\n    p_Var13 = p_Var12->_M_nxt;\n    while (p_Var7 != (_Hash_node_base *)code) {\n      p_Var3 = p_Var13->_M_nxt;\n      if ((p_Var3 == (_Hash_node_base *)0x0) ||\n         (p_Var7 = p_Var3[1]._M_nxt, p_Var12 = p_Var13, p_Var13 = p_Var3,\n         uVar10 != (uint)p_Var7 % uVar14)) goto LAB_00058af8;\n    }\n    if (p_Var12->_M_nxt != (_Hash_node_base *)0x0) {\n      return (Abbrev_code *)p_Var12->_M_nxt[2]._M_nxt;\n    }\n  }\nLAB_00058af8:\n  pbVar8 = this->buffer_pos_;\n  if (pbVar8 < this->buffer_end_) {\n    while( true ) {\n      bVar1 = *pbVar8;\n      if ((char)bVar1 < '\0') {\n        local_4c = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n      }\n      else {\n        len = 1;\n        local_4c = (uint64_t)bVar1;\n      }\n      pbVar8 = this->buffer_end_;\n      if (local_4c._4_4_ == 0 && (__node_type *)local_4c == (__node_type *)0x0) break;\n      pbVar11 = this->buffer_pos_ + len;\n      this->buffer_pos_ = pbVar11;\n      if (pbVar8 <= pbVar11) {\n        return (Abbrev_code *)0x0;\n      }\n      bVar1 = *pbVar11;\n      pbVar11 = pbVar11 + 1;\n      if ((char)bVar1 < '\0') {\n        uVar16 = read_unsigned_LEB_128_x(pbVar11,&len,bVar1);\n        uVar14 = (uint)uVar16;\n        pbVar8 = this->buffer_end_;\n        pbVar11 = this->buffer_pos_ + len;\n      }\n      else {\n        len = 1;\n        uVar14 = (uint)bVar1;\n      }\n      this->buffer_pos_ = pbVar11;\n      if (pbVar8 <= pbVar11) {\n        return (Abbrev_code *)0x0;\n      }\n      bVar1 = *pbVar11;\n      this->buffer_pos_ = pbVar11 + 1;\n      pAVar5 = (Abbrev_code *)operator_new(0x14);\n      pAVar5->tag = uVar14;\n      bVar2 = pAVar5->field_0x4;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_start = (pointer)0x0;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish = (pointer)0x0;\n      pAVar5->field_0x4 = bVar2 & 0xfc | bVar1 == 1;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_end_of_storage = (pointer)0x0;\n                    /* try { // try from 00058be1 to 00058be5 has its CatchHandler @ 00058ea8 */\n      pAVar6 = (pointer)operator_new(0x50);\n      pAVar4 = (pAVar5->attributes).\n               super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n               ._M_impl._M_start;\n      if (pAVar4 != (pointer)0x0) {\n        operator_delete(pAVar4);\n      }\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_start = pAVar6;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish = pAVar6;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_end_of_storage = pAVar6 + 10;\n      pbVar8 = this->buffer_pos_;\n      if (this->buffer_end_ <= pbVar8) {\n        return (Abbrev_code *)0x0;\n      }\n      while( true ) {\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          uVar15 = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n          pbVar11 = this->buffer_pos_ + len;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        else {\n          uVar15 = (ulonglong)bVar1;\n          len = 1;\n          pbVar11 = this->buffer_pos_ + 1;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        uVar14 = (uint)uVar15;\n        pbVar8 = pbVar11 + 1;\n        bVar1 = *pbVar11;\n        if ((char)bVar1 < '\0') {\n          local_3c = read_unsigned_LEB_128_x(pbVar8,&len,bVar1);\n          pbVar8 = this->buffer_pos_ + len;\n        }\n        else {\n          len = 1;\n          local_3c = (uint64_t)bVar1;\n        }\n        this->buffer_pos_ = pbVar8;\n        if ((local_3c._4_4_ == 0 && (int)(uVar15 >> 0x20) == 0) &&\n            ((float)local_3c == 0.0 && uVar14 == 0)) break;\n        if (uVar15 == 1) {\n          pAVar5->field_0x4 = pAVar5->field_0x4 | 2;\n        }\n        local_20 = (float)local_3c;\n        __position._M_current =\n             (pAVar5->attributes).\n             super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n             ._M_impl._M_finish;\n        local_24 = uVar14;\n        if (__position._M_current ==\n            (pAVar5->attributes).\n            super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n            ._M_impl._M_end_of_storage) {\n          std::\n          vector<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ::_M_realloc_insert<gold::Dwarf_abbrev_table::Attribute>\n                    (&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc);\n          pbVar8 = this->buffer_pos_;\n        }\n        else {\n          (__position._M_current)->attr = uVar14;\n          (__position._M_current)->form = (uint)(float)local_3c;\n          (pAVar5->attributes).\n          super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }\n        if (this->buffer_end_ <= pbVar8) {\n          return (Abbrev_code *)0x0;\n        }\n      }\n      if ((__node_type *)local_4c < (__node_type *)0x100) {\n        this->low_abbrev_codes_[(int)(__node_type *)local_4c] = pAVar5;\n      }\n      else {\n        uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count;\n        uVar10 = (uint)(__node_type *)local_4c % uVar14;\n        p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10];\n        if (p_Var12 != (__bucket_type)0x0) {\n          p_Var9 = (__node_type *)p_Var12->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var12->_M_nxt;\n          while (p_Var13 = p_Var7, (__node_type *)local_4c != p_Var9) {\n            p_Var7 = p_Var13->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14)) goto LAB_00058e6b;\n          }\n          p_Var7 = p_Var12->_M_nxt;\n          if (p_Var7 != (_Hash_node_base *)0x0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        __n_elt = (undefined4 *)operator_new(0xc);\n        *__n_elt = 0;\n        __n_elt[1] = (__node_type *)local_4c;\n        __n_elt[2] = 0;\n        std::\n        _Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n        ::_M_insert_unique_node\n                  ((_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt);\n        p_Var7 = (_Hash_node_base *)local_30._0_4_;\nLAB_00058e56:\n        p_Var7[2]._M_nxt = (_Hash_node_base *)pAVar5;\n      }\n      if (local_4c._4_4_ == 0 && (__node_type *)code == (__node_type *)local_4c) {\n        return pAVar5;\n      }\n      pbVar8 = this->buffer_pos_;\n      if (this->buffer_end_ <= pbVar8) {\n        return (Abbrev_code *)0x0;\n      }\n    }\n    this->buffer_pos_ = pbVar8;\n  }\n  return (Abbrev_code *)0x0;\n}\n\n" comment comment comment (ERROR "Abbrev_code * __thiscall gold::Dwarf_abbrev_table::do_get_abbrev(Dwarf_abbrev_table *this," (binary_expression "Abbrev_code * __thiscall gold::Dwarf_abbrev_table::do_get_abbrev(Dwarf_abbrev_table *this" (binary_expression "Abbrev_code * __thiscall" identifier * identifier) (ERROR "gold::Dwarf_abbrev_table::do_get_abbrev(Dwarf_abbrev_table" identifier : : identifier : : identifier ( identifier) * identifier) ,) (function_definition "uint code)\n\n{\n  byte bVar1;\n  byte bVar2;\n  _Hash_node_base *p_Var3;\n  pointer pAVar4;\n  iterator __position;\n  Abbrev_code *pAVar5;\n  pointer pAVar6;\n  undefined4 *__n_elt;\n  _Hash_node_base *p_Var7;\n  byte *pbVar8;\n  __node_type *p_Var9;\n  uint uVar10;\n  byte *pbVar11;\n  __bucket_type p_Var12;\n  __bucket_type p_Var13;\n  uint uVar14;\n  ulonglong uVar15;\n  uint64_t uVar16;\n  undefined8 local_4c;\n  undefined8 local_3c;\n  undefined1 local_30 [8];\n  size_t len;\n  uint local_24;\n  float local_20;\n  \n  uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count;\n  uVar10 = code % uVar14;\n  p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10];\n  if (p_Var12 != (__bucket_type)0x0) {\n    p_Var7 = p_Var12->_M_nxt[1]._M_nxt;\n    p_Var13 = p_Var12->_M_nxt;\n    while (p_Var7 != (_Hash_node_base *)code) {\n      p_Var3 = p_Var13->_M_nxt;\n      if ((p_Var3 == (_Hash_node_base *)0x0) ||\n         (p_Var7 = p_Var3[1]._M_nxt, p_Var12 = p_Var13, p_Var13 = p_Var3,\n         uVar10 != (uint)p_Var7 % uVar14)) goto LAB_00058af8;\n    }\n    if (p_Var12->_M_nxt != (_Hash_node_base *)0x0) {\n      return (Abbrev_code *)p_Var12->_M_nxt[2]._M_nxt;\n    }\n  }\nLAB_00058af8:\n  pbVar8 = this->buffer_pos_;\n  if (pbVar8 < this->buffer_end_) {\n    while( true ) {\n      bVar1 = *pbVar8;\n      if ((char)bVar1 < '\0') {\n        local_4c = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n      }\n      else {\n        len = 1;\n        local_4c = (uint64_t)bVar1;\n      }\n      pbVar8 = this->buffer_end_;\n      if (local_4c._4_4_ == 0 && (__node_type *)local_4c == (__node_type *)0x0) break;\n      pbVar11 = this->buffer_pos_ + len;\n      this->buffer_pos_ = pbVar11;\n      if (pbVar8 <= pbVar11) {\n        return (Abbrev_code *)0x0;\n      }\n      bVar1 = *pbVar11;\n      pbVar11 = pbVar11 + 1;\n      if ((char)bVar1 < '\0') {\n        uVar16 = read_unsigned_LEB_128_x(pbVar11,&len,bVar1);\n        uVar14 = (uint)uVar16;\n        pbVar8 = this->buffer_end_;\n        pbVar11 = this->buffer_pos_ + len;\n      }\n      else {\n        len = 1;\n        uVar14 = (uint)bVar1;\n      }\n      this->buffer_pos_ = pbVar11;\n      if (pbVar8 <= pbVar11) {\n        return (Abbrev_code *)0x0;\n      }\n      bVar1 = *pbVar11;\n      this->buffer_pos_ = pbVar11 + 1;\n      pAVar5 = (Abbrev_code *)operator_new(0x14);\n      pAVar5->tag = uVar14;\n      bVar2 = pAVar5->field_0x4;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_start = (pointer)0x0;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish = (pointer)0x0;\n      pAVar5->field_0x4 = bVar2 & 0xfc | bVar1 == 1;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_end_of_storage = (pointer)0x0;\n                    /* try { // try from 00058be1 to 00058be5 has its CatchHandler @ 00058ea8 */\n      pAVar6 = (pointer)operator_new(0x50);\n      pAVar4 = (pAVar5->attributes).\n               super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n               ._M_impl._M_start;\n      if (pAVar4 != (pointer)0x0) {\n        operator_delete(pAVar4);\n      }\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_start = pAVar6;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish = pAVar6;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_end_of_storage = pAVar6 + 10;\n      pbVar8 = this->buffer_pos_;\n      if (this->buffer_end_ <= pbVar8) {\n        return (Abbrev_code *)0x0;\n      }\n      while( true ) {\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          uVar15 = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n          pbVar11 = this->buffer_pos_ + len;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        else {\n          uVar15 = (ulonglong)bVar1;\n          len = 1;\n          pbVar11 = this->buffer_pos_ + 1;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        uVar14 = (uint)uVar15;\n        pbVar8 = pbVar11 + 1;\n        bVar1 = *pbVar11;\n        if ((char)bVar1 < '\0') {\n          local_3c = read_unsigned_LEB_128_x(pbVar8,&len,bVar1);\n          pbVar8 = this->buffer_pos_ + len;\n        }\n        else {\n          len = 1;\n          local_3c = (uint64_t)bVar1;\n        }\n        this->buffer_pos_ = pbVar8;\n        if ((local_3c._4_4_ == 0 && (int)(uVar15 >> 0x20) == 0) &&\n            ((float)local_3c == 0.0 && uVar14 == 0)) break;\n        if (uVar15 == 1) {\n          pAVar5->field_0x4 = pAVar5->field_0x4 | 2;\n        }\n        local_20 = (float)local_3c;\n        __position._M_current =\n             (pAVar5->attributes).\n             super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n             ._M_impl._M_finish;\n        local_24 = uVar14;\n        if (__position._M_current ==\n            (pAVar5->attributes).\n            super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n            ._M_impl._M_end_of_storage) {\n          std::\n          vector<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ::_M_realloc_insert<gold::Dwarf_abbrev_table::Attribute>\n                    (&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc);\n          pbVar8 = this->buffer_pos_;\n        }\n        else {\n          (__position._M_current)->attr = uVar14;\n          (__position._M_current)->form = (uint)(float)local_3c;\n          (pAVar5->attributes).\n          super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }\n        if (this->buffer_end_ <= pbVar8) {\n          return (Abbrev_code *)0x0;\n        }\n      }\n      if ((__node_type *)local_4c < (__node_type *)0x100) {\n        this->low_abbrev_codes_[(int)(__node_type *)local_4c] = pAVar5;\n      }\n      else {\n        uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count;\n        uVar10 = (uint)(__node_type *)local_4c % uVar14;\n        p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10];\n        if (p_Var12 != (__bucket_type)0x0) {\n          p_Var9 = (__node_type *)p_Var12->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var12->_M_nxt;\n          while (p_Var13 = p_Var7, (__node_type *)local_4c != p_Var9) {\n            p_Var7 = p_Var13->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14)) goto LAB_00058e6b;\n          }\n          p_Var7 = p_Var12->_M_nxt;\n          if (p_Var7 != (_Hash_node_base *)0x0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        __n_elt = (undefined4 *)operator_new(0xc);\n        *__n_elt = 0;\n        __n_elt[1] = (__node_type *)local_4c;\n        __n_elt[2] = 0;\n        std::\n        _Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n        ::_M_insert_unique_node\n                  ((_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt);\n        p_Var7 = (_Hash_node_base *)local_30._0_4_;\nLAB_00058e56:\n        p_Var7[2]._M_nxt = (_Hash_node_base *)pAVar5;\n      }\n      if (local_4c._4_4_ == 0 && (__node_type *)code == (__node_type *)local_4c) {\n        return pAVar5;\n      }\n      pbVar8 = this->buffer_pos_;\n      if (this->buffer_end_ <= pbVar8) {\n        return (Abbrev_code *)0x0;\n      }\n    }\n    this->buffer_pos_ = pbVar8;\n  }\n  return (Abbrev_code *)0x0;\n}" type_identifier identifier (ERROR ")" )) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  _Hash_node_base *p_Var3;\n  pointer pAVar4;\n  iterator __position;\n  Abbrev_code *pAVar5;\n  pointer pAVar6;\n  undefined4 *__n_elt;\n  _Hash_node_base *p_Var7;\n  byte *pbVar8;\n  __node_type *p_Var9;\n  uint uVar10;\n  byte *pbVar11;\n  __bucket_type p_Var12;\n  __bucket_type p_Var13;\n  uint uVar14;\n  ulonglong uVar15;\n  uint64_t uVar16;\n  undefined8 local_4c;\n  undefined8 local_3c;\n  undefined1 local_30 [8];\n  size_t len;\n  uint local_24;\n  float local_20;\n  \n  uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count;\n  uVar10 = code % uVar14;\n  p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10];\n  if (p_Var12 != (__bucket_type)0x0) {\n    p_Var7 = p_Var12->_M_nxt[1]._M_nxt;\n    p_Var13 = p_Var12->_M_nxt;\n    while (p_Var7 != (_Hash_node_base *)code) {\n      p_Var3 = p_Var13->_M_nxt;\n      if ((p_Var3 == (_Hash_node_base *)0x0) ||\n         (p_Var7 = p_Var3[1]._M_nxt, p_Var12 = p_Var13, p_Var13 = p_Var3,\n         uVar10 != (uint)p_Var7 % uVar14)) goto LAB_00058af8;\n    }\n    if (p_Var12->_M_nxt != (_Hash_node_base *)0x0) {\n      return (Abbrev_code *)p_Var12->_M_nxt[2]._M_nxt;\n    }\n  }\nLAB_00058af8:\n  pbVar8 = this->buffer_pos_;\n  if (pbVar8 < this->buffer_end_) {\n    while( true ) {\n      bVar1 = *pbVar8;\n      if ((char)bVar1 < '\0') {\n        local_4c = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n      }\n      else {\n        len = 1;\n        local_4c = (uint64_t)bVar1;\n      }\n      pbVar8 = this->buffer_end_;\n      if (local_4c._4_4_ == 0 && (__node_type *)local_4c == (__node_type *)0x0) break;\n      pbVar11 = this->buffer_pos_ + len;\n      this->buffer_pos_ = pbVar11;\n      if (pbVar8 <= pbVar11) {\n        return (Abbrev_code *)0x0;\n      }\n      bVar1 = *pbVar11;\n      pbVar11 = pbVar11 + 1;\n      if ((char)bVar1 < '\0') {\n        uVar16 = read_unsigned_LEB_128_x(pbVar11,&len,bVar1);\n        uVar14 = (uint)uVar16;\n        pbVar8 = this->buffer_end_;\n        pbVar11 = this->buffer_pos_ + len;\n      }\n      else {\n        len = 1;\n        uVar14 = (uint)bVar1;\n      }\n      this->buffer_pos_ = pbVar11;\n      if (pbVar8 <= pbVar11) {\n        return (Abbrev_code *)0x0;\n      }\n      bVar1 = *pbVar11;\n      this->buffer_pos_ = pbVar11 + 1;\n      pAVar5 = (Abbrev_code *)operator_new(0x14);\n      pAVar5->tag = uVar14;\n      bVar2 = pAVar5->field_0x4;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_start = (pointer)0x0;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish = (pointer)0x0;\n      pAVar5->field_0x4 = bVar2 & 0xfc | bVar1 == 1;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_end_of_storage = (pointer)0x0;\n                    /* try { // try from 00058be1 to 00058be5 has its CatchHandler @ 00058ea8 */\n      pAVar6 = (pointer)operator_new(0x50);\n      pAVar4 = (pAVar5->attributes).\n               super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n               ._M_impl._M_start;\n      if (pAVar4 != (pointer)0x0) {\n        operator_delete(pAVar4);\n      }\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_start = pAVar6;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish = pAVar6;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_end_of_storage = pAVar6 + 10;\n      pbVar8 = this->buffer_pos_;\n      if (this->buffer_end_ <= pbVar8) {\n        return (Abbrev_code *)0x0;\n      }\n      while( true ) {\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          uVar15 = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n          pbVar11 = this->buffer_pos_ + len;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        else {\n          uVar15 = (ulonglong)bVar1;\n          len = 1;\n          pbVar11 = this->buffer_pos_ + 1;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        uVar14 = (uint)uVar15;\n        pbVar8 = pbVar11 + 1;\n        bVar1 = *pbVar11;\n        if ((char)bVar1 < '\0') {\n          local_3c = read_unsigned_LEB_128_x(pbVar8,&len,bVar1);\n          pbVar8 = this->buffer_pos_ + len;\n        }\n        else {\n          len = 1;\n          local_3c = (uint64_t)bVar1;\n        }\n        this->buffer_pos_ = pbVar8;\n        if ((local_3c._4_4_ == 0 && (int)(uVar15 >> 0x20) == 0) &&\n            ((float)local_3c == 0.0 && uVar14 == 0)) break;\n        if (uVar15 == 1) {\n          pAVar5->field_0x4 = pAVar5->field_0x4 | 2;\n        }\n        local_20 = (float)local_3c;\n        __position._M_current =\n             (pAVar5->attributes).\n             super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n             ._M_impl._M_finish;\n        local_24 = uVar14;\n        if (__position._M_current ==\n            (pAVar5->attributes).\n            super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n            ._M_impl._M_end_of_storage) {\n          std::\n          vector<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ::_M_realloc_insert<gold::Dwarf_abbrev_table::Attribute>\n                    (&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc);\n          pbVar8 = this->buffer_pos_;\n        }\n        else {\n          (__position._M_current)->attr = uVar14;\n          (__position._M_current)->form = (uint)(float)local_3c;\n          (pAVar5->attributes).\n          super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }\n        if (this->buffer_end_ <= pbVar8) {\n          return (Abbrev_code *)0x0;\n        }\n      }\n      if ((__node_type *)local_4c < (__node_type *)0x100) {\n        this->low_abbrev_codes_[(int)(__node_type *)local_4c] = pAVar5;\n      }\n      else {\n        uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count;\n        uVar10 = (uint)(__node_type *)local_4c % uVar14;\n        p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10];\n        if (p_Var12 != (__bucket_type)0x0) {\n          p_Var9 = (__node_type *)p_Var12->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var12->_M_nxt;\n          while (p_Var13 = p_Var7, (__node_type *)local_4c != p_Var9) {\n            p_Var7 = p_Var13->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14)) goto LAB_00058e6b;\n          }\n          p_Var7 = p_Var12->_M_nxt;\n          if (p_Var7 != (_Hash_node_base *)0x0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        __n_elt = (undefined4 *)operator_new(0xc);\n        *__n_elt = 0;\n        __n_elt[1] = (__node_type *)local_4c;\n        __n_elt[2] = 0;\n        std::\n        _Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n        ::_M_insert_unique_node\n                  ((_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt);\n        p_Var7 = (_Hash_node_base *)local_30._0_4_;\nLAB_00058e56:\n        p_Var7[2]._M_nxt = (_Hash_node_base *)pAVar5;\n      }\n      if (local_4c._4_4_ == 0 && (__node_type *)code == (__node_type *)local_4c) {\n        return pAVar5;\n      }\n      pbVar8 = this->buffer_pos_;\n      if (this->buffer_end_ <= pbVar8) {\n        return (Abbrev_code *)0x0;\n      }\n    }\n    this->buffer_pos_ = pbVar8;\n  }\n  return (Abbrev_code *)0x0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "_Hash_node_base *p_Var3;" type_identifier (pointer_declarator "*p_Var3" * identifier) ;) (declaration "pointer pAVar4;" type_identifier identifier ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "Abbrev_code *pAVar5;" type_identifier (pointer_declarator "*pAVar5" * identifier) ;) (declaration "pointer pAVar6;" type_identifier identifier ;) (declaration "undefined4 *__n_elt;" type_identifier (pointer_declarator "*__n_elt" * identifier) ;) (declaration "_Hash_node_base *p_Var7;" type_identifier (pointer_declarator "*p_Var7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "__node_type *p_Var9;" type_identifier (pointer_declarator "*p_Var9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "__bucket_type p_Var12;" type_identifier identifier ;) (declaration "__bucket_type p_Var13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "ulonglong uVar15;" type_identifier identifier ;) (declaration "uint64_t uVar16;" primitive_type identifier ;) (declaration "undefined8 local_4c;" type_identifier identifier ;) (declaration "undefined8 local_3c;" type_identifier identifier ;) (declaration "undefined1 local_30 [8];" type_identifier (array_declarator "local_30 [8]" identifier [ number_literal ]) ;) (declaration "size_t len;" primitive_type identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "float local_20;" primitive_type identifier ;) (expression_statement "uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count;" (assignment_expression "uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count" identifier = (field_expression "(this->high_abbrev_codes_)._M_h._M_bucket_count" (field_expression "(this->high_abbrev_codes_)._M_h" (parenthesized_expression "(this->high_abbrev_codes_)" ( (field_expression "this->high_abbrev_codes_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar10 = code % uVar14;" (assignment_expression "uVar10 = code % uVar14" identifier = (binary_expression "code % uVar14" identifier % identifier)) ;) (expression_statement "p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10];" (assignment_expression "p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10]" identifier = (subscript_expression "(this->high_abbrev_codes_)._M_h._M_buckets[uVar10]" (field_expression "(this->high_abbrev_codes_)._M_h._M_buckets" (field_expression "(this->high_abbrev_codes_)._M_h" (parenthesized_expression "(this->high_abbrev_codes_)" ( (field_expression "this->high_abbrev_codes_" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ identifier ])) ;) (if_statement "if (p_Var12 != (__bucket_type)0x0) {\n    p_Var7 = p_Var12->_M_nxt[1]._M_nxt;\n    p_Var13 = p_Var12->_M_nxt;\n    while (p_Var7 != (_Hash_node_base *)code) {\n      p_Var3 = p_Var13->_M_nxt;\n      if ((p_Var3 == (_Hash_node_base *)0x0) ||\n         (p_Var7 = p_Var3[1]._M_nxt, p_Var12 = p_Var13, p_Var13 = p_Var3,\n         uVar10 != (uint)p_Var7 % uVar14)) goto LAB_00058af8;\n    }\n    if (p_Var12->_M_nxt != (_Hash_node_base *)0x0) {\n      return (Abbrev_code *)p_Var12->_M_nxt[2]._M_nxt;\n    }\n  }" if (parenthesized_expression "(p_Var12 != (__bucket_type)0x0)" ( (binary_expression "p_Var12 != (__bucket_type)0x0" identifier != (cast_expression "(__bucket_type)0x0" ( (type_descriptor "__bucket_type" type_identifier) ) number_literal)) )) (compound_statement "{\n    p_Var7 = p_Var12->_M_nxt[1]._M_nxt;\n    p_Var13 = p_Var12->_M_nxt;\n    while (p_Var7 != (_Hash_node_base *)code) {\n      p_Var3 = p_Var13->_M_nxt;\n      if ((p_Var3 == (_Hash_node_base *)0x0) ||\n         (p_Var7 = p_Var3[1]._M_nxt, p_Var12 = p_Var13, p_Var13 = p_Var3,\n         uVar10 != (uint)p_Var7 % uVar14)) goto LAB_00058af8;\n    }\n    if (p_Var12->_M_nxt != (_Hash_node_base *)0x0) {\n      return (Abbrev_code *)p_Var12->_M_nxt[2]._M_nxt;\n    }\n  }" { (expression_statement "p_Var7 = p_Var12->_M_nxt[1]._M_nxt;" (assignment_expression "p_Var7 = p_Var12->_M_nxt[1]._M_nxt" identifier = (field_expression "p_Var12->_M_nxt[1]._M_nxt" (subscript_expression "p_Var12->_M_nxt[1]" (field_expression "p_Var12->_M_nxt" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "p_Var13 = p_Var12->_M_nxt;" (assignment_expression "p_Var13 = p_Var12->_M_nxt" identifier = (field_expression "p_Var12->_M_nxt" identifier -> field_identifier)) ;) (while_statement "while (p_Var7 != (_Hash_node_base *)code) {\n      p_Var3 = p_Var13->_M_nxt;\n      if ((p_Var3 == (_Hash_node_base *)0x0) ||\n         (p_Var7 = p_Var3[1]._M_nxt, p_Var12 = p_Var13, p_Var13 = p_Var3,\n         uVar10 != (uint)p_Var7 % uVar14)) goto LAB_00058af8;\n    }" while (parenthesized_expression "(p_Var7 != (_Hash_node_base *)code)" ( (binary_expression "p_Var7 != (_Hash_node_base *)code" identifier != (cast_expression "(_Hash_node_base *)code" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      p_Var3 = p_Var13->_M_nxt;\n      if ((p_Var3 == (_Hash_node_base *)0x0) ||\n         (p_Var7 = p_Var3[1]._M_nxt, p_Var12 = p_Var13, p_Var13 = p_Var3,\n         uVar10 != (uint)p_Var7 % uVar14)) goto LAB_00058af8;\n    }" { (expression_statement "p_Var3 = p_Var13->_M_nxt;" (assignment_expression "p_Var3 = p_Var13->_M_nxt" identifier = (field_expression "p_Var13->_M_nxt" identifier -> field_identifier)) ;) (if_statement "if ((p_Var3 == (_Hash_node_base *)0x0) ||\n         (p_Var7 = p_Var3[1]._M_nxt, p_Var12 = p_Var13, p_Var13 = p_Var3,\n         uVar10 != (uint)p_Var7 % uVar14)) goto LAB_00058af8;" if (parenthesized_expression "((p_Var3 == (_Hash_node_base *)0x0) ||\n         (p_Var7 = p_Var3[1]._M_nxt, p_Var12 = p_Var13, p_Var13 = p_Var3,\n         uVar10 != (uint)p_Var7 % uVar14))" ( (binary_expression "(p_Var3 == (_Hash_node_base *)0x0) ||\n         (p_Var7 = p_Var3[1]._M_nxt, p_Var12 = p_Var13, p_Var13 = p_Var3,\n         uVar10 != (uint)p_Var7 % uVar14)" (parenthesized_expression "(p_Var3 == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var3 == (_Hash_node_base *)0x0" identifier == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(p_Var7 = p_Var3[1]._M_nxt, p_Var12 = p_Var13, p_Var13 = p_Var3,\n         uVar10 != (uint)p_Var7 % uVar14)" ( (comma_expression "p_Var7 = p_Var3[1]._M_nxt, p_Var12 = p_Var13, p_Var13 = p_Var3,\n         uVar10 != (uint)p_Var7 % uVar14" (assignment_expression "p_Var7 = p_Var3[1]._M_nxt" identifier = (field_expression "p_Var3[1]._M_nxt" (subscript_expression "p_Var3[1]" identifier [ number_literal ]) . field_identifier)) , (comma_expression "p_Var12 = p_Var13, p_Var13 = p_Var3,\n         uVar10 != (uint)p_Var7 % uVar14" (assignment_expression "p_Var12 = p_Var13" identifier = identifier) , (comma_expression "p_Var13 = p_Var3,\n         uVar10 != (uint)p_Var7 % uVar14" (assignment_expression "p_Var13 = p_Var3" identifier = identifier) , (binary_expression "uVar10 != (uint)p_Var7 % uVar14" identifier != (binary_expression "(uint)p_Var7 % uVar14" (cast_expression "(uint)p_Var7" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier))))) ))) )) (goto_statement "goto LAB_00058af8;" goto statement_identifier ;)) })) (if_statement "if (p_Var12->_M_nxt != (_Hash_node_base *)0x0) {\n      return (Abbrev_code *)p_Var12->_M_nxt[2]._M_nxt;\n    }" if (parenthesized_expression "(p_Var12->_M_nxt != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var12->_M_nxt != (_Hash_node_base *)0x0" (field_expression "p_Var12->_M_nxt" identifier -> field_identifier) != (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (Abbrev_code *)p_Var12->_M_nxt[2]._M_nxt;\n    }" { (return_statement "return (Abbrev_code *)p_Var12->_M_nxt[2]._M_nxt;" return (cast_expression "(Abbrev_code *)p_Var12->_M_nxt[2]._M_nxt" ( (type_descriptor "Abbrev_code *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var12->_M_nxt[2]._M_nxt" (subscript_expression "p_Var12->_M_nxt[2]" (field_expression "p_Var12->_M_nxt" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) })) })) (labeled_statement "LAB_00058af8:\n  pbVar8 = this->buffer_pos_;" statement_identifier : (expression_statement "pbVar8 = this->buffer_pos_;" (assignment_expression "pbVar8 = this->buffer_pos_" identifier = (field_expression "this->buffer_pos_" identifier -> field_identifier)) ;)) (if_statement "if (pbVar8 < this->buffer_end_) {\n    while( true ) {\n      bVar1 = *pbVar8;\n      if ((char)bVar1 < '\0') {\n        local_4c = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n      }\n      else {\n        len = 1;\n        local_4c = (uint64_t)bVar1;\n      }\n      pbVar8 = this->buffer_end_;\n      if (local_4c._4_4_ == 0 && (__node_type *)local_4c == (__node_type *)0x0) break;\n      pbVar11 = this->buffer_pos_ + len;\n      this->buffer_pos_ = pbVar11;\n      if (pbVar8 <= pbVar11) {\n        return (Abbrev_code *)0x0;\n      }\n      bVar1 = *pbVar11;\n      pbVar11 = pbVar11 + 1;\n      if ((char)bVar1 < '\0') {\n        uVar16 = read_unsigned_LEB_128_x(pbVar11,&len,bVar1);\n        uVar14 = (uint)uVar16;\n        pbVar8 = this->buffer_end_;\n        pbVar11 = this->buffer_pos_ + len;\n      }\n      else {\n        len = 1;\n        uVar14 = (uint)bVar1;\n      }\n      this->buffer_pos_ = pbVar11;\n      if (pbVar8 <= pbVar11) {\n        return (Abbrev_code *)0x0;\n      }\n      bVar1 = *pbVar11;\n      this->buffer_pos_ = pbVar11 + 1;\n      pAVar5 = (Abbrev_code *)operator_new(0x14);\n      pAVar5->tag = uVar14;\n      bVar2 = pAVar5->field_0x4;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_start = (pointer)0x0;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish = (pointer)0x0;\n      pAVar5->field_0x4 = bVar2 & 0xfc | bVar1 == 1;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_end_of_storage = (pointer)0x0;\n                    /* try { // try from 00058be1 to 00058be5 has its CatchHandler @ 00058ea8 */\n      pAVar6 = (pointer)operator_new(0x50);\n      pAVar4 = (pAVar5->attributes).\n               super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n               ._M_impl._M_start;\n      if (pAVar4 != (pointer)0x0) {\n        operator_delete(pAVar4);\n      }\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_start = pAVar6;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish = pAVar6;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_end_of_storage = pAVar6 + 10;\n      pbVar8 = this->buffer_pos_;\n      if (this->buffer_end_ <= pbVar8) {\n        return (Abbrev_code *)0x0;\n      }\n      while( true ) {\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          uVar15 = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n          pbVar11 = this->buffer_pos_ + len;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        else {\n          uVar15 = (ulonglong)bVar1;\n          len = 1;\n          pbVar11 = this->buffer_pos_ + 1;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        uVar14 = (uint)uVar15;\n        pbVar8 = pbVar11 + 1;\n        bVar1 = *pbVar11;\n        if ((char)bVar1 < '\0') {\n          local_3c = read_unsigned_LEB_128_x(pbVar8,&len,bVar1);\n          pbVar8 = this->buffer_pos_ + len;\n        }\n        else {\n          len = 1;\n          local_3c = (uint64_t)bVar1;\n        }\n        this->buffer_pos_ = pbVar8;\n        if ((local_3c._4_4_ == 0 && (int)(uVar15 >> 0x20) == 0) &&\n            ((float)local_3c == 0.0 && uVar14 == 0)) break;\n        if (uVar15 == 1) {\n          pAVar5->field_0x4 = pAVar5->field_0x4 | 2;\n        }\n        local_20 = (float)local_3c;\n        __position._M_current =\n             (pAVar5->attributes).\n             super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n             ._M_impl._M_finish;\n        local_24 = uVar14;\n        if (__position._M_current ==\n            (pAVar5->attributes).\n            super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n            ._M_impl._M_end_of_storage) {\n          std::\n          vector<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ::_M_realloc_insert<gold::Dwarf_abbrev_table::Attribute>\n                    (&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc);\n          pbVar8 = this->buffer_pos_;\n        }\n        else {\n          (__position._M_current)->attr = uVar14;\n          (__position._M_current)->form = (uint)(float)local_3c;\n          (pAVar5->attributes).\n          super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }\n        if (this->buffer_end_ <= pbVar8) {\n          return (Abbrev_code *)0x0;\n        }\n      }\n      if ((__node_type *)local_4c < (__node_type *)0x100) {\n        this->low_abbrev_codes_[(int)(__node_type *)local_4c] = pAVar5;\n      }\n      else {\n        uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count;\n        uVar10 = (uint)(__node_type *)local_4c % uVar14;\n        p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10];\n        if (p_Var12 != (__bucket_type)0x0) {\n          p_Var9 = (__node_type *)p_Var12->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var12->_M_nxt;\n          while (p_Var13 = p_Var7, (__node_type *)local_4c != p_Var9) {\n            p_Var7 = p_Var13->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14)) goto LAB_00058e6b;\n          }\n          p_Var7 = p_Var12->_M_nxt;\n          if (p_Var7 != (_Hash_node_base *)0x0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        __n_elt = (undefined4 *)operator_new(0xc);\n        *__n_elt = 0;\n        __n_elt[1] = (__node_type *)local_4c;\n        __n_elt[2] = 0;\n        std::\n        _Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n        ::_M_insert_unique_node\n                  ((_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt);\n        p_Var7 = (_Hash_node_base *)local_30._0_4_;\nLAB_00058e56:\n        p_Var7[2]._M_nxt = (_Hash_node_base *)pAVar5;\n      }\n      if (local_4c._4_4_ == 0 && (__node_type *)code == (__node_type *)local_4c) {\n        return pAVar5;\n      }\n      pbVar8 = this->buffer_pos_;\n      if (this->buffer_end_ <= pbVar8) {\n        return (Abbrev_code *)0x0;\n      }\n    }\n    this->buffer_pos_ = pbVar8;\n  }" if (parenthesized_expression "(pbVar8 < this->buffer_end_)" ( (binary_expression "pbVar8 < this->buffer_end_" identifier < (field_expression "this->buffer_end_" identifier -> field_identifier)) )) (compound_statement "{\n    while( true ) {\n      bVar1 = *pbVar8;\n      if ((char)bVar1 < '\0') {\n        local_4c = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n      }\n      else {\n        len = 1;\n        local_4c = (uint64_t)bVar1;\n      }\n      pbVar8 = this->buffer_end_;\n      if (local_4c._4_4_ == 0 && (__node_type *)local_4c == (__node_type *)0x0) break;\n      pbVar11 = this->buffer_pos_ + len;\n      this->buffer_pos_ = pbVar11;\n      if (pbVar8 <= pbVar11) {\n        return (Abbrev_code *)0x0;\n      }\n      bVar1 = *pbVar11;\n      pbVar11 = pbVar11 + 1;\n      if ((char)bVar1 < '\0') {\n        uVar16 = read_unsigned_LEB_128_x(pbVar11,&len,bVar1);\n        uVar14 = (uint)uVar16;\n        pbVar8 = this->buffer_end_;\n        pbVar11 = this->buffer_pos_ + len;\n      }\n      else {\n        len = 1;\n        uVar14 = (uint)bVar1;\n      }\n      this->buffer_pos_ = pbVar11;\n      if (pbVar8 <= pbVar11) {\n        return (Abbrev_code *)0x0;\n      }\n      bVar1 = *pbVar11;\n      this->buffer_pos_ = pbVar11 + 1;\n      pAVar5 = (Abbrev_code *)operator_new(0x14);\n      pAVar5->tag = uVar14;\n      bVar2 = pAVar5->field_0x4;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_start = (pointer)0x0;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish = (pointer)0x0;\n      pAVar5->field_0x4 = bVar2 & 0xfc | bVar1 == 1;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_end_of_storage = (pointer)0x0;\n                    /* try { // try from 00058be1 to 00058be5 has its CatchHandler @ 00058ea8 */\n      pAVar6 = (pointer)operator_new(0x50);\n      pAVar4 = (pAVar5->attributes).\n               super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n               ._M_impl._M_start;\n      if (pAVar4 != (pointer)0x0) {\n        operator_delete(pAVar4);\n      }\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_start = pAVar6;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish = pAVar6;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_end_of_storage = pAVar6 + 10;\n      pbVar8 = this->buffer_pos_;\n      if (this->buffer_end_ <= pbVar8) {\n        return (Abbrev_code *)0x0;\n      }\n      while( true ) {\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          uVar15 = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n          pbVar11 = this->buffer_pos_ + len;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        else {\n          uVar15 = (ulonglong)bVar1;\n          len = 1;\n          pbVar11 = this->buffer_pos_ + 1;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        uVar14 = (uint)uVar15;\n        pbVar8 = pbVar11 + 1;\n        bVar1 = *pbVar11;\n        if ((char)bVar1 < '\0') {\n          local_3c = read_unsigned_LEB_128_x(pbVar8,&len,bVar1);\n          pbVar8 = this->buffer_pos_ + len;\n        }\n        else {\n          len = 1;\n          local_3c = (uint64_t)bVar1;\n        }\n        this->buffer_pos_ = pbVar8;\n        if ((local_3c._4_4_ == 0 && (int)(uVar15 >> 0x20) == 0) &&\n            ((float)local_3c == 0.0 && uVar14 == 0)) break;\n        if (uVar15 == 1) {\n          pAVar5->field_0x4 = pAVar5->field_0x4 | 2;\n        }\n        local_20 = (float)local_3c;\n        __position._M_current =\n             (pAVar5->attributes).\n             super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n             ._M_impl._M_finish;\n        local_24 = uVar14;\n        if (__position._M_current ==\n            (pAVar5->attributes).\n            super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n            ._M_impl._M_end_of_storage) {\n          std::\n          vector<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ::_M_realloc_insert<gold::Dwarf_abbrev_table::Attribute>\n                    (&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc);\n          pbVar8 = this->buffer_pos_;\n        }\n        else {\n          (__position._M_current)->attr = uVar14;\n          (__position._M_current)->form = (uint)(float)local_3c;\n          (pAVar5->attributes).\n          super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }\n        if (this->buffer_end_ <= pbVar8) {\n          return (Abbrev_code *)0x0;\n        }\n      }\n      if ((__node_type *)local_4c < (__node_type *)0x100) {\n        this->low_abbrev_codes_[(int)(__node_type *)local_4c] = pAVar5;\n      }\n      else {\n        uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count;\n        uVar10 = (uint)(__node_type *)local_4c % uVar14;\n        p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10];\n        if (p_Var12 != (__bucket_type)0x0) {\n          p_Var9 = (__node_type *)p_Var12->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var12->_M_nxt;\n          while (p_Var13 = p_Var7, (__node_type *)local_4c != p_Var9) {\n            p_Var7 = p_Var13->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14)) goto LAB_00058e6b;\n          }\n          p_Var7 = p_Var12->_M_nxt;\n          if (p_Var7 != (_Hash_node_base *)0x0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        __n_elt = (undefined4 *)operator_new(0xc);\n        *__n_elt = 0;\n        __n_elt[1] = (__node_type *)local_4c;\n        __n_elt[2] = 0;\n        std::\n        _Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n        ::_M_insert_unique_node\n                  ((_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt);\n        p_Var7 = (_Hash_node_base *)local_30._0_4_;\nLAB_00058e56:\n        p_Var7[2]._M_nxt = (_Hash_node_base *)pAVar5;\n      }\n      if (local_4c._4_4_ == 0 && (__node_type *)code == (__node_type *)local_4c) {\n        return pAVar5;\n      }\n      pbVar8 = this->buffer_pos_;\n      if (this->buffer_end_ <= pbVar8) {\n        return (Abbrev_code *)0x0;\n      }\n    }\n    this->buffer_pos_ = pbVar8;\n  }" { (while_statement "while( true ) {\n      bVar1 = *pbVar8;\n      if ((char)bVar1 < '\0') {\n        local_4c = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n      }\n      else {\n        len = 1;\n        local_4c = (uint64_t)bVar1;\n      }\n      pbVar8 = this->buffer_end_;\n      if (local_4c._4_4_ == 0 && (__node_type *)local_4c == (__node_type *)0x0) break;\n      pbVar11 = this->buffer_pos_ + len;\n      this->buffer_pos_ = pbVar11;\n      if (pbVar8 <= pbVar11) {\n        return (Abbrev_code *)0x0;\n      }\n      bVar1 = *pbVar11;\n      pbVar11 = pbVar11 + 1;\n      if ((char)bVar1 < '\0') {\n        uVar16 = read_unsigned_LEB_128_x(pbVar11,&len,bVar1);\n        uVar14 = (uint)uVar16;\n        pbVar8 = this->buffer_end_;\n        pbVar11 = this->buffer_pos_ + len;\n      }\n      else {\n        len = 1;\n        uVar14 = (uint)bVar1;\n      }\n      this->buffer_pos_ = pbVar11;\n      if (pbVar8 <= pbVar11) {\n        return (Abbrev_code *)0x0;\n      }\n      bVar1 = *pbVar11;\n      this->buffer_pos_ = pbVar11 + 1;\n      pAVar5 = (Abbrev_code *)operator_new(0x14);\n      pAVar5->tag = uVar14;\n      bVar2 = pAVar5->field_0x4;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_start = (pointer)0x0;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish = (pointer)0x0;\n      pAVar5->field_0x4 = bVar2 & 0xfc | bVar1 == 1;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_end_of_storage = (pointer)0x0;\n                    /* try { // try from 00058be1 to 00058be5 has its CatchHandler @ 00058ea8 */\n      pAVar6 = (pointer)operator_new(0x50);\n      pAVar4 = (pAVar5->attributes).\n               super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n               ._M_impl._M_start;\n      if (pAVar4 != (pointer)0x0) {\n        operator_delete(pAVar4);\n      }\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_start = pAVar6;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish = pAVar6;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_end_of_storage = pAVar6 + 10;\n      pbVar8 = this->buffer_pos_;\n      if (this->buffer_end_ <= pbVar8) {\n        return (Abbrev_code *)0x0;\n      }\n      while( true ) {\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          uVar15 = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n          pbVar11 = this->buffer_pos_ + len;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        else {\n          uVar15 = (ulonglong)bVar1;\n          len = 1;\n          pbVar11 = this->buffer_pos_ + 1;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        uVar14 = (uint)uVar15;\n        pbVar8 = pbVar11 + 1;\n        bVar1 = *pbVar11;\n        if ((char)bVar1 < '\0') {\n          local_3c = read_unsigned_LEB_128_x(pbVar8,&len,bVar1);\n          pbVar8 = this->buffer_pos_ + len;\n        }\n        else {\n          len = 1;\n          local_3c = (uint64_t)bVar1;\n        }\n        this->buffer_pos_ = pbVar8;\n        if ((local_3c._4_4_ == 0 && (int)(uVar15 >> 0x20) == 0) &&\n            ((float)local_3c == 0.0 && uVar14 == 0)) break;\n        if (uVar15 == 1) {\n          pAVar5->field_0x4 = pAVar5->field_0x4 | 2;\n        }\n        local_20 = (float)local_3c;\n        __position._M_current =\n             (pAVar5->attributes).\n             super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n             ._M_impl._M_finish;\n        local_24 = uVar14;\n        if (__position._M_current ==\n            (pAVar5->attributes).\n            super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n            ._M_impl._M_end_of_storage) {\n          std::\n          vector<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ::_M_realloc_insert<gold::Dwarf_abbrev_table::Attribute>\n                    (&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc);\n          pbVar8 = this->buffer_pos_;\n        }\n        else {\n          (__position._M_current)->attr = uVar14;\n          (__position._M_current)->form = (uint)(float)local_3c;\n          (pAVar5->attributes).\n          super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }\n        if (this->buffer_end_ <= pbVar8) {\n          return (Abbrev_code *)0x0;\n        }\n      }\n      if ((__node_type *)local_4c < (__node_type *)0x100) {\n        this->low_abbrev_codes_[(int)(__node_type *)local_4c] = pAVar5;\n      }\n      else {\n        uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count;\n        uVar10 = (uint)(__node_type *)local_4c % uVar14;\n        p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10];\n        if (p_Var12 != (__bucket_type)0x0) {\n          p_Var9 = (__node_type *)p_Var12->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var12->_M_nxt;\n          while (p_Var13 = p_Var7, (__node_type *)local_4c != p_Var9) {\n            p_Var7 = p_Var13->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14)) goto LAB_00058e6b;\n          }\n          p_Var7 = p_Var12->_M_nxt;\n          if (p_Var7 != (_Hash_node_base *)0x0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        __n_elt = (undefined4 *)operator_new(0xc);\n        *__n_elt = 0;\n        __n_elt[1] = (__node_type *)local_4c;\n        __n_elt[2] = 0;\n        std::\n        _Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n        ::_M_insert_unique_node\n                  ((_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt);\n        p_Var7 = (_Hash_node_base *)local_30._0_4_;\nLAB_00058e56:\n        p_Var7[2]._M_nxt = (_Hash_node_base *)pAVar5;\n      }\n      if (local_4c._4_4_ == 0 && (__node_type *)code == (__node_type *)local_4c) {\n        return pAVar5;\n      }\n      pbVar8 = this->buffer_pos_;\n      if (this->buffer_end_ <= pbVar8) {\n        return (Abbrev_code *)0x0;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      bVar1 = *pbVar8;\n      if ((char)bVar1 < '\0') {\n        local_4c = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n      }\n      else {\n        len = 1;\n        local_4c = (uint64_t)bVar1;\n      }\n      pbVar8 = this->buffer_end_;\n      if (local_4c._4_4_ == 0 && (__node_type *)local_4c == (__node_type *)0x0) break;\n      pbVar11 = this->buffer_pos_ + len;\n      this->buffer_pos_ = pbVar11;\n      if (pbVar8 <= pbVar11) {\n        return (Abbrev_code *)0x0;\n      }\n      bVar1 = *pbVar11;\n      pbVar11 = pbVar11 + 1;\n      if ((char)bVar1 < '\0') {\n        uVar16 = read_unsigned_LEB_128_x(pbVar11,&len,bVar1);\n        uVar14 = (uint)uVar16;\n        pbVar8 = this->buffer_end_;\n        pbVar11 = this->buffer_pos_ + len;\n      }\n      else {\n        len = 1;\n        uVar14 = (uint)bVar1;\n      }\n      this->buffer_pos_ = pbVar11;\n      if (pbVar8 <= pbVar11) {\n        return (Abbrev_code *)0x0;\n      }\n      bVar1 = *pbVar11;\n      this->buffer_pos_ = pbVar11 + 1;\n      pAVar5 = (Abbrev_code *)operator_new(0x14);\n      pAVar5->tag = uVar14;\n      bVar2 = pAVar5->field_0x4;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_start = (pointer)0x0;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish = (pointer)0x0;\n      pAVar5->field_0x4 = bVar2 & 0xfc | bVar1 == 1;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_end_of_storage = (pointer)0x0;\n                    /* try { // try from 00058be1 to 00058be5 has its CatchHandler @ 00058ea8 */\n      pAVar6 = (pointer)operator_new(0x50);\n      pAVar4 = (pAVar5->attributes).\n               super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n               ._M_impl._M_start;\n      if (pAVar4 != (pointer)0x0) {\n        operator_delete(pAVar4);\n      }\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_start = pAVar6;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish = pAVar6;\n      (pAVar5->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_end_of_storage = pAVar6 + 10;\n      pbVar8 = this->buffer_pos_;\n      if (this->buffer_end_ <= pbVar8) {\n        return (Abbrev_code *)0x0;\n      }\n      while( true ) {\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          uVar15 = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n          pbVar11 = this->buffer_pos_ + len;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        else {\n          uVar15 = (ulonglong)bVar1;\n          len = 1;\n          pbVar11 = this->buffer_pos_ + 1;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        uVar14 = (uint)uVar15;\n        pbVar8 = pbVar11 + 1;\n        bVar1 = *pbVar11;\n        if ((char)bVar1 < '\0') {\n          local_3c = read_unsigned_LEB_128_x(pbVar8,&len,bVar1);\n          pbVar8 = this->buffer_pos_ + len;\n        }\n        else {\n          len = 1;\n          local_3c = (uint64_t)bVar1;\n        }\n        this->buffer_pos_ = pbVar8;\n        if ((local_3c._4_4_ == 0 && (int)(uVar15 >> 0x20) == 0) &&\n            ((float)local_3c == 0.0 && uVar14 == 0)) break;\n        if (uVar15 == 1) {\n          pAVar5->field_0x4 = pAVar5->field_0x4 | 2;\n        }\n        local_20 = (float)local_3c;\n        __position._M_current =\n             (pAVar5->attributes).\n             super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n             ._M_impl._M_finish;\n        local_24 = uVar14;\n        if (__position._M_current ==\n            (pAVar5->attributes).\n            super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n            ._M_impl._M_end_of_storage) {\n          std::\n          vector<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ::_M_realloc_insert<gold::Dwarf_abbrev_table::Attribute>\n                    (&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc);\n          pbVar8 = this->buffer_pos_;\n        }\n        else {\n          (__position._M_current)->attr = uVar14;\n          (__position._M_current)->form = (uint)(float)local_3c;\n          (pAVar5->attributes).\n          super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }\n        if (this->buffer_end_ <= pbVar8) {\n          return (Abbrev_code *)0x0;\n        }\n      }\n      if ((__node_type *)local_4c < (__node_type *)0x100) {\n        this->low_abbrev_codes_[(int)(__node_type *)local_4c] = pAVar5;\n      }\n      else {\n        uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count;\n        uVar10 = (uint)(__node_type *)local_4c % uVar14;\n        p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10];\n        if (p_Var12 != (__bucket_type)0x0) {\n          p_Var9 = (__node_type *)p_Var12->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var12->_M_nxt;\n          while (p_Var13 = p_Var7, (__node_type *)local_4c != p_Var9) {\n            p_Var7 = p_Var13->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14)) goto LAB_00058e6b;\n          }\n          p_Var7 = p_Var12->_M_nxt;\n          if (p_Var7 != (_Hash_node_base *)0x0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        __n_elt = (undefined4 *)operator_new(0xc);\n        *__n_elt = 0;\n        __n_elt[1] = (__node_type *)local_4c;\n        __n_elt[2] = 0;\n        std::\n        _Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n        ::_M_insert_unique_node\n                  ((_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt);\n        p_Var7 = (_Hash_node_base *)local_30._0_4_;\nLAB_00058e56:\n        p_Var7[2]._M_nxt = (_Hash_node_base *)pAVar5;\n      }\n      if (local_4c._4_4_ == 0 && (__node_type *)code == (__node_type *)local_4c) {\n        return pAVar5;\n      }\n      pbVar8 = this->buffer_pos_;\n      if (this->buffer_end_ <= pbVar8) {\n        return (Abbrev_code *)0x0;\n      }\n    }" { (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (if_statement "if ((char)bVar1 < '\0') {\n        local_4c = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n      }\n      else {\n        len = 1;\n        local_4c = (uint64_t)bVar1;\n      }" if (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 ')) )) (compound_statement "{\n        local_4c = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n      }" { (expression_statement "local_4c = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);" (assignment_expression "local_4c = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1)" identifier = (call_expression "read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1)" identifier (argument_list "(pbVar8 + 1,&len,bVar1)" ( (binary_expression "pbVar8 + 1" identifier + number_literal) , (pointer_expression "&len" & identifier) , identifier )))) ;) }) (else_clause "else {\n        len = 1;\n        local_4c = (uint64_t)bVar1;\n      }" else (compound_statement "{\n        len = 1;\n        local_4c = (uint64_t)bVar1;\n      }" { (expression_statement "len = 1;" (assignment_expression "len = 1" identifier = number_literal) ;) (expression_statement "local_4c = (uint64_t)bVar1;" (assignment_expression "local_4c = (uint64_t)bVar1" identifier = (cast_expression "(uint64_t)bVar1" ( (type_descriptor "uint64_t" primitive_type) ) identifier)) ;) }))) (expression_statement "pbVar8 = this->buffer_end_;" (assignment_expression "pbVar8 = this->buffer_end_" identifier = (field_expression "this->buffer_end_" identifier -> field_identifier)) ;) (if_statement "if (local_4c._4_4_ == 0 && (__node_type *)local_4c == (__node_type *)0x0) break;" if (parenthesized_expression "(local_4c._4_4_ == 0 && (__node_type *)local_4c == (__node_type *)0x0)" ( (binary_expression "local_4c._4_4_ == 0 && (__node_type *)local_4c == (__node_type *)0x0" (binary_expression "local_4c._4_4_ == 0" (field_expression "local_4c._4_4_" identifier . field_identifier) == number_literal) && (binary_expression "(__node_type *)local_4c == (__node_type *)0x0" (cast_expression "(__node_type *)local_4c" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == (cast_expression "(__node_type *)0x0" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (break_statement "break;" break ;)) (expression_statement "pbVar11 = this->buffer_pos_ + len;" (assignment_expression "pbVar11 = this->buffer_pos_ + len" identifier = (binary_expression "this->buffer_pos_ + len" (field_expression "this->buffer_pos_" identifier -> field_identifier) + identifier)) ;) (expression_statement "this->buffer_pos_ = pbVar11;" (assignment_expression "this->buffer_pos_ = pbVar11" (field_expression "this->buffer_pos_" identifier -> field_identifier) = identifier) ;) (if_statement "if (pbVar8 <= pbVar11) {\n        return (Abbrev_code *)0x0;\n      }" if (parenthesized_expression "(pbVar8 <= pbVar11)" ( (binary_expression "pbVar8 <= pbVar11" identifier <= identifier) )) (compound_statement "{\n        return (Abbrev_code *)0x0;\n      }" { (return_statement "return (Abbrev_code *)0x0;" return (cast_expression "(Abbrev_code *)0x0" ( (type_descriptor "Abbrev_code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "bVar1 = *pbVar11;" (assignment_expression "bVar1 = *pbVar11" identifier = (pointer_expression "*pbVar11" * identifier)) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (if_statement "if ((char)bVar1 < '\0') {\n        uVar16 = read_unsigned_LEB_128_x(pbVar11,&len,bVar1);\n        uVar14 = (uint)uVar16;\n        pbVar8 = this->buffer_end_;\n        pbVar11 = this->buffer_pos_ + len;\n      }\n      else {\n        len = 1;\n        uVar14 = (uint)bVar1;\n      }" if (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 ')) )) (compound_statement "{\n        uVar16 = read_unsigned_LEB_128_x(pbVar11,&len,bVar1);\n        uVar14 = (uint)uVar16;\n        pbVar8 = this->buffer_end_;\n        pbVar11 = this->buffer_pos_ + len;\n      }" { (expression_statement "uVar16 = read_unsigned_LEB_128_x(pbVar11,&len,bVar1);" (assignment_expression "uVar16 = read_unsigned_LEB_128_x(pbVar11,&len,bVar1)" identifier = (call_expression "read_unsigned_LEB_128_x(pbVar11,&len,bVar1)" identifier (argument_list "(pbVar11,&len,bVar1)" ( identifier , (pointer_expression "&len" & identifier) , identifier )))) ;) (expression_statement "uVar14 = (uint)uVar16;" (assignment_expression "uVar14 = (uint)uVar16" identifier = (cast_expression "(uint)uVar16" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "pbVar8 = this->buffer_end_;" (assignment_expression "pbVar8 = this->buffer_end_" identifier = (field_expression "this->buffer_end_" identifier -> field_identifier)) ;) (expression_statement "pbVar11 = this->buffer_pos_ + len;" (assignment_expression "pbVar11 = this->buffer_pos_ + len" identifier = (binary_expression "this->buffer_pos_ + len" (field_expression "this->buffer_pos_" identifier -> field_identifier) + identifier)) ;) }) (else_clause "else {\n        len = 1;\n        uVar14 = (uint)bVar1;\n      }" else (compound_statement "{\n        len = 1;\n        uVar14 = (uint)bVar1;\n      }" { (expression_statement "len = 1;" (assignment_expression "len = 1" identifier = number_literal) ;) (expression_statement "uVar14 = (uint)bVar1;" (assignment_expression "uVar14 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (expression_statement "this->buffer_pos_ = pbVar11;" (assignment_expression "this->buffer_pos_ = pbVar11" (field_expression "this->buffer_pos_" identifier -> field_identifier) = identifier) ;) (if_statement "if (pbVar8 <= pbVar11) {\n        return (Abbrev_code *)0x0;\n      }" if (parenthesized_expression "(pbVar8 <= pbVar11)" ( (binary_expression "pbVar8 <= pbVar11" identifier <= identifier) )) (compound_statement "{\n        return (Abbrev_code *)0x0;\n      }" { (return_statement "return (Abbrev_code *)0x0;" return (cast_expression "(Abbrev_code *)0x0" ( (type_descriptor "Abbrev_code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "bVar1 = *pbVar11;" (assignment_expression "bVar1 = *pbVar11" identifier = (pointer_expression "*pbVar11" * identifier)) ;) (expression_statement "this->buffer_pos_ = pbVar11 + 1;" (assignment_expression "this->buffer_pos_ = pbVar11 + 1" (field_expression "this->buffer_pos_" identifier -> field_identifier) = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "pAVar5 = (Abbrev_code *)operator_new(0x14);" (assignment_expression "pAVar5 = (Abbrev_code *)operator_new(0x14)" identifier = (cast_expression "(Abbrev_code *)operator_new(0x14)" ( (type_descriptor "Abbrev_code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "pAVar5->tag = uVar14;" (assignment_expression "pAVar5->tag = uVar14" (field_expression "pAVar5->tag" identifier -> field_identifier) = identifier) ;) (expression_statement "bVar2 = pAVar5->field_0x4;" (assignment_expression "bVar2 = pAVar5->field_0x4" identifier = (field_expression "pAVar5->field_0x4" identifier -> field_identifier)) ;) (ERROR "(pAVar5->attributes).\n      super__Vector_base<gold::" (binary_expression "(pAVar5->attributes).\n      super__Vector_base<gold" (field_expression "(pAVar5->attributes).\n      super__Vector_base" (parenthesized_expression "(pAVar5->attributes)" ( (field_expression "pAVar5->attributes" identifier -> field_identifier) )) . field_identifier) < identifier) : :) (labeled_statement "Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_start = (pointer)0x0;" statement_identifier (ERROR "::Attribute,_std::allocator<gold:" : : (comma_expression "Attribute,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_start = (pointer)0x0;" statement_identifier : (ERROR ":" :) (expression_statement "Attribute>_>\n      ._M_impl._M_start = (pointer)0x0;" (assignment_expression "Attribute>_>\n      ._M_impl._M_start = (pointer)0x0" (field_expression "Attribute>_>\n      ._M_impl._M_start" (field_expression "Attribute>_>\n      ._M_impl" (binary_expression "Attribute>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;))) (ERROR "(pAVar5->attributes).\n      super__Vector_base<gold::" (binary_expression "(pAVar5->attributes).\n      super__Vector_base<gold" (field_expression "(pAVar5->attributes).\n      super__Vector_base" (parenthesized_expression "(pAVar5->attributes)" ( (field_expression "pAVar5->attributes" identifier -> field_identifier) )) . field_identifier) < identifier) : :) (labeled_statement "Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish = (pointer)0x0;" statement_identifier (ERROR "::Attribute,_std::allocator<gold:" : : (comma_expression "Attribute,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish = (pointer)0x0;" statement_identifier : (ERROR ":" :) (expression_statement "Attribute>_>\n      ._M_impl._M_finish = (pointer)0x0;" (assignment_expression "Attribute>_>\n      ._M_impl._M_finish = (pointer)0x0" (field_expression "Attribute>_>\n      ._M_impl._M_finish" (field_expression "Attribute>_>\n      ._M_impl" (binary_expression "Attribute>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;))) (expression_statement "pAVar5->field_0x4 = bVar2 & 0xfc | bVar1 == 1;" (assignment_expression "pAVar5->field_0x4 = bVar2 & 0xfc | bVar1 == 1" (field_expression "pAVar5->field_0x4" identifier -> field_identifier) = (binary_expression "bVar2 & 0xfc | bVar1 == 1" (binary_expression "bVar2 & 0xfc" identifier & number_literal) | (binary_expression "bVar1 == 1" identifier == number_literal))) ;) (ERROR "(pAVar5->attributes).\n      super__Vector_base<gold::" (binary_expression "(pAVar5->attributes).\n      super__Vector_base<gold" (field_expression "(pAVar5->attributes).\n      super__Vector_base" (parenthesized_expression "(pAVar5->attributes)" ( (field_expression "pAVar5->attributes" identifier -> field_identifier) )) . field_identifier) < identifier) : :) (labeled_statement "Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_end_of_storage = (pointer)0x0;" statement_identifier (ERROR "::Attribute,_std::allocator<gold:" : : (comma_expression "Attribute,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_end_of_storage = (pointer)0x0;" statement_identifier : (ERROR ":" :) (expression_statement "Attribute>_>\n      ._M_impl._M_end_of_storage = (pointer)0x0;" (assignment_expression "Attribute>_>\n      ._M_impl._M_end_of_storage = (pointer)0x0" (field_expression "Attribute>_>\n      ._M_impl._M_end_of_storage" (field_expression "Attribute>_>\n      ._M_impl" (binary_expression "Attribute>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;))) comment (expression_statement "pAVar6 = (pointer)operator_new(0x50);" (assignment_expression "pAVar6 = (pointer)operator_new(0x50)" identifier = (cast_expression "(pointer)operator_new(0x50)" ( (type_descriptor "pointer" type_identifier) ) (call_expression "operator_new(0x50)" identifier (argument_list "(0x50)" ( number_literal ))))) ;) (ERROR "pAVar4 = (pAVar5->attributes).\n               super__Vector_base<gold::" (assignment_expression "pAVar4 = (pAVar5->attributes).\n               super__Vector_base<gold" identifier = (binary_expression "(pAVar5->attributes).\n               super__Vector_base<gold" (field_expression "(pAVar5->attributes).\n               super__Vector_base" (parenthesized_expression "(pAVar5->attributes)" ( (field_expression "pAVar5->attributes" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n               ._M_impl._M_start;" statement_identifier (ERROR "::Attribute,_std::allocator<gold:" : : (comma_expression "Attribute,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_abbrev_table::Attribute>_>\n               ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Attribute>_>\n               ._M_impl._M_start;" (field_expression "Attribute>_>\n               ._M_impl._M_start" (field_expression "Attribute>_>\n               ._M_impl" (binary_expression "Attribute>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (if_statement "if (pAVar4 != (pointer)0x0) {\n        operator_delete(pAVar4);\n      }" if (parenthesized_expression "(pAVar4 != (pointer)0x0)" ( (binary_expression "pAVar4 != (pointer)0x0" identifier != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) )) (compound_statement "{\n        operator_delete(pAVar4);\n      }" { (expression_statement "operator_delete(pAVar4);" (call_expression "operator_delete(pAVar4)" identifier (argument_list "(pAVar4)" ( identifier ))) ;) })) (ERROR "(pAVar5->attributes).\n      super__Vector_base<gold::" (binary_expression "(pAVar5->attributes).\n      super__Vector_base<gold" (field_expression "(pAVar5->attributes).\n      super__Vector_base" (parenthesized_expression "(pAVar5->attributes)" ( (field_expression "pAVar5->attributes" identifier -> field_identifier) )) . field_identifier) < identifier) : :) (labeled_statement "Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_start = pAVar6;" statement_identifier (ERROR "::Attribute,_std::allocator<gold:" : : (comma_expression "Attribute,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_start = pAVar6;" statement_identifier : (ERROR ":" :) (expression_statement "Attribute>_>\n      ._M_impl._M_start = pAVar6;" (assignment_expression "Attribute>_>\n      ._M_impl._M_start = pAVar6" (field_expression "Attribute>_>\n      ._M_impl._M_start" (field_expression "Attribute>_>\n      ._M_impl" (binary_expression "Attribute>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = identifier) ;))) (ERROR "(pAVar5->attributes).\n      super__Vector_base<gold::" (binary_expression "(pAVar5->attributes).\n      super__Vector_base<gold" (field_expression "(pAVar5->attributes).\n      super__Vector_base" (parenthesized_expression "(pAVar5->attributes)" ( (field_expression "pAVar5->attributes" identifier -> field_identifier) )) . field_identifier) < identifier) : :) (labeled_statement "Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish = pAVar6;" statement_identifier (ERROR "::Attribute,_std::allocator<gold:" : : (comma_expression "Attribute,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish = pAVar6;" statement_identifier : (ERROR ":" :) (expression_statement "Attribute>_>\n      ._M_impl._M_finish = pAVar6;" (assignment_expression "Attribute>_>\n      ._M_impl._M_finish = pAVar6" (field_expression "Attribute>_>\n      ._M_impl._M_finish" (field_expression "Attribute>_>\n      ._M_impl" (binary_expression "Attribute>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = identifier) ;))) (ERROR "(pAVar5->attributes).\n      super__Vector_base<gold::" (binary_expression "(pAVar5->attributes).\n      super__Vector_base<gold" (field_expression "(pAVar5->attributes).\n      super__Vector_base" (parenthesized_expression "(pAVar5->attributes)" ( (field_expression "pAVar5->attributes" identifier -> field_identifier) )) . field_identifier) < identifier) : :) (labeled_statement "Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_end_of_storage = pAVar6 + 10;" statement_identifier (ERROR "::Attribute,_std::allocator<gold:" : : (comma_expression "Attribute,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_end_of_storage = pAVar6 + 10;" statement_identifier : (ERROR ":" :) (expression_statement "Attribute>_>\n      ._M_impl._M_end_of_storage = pAVar6 + 10;" (assignment_expression "Attribute>_>\n      ._M_impl._M_end_of_storage = pAVar6 + 10" (field_expression "Attribute>_>\n      ._M_impl._M_end_of_storage" (field_expression "Attribute>_>\n      ._M_impl" (binary_expression "Attribute>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (binary_expression "pAVar6 + 10" identifier + number_literal)) ;))) (expression_statement "pbVar8 = this->buffer_pos_;" (assignment_expression "pbVar8 = this->buffer_pos_" identifier = (field_expression "this->buffer_pos_" identifier -> field_identifier)) ;) (if_statement "if (this->buffer_end_ <= pbVar8) {\n        return (Abbrev_code *)0x0;\n      }" if (parenthesized_expression "(this->buffer_end_ <= pbVar8)" ( (binary_expression "this->buffer_end_ <= pbVar8" (field_expression "this->buffer_end_" identifier -> field_identifier) <= identifier) )) (compound_statement "{\n        return (Abbrev_code *)0x0;\n      }" { (return_statement "return (Abbrev_code *)0x0;" return (cast_expression "(Abbrev_code *)0x0" ( (type_descriptor "Abbrev_code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (while_statement "while( true ) {\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          uVar15 = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n          pbVar11 = this->buffer_pos_ + len;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        else {\n          uVar15 = (ulonglong)bVar1;\n          len = 1;\n          pbVar11 = this->buffer_pos_ + 1;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        uVar14 = (uint)uVar15;\n        pbVar8 = pbVar11 + 1;\n        bVar1 = *pbVar11;\n        if ((char)bVar1 < '\0') {\n          local_3c = read_unsigned_LEB_128_x(pbVar8,&len,bVar1);\n          pbVar8 = this->buffer_pos_ + len;\n        }\n        else {\n          len = 1;\n          local_3c = (uint64_t)bVar1;\n        }\n        this->buffer_pos_ = pbVar8;\n        if ((local_3c._4_4_ == 0 && (int)(uVar15 >> 0x20) == 0) &&\n            ((float)local_3c == 0.0 && uVar14 == 0)) break;\n        if (uVar15 == 1) {\n          pAVar5->field_0x4 = pAVar5->field_0x4 | 2;\n        }\n        local_20 = (float)local_3c;\n        __position._M_current =\n             (pAVar5->attributes).\n             super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n             ._M_impl._M_finish;\n        local_24 = uVar14;\n        if (__position._M_current ==\n            (pAVar5->attributes).\n            super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n            ._M_impl._M_end_of_storage) {\n          std::\n          vector<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ::_M_realloc_insert<gold::Dwarf_abbrev_table::Attribute>\n                    (&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc);\n          pbVar8 = this->buffer_pos_;\n        }\n        else {\n          (__position._M_current)->attr = uVar14;\n          (__position._M_current)->form = (uint)(float)local_3c;\n          (pAVar5->attributes).\n          super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }\n        if (this->buffer_end_ <= pbVar8) {\n          return (Abbrev_code *)0x0;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          uVar15 = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n          pbVar11 = this->buffer_pos_ + len;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        else {\n          uVar15 = (ulonglong)bVar1;\n          len = 1;\n          pbVar11 = this->buffer_pos_ + 1;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        uVar14 = (uint)uVar15;\n        pbVar8 = pbVar11 + 1;\n        bVar1 = *pbVar11;\n        if ((char)bVar1 < '\0') {\n          local_3c = read_unsigned_LEB_128_x(pbVar8,&len,bVar1);\n          pbVar8 = this->buffer_pos_ + len;\n        }\n        else {\n          len = 1;\n          local_3c = (uint64_t)bVar1;\n        }\n        this->buffer_pos_ = pbVar8;\n        if ((local_3c._4_4_ == 0 && (int)(uVar15 >> 0x20) == 0) &&\n            ((float)local_3c == 0.0 && uVar14 == 0)) break;\n        if (uVar15 == 1) {\n          pAVar5->field_0x4 = pAVar5->field_0x4 | 2;\n        }\n        local_20 = (float)local_3c;\n        __position._M_current =\n             (pAVar5->attributes).\n             super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n             ._M_impl._M_finish;\n        local_24 = uVar14;\n        if (__position._M_current ==\n            (pAVar5->attributes).\n            super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n            ._M_impl._M_end_of_storage) {\n          std::\n          vector<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ::_M_realloc_insert<gold::Dwarf_abbrev_table::Attribute>\n                    (&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc);\n          pbVar8 = this->buffer_pos_;\n        }\n        else {\n          (__position._M_current)->attr = uVar14;\n          (__position._M_current)->form = (uint)(float)local_3c;\n          (pAVar5->attributes).\n          super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }\n        if (this->buffer_end_ <= pbVar8) {\n          return (Abbrev_code *)0x0;\n        }\n      }" { (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (if_statement "if ((char)bVar1 < '\0') {\n          uVar15 = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n          pbVar11 = this->buffer_pos_ + len;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }\n        else {\n          uVar15 = (ulonglong)bVar1;\n          len = 1;\n          pbVar11 = this->buffer_pos_ + 1;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }" if (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 ')) )) (compound_statement "{\n          uVar15 = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);\n          pbVar11 = this->buffer_pos_ + len;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }" { (expression_statement "uVar15 = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1);" (assignment_expression "uVar15 = read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1)" identifier = (call_expression "read_unsigned_LEB_128_x(pbVar8 + 1,&len,bVar1)" identifier (argument_list "(pbVar8 + 1,&len,bVar1)" ( (binary_expression "pbVar8 + 1" identifier + number_literal) , (pointer_expression "&len" & identifier) , identifier )))) ;) (expression_statement "pbVar11 = this->buffer_pos_ + len;" (assignment_expression "pbVar11 = this->buffer_pos_ + len" identifier = (binary_expression "this->buffer_pos_ + len" (field_expression "this->buffer_pos_" identifier -> field_identifier) + identifier)) ;) (expression_statement "this->buffer_pos_ = pbVar11;" (assignment_expression "this->buffer_pos_ = pbVar11" (field_expression "this->buffer_pos_" identifier -> field_identifier) = identifier) ;) (if_statement "if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }" if (parenthesized_expression "(this->buffer_end_ <= pbVar11)" ( (binary_expression "this->buffer_end_ <= pbVar11" (field_expression "this->buffer_end_" identifier -> field_identifier) <= identifier) )) (compound_statement "{\n            return (Abbrev_code *)0x0;\n          }" { (return_statement "return (Abbrev_code *)0x0;" return (cast_expression "(Abbrev_code *)0x0" ( (type_descriptor "Abbrev_code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n          uVar15 = (ulonglong)bVar1;\n          len = 1;\n          pbVar11 = this->buffer_pos_ + 1;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }" else (compound_statement "{\n          uVar15 = (ulonglong)bVar1;\n          len = 1;\n          pbVar11 = this->buffer_pos_ + 1;\n          this->buffer_pos_ = pbVar11;\n          if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }\n        }" { (expression_statement "uVar15 = (ulonglong)bVar1;" (assignment_expression "uVar15 = (ulonglong)bVar1" identifier = (cast_expression "(ulonglong)bVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ;) (expression_statement "len = 1;" (assignment_expression "len = 1" identifier = number_literal) ;) (expression_statement "pbVar11 = this->buffer_pos_ + 1;" (assignment_expression "pbVar11 = this->buffer_pos_ + 1" identifier = (binary_expression "this->buffer_pos_ + 1" (field_expression "this->buffer_pos_" identifier -> field_identifier) + number_literal)) ;) (expression_statement "this->buffer_pos_ = pbVar11;" (assignment_expression "this->buffer_pos_ = pbVar11" (field_expression "this->buffer_pos_" identifier -> field_identifier) = identifier) ;) (if_statement "if (this->buffer_end_ <= pbVar11) {\n            return (Abbrev_code *)0x0;\n          }" if (parenthesized_expression "(this->buffer_end_ <= pbVar11)" ( (binary_expression "this->buffer_end_ <= pbVar11" (field_expression "this->buffer_end_" identifier -> field_identifier) <= identifier) )) (compound_statement "{\n            return (Abbrev_code *)0x0;\n          }" { (return_statement "return (Abbrev_code *)0x0;" return (cast_expression "(Abbrev_code *)0x0" ( (type_descriptor "Abbrev_code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }))) (expression_statement "uVar14 = (uint)uVar15;" (assignment_expression "uVar14 = (uint)uVar15" identifier = (cast_expression "(uint)uVar15" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "pbVar8 = pbVar11 + 1;" (assignment_expression "pbVar8 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = *pbVar11;" (assignment_expression "bVar1 = *pbVar11" identifier = (pointer_expression "*pbVar11" * identifier)) ;) (if_statement "if ((char)bVar1 < '\0') {\n          local_3c = read_unsigned_LEB_128_x(pbVar8,&len,bVar1);\n          pbVar8 = this->buffer_pos_ + len;\n        }\n        else {\n          len = 1;\n          local_3c = (uint64_t)bVar1;\n        }" if (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 ')) )) (compound_statement "{\n          local_3c = read_unsigned_LEB_128_x(pbVar8,&len,bVar1);\n          pbVar8 = this->buffer_pos_ + len;\n        }" { (expression_statement "local_3c = read_unsigned_LEB_128_x(pbVar8,&len,bVar1);" (assignment_expression "local_3c = read_unsigned_LEB_128_x(pbVar8,&len,bVar1)" identifier = (call_expression "read_unsigned_LEB_128_x(pbVar8,&len,bVar1)" identifier (argument_list "(pbVar8,&len,bVar1)" ( identifier , (pointer_expression "&len" & identifier) , identifier )))) ;) (expression_statement "pbVar8 = this->buffer_pos_ + len;" (assignment_expression "pbVar8 = this->buffer_pos_ + len" identifier = (binary_expression "this->buffer_pos_ + len" (field_expression "this->buffer_pos_" identifier -> field_identifier) + identifier)) ;) }) (else_clause "else {\n          len = 1;\n          local_3c = (uint64_t)bVar1;\n        }" else (compound_statement "{\n          len = 1;\n          local_3c = (uint64_t)bVar1;\n        }" { (expression_statement "len = 1;" (assignment_expression "len = 1" identifier = number_literal) ;) (expression_statement "local_3c = (uint64_t)bVar1;" (assignment_expression "local_3c = (uint64_t)bVar1" identifier = (cast_expression "(uint64_t)bVar1" ( (type_descriptor "uint64_t" primitive_type) ) identifier)) ;) }))) (expression_statement "this->buffer_pos_ = pbVar8;" (assignment_expression "this->buffer_pos_ = pbVar8" (field_expression "this->buffer_pos_" identifier -> field_identifier) = identifier) ;) (if_statement "if ((local_3c._4_4_ == 0 && (int)(uVar15 >> 0x20) == 0) &&\n            ((float)local_3c == 0.0 && uVar14 == 0)) break;" if (parenthesized_expression "((local_3c._4_4_ == 0 && (int)(uVar15 >> 0x20) == 0) &&\n            ((float)local_3c == 0.0 && uVar14 == 0))" ( (binary_expression "(local_3c._4_4_ == 0 && (int)(uVar15 >> 0x20) == 0) &&\n            ((float)local_3c == 0.0 && uVar14 == 0)" (parenthesized_expression "(local_3c._4_4_ == 0 && (int)(uVar15 >> 0x20) == 0)" ( (binary_expression "local_3c._4_4_ == 0 && (int)(uVar15 >> 0x20) == 0" (binary_expression "local_3c._4_4_ == 0" (field_expression "local_3c._4_4_" identifier . field_identifier) == number_literal) && (binary_expression "(int)(uVar15 >> 0x20) == 0" (cast_expression "(int)(uVar15 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar15 >> 0x20)" ( (binary_expression "uVar15 >> 0x20" identifier >> number_literal) ))) == number_literal)) )) && (parenthesized_expression "((float)local_3c == 0.0 && uVar14 == 0)" ( (binary_expression "(float)local_3c == 0.0 && uVar14 == 0" (binary_expression "(float)local_3c == 0.0" (cast_expression "(float)local_3c" ( (type_descriptor "float" primitive_type) ) identifier) == number_literal) && (binary_expression "uVar14 == 0" identifier == number_literal)) ))) )) (break_statement "break;" break ;)) (if_statement "if (uVar15 == 1) {\n          pAVar5->field_0x4 = pAVar5->field_0x4 | 2;\n        }" if (parenthesized_expression "(uVar15 == 1)" ( (binary_expression "uVar15 == 1" identifier == number_literal) )) (compound_statement "{\n          pAVar5->field_0x4 = pAVar5->field_0x4 | 2;\n        }" { (expression_statement "pAVar5->field_0x4 = pAVar5->field_0x4 | 2;" (assignment_expression "pAVar5->field_0x4 = pAVar5->field_0x4 | 2" (field_expression "pAVar5->field_0x4" identifier -> field_identifier) = (binary_expression "pAVar5->field_0x4 | 2" (field_expression "pAVar5->field_0x4" identifier -> field_identifier) | number_literal)) ;) })) (expression_statement "local_20 = (float)local_3c;" (assignment_expression "local_20 = (float)local_3c" identifier = (cast_expression "(float)local_3c" ( (type_descriptor "float" primitive_type) ) identifier)) ;) (ERROR "__position._M_current =\n             (pAVar5->attributes).\n             super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::" (comma_expression "__position._M_current =\n             (pAVar5->attributes).\n             super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std" (assignment_expression "__position._M_current =\n             (pAVar5->attributes).\n             super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) = (binary_expression "(pAVar5->attributes).\n             super__Vector_base<gold" (field_expression "(pAVar5->attributes).\n             super__Vector_base" (parenthesized_expression "(pAVar5->attributes)" ( (field_expression "pAVar5->attributes" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Dwarf_abbrev_table::Attribute" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (labeled_statement "Dwarf_abbrev_table::Attribute>_>\n             ._M_impl._M_finish;" statement_identifier : (ERROR ":" :) (expression_statement "Attribute>_>\n             ._M_impl._M_finish;" (field_expression "Attribute>_>\n             ._M_impl._M_finish" (field_expression "Attribute>_>\n             ._M_impl" (binary_expression "Attribute>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;)) (expression_statement "local_24 = uVar14;" (assignment_expression "local_24 = uVar14" identifier = identifier) ;) (if_statement "if (__position._M_current ==\n            (pAVar5->attributes).\n            super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n            ._M_impl._M_end_of_storage) {\n          std::\n          vector<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ::_M_realloc_insert<gold::Dwarf_abbrev_table::Attribute>\n                    (&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc);\n          pbVar8 = this->buffer_pos_;\n        }\n        else {\n          (__position._M_current)->attr = uVar14;\n          (__position._M_current)->form = (uint)(float)local_3c;\n          (pAVar5->attributes).\n          super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }" if (parenthesized_expression "(__position._M_current ==\n            (pAVar5->attributes).\n            super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n            ._M_impl._M_end_of_storage)" ( (ERROR "__position._M_current ==\n            (pAVar5->attributes).\n            super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::" (comma_expression "__position._M_current ==\n            (pAVar5->attributes).\n            super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std" (binary_expression "__position._M_current ==\n            (pAVar5->attributes).\n            super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) == (binary_expression "(pAVar5->attributes).\n            super__Vector_base<gold" (field_expression "(pAVar5->attributes).\n            super__Vector_base" (parenthesized_expression "(pAVar5->attributes)" ( (field_expression "pAVar5->attributes" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Dwarf_abbrev_table::Attribute" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (field_expression "Attribute>_>\n            ._M_impl._M_end_of_storage" (field_expression "Attribute>_>\n            ._M_impl" (binary_expression "Attribute>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n          std::\n          vector<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ::_M_realloc_insert<gold::Dwarf_abbrev_table::Attribute>\n                    (&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc);\n          pbVar8 = this->buffer_pos_;\n        }" { (labeled_statement "std::\n          vector<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ::_M_realloc_insert<gold::Dwarf_abbrev_table::Attribute>\n                    (&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc);" statement_identifier (ERROR "::\n          vector<gold:" : : (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ::_M_realloc_insert<gold::Dwarf_abbrev_table::Attribute>\n                    (&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc);" statement_identifier (ERROR "::Attribute,_std::allocator<gold:" : : (comma_expression "Attribute,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_abbrev_table::Attribute>_>\n          ::_M_realloc_insert<gold::Dwarf_abbrev_table::Attribute>\n                    (&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc);" statement_identifier (ERROR "::Attribute>_>\n          ::_M_realloc_insert<gold:" : : (binary_expression "Attribute>_" identifier > identifier) > : : (binary_expression "_M_realloc_insert<gold" identifier < identifier) :) : (labeled_statement "Dwarf_abbrev_table::Attribute>\n                    (&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc);" statement_identifier : (ERROR ":" :) (expression_statement "Attribute>\n                    (&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc);" (binary_expression "Attribute>\n                    (&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc)" identifier > (parenthesized_expression "(&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc)" ( (comma_expression "&pAVar5->attributes,__position,(Attribute *)&stack0xffffffdc" (pointer_expression "&pAVar5->attributes" & (field_expression "pAVar5->attributes" identifier -> field_identifier)) , (comma_expression "__position,(Attribute *)&stack0xffffffdc" identifier , (cast_expression "(Attribute *)&stack0xffffffdc" ( (type_descriptor "Attribute *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&stack0xffffffdc" & identifier)))) ))) ;))))) (expression_statement "pbVar8 = this->buffer_pos_;" (assignment_expression "pbVar8 = this->buffer_pos_" identifier = (field_expression "this->buffer_pos_" identifier -> field_identifier)) ;) }) (else_clause "else {\n          (__position._M_current)->attr = uVar14;\n          (__position._M_current)->form = (uint)(float)local_3c;\n          (pAVar5->attributes).\n          super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }" else (compound_statement "{\n          (__position._M_current)->attr = uVar14;\n          (__position._M_current)->form = (uint)(float)local_3c;\n          (pAVar5->attributes).\n          super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }" { (expression_statement "(__position._M_current)->attr = uVar14;" (assignment_expression "(__position._M_current)->attr = uVar14" (field_expression "(__position._M_current)->attr" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) = identifier) ;) (expression_statement "(__position._M_current)->form = (uint)(float)local_3c;" (assignment_expression "(__position._M_current)->form = (uint)(float)local_3c" (field_expression "(__position._M_current)->form" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) = (cast_expression "(uint)(float)local_3c" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(float)local_3c" ( (type_descriptor "float" primitive_type) ) identifier))) ;) (ERROR "(pAVar5->attributes).\n          super__Vector_base<gold::" (binary_expression "(pAVar5->attributes).\n          super__Vector_base<gold" (field_expression "(pAVar5->attributes).\n          super__Vector_base" (parenthesized_expression "(pAVar5->attributes)" ( (field_expression "pAVar5->attributes" identifier -> field_identifier) )) . field_identifier) < identifier) : :) (labeled_statement "Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n          ._M_impl._M_finish = __position._M_current + 1;" statement_identifier (ERROR "::Attribute,_std::allocator<gold:" : : (comma_expression "Attribute,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_abbrev_table::Attribute>_>\n          ._M_impl._M_finish = __position._M_current + 1;" statement_identifier : (ERROR ":" :) (expression_statement "Attribute>_>\n          ._M_impl._M_finish = __position._M_current + 1;" (assignment_expression "Attribute>_>\n          ._M_impl._M_finish = __position._M_current + 1" (field_expression "Attribute>_>\n          ._M_impl._M_finish" (field_expression "Attribute>_>\n          ._M_impl" (binary_expression "Attribute>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (binary_expression "__position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;))) }))) (if_statement "if (this->buffer_end_ <= pbVar8) {\n          return (Abbrev_code *)0x0;\n        }" if (parenthesized_expression "(this->buffer_end_ <= pbVar8)" ( (binary_expression "this->buffer_end_ <= pbVar8" (field_expression "this->buffer_end_" identifier -> field_identifier) <= identifier) )) (compound_statement "{\n          return (Abbrev_code *)0x0;\n        }" { (return_statement "return (Abbrev_code *)0x0;" return (cast_expression "(Abbrev_code *)0x0" ( (type_descriptor "Abbrev_code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) })) (if_statement "if ((__node_type *)local_4c < (__node_type *)0x100) {\n        this->low_abbrev_codes_[(int)(__node_type *)local_4c] = pAVar5;\n      }\n      else {\n        uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count;\n        uVar10 = (uint)(__node_type *)local_4c % uVar14;\n        p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10];\n        if (p_Var12 != (__bucket_type)0x0) {\n          p_Var9 = (__node_type *)p_Var12->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var12->_M_nxt;\n          while (p_Var13 = p_Var7, (__node_type *)local_4c != p_Var9) {\n            p_Var7 = p_Var13->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14)) goto LAB_00058e6b;\n          }\n          p_Var7 = p_Var12->_M_nxt;\n          if (p_Var7 != (_Hash_node_base *)0x0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        __n_elt = (undefined4 *)operator_new(0xc);\n        *__n_elt = 0;\n        __n_elt[1] = (__node_type *)local_4c;\n        __n_elt[2] = 0;\n        std::\n        _Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n        ::_M_insert_unique_node\n                  ((_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt);\n        p_Var7 = (_Hash_node_base *)local_30._0_4_;\nLAB_00058e56:\n        p_Var7[2]._M_nxt = (_Hash_node_base *)pAVar5;\n      }" if (parenthesized_expression "((__node_type *)local_4c < (__node_type *)0x100)" ( (binary_expression "(__node_type *)local_4c < (__node_type *)0x100" (cast_expression "(__node_type *)local_4c" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) < (cast_expression "(__node_type *)0x100" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        this->low_abbrev_codes_[(int)(__node_type *)local_4c] = pAVar5;\n      }" { (expression_statement "this->low_abbrev_codes_[(int)(__node_type *)local_4c] = pAVar5;" (assignment_expression "this->low_abbrev_codes_[(int)(__node_type *)local_4c] = pAVar5" (subscript_expression "this->low_abbrev_codes_[(int)(__node_type *)local_4c]" (field_expression "this->low_abbrev_codes_" identifier -> field_identifier) [ (cast_expression "(int)(__node_type *)local_4c" ( (type_descriptor "int" primitive_type) ) (cast_expression "(__node_type *)local_4c" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ]) = identifier) ;) }) (else_clause "else {\n        uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count;\n        uVar10 = (uint)(__node_type *)local_4c % uVar14;\n        p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10];\n        if (p_Var12 != (__bucket_type)0x0) {\n          p_Var9 = (__node_type *)p_Var12->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var12->_M_nxt;\n          while (p_Var13 = p_Var7, (__node_type *)local_4c != p_Var9) {\n            p_Var7 = p_Var13->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14)) goto LAB_00058e6b;\n          }\n          p_Var7 = p_Var12->_M_nxt;\n          if (p_Var7 != (_Hash_node_base *)0x0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        __n_elt = (undefined4 *)operator_new(0xc);\n        *__n_elt = 0;\n        __n_elt[1] = (__node_type *)local_4c;\n        __n_elt[2] = 0;\n        std::\n        _Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n        ::_M_insert_unique_node\n                  ((_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt);\n        p_Var7 = (_Hash_node_base *)local_30._0_4_;\nLAB_00058e56:\n        p_Var7[2]._M_nxt = (_Hash_node_base *)pAVar5;\n      }" else (compound_statement "{\n        uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count;\n        uVar10 = (uint)(__node_type *)local_4c % uVar14;\n        p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10];\n        if (p_Var12 != (__bucket_type)0x0) {\n          p_Var9 = (__node_type *)p_Var12->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var12->_M_nxt;\n          while (p_Var13 = p_Var7, (__node_type *)local_4c != p_Var9) {\n            p_Var7 = p_Var13->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14)) goto LAB_00058e6b;\n          }\n          p_Var7 = p_Var12->_M_nxt;\n          if (p_Var7 != (_Hash_node_base *)0x0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        __n_elt = (undefined4 *)operator_new(0xc);\n        *__n_elt = 0;\n        __n_elt[1] = (__node_type *)local_4c;\n        __n_elt[2] = 0;\n        std::\n        _Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n        ::_M_insert_unique_node\n                  ((_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt);\n        p_Var7 = (_Hash_node_base *)local_30._0_4_;\nLAB_00058e56:\n        p_Var7[2]._M_nxt = (_Hash_node_base *)pAVar5;\n      }" { (expression_statement "uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count;" (assignment_expression "uVar14 = (this->high_abbrev_codes_)._M_h._M_bucket_count" identifier = (field_expression "(this->high_abbrev_codes_)._M_h._M_bucket_count" (field_expression "(this->high_abbrev_codes_)._M_h" (parenthesized_expression "(this->high_abbrev_codes_)" ( (field_expression "this->high_abbrev_codes_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar10 = (uint)(__node_type *)local_4c % uVar14;" (assignment_expression "uVar10 = (uint)(__node_type *)local_4c % uVar14" identifier = (binary_expression "(uint)(__node_type *)local_4c % uVar14" (cast_expression "(uint)(__node_type *)local_4c" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(__node_type *)local_4c" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) % identifier)) ;) (expression_statement "p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10];" (assignment_expression "p_Var12 = (this->high_abbrev_codes_)._M_h._M_buckets[uVar10]" identifier = (subscript_expression "(this->high_abbrev_codes_)._M_h._M_buckets[uVar10]" (field_expression "(this->high_abbrev_codes_)._M_h._M_buckets" (field_expression "(this->high_abbrev_codes_)._M_h" (parenthesized_expression "(this->high_abbrev_codes_)" ( (field_expression "this->high_abbrev_codes_" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ identifier ])) ;) (if_statement "if (p_Var12 != (__bucket_type)0x0) {\n          p_Var9 = (__node_type *)p_Var12->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var12->_M_nxt;\n          while (p_Var13 = p_Var7, (__node_type *)local_4c != p_Var9) {\n            p_Var7 = p_Var13->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14)) goto LAB_00058e6b;\n          }\n          p_Var7 = p_Var12->_M_nxt;\n          if (p_Var7 != (_Hash_node_base *)0x0) goto LAB_00058e56;\n        }" if (parenthesized_expression "(p_Var12 != (__bucket_type)0x0)" ( (binary_expression "p_Var12 != (__bucket_type)0x0" identifier != (cast_expression "(__bucket_type)0x0" ( (type_descriptor "__bucket_type" type_identifier) ) number_literal)) )) (compound_statement "{\n          p_Var9 = (__node_type *)p_Var12->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var12->_M_nxt;\n          while (p_Var13 = p_Var7, (__node_type *)local_4c != p_Var9) {\n            p_Var7 = p_Var13->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14)) goto LAB_00058e6b;\n          }\n          p_Var7 = p_Var12->_M_nxt;\n          if (p_Var7 != (_Hash_node_base *)0x0) goto LAB_00058e56;\n        }" { (expression_statement "p_Var9 = (__node_type *)p_Var12->_M_nxt[1]._M_nxt;" (assignment_expression "p_Var9 = (__node_type *)p_Var12->_M_nxt[1]._M_nxt" identifier = (cast_expression "(__node_type *)p_Var12->_M_nxt[1]._M_nxt" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var12->_M_nxt[1]._M_nxt" (subscript_expression "p_Var12->_M_nxt[1]" (field_expression "p_Var12->_M_nxt" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "p_Var7 = p_Var12->_M_nxt;" (assignment_expression "p_Var7 = p_Var12->_M_nxt" identifier = (field_expression "p_Var12->_M_nxt" identifier -> field_identifier)) ;) (while_statement "while (p_Var13 = p_Var7, (__node_type *)local_4c != p_Var9) {\n            p_Var7 = p_Var13->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14)) goto LAB_00058e6b;\n          }" while (parenthesized_expression "(p_Var13 = p_Var7, (__node_type *)local_4c != p_Var9)" ( (comma_expression "p_Var13 = p_Var7, (__node_type *)local_4c != p_Var9" (assignment_expression "p_Var13 = p_Var7" identifier = identifier) , (binary_expression "(__node_type *)local_4c != p_Var9" (cast_expression "(__node_type *)local_4c" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier)) )) (compound_statement "{\n            p_Var7 = p_Var13->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14)) goto LAB_00058e6b;\n          }" { (expression_statement "p_Var7 = p_Var13->_M_nxt;" (assignment_expression "p_Var7 = p_Var13->_M_nxt" identifier = (field_expression "p_Var13->_M_nxt" identifier -> field_identifier)) ;) (if_statement "if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14)) goto LAB_00058e6b;" if (parenthesized_expression "((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14))" ( (binary_expression "(p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14)" (parenthesized_expression "(p_Var7 == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var7 == (_Hash_node_base *)0x0" identifier == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14)" ( (comma_expression "p_Var9 = (__node_type *)p_Var7[1]._M_nxt, p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14" (assignment_expression "p_Var9 = (__node_type *)p_Var7[1]._M_nxt" identifier = (cast_expression "(__node_type *)p_Var7[1]._M_nxt" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var7[1]._M_nxt" (subscript_expression "p_Var7[1]" identifier [ number_literal ]) . field_identifier))) , (comma_expression "p_Var12 = p_Var13,\n               uVar10 != (uint)p_Var9 % uVar14" (assignment_expression "p_Var12 = p_Var13" identifier = identifier) , (binary_expression "uVar10 != (uint)p_Var9 % uVar14" identifier != (binary_expression "(uint)p_Var9 % uVar14" (cast_expression "(uint)p_Var9" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier)))) ))) )) (goto_statement "goto LAB_00058e6b;" goto statement_identifier ;)) })) (expression_statement "p_Var7 = p_Var12->_M_nxt;" (assignment_expression "p_Var7 = p_Var12->_M_nxt" identifier = (field_expression "p_Var12->_M_nxt" identifier -> field_identifier)) ;) (if_statement "if (p_Var7 != (_Hash_node_base *)0x0) goto LAB_00058e56;" if (parenthesized_expression "(p_Var7 != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var7 != (_Hash_node_base *)0x0" identifier != (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00058e56;" goto statement_identifier ;)) })) (labeled_statement "LAB_00058e6b:\n        __n_elt = (undefined4 *)operator_new(0xc);" statement_identifier : (expression_statement "__n_elt = (undefined4 *)operator_new(0xc);" (assignment_expression "__n_elt = (undefined4 *)operator_new(0xc)" identifier = (cast_expression "(undefined4 *)operator_new(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;)) (expression_statement "*__n_elt = 0;" (assignment_expression "*__n_elt = 0" (pointer_expression "*__n_elt" * identifier) = number_literal) ;) (expression_statement "__n_elt[1] = (__node_type *)local_4c;" (assignment_expression "__n_elt[1] = (__node_type *)local_4c" (subscript_expression "__n_elt[1]" identifier [ number_literal ]) = (cast_expression "(__node_type *)local_4c" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "__n_elt[2] = 0;" (assignment_expression "__n_elt[2] = 0" (subscript_expression "__n_elt[2]" identifier [ number_literal ]) = number_literal) ;) (ERROR "std::\n        _Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::" (comma_expression "std::\n        _Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std" identifier (ERROR "::\n        _Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>" : : (comma_expression "_Hashtable<unsigned_int,_std" (binary_expression "_Hashtable<unsigned_int" identifier < identifier) , identifier) : : (comma_expression "pair<unsigned_int_const,_const_gold" (binary_expression "pair<unsigned_int_const" identifier < identifier) , identifier) : : (comma_expression "Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std" identifier (ERROR "::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>" : : (comma_expression "Abbrev_code*>,_std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<unsigned_int_const,_const_gold" (binary_expression "pair<unsigned_int_const" identifier < identifier) , identifier) : : (binary_expression "Dwarf_abbrev_table::Abbrev_code*>_" identifier (ERROR "::Abbrev_code*" : : identifier *) > identifier) >) , identifier) : : (comma_expression "__detail::_Select1st,_std::equal_to<unsigned_int>,_std" identifier (ERROR "::_Select1st,_std::equal_to<unsigned_int>" : : (comma_expression "_Select1st,_std" identifier , identifier) : : (binary_expression "equal_to<unsigned_int" identifier < identifier) >) , identifier) : : (binary_expression "hash<unsigned_int" identifier < identifier) >) , identifier) : : identifier : : identifier , identifier : : identifier : : identifier , identifier : : identifier : : identifier , identifier : : identifier : :) (expression_statement "_Hashtable_traits<false,_false,_true>_>\n        ::_M_insert_unique_node\n                  ((_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt);" (comma_expression "_Hashtable_traits<false,_false,_true>_>\n        ::_M_insert_unique_node\n                  ((_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt)" (binary_expression "_Hashtable_traits<false" identifier < false) , (comma_expression "_false,_true>_>\n        ::_M_insert_unique_node\n                  ((_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt)" identifier , (binary_expression "_true>_>\n        ::_M_insert_unique_node\n                  ((_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt)" (binary_expression "_true>_" identifier > identifier) > (ERROR "::" : :) (call_expression "_M_insert_unique_node\n                  ((_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt)" identifier (argument_list "((_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt)" ( (parenthesized_expression "(_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt)" ( (ERROR "_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::Abbrev_code*>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::" (comma_expression "_Hashtable<unsigned_int,_std" (binary_expression "_Hashtable<unsigned_int" identifier < identifier) , identifier) : : (comma_expression "pair<unsigned_int_const,_const_gold" (binary_expression "pair<unsigned_int_const" identifier < identifier) , identifier) : : identifier : : (comma_expression "Abbrev_code*>,_std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<unsigned_int_const,_const_gold" (binary_expression "pair<unsigned_int_const" identifier < identifier) , identifier) : : identifier : : (binary_expression "Abbrev_code*>_>,_std" (binary_expression "Abbrev_code*>_" identifier * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "_Select1st,_std" identifier , identifier) : : (binary_expression "equal_to<unsigned_int>,_std" (binary_expression "equal_to<unsigned_int" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "hash<unsigned_int>,_std" (binary_expression "hash<unsigned_int" identifier < identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) : : identifier : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) : : identifier : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) : : identifier : :) (comma_expression "_Hashtable_traits<false,_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt" (binary_expression "_Hashtable_traits<false" identifier < false) , (comma_expression "_false,_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt" identifier , (comma_expression "_true>_>\n                    *)local_30,(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt" (binary_expression "_true>_>\n                    *)local_30" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "*)local_30" * (ERROR ")" )) identifier)) , (comma_expression "(size_type)&this->high_abbrev_codes_,uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt" (binary_expression "(size_type)&this->high_abbrev_codes_" (parenthesized_expression "(size_type)" ( identifier )) & (field_expression "this->high_abbrev_codes_" identifier -> field_identifier)) , (comma_expression "uVar10,(__node_type *)local_4c,\n                   (size_type)__n_elt" identifier , (comma_expression "(__node_type *)local_4c,\n                   (size_type)__n_elt" (cast_expression "(__node_type *)local_4c" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(size_type)__n_elt" ( (type_descriptor "size_type" type_identifier) ) identifier))))))) )) )))))) ;) (expression_statement "p_Var7 = (_Hash_node_base *)local_30._0_4_;" (assignment_expression "p_Var7 = (_Hash_node_base *)local_30._0_4_" identifier = (cast_expression "(_Hash_node_base *)local_30._0_4_" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_30._0_4_" identifier . field_identifier))) ;) (labeled_statement "LAB_00058e56:\n        p_Var7[2]._M_nxt = (_Hash_node_base *)pAVar5;" statement_identifier : (expression_statement "p_Var7[2]._M_nxt = (_Hash_node_base *)pAVar5;" (assignment_expression "p_Var7[2]._M_nxt = (_Hash_node_base *)pAVar5" (field_expression "p_Var7[2]._M_nxt" (subscript_expression "p_Var7[2]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_Hash_node_base *)pAVar5" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) }))) (if_statement "if (local_4c._4_4_ == 0 && (__node_type *)code == (__node_type *)local_4c) {\n        return pAVar5;\n      }" if (parenthesized_expression "(local_4c._4_4_ == 0 && (__node_type *)code == (__node_type *)local_4c)" ( (binary_expression "local_4c._4_4_ == 0 && (__node_type *)code == (__node_type *)local_4c" (binary_expression "local_4c._4_4_ == 0" (field_expression "local_4c._4_4_" identifier . field_identifier) == number_literal) && (binary_expression "(__node_type *)code == (__node_type *)local_4c" (cast_expression "(__node_type *)code" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == (cast_expression "(__node_type *)local_4c" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n        return pAVar5;\n      }" { (return_statement "return pAVar5;" return identifier ;) })) (expression_statement "pbVar8 = this->buffer_pos_;" (assignment_expression "pbVar8 = this->buffer_pos_" identifier = (field_expression "this->buffer_pos_" identifier -> field_identifier)) ;) (if_statement "if (this->buffer_end_ <= pbVar8) {\n        return (Abbrev_code *)0x0;\n      }" if (parenthesized_expression "(this->buffer_end_ <= pbVar8)" ( (binary_expression "this->buffer_end_ <= pbVar8" (field_expression "this->buffer_end_" identifier -> field_identifier) <= identifier) )) (compound_statement "{\n        return (Abbrev_code *)0x0;\n      }" { (return_statement "return (Abbrev_code *)0x0;" return (cast_expression "(Abbrev_code *)0x0" ( (type_descriptor "Abbrev_code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) })) (expression_statement "this->buffer_pos_ = pbVar8;" (assignment_expression "this->buffer_pos_ = pbVar8" (field_expression "this->buffer_pos_" identifier -> field_identifier) = identifier) ;) })) (return_statement "return (Abbrev_code *)0x0;" return (cast_expression "(Abbrev_code *)0x0" ( (type_descriptor "Abbrev_code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit "undefined4 * FUN_00058a70(int param_1,uint param_2)\n\n{\n  byte bVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int *piVar9;\n  int *piVar10;\n  undefined1 *puVar11;\n  int *piVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  int aiStack_80 [9];\n  undefined1 auStack_5c [4];\n  uint *local_58;\n  undefined4 *local_54;\n  int local_50;\n  undefined8 local_4c;\n  int *local_44;\n  undefined **local_40;\n  undefined8 local_3c;\n  undefined4 *local_34;\n  int local_30 [2];\n  int local_28;\n  uint local_24;\n  uint local_20;\n  \n  uVar13 = CONCAT44(local_4c._4_4_,(uint)local_4c);\n  local_40 = &__DT_PLTGOT;\n  puVar11 = auStack_5c;\n  local_50 = param_1 + 0x41c;\n  local_3c._0_4_ = param_2 % *(uint *)(param_1 + 0x420);\n  piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n  if (piVar9 != (int *)0x0) {\n    uVar7 = ((int *)*piVar9)[1];\n    piVar12 = (int *)*piVar9;\n    while (uVar7 != param_2) {\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }\n    if (*piVar9 != 0) {\n      return *(undefined4 **)(*piVar9 + 8);\n    }\n  }\nLAB_00058af8:\n  pbVar6 = *(byte **)(param_1 + 0x18);\n  if (pbVar6 < *(byte **)(param_1 + 0x10)) {\n    local_44 = &local_28;\n    while( true ) {\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    \n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }\n    *(byte **)(param_1 + 0x18) = pbVar6;\n  }\n  return (undefined4 *)0x0;\n}\n\n" (function_definition "undefined4 * FUN_00058a70(int param_1,uint param_2)\n\n{\n  byte bVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int *piVar9;\n  int *piVar10;\n  undefined1 *puVar11;\n  int *piVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  int aiStack_80 [9];\n  undefined1 auStack_5c [4];\n  uint *local_58;\n  undefined4 *local_54;\n  int local_50;\n  undefined8 local_4c;\n  int *local_44;\n  undefined **local_40;\n  undefined8 local_3c;\n  undefined4 *local_34;\n  int local_30 [2];\n  int local_28;\n  uint local_24;\n  uint local_20;\n  \n  uVar13 = CONCAT44(local_4c._4_4_,(uint)local_4c);\n  local_40 = &__DT_PLTGOT;\n  puVar11 = auStack_5c;\n  local_50 = param_1 + 0x41c;\n  local_3c._0_4_ = param_2 % *(uint *)(param_1 + 0x420);\n  piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n  if (piVar9 != (int *)0x0) {\n    uVar7 = ((int *)*piVar9)[1];\n    piVar12 = (int *)*piVar9;\n    while (uVar7 != param_2) {\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }\n    if (*piVar9 != 0) {\n      return *(undefined4 **)(*piVar9 + 8);\n    }\n  }\nLAB_00058af8:\n  pbVar6 = *(byte **)(param_1 + 0x18);\n  if (pbVar6 < *(byte **)(param_1 + 0x10)) {\n    local_44 = &local_28;\n    while( true ) {\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    \n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }\n    *(byte **)(param_1 + 0x18) = pbVar6;\n  }\n  return (undefined4 *)0x0;\n}" type_identifier (pointer_declarator "* FUN_00058a70(int param_1,uint param_2)" * (function_declarator "FUN_00058a70(int param_1,uint param_2)" identifier (parameter_list "(int param_1,uint param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) )))) (compound_statement "{\n  byte bVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int *piVar9;\n  int *piVar10;\n  undefined1 *puVar11;\n  int *piVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  int aiStack_80 [9];\n  undefined1 auStack_5c [4];\n  uint *local_58;\n  undefined4 *local_54;\n  int local_50;\n  undefined8 local_4c;\n  int *local_44;\n  undefined **local_40;\n  undefined8 local_3c;\n  undefined4 *local_34;\n  int local_30 [2];\n  int local_28;\n  uint local_24;\n  uint local_20;\n  \n  uVar13 = CONCAT44(local_4c._4_4_,(uint)local_4c);\n  local_40 = &__DT_PLTGOT;\n  puVar11 = auStack_5c;\n  local_50 = param_1 + 0x41c;\n  local_3c._0_4_ = param_2 % *(uint *)(param_1 + 0x420);\n  piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n  if (piVar9 != (int *)0x0) {\n    uVar7 = ((int *)*piVar9)[1];\n    piVar12 = (int *)*piVar9;\n    while (uVar7 != param_2) {\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }\n    if (*piVar9 != 0) {\n      return *(undefined4 **)(*piVar9 + 8);\n    }\n  }\nLAB_00058af8:\n  pbVar6 = *(byte **)(param_1 + 0x18);\n  if (pbVar6 < *(byte **)(param_1 + 0x10)) {\n    local_44 = &local_28;\n    while( true ) {\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    \n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }\n    *(byte **)(param_1 + 0x18) = pbVar6;\n  }\n  return (undefined4 *)0x0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "ulonglong uVar13;" type_identifier identifier ;) (declaration "ulonglong uVar14;" type_identifier identifier ;) (declaration "int aiStack_80 [9];" primitive_type (array_declarator "aiStack_80 [9]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_5c [4];" type_identifier (array_declarator "auStack_5c [4]" identifier [ number_literal ]) ;) (declaration "uint *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "undefined4 *local_54;" type_identifier (pointer_declarator "*local_54" * identifier) ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "undefined8 local_4c;" type_identifier identifier ;) (declaration "int *local_44;" primitive_type (pointer_declarator "*local_44" * identifier) ;) (declaration "undefined **local_40;" type_identifier (pointer_declarator "**local_40" * (pointer_declarator "*local_40" * identifier)) ;) (declaration "undefined8 local_3c;" type_identifier identifier ;) (declaration "undefined4 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30 [2];" primitive_type (array_declarator "local_30 [2]" identifier [ number_literal ]) ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "uint local_20;" type_identifier identifier ;) (expression_statement "uVar13 = CONCAT44(local_4c._4_4_,(uint)local_4c);" (assignment_expression "uVar13 = CONCAT44(local_4c._4_4_,(uint)local_4c)" identifier = (call_expression "CONCAT44(local_4c._4_4_,(uint)local_4c)" identifier (argument_list "(local_4c._4_4_,(uint)local_4c)" ( (field_expression "local_4c._4_4_" identifier . field_identifier) , (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) )))) ;) (expression_statement "local_40 = &__DT_PLTGOT;" (assignment_expression "local_40 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "puVar11 = auStack_5c;" (assignment_expression "puVar11 = auStack_5c" identifier = identifier) ;) (expression_statement "local_50 = param_1 + 0x41c;" (assignment_expression "local_50 = param_1 + 0x41c" identifier = (binary_expression "param_1 + 0x41c" identifier + number_literal)) ;) (expression_statement "local_3c._0_4_ = param_2 % *(uint *)(param_1 + 0x420);" (assignment_expression "local_3c._0_4_ = param_2 % *(uint *)(param_1 + 0x420)" (field_expression "local_3c._0_4_" identifier . field_identifier) = (binary_expression "param_2 % *(uint *)(param_1 + 0x420)" identifier % (pointer_expression "*(uint *)(param_1 + 0x420)" * (cast_expression "(uint *)(param_1 + 0x420)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x420)" ( (binary_expression "param_1 + 0x420" identifier + number_literal) )))))) ;) (expression_statement "piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);" (assignment_expression "piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" identifier = (pointer_expression "*(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" * (cast_expression "(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" ( (binary_expression "*(int *)(param_1 + 0x41c) + (uint)local_3c * 4" (pointer_expression "*(int *)(param_1 + 0x41c)" * (cast_expression "(int *)(param_1 + 0x41c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x41c)" ( (binary_expression "param_1 + 0x41c" identifier + number_literal) )))) + (binary_expression "(uint)local_3c * 4" (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (if_statement "if (piVar9 != (int *)0x0) {\n    uVar7 = ((int *)*piVar9)[1];\n    piVar12 = (int *)*piVar9;\n    while (uVar7 != param_2) {\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }\n    if (*piVar9 != 0) {\n      return *(undefined4 **)(*piVar9 + 8);\n    }\n  }" if (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar7 = ((int *)*piVar9)[1];\n    piVar12 = (int *)*piVar9;\n    while (uVar7 != param_2) {\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }\n    if (*piVar9 != 0) {\n      return *(undefined4 **)(*piVar9 + 8);\n    }\n  }" { (expression_statement "uVar7 = ((int *)*piVar9)[1];" (assignment_expression "uVar7 = ((int *)*piVar9)[1]" identifier = (subscript_expression "((int *)*piVar9)[1]" (parenthesized_expression "((int *)*piVar9)" ( (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier)) )) [ number_literal ])) ;) (expression_statement "piVar12 = (int *)*piVar9;" (assignment_expression "piVar12 = (int *)*piVar9" identifier = (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) (while_statement "while (uVar7 != param_2) {\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }" while (parenthesized_expression "(uVar7 != param_2)" ( (binary_expression "uVar7 != param_2" identifier != identifier) )) (compound_statement "{\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }" { (expression_statement "piVar10 = (int *)*piVar12;" (assignment_expression "piVar10 = (int *)*piVar12" identifier = (cast_expression "(int *)*piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) ;) (if_statement "if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;" if (parenthesized_expression "((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420)))" ( (binary_expression "(piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))" (parenthesized_expression "(piVar10 == (int *)0x0)" ( (binary_expression "piVar10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))" ( (comma_expression "uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420)" (assignment_expression "uVar7 = piVar10[1]" identifier = (subscript_expression "piVar10[1]" identifier [ number_literal ])) , (comma_expression "piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420)" (assignment_expression "piVar9 = piVar12" identifier = identifier) , (comma_expression "piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420)" (assignment_expression "piVar12 = piVar10" identifier = identifier) , (binary_expression "(uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420)" (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier) != (binary_expression "uVar7 % *(uint *)(param_1 + 0x420)" identifier % (pointer_expression "*(uint *)(param_1 + 0x420)" * (cast_expression "(uint *)(param_1 + 0x420)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x420)" ( (binary_expression "param_1 + 0x420" identifier + number_literal) ))))))))) ))) )) (goto_statement "goto LAB_00058af8;" goto statement_identifier ;)) })) (if_statement "if (*piVar9 != 0) {\n      return *(undefined4 **)(*piVar9 + 8);\n    }" if (parenthesized_expression "(*piVar9 != 0)" ( (binary_expression "*piVar9 != 0" (pointer_expression "*piVar9" * identifier) != number_literal) )) (compound_statement "{\n      return *(undefined4 **)(*piVar9 + 8);\n    }" { (return_statement "return *(undefined4 **)(*piVar9 + 8);" return (pointer_expression "*(undefined4 **)(*piVar9 + 8)" * (cast_expression "(undefined4 **)(*piVar9 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar9 + 8)" ( (binary_expression "*piVar9 + 8" (pointer_expression "*piVar9" * identifier) + number_literal) )))) ;) })) })) (labeled_statement "LAB_00058af8:\n  pbVar6 = *(byte **)(param_1 + 0x18);" statement_identifier : (expression_statement "pbVar6 = *(byte **)(param_1 + 0x18);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x18)" identifier = (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;)) (if_statement "if (pbVar6 < *(byte **)(param_1 + 0x10)) {\n    local_44 = &local_28;\n    while( true ) {\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    \n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }\n    *(byte **)(param_1 + 0x18) = pbVar6;\n  }" if (parenthesized_expression "(pbVar6 < *(byte **)(param_1 + 0x10))" ( (binary_expression "pbVar6 < *(byte **)(param_1 + 0x10)" identifier < (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )) (compound_statement "{\n    local_44 = &local_28;\n    while( true ) {\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    \n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }\n    *(byte **)(param_1 + 0x18) = pbVar6;\n  }" { (expression_statement "local_44 = &local_28;" (assignment_expression "local_44 = &local_28" identifier = (pointer_expression "&local_28" & identifier)) ;) (while_statement "while( true ) {\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    \n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    \n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }" { (expression_statement "bVar1 = *pbVar6;" (assignment_expression "bVar1 = *pbVar6" identifier = (pointer_expression "*pbVar6" * identifier)) ;) (if_statement "if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }" if (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 ')) )) (compound_statement "{\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }" { (expression_statement "*(uint *)(puVar11 + -8) = (uint)bVar1;" (assignment_expression "*(uint *)(puVar11 + -8) = (uint)bVar1" (pointer_expression "*(uint *)(puVar11 + -8)" * (cast_expression "(uint *)(puVar11 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -8)" ( (binary_expression "puVar11 + -8" identifier + number_literal) )))) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(int **)(puVar11 + -0xc) = local_44;" (assignment_expression "*(int **)(puVar11 + -0xc) = local_44" (pointer_expression "*(int **)(puVar11 + -0xc)" * (cast_expression "(int **)(puVar11 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar11 + -0x10) = pbVar6 + 1;" (assignment_expression "*(byte **)(puVar11 + -0x10) = pbVar6 + 1" (pointer_expression "*(byte **)(puVar11 + -0x10)" * (cast_expression "(byte **)(puVar11 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58d73;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58d73" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_4c = uVar13;" (assignment_expression "local_4c = uVar13" identifier = identifier) ;) (expression_statement "uVar13 = FUN_00095970();" (assignment_expression "uVar13 = FUN_00095970()" identifier = (call_expression "FUN_00095970()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }" else (compound_statement "{\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }" { (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (expression_statement "uVar13 = (ulonglong)(uint)bVar1;" (assignment_expression "uVar13 = (ulonglong)(uint)bVar1" identifier = (cast_expression "(ulonglong)(uint)bVar1" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }))) (expression_statement "pbVar6 = *(byte **)(param_1 + 0x10);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x10)" identifier = (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (uVar13 == 0) break;" if (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));" (assignment_expression "pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18))" identifier = (cast_expression "(byte *)(local_28 + *(int *)(param_1 + 0x18))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + *(int *)(param_1 + 0x18))" ( (binary_expression "local_28 + *(int *)(param_1 + 0x18)" identifier + (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )))) ;) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar8;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar8" (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }" if (parenthesized_expression "(pbVar6 <= pbVar8)" ( (binary_expression "pbVar6 <= pbVar8" identifier <= identifier) )) (compound_statement "{\n        return (undefined4 *)0x0;\n      }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (expression_statement "local_4c = uVar13;" (assignment_expression "local_4c = uVar13" identifier = identifier) ;) (if_statement "if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }" if (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 ')) )) (compound_statement "{\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }" { (expression_statement "*(uint *)(puVar11 + -8) = (uint)bVar1;" (assignment_expression "*(uint *)(puVar11 + -8) = (uint)bVar1" (pointer_expression "*(uint *)(puVar11 + -8)" * (cast_expression "(uint *)(puVar11 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -8)" ( (binary_expression "puVar11 + -8" identifier + number_literal) )))) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(int **)(puVar11 + -0xc) = local_44;" (assignment_expression "*(int **)(puVar11 + -0xc) = local_44" (pointer_expression "*(int **)(puVar11 + -0xc)" * (cast_expression "(int **)(puVar11 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar11 + -0x10) = pbVar8;" (assignment_expression "*(byte **)(puVar11 + -0x10) = pbVar8" (pointer_expression "*(byte **)(puVar11 + -0x10)" * (cast_expression "(byte **)(puVar11 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58de0;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58de0" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_3c = FUN_00095970();" (assignment_expression "local_3c = FUN_00095970()" identifier = (call_expression "FUN_00095970()" identifier (argument_list "()" ( )))) ;) (expression_statement "pbVar6 = *(byte **)(param_1 + 0x10);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x10)" identifier = (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));" (assignment_expression "pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18))" identifier = (cast_expression "(byte *)(local_28 + *(int *)(param_1 + 0x18))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + *(int *)(param_1 + 0x18))" ( (binary_expression "local_28 + *(int *)(param_1 + 0x18)" identifier + (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )))) ;) }) (else_clause "else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }" else (compound_statement "{\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }" { (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (expression_statement "local_3c = (ulonglong)(uint)bVar1;" (assignment_expression "local_3c = (ulonglong)(uint)bVar1" identifier = (cast_expression "(ulonglong)(uint)bVar1" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }))) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar8;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar8" (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }" if (parenthesized_expression "(pbVar6 <= pbVar8)" ( (binary_expression "pbVar6 <= pbVar8" identifier <= identifier) )) (compound_statement "{\n        return (undefined4 *)0x0;\n      }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar8 + 1;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar8 + 1" (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = 0x14;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = 0x14" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" * (cast_expression "(undefined4 *)(puVar11 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58ba1;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58ba1" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)FUN_001e5200();" (assignment_expression "puVar4 = (undefined4 *)FUN_001e5200()" identifier = (cast_expression "(undefined4 *)FUN_001e5200()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5200()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*puVar4 = (uint)local_3c;" (assignment_expression "*puVar4 = (uint)local_3c" (pointer_expression "*puVar4" * identifier) = (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar4[2] = 0;" (assignment_expression "puVar4[2] = 0" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));" (assignment_expression "local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1))" (field_expression "local_3c._0_4_" identifier . field_identifier) = (call_expression "CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1))" identifier (argument_list "(local_3c._1_3_,*(byte *)(puVar4 + 1))" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , (pointer_expression "*(byte *)(puVar4 + 1)" * (cast_expression "(byte *)(puVar4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) )))) )))) ;) (expression_statement "puVar4[3] = 0;" (assignment_expression "puVar4[3] = 0" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;" (assignment_expression "*(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1" (pointer_expression "*(byte *)(puVar4 + 1)" * (cast_expression "(byte *)(puVar4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1" (binary_expression "*(byte *)(puVar4 + 1) & 0xfc" (pointer_expression "*(byte *)(puVar4 + 1)" * (cast_expression "(byte *)(puVar4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) )))) & number_literal) | (binary_expression "bVar1 == 1" identifier == number_literal))) ;) (expression_statement "local_54 = puVar4 + 2;" (assignment_expression "local_54 = puVar4 + 2" identifier = (binary_expression "puVar4 + 2" identifier + number_literal)) ;) (expression_statement "puVar4[4] = 0;" (assignment_expression "puVar4[4] = 0" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = 0x50;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = 0x50" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" * (cast_expression "(undefined4 *)(puVar11 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58be6;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58be6" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_34 = puVar4;" (assignment_expression "local_34 = puVar4" identifier = identifier) ;) (expression_statement "iVar5 = FUN_001e5200();" (assignment_expression "iVar5 = FUN_001e5200()" identifier = (call_expression "FUN_001e5200()" identifier (argument_list "()" ( )))) ;) (if_statement "if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }" if (parenthesized_expression "(puVar4[2] != 0)" ( (binary_expression "puVar4[2] != 0" (subscript_expression "puVar4[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }" { (expression_statement "*(undefined4 *)(puVar11 + -0x10) = puVar4[2];" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = puVar4[2]" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" * (cast_expression "(undefined4 *)(puVar11 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = (subscript_expression "puVar4[2]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58bfc;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58bfc" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_3c._0_4_ = iVar5;" (assignment_expression "local_3c._0_4_ = iVar5" (field_expression "local_3c._0_4_" identifier . field_identifier) = identifier) ;) (expression_statement "FUN_001e6db0();" (call_expression "FUN_001e6db0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar5 = (uint)local_3c;" (assignment_expression "iVar5 = (uint)local_3c" identifier = (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "local_34[2] = iVar5;" (assignment_expression "local_34[2] = iVar5" (subscript_expression "local_34[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_34[3] = iVar5;" (assignment_expression "local_34[3] = iVar5" (subscript_expression "local_34[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_34[4] = iVar5 + 0x50;" (assignment_expression "local_34[4] = iVar5 + 0x50" (subscript_expression "local_34[4]" identifier [ number_literal ]) = (binary_expression "iVar5 + 0x50" identifier + number_literal)) ;) (expression_statement "pbVar6 = *(byte **)(param_1 + 0x18);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x18)" identifier = (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }" if (parenthesized_expression "(*(byte **)(param_1 + 0x10) <= pbVar6)" ( (binary_expression "*(byte **)(param_1 + 0x10) <= pbVar6" (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n        return (undefined4 *)0x0;\n      }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "local_58 = &local_24;" (assignment_expression "local_58 = &local_24" identifier = (pointer_expression "&local_24" & identifier)) ;) (while_statement "while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }" { (expression_statement "bVar1 = *pbVar6;" (assignment_expression "bVar1 = *pbVar6" identifier = (pointer_expression "*pbVar6" * identifier)) ;) (if_statement "if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }" if (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 ')) )) (compound_statement "{\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }" { (expression_statement "*(uint *)(puVar11 + -8) = (uint)bVar1;" (assignment_expression "*(uint *)(puVar11 + -8) = (uint)bVar1" (pointer_expression "*(uint *)(puVar11 + -8)" * (cast_expression "(uint *)(puVar11 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -8)" ( (binary_expression "puVar11 + -8" identifier + number_literal) )))) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(int **)(puVar11 + -0xc) = local_44;" (assignment_expression "*(int **)(puVar11 + -0xc) = local_44" (pointer_expression "*(int **)(puVar11 + -0xc)" * (cast_expression "(int **)(puVar11 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar11 + -0x10) = pbVar6 + 1;" (assignment_expression "*(byte **)(puVar11 + -0x10) = pbVar6 + 1" (pointer_expression "*(byte **)(puVar11 + -0x10)" * (cast_expression "(byte **)(puVar11 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58ce5;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58ce5" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar13 = FUN_00095970();" (assignment_expression "uVar13 = FUN_00095970()" identifier = (call_expression "FUN_00095970()" identifier (argument_list "()" ( )))) ;) (expression_statement "pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));" (assignment_expression "pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18))" identifier = (cast_expression "(byte *)(local_28 + *(int *)(param_1 + 0x18))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + *(int *)(param_1 + 0x18))" ( (binary_expression "local_28 + *(int *)(param_1 + 0x18)" identifier + (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )))) ;) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar8;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar8" (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }" if (parenthesized_expression "(*(byte **)(param_1 + 0x10) <= pbVar8)" ( (binary_expression "*(byte **)(param_1 + 0x10) <= pbVar8" (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n            return (undefined4 *)0x0;\n          }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }" else (compound_statement "{\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }" { (expression_statement "uVar13 = (ulonglong)(uint)bVar1;" (assignment_expression "uVar13 = (ulonglong)(uint)bVar1" identifier = (cast_expression "(ulonglong)(uint)bVar1" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (expression_statement "pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);" (assignment_expression "pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1)" identifier = (cast_expression "(byte *)(*(int *)(param_1 + 0x18) + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x18) + 1)" ( (binary_expression "*(int *)(param_1 + 0x18) + 1" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar8;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar8" (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }" if (parenthesized_expression "(*(byte **)(param_1 + 0x10) <= pbVar8)" ( (binary_expression "*(byte **)(param_1 + 0x10) <= pbVar8" (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n            return (undefined4 *)0x0;\n          }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }))) (expression_statement "uVar7 = (uint)uVar13;" (assignment_expression "uVar7 = (uint)uVar13" identifier = (cast_expression "(uint)uVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "pbVar6 = pbVar8 + 1;" (assignment_expression "pbVar6 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (if_statement "if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }" if (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 ')) )) (compound_statement "{\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }" { (expression_statement "*(uint *)(puVar11 + -8) = (uint)bVar1;" (assignment_expression "*(uint *)(puVar11 + -8) = (uint)bVar1" (pointer_expression "*(uint *)(puVar11 + -8)" * (cast_expression "(uint *)(puVar11 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -8)" ( (binary_expression "puVar11 + -8" identifier + number_literal) )))) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(int **)(puVar11 + -0xc) = local_44;" (assignment_expression "*(int **)(puVar11 + -0xc) = local_44" (pointer_expression "*(int **)(puVar11 + -0xc)" * (cast_expression "(int **)(puVar11 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar11 + -0x10) = pbVar6;" (assignment_expression "*(byte **)(puVar11 + -0x10) = pbVar6" (pointer_expression "*(byte **)(puVar11 + -0x10)" * (cast_expression "(byte **)(puVar11 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58d28;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58d28" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar14 = FUN_00095970();" (assignment_expression "uVar14 = FUN_00095970()" identifier = (call_expression "FUN_00095970()" identifier (argument_list "()" ( )))) ;) (expression_statement "pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));" (assignment_expression "pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18))" identifier = (cast_expression "(byte *)(local_28 + *(int *)(param_1 + 0x18))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + *(int *)(param_1 + 0x18))" ( (binary_expression "local_28 + *(int *)(param_1 + 0x18)" identifier + (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )))) ;) }) (else_clause "else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }" else (compound_statement "{\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }" { (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (expression_statement "uVar14 = (ulonglong)(uint)bVar1;" (assignment_expression "uVar14 = (ulonglong)(uint)bVar1" identifier = (cast_expression "(ulonglong)(uint)bVar1" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }))) (expression_statement "uVar3 = (uint)local_4c;" (assignment_expression "uVar3 = (uint)local_4c" identifier = (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_3c._4_4_ = (int)(uVar14 >> 0x20);" (assignment_expression "local_3c._4_4_ = (int)(uVar14 >> 0x20)" (field_expression "local_3c._4_4_" identifier . field_identifier) = (cast_expression "(int)(uVar14 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar14 >> 0x20)" ( (binary_expression "uVar14 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "local_3c._0_4_ = (uint)uVar14;" (assignment_expression "local_3c._0_4_ = (uint)uVar14" (field_expression "local_3c._0_4_" identifier . field_identifier) = (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar6;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar6" (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;" if (parenthesized_expression "((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0))" ( (binary_expression "(local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)" (parenthesized_expression "(local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0)" ( (binary_expression "local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0" (binary_expression "local_3c._4_4_ == 0" (field_expression "local_3c._4_4_" identifier . field_identifier) == number_literal) && (binary_expression "(int)(uVar13 >> 0x20) == 0" (cast_expression "(int)(uVar13 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar13 >> 0x20)" ( (binary_expression "uVar13 >> 0x20" identifier >> number_literal) ))) == number_literal)) )) && (parenthesized_expression "((uint)local_3c == 0 && uVar7 == 0)" ( (binary_expression "(uint)local_3c == 0 && uVar7 == 0" (binary_expression "(uint)local_3c == 0" (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier) == number_literal) && (binary_expression "uVar7 == 0" identifier == number_literal)) ))) )) (break_statement "break;" break ;)) (if_statement "if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }" if (parenthesized_expression "(uVar13 == 1)" ( (binary_expression "uVar13 == 1" identifier == number_literal) )) (compound_statement "{\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }" { (expression_statement "*(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;" (assignment_expression "*(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2" (pointer_expression "*(byte *)(local_34 + 1)" * (cast_expression "(byte *)(local_34 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_34 + 1)" ( (binary_expression "local_34 + 1" identifier + number_literal) )))) = (binary_expression "*(byte *)(local_34 + 1) | 2" (pointer_expression "*(byte *)(local_34 + 1)" * (cast_expression "(byte *)(local_34 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_34 + 1)" ( (binary_expression "local_34 + 1" identifier + number_literal) )))) | number_literal)) ;) })) (expression_statement "local_20 = (uint)local_3c;" (assignment_expression "local_20 = (uint)local_3c" identifier = (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar2 = (uint *)local_34[3];" (assignment_expression "puVar2 = (uint *)local_34[3]" identifier = (cast_expression "(uint *)local_34[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_34[3]" identifier [ number_literal ]))) ;) (expression_statement "local_24 = uVar7;" (assignment_expression "local_24 = uVar7" identifier = identifier) ;) (expression_statement "local_3c = uVar14;" (assignment_expression "local_3c = uVar14" identifier = identifier) ;) (if_statement "if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }" if (parenthesized_expression "(puVar2 == (uint *)local_34[4])" ( (binary_expression "puVar2 == (uint *)local_34[4]" identifier == (cast_expression "(uint *)local_34[4]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_34[4]" identifier [ number_literal ]))) )) (compound_statement "{\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }" { (expression_statement "*(uint **)(puVar11 + -8) = local_58;" (assignment_expression "*(uint **)(puVar11 + -8) = local_58" (pointer_expression "*(uint **)(puVar11 + -8)" * (cast_expression "(uint **)(puVar11 + -8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -8)" ( (binary_expression "puVar11 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar11 + -0xc) = puVar2;" (assignment_expression "*(uint **)(puVar11 + -0xc) = puVar2" (pointer_expression "*(uint **)(puVar11 + -0xc)" * (cast_expression "(uint **)(puVar11 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar11 + -0x10) = local_54;" (assignment_expression "*(undefined4 **)(puVar11 + -0x10) = local_54" (pointer_expression "*(undefined4 **)(puVar11 + -0x10)" * (cast_expression "(undefined4 **)(puVar11 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58d4f;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58d4f" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0005b5b0();" (call_expression "FUN_0005b5b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "pbVar6 = *(byte **)(param_1 + 0x18);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x18)" identifier = (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }" else (compound_statement "{\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }" { (expression_statement "*puVar2 = uVar7;" (assignment_expression "*puVar2 = uVar7" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar2[1] = (uint)local_3c;" (assignment_expression "puVar2[1] = (uint)local_3c" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_34[3] = puVar2 + 2;" (assignment_expression "local_34[3] = puVar2 + 2" (subscript_expression "local_34[3]" identifier [ number_literal ]) = (binary_expression "puVar2 + 2" identifier + number_literal)) ;) }))) (if_statement "if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }" if (parenthesized_expression "(*(byte **)(param_1 + 0x10) <= pbVar6)" ( (binary_expression "*(byte **)(param_1 + 0x10) <= pbVar6" (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n          return (undefined4 *)0x0;\n        }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) })) (expression_statement "uVar13 = local_4c;" (assignment_expression "uVar13 = local_4c" identifier = identifier) ;) (if_statement "if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }" if (parenthesized_expression "((uint)local_4c < 0x100)" ( (binary_expression "(uint)local_4c < 0x100" (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }" { (expression_statement "*(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;" (assignment_expression "*(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34" (pointer_expression "*(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4)" * (cast_expression "(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1c + (uint)local_4c * 4)" ( (binary_expression "param_1 + 0x1c + (uint)local_4c * 4" (binary_expression "param_1 + 0x1c" identifier + number_literal) + (binary_expression "(uint)local_4c * 4" (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) = identifier) ;) }) (else_clause "else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }" else (compound_statement "{\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }" { (expression_statement "local_54 = *(undefined4 **)(param_1 + 0x420);" (assignment_expression "local_54 = *(undefined4 **)(param_1 + 0x420)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 0x420)" * (cast_expression "(undefined4 **)(param_1 + 0x420)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x420)" ( (binary_expression "param_1 + 0x420" identifier + number_literal) ))))) ;) (expression_statement "local_3c._0_4_ = (uint)local_4c % (uint)local_54;" (assignment_expression "local_3c._0_4_ = (uint)local_4c % (uint)local_54" (field_expression "local_3c._0_4_" identifier . field_identifier) = (binary_expression "(uint)local_4c % (uint)local_54" (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) % (cast_expression "(uint)local_54" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);" (assignment_expression "piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" identifier = (pointer_expression "*(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" * (cast_expression "(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" ( (binary_expression "*(int *)(param_1 + 0x41c) + (uint)local_3c * 4" (pointer_expression "*(int *)(param_1 + 0x41c)" * (cast_expression "(int *)(param_1 + 0x41c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x41c)" ( (binary_expression "param_1 + 0x41c" identifier + number_literal) )))) + (binary_expression "(uint)local_3c * 4" (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (if_statement "if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }" if (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }" { (expression_statement "uVar7 = ((int *)*piVar9)[1];" (assignment_expression "uVar7 = ((int *)*piVar9)[1]" identifier = (subscript_expression "((int *)*piVar9)[1]" (parenthesized_expression "((int *)*piVar9)" ( (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier)) )) [ number_literal ])) ;) (expression_statement "piVar12 = (int *)*piVar9;" (assignment_expression "piVar12 = (int *)*piVar9" identifier = (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) (while_statement "while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }" while (parenthesized_expression "(piVar10 = piVar12, (uint)local_4c != uVar7)" ( (comma_expression "piVar10 = piVar12, (uint)local_4c != uVar7" (assignment_expression "piVar10 = piVar12" identifier = identifier) , (binary_expression "(uint)local_4c != uVar7" (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) != identifier)) )) (compound_statement "{\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }" { (expression_statement "piVar12 = (int *)*piVar10;" (assignment_expression "piVar12 = (int *)*piVar10" identifier = (cast_expression "(int *)*piVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier))) ;) (if_statement "if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;" if (parenthesized_expression "((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))" ( (binary_expression "(piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54)" (parenthesized_expression "(piVar12 == (int *)0x0)" ( (binary_expression "piVar12 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54)" ( (comma_expression "uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54" (assignment_expression "uVar7 = piVar12[1]" identifier = (subscript_expression "piVar12[1]" identifier [ number_literal ])) , (comma_expression "piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54" (assignment_expression "piVar9 = piVar10" identifier = identifier) , (binary_expression "(uint)local_3c != uVar7 % (uint)local_54" (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier) != (binary_expression "uVar7 % (uint)local_54" identifier % (cast_expression "(uint)local_54" ( (type_descriptor "uint" type_identifier) ) identifier))))) ))) )) (goto_statement "goto LAB_00058e6b;" goto statement_identifier ;)) })) (expression_statement "iVar5 = *piVar9;" (assignment_expression "iVar5 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (if_statement "if (iVar5 != 0) goto LAB_00058e56;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00058e56;" goto statement_identifier ;)) })) (labeled_statement "LAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;" statement_identifier : (expression_statement "*(undefined4 *)(puVar11 + -0x10) = 0xc;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = 0xc" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" * (cast_expression "(undefined4 *)(puVar11 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58e78;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58e78" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)FUN_001e5200();" (assignment_expression "puVar4 = (undefined4 *)FUN_001e5200()" identifier = (cast_expression "(undefined4 *)FUN_001e5200()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5200()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4[1] = uVar3;" (assignment_expression "puVar4[1] = uVar3" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[2] = 0;" (assignment_expression "puVar4[2] = 0" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar11 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar11 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar11 + -0xc)" * (cast_expression "(undefined4 *)(puVar11 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 **)(puVar11 + -0x10) = puVar4;" (assignment_expression "*(undefined4 **)(puVar11 + -0x10) = puVar4" (pointer_expression "*(undefined4 **)(puVar11 + -0x10)" * (cast_expression "(undefined4 **)(puVar11 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar11 + -0x14) = uVar3;" (assignment_expression "*(uint *)(puVar11 + -0x14) = uVar3" (pointer_expression "*(uint *)(puVar11 + -0x14)" * (cast_expression "(uint *)(puVar11 + -0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar11 + -0x18) = (uint)local_3c;" (assignment_expression "*(uint *)(puVar11 + -0x18) = (uint)local_3c" (pointer_expression "*(uint *)(puVar11 + -0x18)" * (cast_expression "(uint *)(puVar11 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x18)" ( (binary_expression "puVar11 + -0x18" identifier + number_literal) )))) = (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(int *)(puVar11 + -0x1c) = local_50;" (assignment_expression "*(int *)(puVar11 + -0x1c) = local_50" (pointer_expression "*(int *)(puVar11 + -0x1c)" * (cast_expression "(int *)(puVar11 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x1c)" ( (binary_expression "puVar11 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar11 + -0x20) = local_30;" (assignment_expression "*(int **)(puVar11 + -0x20) = local_30" (pointer_expression "*(int **)(puVar11 + -0x20)" * (cast_expression "(int **)(puVar11 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x20)" ( (binary_expression "puVar11 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x24) = 0x58e9d;" (assignment_expression "*(undefined4 *)(puVar11 + -0x24) = 0x58e9d" (pointer_expression "*(undefined4 *)(puVar11 + -0x24)" * (cast_expression "(undefined4 *)(puVar11 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x24)" ( (binary_expression "puVar11 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0005d420();" (call_expression "FUN_0005d420()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar11 = puVar11 + -4;" (assignment_expression "puVar11 = puVar11 + -4" identifier = (binary_expression "puVar11 + -4" identifier + number_literal)) ;) (expression_statement "iVar5 = local_30[0];" (assignment_expression "iVar5 = local_30[0]" identifier = (subscript_expression "local_30[0]" identifier [ number_literal ])) ;) (expression_statement "uVar13 = local_4c;" (assignment_expression "uVar13 = local_4c" identifier = identifier) ;) (labeled_statement "LAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);" statement_identifier : (expression_statement "uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);" (assignment_expression "uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c)" identifier = (call_expression "CONCAT44(local_3c._4_4_,(uint)local_3c)" identifier (argument_list "(local_3c._4_4_,(uint)local_3c)" ( (field_expression "local_3c._4_4_" identifier . field_identifier) , (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier) )))) ;)) (expression_statement "*(undefined4 **)(iVar5 + 8) = local_34;" (assignment_expression "*(undefined4 **)(iVar5 + 8) = local_34" (pointer_expression "*(undefined4 **)(iVar5 + 8)" * (cast_expression "(undefined4 **)(iVar5 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "local_4c._4_4_ = (int)(uVar13 >> 0x20);" (assignment_expression "local_4c._4_4_ = (int)(uVar13 >> 0x20)" (field_expression "local_4c._4_4_" identifier . field_identifier) = (cast_expression "(int)(uVar13 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar13 >> 0x20)" ( (binary_expression "uVar13 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "local_4c._0_4_ = (uint)uVar13;" (assignment_expression "local_4c._0_4_ = (uint)uVar13" (field_expression "local_4c._0_4_" identifier . field_identifier) = (cast_expression "(uint)uVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_3c._4_4_ = (int)(uVar14 >> 0x20);" (assignment_expression "local_3c._4_4_ = (int)(uVar14 >> 0x20)" (field_expression "local_3c._4_4_" identifier . field_identifier) = (cast_expression "(int)(uVar14 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar14 >> 0x20)" ( (binary_expression "uVar14 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "local_3c._0_4_ = (uint)uVar14;" (assignment_expression "local_3c._0_4_ = (uint)uVar14" (field_expression "local_3c._0_4_" identifier . field_identifier) = (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }" if (parenthesized_expression "(local_4c._4_4_ == 0 && param_2 == (uint)local_4c)" ( (binary_expression "local_4c._4_4_ == 0 && param_2 == (uint)local_4c" (binary_expression "local_4c._4_4_ == 0" (field_expression "local_4c._4_4_" identifier . field_identifier) == number_literal) && (binary_expression "param_2 == (uint)local_4c" identifier == (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier))) )) (compound_statement "{\n        return local_34;\n      }" { (return_statement "return local_34;" return identifier ;) })) (expression_statement "pbVar6 = *(byte **)(param_1 + 0x18);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x18)" identifier = (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }" if (parenthesized_expression "(*(byte **)(param_1 + 0x10) <= pbVar6)" ( (binary_expression "*(byte **)(param_1 + 0x10) <= pbVar6" (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n        return (undefined4 *)0x0;\n      }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) })) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar6;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar6" (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) })) (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (binary_expression IDENT % (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 (cast_expression ( (type_descriptor TYPE) ) 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 = (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )) [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (binary_expression IDENT % (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))))) ))) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) 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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (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) )))) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | (binary_expression IDENT == LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) 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) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (field_expression IDENT . field_identifier) == LIT) && (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) == LIT)) )) && (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT) && (binary_expression IDENT == LIT)) ))) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (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 *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) % (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 = (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )) [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (binary_expression IDENT % (cast_expression ( (type_descriptor TYPE) ) IDENT))))) ))) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (cast_expression ( (type_descriptor TYPE) ) 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 (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (field_expression IDENT . field_identifier) == LIT) && (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })))
(function_definition "undefined4 * FUN_00058a70(int param_1,uint param_2)\n\n{\n  byte bVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int *piVar9;\n  int *piVar10;\n  undefined1 *puVar11;\n  int *piVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  int aiStack_80 [9];\n  undefined1 auStack_5c [4];\n  uint *local_58;\n  undefined4 *local_54;\n  int local_50;\n  undefined8 local_4c;\n  int *local_44;\n  undefined **local_40;\n  undefined8 local_3c;\n  undefined4 *local_34;\n  int local_30 [2];\n  int local_28;\n  uint local_24;\n  uint local_20;\n  \n  uVar13 = CONCAT44(local_4c._4_4_,(uint)local_4c);\n  local_40 = &__DT_PLTGOT;\n  puVar11 = auStack_5c;\n  local_50 = param_1 + 0x41c;\n  local_3c._0_4_ = param_2 % *(uint *)(param_1 + 0x420);\n  piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n  if (piVar9 != (int *)0x0) {\n    uVar7 = ((int *)*piVar9)[1];\n    piVar12 = (int *)*piVar9;\n    while (uVar7 != param_2) {\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }\n    if (*piVar9 != 0) {\n      return *(undefined4 **)(*piVar9 + 8);\n    }\n  }\nLAB_00058af8:\n  pbVar6 = *(byte **)(param_1 + 0x18);\n  if (pbVar6 < *(byte **)(param_1 + 0x10)) {\n    local_44 = &local_28;\n    while( true ) {\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    \n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }\n    *(byte **)(param_1 + 0x18) = pbVar6;\n  }\n  return (undefined4 *)0x0;\n}" (type_identifier "undefined4") (pointer_declarator "* FUN_00058a70(int param_1,uint param_2)" (* "*") (function_declarator "FUN_00058a70(int param_1,uint param_2)" (identifier "FUN_00058a70") (parameter_list "(int param_1,uint param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")")))) (compound_statement "{\n  byte bVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int *piVar9;\n  int *piVar10;\n  undefined1 *puVar11;\n  int *piVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  int aiStack_80 [9];\n  undefined1 auStack_5c [4];\n  uint *local_58;\n  undefined4 *local_54;\n  int local_50;\n  undefined8 local_4c;\n  int *local_44;\n  undefined **local_40;\n  undefined8 local_3c;\n  undefined4 *local_34;\n  int local_30 [2];\n  int local_28;\n  uint local_24;\n  uint local_20;\n  \n  uVar13 = CONCAT44(local_4c._4_4_,(uint)local_4c);\n  local_40 = &__DT_PLTGOT;\n  puVar11 = auStack_5c;\n  local_50 = param_1 + 0x41c;\n  local_3c._0_4_ = param_2 % *(uint *)(param_1 + 0x420);\n  piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n  if (piVar9 != (int *)0x0) {\n    uVar7 = ((int *)*piVar9)[1];\n    piVar12 = (int *)*piVar9;\n    while (uVar7 != param_2) {\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }\n    if (*piVar9 != 0) {\n      return *(undefined4 **)(*piVar9 + 8);\n    }\n  }\nLAB_00058af8:\n  pbVar6 = *(byte **)(param_1 + 0x18);\n  if (pbVar6 < *(byte **)(param_1 + 0x10)) {\n    local_44 = &local_28;\n    while( true ) {\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    \n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }\n    *(byte **)(param_1 + 0x18) = pbVar6;\n  }\n  return (undefined4 *)0x0;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "uint *puVar2;" (type_identifier "uint") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "undefined1 *puVar11;" (type_identifier "undefined1") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "int *piVar12;" (primitive_type "int") (pointer_declarator "*piVar12" (* "*") (identifier "piVar12")) (; ";")) (declaration "ulonglong uVar13;" (type_identifier "ulonglong") (identifier "uVar13") (; ";")) (declaration "ulonglong uVar14;" (type_identifier "ulonglong") (identifier "uVar14") (; ";")) (declaration "int aiStack_80 [9];" (primitive_type "int") (array_declarator "aiStack_80 [9]" (identifier "aiStack_80") ([ "[") (number_literal "9") (] "]")) (; ";")) (declaration "undefined1 auStack_5c [4];" (type_identifier "undefined1") (array_declarator "auStack_5c [4]" (identifier "auStack_5c") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "uint *local_58;" (type_identifier "uint") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "undefined4 *local_54;" (type_identifier "undefined4") (pointer_declarator "*local_54" (* "*") (identifier "local_54")) (; ";")) (declaration "int local_50;" (primitive_type "int") (identifier "local_50") (; ";")) (declaration "undefined8 local_4c;" (type_identifier "undefined8") (identifier "local_4c") (; ";")) (declaration "int *local_44;" (primitive_type "int") (pointer_declarator "*local_44" (* "*") (identifier "local_44")) (; ";")) (declaration "undefined **local_40;" (type_identifier "undefined") (pointer_declarator "**local_40" (* "*") (pointer_declarator "*local_40" (* "*") (identifier "local_40"))) (; ";")) (declaration "undefined8 local_3c;" (type_identifier "undefined8") (identifier "local_3c") (; ";")) (declaration "undefined4 *local_34;" (type_identifier "undefined4") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "int local_30 [2];" (primitive_type "int") (array_declarator "local_30 [2]" (identifier "local_30") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (declaration "uint local_20;" (type_identifier "uint") (identifier "local_20") (; ";")) (expression_statement "uVar13 = CONCAT44(local_4c._4_4_,(uint)local_4c);" (assignment_expression "uVar13 = CONCAT44(local_4c._4_4_,(uint)local_4c)" (identifier "uVar13") (= "=") (call_expression "CONCAT44(local_4c._4_4_,(uint)local_4c)" (identifier "CONCAT44") (argument_list "(local_4c._4_4_,(uint)local_4c)" (( "(") (field_expression "local_4c._4_4_" (identifier "local_4c") (. ".") (field_identifier "_4_4_")) (, ",") (cast_expression "(uint)local_4c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_4c")) () ")")))) (; ";")) (expression_statement "local_40 = &__DT_PLTGOT;" (assignment_expression "local_40 = &__DT_PLTGOT" (identifier "local_40") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "puVar11 = auStack_5c;" (assignment_expression "puVar11 = auStack_5c" (identifier "puVar11") (= "=") (identifier "auStack_5c")) (; ";")) (expression_statement "local_50 = param_1 + 0x41c;" (assignment_expression "local_50 = param_1 + 0x41c" (identifier "local_50") (= "=") (binary_expression "param_1 + 0x41c" (identifier "param_1") (+ "+") (number_literal "0x41c"))) (; ";")) (expression_statement "local_3c._0_4_ = param_2 % *(uint *)(param_1 + 0x420);" (assignment_expression "local_3c._0_4_ = param_2 % *(uint *)(param_1 + 0x420)" (field_expression "local_3c._0_4_" (identifier "local_3c") (. ".") (field_identifier "_0_4_")) (= "=") (binary_expression "param_2 % *(uint *)(param_1 + 0x420)" (identifier "param_2") (% "%") (pointer_expression "*(uint *)(param_1 + 0x420)" (* "*") (cast_expression "(uint *)(param_1 + 0x420)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x420)" (( "(") (binary_expression "param_1 + 0x420" (identifier "param_1") (+ "+") (number_literal "0x420")) () ")")))))) (; ";")) (expression_statement "piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);" (assignment_expression "piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" (identifier "piVar9") (= "=") (pointer_expression "*(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" (* "*") (cast_expression "(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x41c) + (uint)local_3c * 4" (pointer_expression "*(int *)(param_1 + 0x41c)" (* "*") (cast_expression "(int *)(param_1 + 0x41c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x41c)" (( "(") (binary_expression "param_1 + 0x41c" (identifier "param_1") (+ "+") (number_literal "0x41c")) () ")")))) (+ "+") (binary_expression "(uint)local_3c * 4" (cast_expression "(uint)local_3c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_3c")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (piVar9 != (int *)0x0) {\n    uVar7 = ((int *)*piVar9)[1];\n    piVar12 = (int *)*piVar9;\n    while (uVar7 != param_2) {\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }\n    if (*piVar9 != 0) {\n      return *(undefined4 **)(*piVar9 + 8);\n    }\n  }" (if "if") (parenthesized_expression "(piVar9 != (int *)0x0)" (( "(") (binary_expression "piVar9 != (int *)0x0" (identifier "piVar9") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar7 = ((int *)*piVar9)[1];\n    piVar12 = (int *)*piVar9;\n    while (uVar7 != param_2) {\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }\n    if (*piVar9 != 0) {\n      return *(undefined4 **)(*piVar9 + 8);\n    }\n  }" ({ "{") (expression_statement "uVar7 = ((int *)*piVar9)[1];" (assignment_expression "uVar7 = ((int *)*piVar9)[1]" (identifier "uVar7") (= "=") (subscript_expression "((int *)*piVar9)[1]" (parenthesized_expression "((int *)*piVar9)" (( "(") (cast_expression "(int *)*piVar9" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) () ")")) ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar12 = (int *)*piVar9;" (assignment_expression "piVar12 = (int *)*piVar9" (identifier "piVar12") (= "=") (cast_expression "(int *)*piVar9" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar9" (* "*") (identifier "piVar9")))) (; ";")) (while_statement "while (uVar7 != param_2) {\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }" (while "while") (parenthesized_expression "(uVar7 != param_2)" (( "(") (binary_expression "uVar7 != param_2" (identifier "uVar7") (!= "!=") (identifier "param_2")) () ")")) (compound_statement "{\n      piVar10 = (int *)*piVar12;\n      if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;\n    }" ({ "{") (expression_statement "piVar10 = (int *)*piVar12;" (assignment_expression "piVar10 = (int *)*piVar12" (identifier "piVar10") (= "=") (cast_expression "(int *)*piVar12" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar12" (* "*") (identifier "piVar12")))) (; ";")) (if_statement "if ((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;" (if "if") (parenthesized_expression "((piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420)))" (( "(") (binary_expression "(piVar10 == (int *)0x0) ||\n         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))" (parenthesized_expression "(piVar10 == (int *)0x0)" (( "(") (binary_expression "piVar10 == (int *)0x0" (identifier "piVar10") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))" (( "(") (comma_expression "uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420)" (assignment_expression "uVar7 = piVar10[1]" (identifier "uVar7") (= "=") (subscript_expression "piVar10[1]" (identifier "piVar10") ([ "[") (number_literal "1") (] "]"))) (, ",") (comma_expression "piVar9 = piVar12, piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420)" (assignment_expression "piVar9 = piVar12" (identifier "piVar9") (= "=") (identifier "piVar12")) (, ",") (comma_expression "piVar12 = piVar10,\n         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420)" (assignment_expression "piVar12 = piVar10" (identifier "piVar12") (= "=") (identifier "piVar10")) (, ",") (binary_expression "(uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420)" (cast_expression "(uint)local_3c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_3c")) (!= "!=") (binary_expression "uVar7 % *(uint *)(param_1 + 0x420)" (identifier "uVar7") (% "%") (pointer_expression "*(uint *)(param_1 + 0x420)" (* "*") (cast_expression "(uint *)(param_1 + 0x420)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x420)" (( "(") (binary_expression "param_1 + 0x420" (identifier "param_1") (+ "+") (number_literal "0x420")) () ")"))))))))) () ")"))) () ")")) (goto_statement "goto LAB_00058af8;" (goto "goto") (statement_identifier "LAB_00058af8") (; ";"))) (} "}"))) (if_statement "if (*piVar9 != 0) {\n      return *(undefined4 **)(*piVar9 + 8);\n    }" (if "if") (parenthesized_expression "(*piVar9 != 0)" (( "(") (binary_expression "*piVar9 != 0" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return *(undefined4 **)(*piVar9 + 8);\n    }" ({ "{") (return_statement "return *(undefined4 **)(*piVar9 + 8);" (return "return") (pointer_expression "*(undefined4 **)(*piVar9 + 8)" (* "*") (cast_expression "(undefined4 **)(*piVar9 + 8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar9 + 8)" (( "(") (binary_expression "*piVar9 + 8" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (+ "+") (number_literal "8")) () ")")))) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00058af8:\n  pbVar6 = *(byte **)(param_1 + 0x18);" (statement_identifier "LAB_00058af8") (: ":") (expression_statement "pbVar6 = *(byte **)(param_1 + 0x18);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x18)" (identifier "pbVar6") (= "=") (pointer_expression "*(byte **)(param_1 + 0x18)" (* "*") (cast_expression "(byte **)(param_1 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";"))) (if_statement "if (pbVar6 < *(byte **)(param_1 + 0x10)) {\n    local_44 = &local_28;\n    while( true ) {\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    \n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }\n    *(byte **)(param_1 + 0x18) = pbVar6;\n  }" (if "if") (parenthesized_expression "(pbVar6 < *(byte **)(param_1 + 0x10))" (( "(") (binary_expression "pbVar6 < *(byte **)(param_1 + 0x10)" (identifier "pbVar6") (< "<") (pointer_expression "*(byte **)(param_1 + 0x10)" (* "*") (cast_expression "(byte **)(param_1 + 0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (compound_statement "{\n    local_44 = &local_28;\n    while( true ) {\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    \n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }\n    *(byte **)(param_1 + 0x18) = pbVar6;\n  }" ({ "{") (expression_statement "local_44 = &local_28;" (assignment_expression "local_44 = &local_28" (identifier "local_44") (= "=") (pointer_expression "&local_28" (& "&") (identifier "local_28"))) (; ";")) (while_statement "while( true ) {\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    \n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      bVar1 = *pbVar6;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x10);\n      if (uVar13 == 0) break;\n      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      pbVar8 = pbVar8 + 1;\n      local_4c = uVar13;\n      if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }\n      *(byte **)(param_1 + 0x18) = pbVar8;\n      if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }\n      bVar1 = *pbVar8;\n      *(byte **)(param_1 + 0x18) = pbVar8 + 1;\n      *(undefined4 *)(puVar11 + -0x10) = 0x14;\n      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;\n      puVar4 = (undefined4 *)FUN_001e5200();\n      *puVar4 = (uint)local_3c;\n      puVar4[2] = 0;\n      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));\n      puVar4[3] = 0;\n      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;\n      local_54 = puVar4 + 2;\n      puVar4[4] = 0;\n      *(undefined4 *)(puVar11 + -0x10) = 0x50;\n                    \n      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;\n      local_34 = puVar4;\n      iVar5 = FUN_001e5200();\n      if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }\n      local_34[2] = iVar5;\n      local_34[3] = iVar5;\n      local_34[4] = iVar5 + 0x50;\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n      local_58 = &local_24;\n      while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }\n      uVar13 = local_4c;\n      if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }\n      local_4c._4_4_ = (int)(uVar13 >> 0x20);\n      local_4c._0_4_ = (uint)uVar13;\n      local_3c._4_4_ = (int)(uVar14 >> 0x20);\n      local_3c._0_4_ = (uint)uVar14;\n      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }\n      pbVar6 = *(byte **)(param_1 + 0x18);\n      if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }\n    }" ({ "{") (expression_statement "bVar1 = *pbVar6;" (assignment_expression "bVar1 = *pbVar6" (identifier "bVar1") (= "=") (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6"))) (; ";")) (if_statement "if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }\n      else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }" (if "if") (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") (' "'"))) () ")")) (compound_statement "{\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;\n        local_4c = uVar13;\n        uVar13 = FUN_00095970();\n      }" ({ "{") (expression_statement "*(uint *)(puVar11 + -8) = (uint)bVar1;" (assignment_expression "*(uint *)(puVar11 + -8) = (uint)bVar1" (pointer_expression "*(uint *)(puVar11 + -8)" (* "*") (cast_expression "(uint *)(puVar11 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -8)" (( "(") (binary_expression "puVar11 + -8" (identifier "puVar11") (+ "+") (number_literal "-8")) () ")")))) (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (expression_statement "*(int **)(puVar11 + -0xc) = local_44;" (assignment_expression "*(int **)(puVar11 + -0xc) = local_44" (pointer_expression "*(int **)(puVar11 + -0xc)" (* "*") (cast_expression "(int **)(puVar11 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0xc)" (( "(") (binary_expression "puVar11 + -0xc" (identifier "puVar11") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_44")) (; ";")) (expression_statement "*(byte **)(puVar11 + -0x10) = pbVar6 + 1;" (assignment_expression "*(byte **)(puVar11 + -0x10) = pbVar6 + 1" (pointer_expression "*(byte **)(puVar11 + -0x10)" (* "*") (cast_expression "(byte **)(puVar11 + -0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58d73;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58d73" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x58d73")) (; ";")) (expression_statement "local_4c = uVar13;" (assignment_expression "local_4c = uVar13" (identifier "local_4c") (= "=") (identifier "uVar13")) (; ";")) (expression_statement "uVar13 = FUN_00095970();" (assignment_expression "uVar13 = FUN_00095970()" (identifier "uVar13") (= "=") (call_expression "FUN_00095970()" (identifier "FUN_00095970") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }" (else "else") (compound_statement "{\n        local_28 = 1;\n        uVar13 = (ulonglong)(uint)bVar1;\n      }" ({ "{") (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" (identifier "local_28") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar13 = (ulonglong)(uint)bVar1;" (assignment_expression "uVar13 = (ulonglong)(uint)bVar1" (identifier "uVar13") (= "=") (cast_expression "(ulonglong)(uint)bVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")))) (; ";")) (} "}")))) (expression_statement "pbVar6 = *(byte **)(param_1 + 0x10);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x10)" (identifier "pbVar6") (= "=") (pointer_expression "*(byte **)(param_1 + 0x10)" (* "*") (cast_expression "(byte **)(param_1 + 0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (uVar13 == 0) break;" (if "if") (parenthesized_expression "(uVar13 == 0)" (( "(") (binary_expression "uVar13 == 0" (identifier "uVar13") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));" (assignment_expression "pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18))" (identifier "pbVar8") (= "=") (cast_expression "(byte *)(local_28 + *(int *)(param_1 + 0x18))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + *(int *)(param_1 + 0x18))" (( "(") (binary_expression "local_28 + *(int *)(param_1 + 0x18)" (identifier "local_28") (+ "+") (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) () ")")))) (; ";")) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar8;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar8" (pointer_expression "*(byte **)(param_1 + 0x18)" (* "*") (cast_expression "(byte **)(param_1 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "pbVar8")) (; ";")) (if_statement "if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }" (if "if") (parenthesized_expression "(pbVar6 <= pbVar8)" (( "(") (binary_expression "pbVar6 <= pbVar8" (identifier "pbVar6") (<= "<=") (identifier "pbVar8")) () ")")) (compound_statement "{\n        return (undefined4 *)0x0;\n      }" ({ "{") (return_statement "return (undefined4 *)0x0;" (return "return") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" (identifier "bVar1") (= "=") (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8"))) (; ";")) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + 1" (identifier "pbVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_4c = uVar13;" (assignment_expression "local_4c = uVar13" (identifier "local_4c") (= "=") (identifier "uVar13")) (; ";")) (if_statement "if ((char)bVar1 < '\0') {\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }\n      else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }" (if "if") (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") (' "'"))) () ")")) (compound_statement "{\n        *(uint *)(puVar11 + -8) = (uint)bVar1;\n        *(int **)(puVar11 + -0xc) = local_44;\n        *(byte **)(puVar11 + -0x10) = pbVar8;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;\n        local_3c = FUN_00095970();\n        pbVar6 = *(byte **)(param_1 + 0x10);\n        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n      }" ({ "{") (expression_statement "*(uint *)(puVar11 + -8) = (uint)bVar1;" (assignment_expression "*(uint *)(puVar11 + -8) = (uint)bVar1" (pointer_expression "*(uint *)(puVar11 + -8)" (* "*") (cast_expression "(uint *)(puVar11 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -8)" (( "(") (binary_expression "puVar11 + -8" (identifier "puVar11") (+ "+") (number_literal "-8")) () ")")))) (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (expression_statement "*(int **)(puVar11 + -0xc) = local_44;" (assignment_expression "*(int **)(puVar11 + -0xc) = local_44" (pointer_expression "*(int **)(puVar11 + -0xc)" (* "*") (cast_expression "(int **)(puVar11 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0xc)" (( "(") (binary_expression "puVar11 + -0xc" (identifier "puVar11") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_44")) (; ";")) (expression_statement "*(byte **)(puVar11 + -0x10) = pbVar8;" (assignment_expression "*(byte **)(puVar11 + -0x10) = pbVar8" (pointer_expression "*(byte **)(puVar11 + -0x10)" (* "*") (cast_expression "(byte **)(puVar11 + -0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "pbVar8")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58de0;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58de0" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x58de0")) (; ";")) (expression_statement "local_3c = FUN_00095970();" (assignment_expression "local_3c = FUN_00095970()" (identifier "local_3c") (= "=") (call_expression "FUN_00095970()" (identifier "FUN_00095970") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pbVar6 = *(byte **)(param_1 + 0x10);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x10)" (identifier "pbVar6") (= "=") (pointer_expression "*(byte **)(param_1 + 0x10)" (* "*") (cast_expression "(byte **)(param_1 + 0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));" (assignment_expression "pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18))" (identifier "pbVar8") (= "=") (cast_expression "(byte *)(local_28 + *(int *)(param_1 + 0x18))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + *(int *)(param_1 + 0x18))" (( "(") (binary_expression "local_28 + *(int *)(param_1 + 0x18)" (identifier "local_28") (+ "+") (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }" (else "else") (compound_statement "{\n        local_28 = 1;\n        local_3c = (ulonglong)(uint)bVar1;\n      }" ({ "{") (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" (identifier "local_28") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_3c = (ulonglong)(uint)bVar1;" (assignment_expression "local_3c = (ulonglong)(uint)bVar1" (identifier "local_3c") (= "=") (cast_expression "(ulonglong)(uint)bVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")))) (; ";")) (} "}")))) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar8;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar8" (pointer_expression "*(byte **)(param_1 + 0x18)" (* "*") (cast_expression "(byte **)(param_1 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "pbVar8")) (; ";")) (if_statement "if (pbVar6 <= pbVar8) {\n        return (undefined4 *)0x0;\n      }" (if "if") (parenthesized_expression "(pbVar6 <= pbVar8)" (( "(") (binary_expression "pbVar6 <= pbVar8" (identifier "pbVar6") (<= "<=") (identifier "pbVar8")) () ")")) (compound_statement "{\n        return (undefined4 *)0x0;\n      }" ({ "{") (return_statement "return (undefined4 *)0x0;" (return "return") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" (identifier "bVar1") (= "=") (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8"))) (; ";")) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar8 + 1;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar8 + 1" (pointer_expression "*(byte **)(param_1 + 0x18)" (* "*") (cast_expression "(byte **)(param_1 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "pbVar8 + 1" (identifier "pbVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = 0x14;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = 0x14" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "0x14")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58ba1;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58ba1" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x58ba1")) (; ";")) (expression_statement "puVar4 = (undefined4 *)FUN_001e5200();" (assignment_expression "puVar4 = (undefined4 *)FUN_001e5200()" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)FUN_001e5200()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e5200()" (identifier "FUN_001e5200") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*puVar4 = (uint)local_3c;" (assignment_expression "*puVar4 = (uint)local_3c" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (cast_expression "(uint)local_3c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_3c"))) (; ";")) (expression_statement "puVar4[2] = 0;" (assignment_expression "puVar4[2] = 0" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));" (assignment_expression "local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1))" (field_expression "local_3c._0_4_" (identifier "local_3c") (. ".") (field_identifier "_0_4_")) (= "=") (call_expression "CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1))" (identifier "CONCAT31") (argument_list "(local_3c._1_3_,*(byte *)(puVar4 + 1))" (( "(") (field_expression "local_3c._1_3_" (identifier "local_3c") (. ".") (field_identifier "_1_3_")) (, ",") (pointer_expression "*(byte *)(puVar4 + 1)" (* "*") (cast_expression "(byte *)(puVar4 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 1)" (( "(") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1")) () ")")))) () ")")))) (; ";")) (expression_statement "puVar4[3] = 0;" (assignment_expression "puVar4[3] = 0" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;" (assignment_expression "*(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1" (pointer_expression "*(byte *)(puVar4 + 1)" (* "*") (cast_expression "(byte *)(puVar4 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 1)" (( "(") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1" (binary_expression "*(byte *)(puVar4 + 1) & 0xfc" (pointer_expression "*(byte *)(puVar4 + 1)" (* "*") (cast_expression "(byte *)(puVar4 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 1)" (( "(") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "0xfc")) (| "|") (binary_expression "bVar1 == 1" (identifier "bVar1") (== "==") (number_literal "1")))) (; ";")) (expression_statement "local_54 = puVar4 + 2;" (assignment_expression "local_54 = puVar4 + 2" (identifier "local_54") (= "=") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar4[4] = 0;" (assignment_expression "puVar4[4] = 0" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = 0x50;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = 0x50" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "0x50")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58be6;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58be6" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x58be6")) (; ";")) (expression_statement "local_34 = puVar4;" (assignment_expression "local_34 = puVar4" (identifier "local_34") (= "=") (identifier "puVar4")) (; ";")) (expression_statement "iVar5 = FUN_001e5200();" (assignment_expression "iVar5 = FUN_001e5200()" (identifier "iVar5") (= "=") (call_expression "FUN_001e5200()" (identifier "FUN_001e5200") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (puVar4[2] != 0) {\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }" (if "if") (parenthesized_expression "(puVar4[2] != 0)" (( "(") (binary_expression "puVar4[2] != 0" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];\n        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;\n        local_3c._0_4_ = iVar5;\n        FUN_001e6db0();\n        iVar5 = (uint)local_3c;\n      }" ({ "{") (expression_statement "*(undefined4 *)(puVar11 + -0x10) = puVar4[2];" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = puVar4[2]" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58bfc;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58bfc" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x58bfc")) (; ";")) (expression_statement "local_3c._0_4_ = iVar5;" (assignment_expression "local_3c._0_4_ = iVar5" (field_expression "local_3c._0_4_" (identifier "local_3c") (. ".") (field_identifier "_0_4_")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "FUN_001e6db0();" (call_expression "FUN_001e6db0()" (identifier "FUN_001e6db0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar5 = (uint)local_3c;" (assignment_expression "iVar5 = (uint)local_3c" (identifier "iVar5") (= "=") (cast_expression "(uint)local_3c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_3c"))) (; ";")) (} "}"))) (expression_statement "local_34[2] = iVar5;" (assignment_expression "local_34[2] = iVar5" (subscript_expression "local_34[2]" (identifier "local_34") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "local_34[3] = iVar5;" (assignment_expression "local_34[3] = iVar5" (subscript_expression "local_34[3]" (identifier "local_34") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "local_34[4] = iVar5 + 0x50;" (assignment_expression "local_34[4] = iVar5 + 0x50" (subscript_expression "local_34[4]" (identifier "local_34") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "iVar5 + 0x50" (identifier "iVar5") (+ "+") (number_literal "0x50"))) (; ";")) (expression_statement "pbVar6 = *(byte **)(param_1 + 0x18);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x18)" (identifier "pbVar6") (= "=") (pointer_expression "*(byte **)(param_1 + 0x18)" (* "*") (cast_expression "(byte **)(param_1 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }" (if "if") (parenthesized_expression "(*(byte **)(param_1 + 0x10) <= pbVar6)" (( "(") (binary_expression "*(byte **)(param_1 + 0x10) <= pbVar6" (pointer_expression "*(byte **)(param_1 + 0x10)" (* "*") (cast_expression "(byte **)(param_1 + 0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (<= "<=") (identifier "pbVar6")) () ")")) (compound_statement "{\n        return (undefined4 *)0x0;\n      }" ({ "{") (return_statement "return (undefined4 *)0x0;" (return "return") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "local_58 = &local_24;" (assignment_expression "local_58 = &local_24" (identifier "local_58") (= "=") (pointer_expression "&local_24" (& "&") (identifier "local_24"))) (; ";")) (while_statement "while( true ) {\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        bVar1 = *pbVar6;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        uVar7 = (uint)uVar13;\n        pbVar6 = pbVar8 + 1;\n        bVar1 = *pbVar8;\n        if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }\n        uVar3 = (uint)local_4c;\n        local_3c._4_4_ = (int)(uVar14 >> 0x20);\n        local_3c._0_4_ = (uint)uVar14;\n        *(byte **)(param_1 + 0x18) = pbVar6;\n        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;\n        if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }\n        local_20 = (uint)local_3c;\n        puVar2 = (uint *)local_34[3];\n        local_24 = uVar7;\n        local_3c = uVar14;\n        if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }\n        if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }\n      }" ({ "{") (expression_statement "bVar1 = *pbVar6;" (assignment_expression "bVar1 = *pbVar6" (identifier "bVar1") (= "=") (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6"))) (; ";")) (if_statement "if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }\n        else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }" (if "if") (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") (' "'"))) () ")")) (compound_statement "{\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;\n          uVar13 = FUN_00095970();\n          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }" ({ "{") (expression_statement "*(uint *)(puVar11 + -8) = (uint)bVar1;" (assignment_expression "*(uint *)(puVar11 + -8) = (uint)bVar1" (pointer_expression "*(uint *)(puVar11 + -8)" (* "*") (cast_expression "(uint *)(puVar11 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -8)" (( "(") (binary_expression "puVar11 + -8" (identifier "puVar11") (+ "+") (number_literal "-8")) () ")")))) (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (expression_statement "*(int **)(puVar11 + -0xc) = local_44;" (assignment_expression "*(int **)(puVar11 + -0xc) = local_44" (pointer_expression "*(int **)(puVar11 + -0xc)" (* "*") (cast_expression "(int **)(puVar11 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0xc)" (( "(") (binary_expression "puVar11 + -0xc" (identifier "puVar11") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_44")) (; ";")) (expression_statement "*(byte **)(puVar11 + -0x10) = pbVar6 + 1;" (assignment_expression "*(byte **)(puVar11 + -0x10) = pbVar6 + 1" (pointer_expression "*(byte **)(puVar11 + -0x10)" (* "*") (cast_expression "(byte **)(puVar11 + -0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58ce5;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58ce5" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x58ce5")) (; ";")) (expression_statement "uVar13 = FUN_00095970();" (assignment_expression "uVar13 = FUN_00095970()" (identifier "uVar13") (= "=") (call_expression "FUN_00095970()" (identifier "FUN_00095970") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));" (assignment_expression "pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18))" (identifier "pbVar8") (= "=") (cast_expression "(byte *)(local_28 + *(int *)(param_1 + 0x18))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + *(int *)(param_1 + 0x18))" (( "(") (binary_expression "local_28 + *(int *)(param_1 + 0x18)" (identifier "local_28") (+ "+") (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) () ")")))) (; ";")) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar8;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar8" (pointer_expression "*(byte **)(param_1 + 0x18)" (* "*") (cast_expression "(byte **)(param_1 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "pbVar8")) (; ";")) (if_statement "if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }" (if "if") (parenthesized_expression "(*(byte **)(param_1 + 0x10) <= pbVar8)" (( "(") (binary_expression "*(byte **)(param_1 + 0x10) <= pbVar8" (pointer_expression "*(byte **)(param_1 + 0x10)" (* "*") (cast_expression "(byte **)(param_1 + 0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (<= "<=") (identifier "pbVar8")) () ")")) (compound_statement "{\n            return (undefined4 *)0x0;\n          }" ({ "{") (return_statement "return (undefined4 *)0x0;" (return "return") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }" (else "else") (compound_statement "{\n          uVar13 = (ulonglong)(uint)bVar1;\n          local_28 = 1;\n          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);\n          *(byte **)(param_1 + 0x18) = pbVar8;\n          if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }\n        }" ({ "{") (expression_statement "uVar13 = (ulonglong)(uint)bVar1;" (assignment_expression "uVar13 = (ulonglong)(uint)bVar1" (identifier "uVar13") (= "=") (cast_expression "(ulonglong)(uint)bVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")))) (; ";")) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" (identifier "local_28") (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);" (assignment_expression "pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)(*(int *)(param_1 + 0x18) + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x18) + 1)" (( "(") (binary_expression "*(int *)(param_1 + 0x18) + 1" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar8;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar8" (pointer_expression "*(byte **)(param_1 + 0x18)" (* "*") (cast_expression "(byte **)(param_1 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "pbVar8")) (; ";")) (if_statement "if (*(byte **)(param_1 + 0x10) <= pbVar8) {\n            return (undefined4 *)0x0;\n          }" (if "if") (parenthesized_expression "(*(byte **)(param_1 + 0x10) <= pbVar8)" (( "(") (binary_expression "*(byte **)(param_1 + 0x10) <= pbVar8" (pointer_expression "*(byte **)(param_1 + 0x10)" (* "*") (cast_expression "(byte **)(param_1 + 0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (<= "<=") (identifier "pbVar8")) () ")")) (compound_statement "{\n            return (undefined4 *)0x0;\n          }" ({ "{") (return_statement "return (undefined4 *)0x0;" (return "return") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (} "}")))) (expression_statement "uVar7 = (uint)uVar13;" (assignment_expression "uVar7 = (uint)uVar13" (identifier "uVar7") (= "=") (cast_expression "(uint)uVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar13"))) (; ";")) (expression_statement "pbVar6 = pbVar8 + 1;" (assignment_expression "pbVar6 = pbVar8 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar8 + 1" (identifier "pbVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" (identifier "bVar1") (= "=") (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8"))) (; ";")) (if_statement "if ((char)bVar1 < '\0') {\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }\n        else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }" (if "if") (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") (' "'"))) () ")")) (compound_statement "{\n          *(uint *)(puVar11 + -8) = (uint)bVar1;\n          *(int **)(puVar11 + -0xc) = local_44;\n          *(byte **)(puVar11 + -0x10) = pbVar6;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;\n          uVar14 = FUN_00095970();\n          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));\n        }" ({ "{") (expression_statement "*(uint *)(puVar11 + -8) = (uint)bVar1;" (assignment_expression "*(uint *)(puVar11 + -8) = (uint)bVar1" (pointer_expression "*(uint *)(puVar11 + -8)" (* "*") (cast_expression "(uint *)(puVar11 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -8)" (( "(") (binary_expression "puVar11 + -8" (identifier "puVar11") (+ "+") (number_literal "-8")) () ")")))) (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (expression_statement "*(int **)(puVar11 + -0xc) = local_44;" (assignment_expression "*(int **)(puVar11 + -0xc) = local_44" (pointer_expression "*(int **)(puVar11 + -0xc)" (* "*") (cast_expression "(int **)(puVar11 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0xc)" (( "(") (binary_expression "puVar11 + -0xc" (identifier "puVar11") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_44")) (; ";")) (expression_statement "*(byte **)(puVar11 + -0x10) = pbVar6;" (assignment_expression "*(byte **)(puVar11 + -0x10) = pbVar6" (pointer_expression "*(byte **)(puVar11 + -0x10)" (* "*") (cast_expression "(byte **)(puVar11 + -0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58d28;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58d28" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x58d28")) (; ";")) (expression_statement "uVar14 = FUN_00095970();" (assignment_expression "uVar14 = FUN_00095970()" (identifier "uVar14") (= "=") (call_expression "FUN_00095970()" (identifier "FUN_00095970") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));" (assignment_expression "pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18))" (identifier "pbVar6") (= "=") (cast_expression "(byte *)(local_28 + *(int *)(param_1 + 0x18))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + *(int *)(param_1 + 0x18))" (( "(") (binary_expression "local_28 + *(int *)(param_1 + 0x18)" (identifier "local_28") (+ "+") (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }" (else "else") (compound_statement "{\n          local_28 = 1;\n          uVar14 = (ulonglong)(uint)bVar1;\n        }" ({ "{") (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" (identifier "local_28") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar14 = (ulonglong)(uint)bVar1;" (assignment_expression "uVar14 = (ulonglong)(uint)bVar1" (identifier "uVar14") (= "=") (cast_expression "(ulonglong)(uint)bVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")))) (; ";")) (} "}")))) (expression_statement "uVar3 = (uint)local_4c;" (assignment_expression "uVar3 = (uint)local_4c" (identifier "uVar3") (= "=") (cast_expression "(uint)local_4c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_4c"))) (; ";")) (expression_statement "local_3c._4_4_ = (int)(uVar14 >> 0x20);" (assignment_expression "local_3c._4_4_ = (int)(uVar14 >> 0x20)" (field_expression "local_3c._4_4_" (identifier "local_3c") (. ".") (field_identifier "_4_4_")) (= "=") (cast_expression "(int)(uVar14 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar14 >> 0x20)" (( "(") (binary_expression "uVar14 >> 0x20" (identifier "uVar14") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_3c._0_4_ = (uint)uVar14;" (assignment_expression "local_3c._0_4_ = (uint)uVar14" (field_expression "local_3c._0_4_" (identifier "local_3c") (. ".") (field_identifier "_0_4_")) (= "=") (cast_expression "(uint)uVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar14"))) (; ";")) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar6;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar6" (pointer_expression "*(byte **)(param_1 + 0x18)" (* "*") (cast_expression "(byte **)(param_1 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "pbVar6")) (; ";")) (if_statement "if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)) break;" (if "if") (parenthesized_expression "((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0))" (( "(") (binary_expression "(local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&\n            ((uint)local_3c == 0 && uVar7 == 0)" (parenthesized_expression "(local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0)" (( "(") (binary_expression "local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0" (binary_expression "local_3c._4_4_ == 0" (field_expression "local_3c._4_4_" (identifier "local_3c") (. ".") (field_identifier "_4_4_")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "(int)(uVar13 >> 0x20) == 0" (cast_expression "(int)(uVar13 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar13 >> 0x20)" (( "(") (binary_expression "uVar13 >> 0x20" (identifier "uVar13") (>> ">>") (number_literal "0x20")) () ")"))) (== "==") (number_literal "0"))) () ")")) (&& "&&") (parenthesized_expression "((uint)local_3c == 0 && uVar7 == 0)" (( "(") (binary_expression "(uint)local_3c == 0 && uVar7 == 0" (binary_expression "(uint)local_3c == 0" (cast_expression "(uint)local_3c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_3c")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (uVar13 == 1) {\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }" (if "if") (parenthesized_expression "(uVar13 == 1)" (( "(") (binary_expression "uVar13 == 1" (identifier "uVar13") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;\n        }" ({ "{") (expression_statement "*(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;" (assignment_expression "*(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2" (pointer_expression "*(byte *)(local_34 + 1)" (* "*") (cast_expression "(byte *)(local_34 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_34 + 1)" (( "(") (binary_expression "local_34 + 1" (identifier "local_34") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(byte *)(local_34 + 1) | 2" (pointer_expression "*(byte *)(local_34 + 1)" (* "*") (cast_expression "(byte *)(local_34 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_34 + 1)" (( "(") (binary_expression "local_34 + 1" (identifier "local_34") (+ "+") (number_literal "1")) () ")")))) (| "|") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "local_20 = (uint)local_3c;" (assignment_expression "local_20 = (uint)local_3c" (identifier "local_20") (= "=") (cast_expression "(uint)local_3c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_3c"))) (; ";")) (expression_statement "puVar2 = (uint *)local_34[3];" (assignment_expression "puVar2 = (uint *)local_34[3]" (identifier "puVar2") (= "=") (cast_expression "(uint *)local_34[3]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_34[3]" (identifier "local_34") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "local_24 = uVar7;" (assignment_expression "local_24 = uVar7" (identifier "local_24") (= "=") (identifier "uVar7")) (; ";")) (expression_statement "local_3c = uVar14;" (assignment_expression "local_3c = uVar14" (identifier "local_3c") (= "=") (identifier "uVar14")) (; ";")) (if_statement "if (puVar2 == (uint *)local_34[4]) {\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }\n        else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }" (if "if") (parenthesized_expression "(puVar2 == (uint *)local_34[4])" (( "(") (binary_expression "puVar2 == (uint *)local_34[4]" (identifier "puVar2") (== "==") (cast_expression "(uint *)local_34[4]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_34[4]" (identifier "local_34") ([ "[") (number_literal "4") (] "]")))) () ")")) (compound_statement "{\n          *(uint **)(puVar11 + -8) = local_58;\n          *(uint **)(puVar11 + -0xc) = puVar2;\n          *(undefined4 **)(puVar11 + -0x10) = local_54;\n          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;\n          FUN_0005b5b0();\n          pbVar6 = *(byte **)(param_1 + 0x18);\n        }" ({ "{") (expression_statement "*(uint **)(puVar11 + -8) = local_58;" (assignment_expression "*(uint **)(puVar11 + -8) = local_58" (pointer_expression "*(uint **)(puVar11 + -8)" (* "*") (cast_expression "(uint **)(puVar11 + -8)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -8)" (( "(") (binary_expression "puVar11 + -8" (identifier "puVar11") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "local_58")) (; ";")) (expression_statement "*(uint **)(puVar11 + -0xc) = puVar2;" (assignment_expression "*(uint **)(puVar11 + -0xc) = puVar2" (pointer_expression "*(uint **)(puVar11 + -0xc)" (* "*") (cast_expression "(uint **)(puVar11 + -0xc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0xc)" (( "(") (binary_expression "puVar11 + -0xc" (identifier "puVar11") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "*(undefined4 **)(puVar11 + -0x10) = local_54;" (assignment_expression "*(undefined4 **)(puVar11 + -0x10) = local_54" (pointer_expression "*(undefined4 **)(puVar11 + -0x10)" (* "*") (cast_expression "(undefined4 **)(puVar11 + -0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_54")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58d4f;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58d4f" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x58d4f")) (; ";")) (expression_statement "FUN_0005b5b0();" (call_expression "FUN_0005b5b0()" (identifier "FUN_0005b5b0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pbVar6 = *(byte **)(param_1 + 0x18);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x18)" (identifier "pbVar6") (= "=") (pointer_expression "*(byte **)(param_1 + 0x18)" (* "*") (cast_expression "(byte **)(param_1 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }" (else "else") (compound_statement "{\n          *puVar2 = uVar7;\n          puVar2[1] = (uint)local_3c;\n          local_34[3] = puVar2 + 2;\n        }" ({ "{") (expression_statement "*puVar2 = uVar7;" (assignment_expression "*puVar2 = uVar7" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar2[1] = (uint)local_3c;" (assignment_expression "puVar2[1] = (uint)local_3c" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(uint)local_3c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_3c"))) (; ";")) (expression_statement "local_34[3] = puVar2 + 2;" (assignment_expression "local_34[3] = puVar2 + 2" (subscript_expression "local_34[3]" (identifier "local_34") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "puVar2 + 2" (identifier "puVar2") (+ "+") (number_literal "2"))) (; ";")) (} "}")))) (if_statement "if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n          return (undefined4 *)0x0;\n        }" (if "if") (parenthesized_expression "(*(byte **)(param_1 + 0x10) <= pbVar6)" (( "(") (binary_expression "*(byte **)(param_1 + 0x10) <= pbVar6" (pointer_expression "*(byte **)(param_1 + 0x10)" (* "*") (cast_expression "(byte **)(param_1 + 0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (<= "<=") (identifier "pbVar6")) () ")")) (compound_statement "{\n          return (undefined4 *)0x0;\n        }" ({ "{") (return_statement "return (undefined4 *)0x0;" (return "return") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar13 = local_4c;" (assignment_expression "uVar13 = local_4c" (identifier "uVar13") (= "=") (identifier "local_4c")) (; ";")) (if_statement "if ((uint)local_4c < 0x100) {\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }\n      else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }" (if "if") (parenthesized_expression "((uint)local_4c < 0x100)" (( "(") (binary_expression "(uint)local_4c < 0x100" (cast_expression "(uint)local_4c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_4c")) (< "<") (number_literal "0x100")) () ")")) (compound_statement "{\n        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;\n      }" ({ "{") (expression_statement "*(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;" (assignment_expression "*(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34" (pointer_expression "*(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4)" (* "*") (cast_expression "(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x1c + (uint)local_4c * 4)" (( "(") (binary_expression "param_1 + 0x1c + (uint)local_4c * 4" (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) (+ "+") (binary_expression "(uint)local_4c * 4" (cast_expression "(uint)local_4c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_4c")) (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "local_34")) (; ";")) (} "}")) (else_clause "else {\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }" (else "else") (compound_statement "{\n        local_54 = *(undefined4 **)(param_1 + 0x420);\n        local_3c._0_4_ = (uint)local_4c % (uint)local_54;\n        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);\n        if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }\nLAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;\n        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;\n        puVar4 = (undefined4 *)FUN_001e5200();\n        *puVar4 = 0;\n        puVar4[1] = uVar3;\n        puVar4[2] = 0;\n        *(undefined4 *)(puVar11 + -0xc) = 1;\n        *(undefined4 **)(puVar11 + -0x10) = puVar4;\n        *(uint *)(puVar11 + -0x14) = uVar3;\n        *(uint *)(puVar11 + -0x18) = (uint)local_3c;\n        *(int *)(puVar11 + -0x1c) = local_50;\n        *(int **)(puVar11 + -0x20) = local_30;\n        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;\n        FUN_0005d420();\n        puVar11 = puVar11 + -4;\n        iVar5 = local_30[0];\n        uVar13 = local_4c;\nLAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);\n        *(undefined4 **)(iVar5 + 8) = local_34;\n      }" ({ "{") (expression_statement "local_54 = *(undefined4 **)(param_1 + 0x420);" (assignment_expression "local_54 = *(undefined4 **)(param_1 + 0x420)" (identifier "local_54") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 0x420)" (* "*") (cast_expression "(undefined4 **)(param_1 + 0x420)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x420)" (( "(") (binary_expression "param_1 + 0x420" (identifier "param_1") (+ "+") (number_literal "0x420")) () ")"))))) (; ";")) (expression_statement "local_3c._0_4_ = (uint)local_4c % (uint)local_54;" (assignment_expression "local_3c._0_4_ = (uint)local_4c % (uint)local_54" (field_expression "local_3c._0_4_" (identifier "local_3c") (. ".") (field_identifier "_0_4_")) (= "=") (binary_expression "(uint)local_4c % (uint)local_54" (cast_expression "(uint)local_4c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_4c")) (% "%") (cast_expression "(uint)local_54" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_54")))) (; ";")) (expression_statement "piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);" (assignment_expression "piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" (identifier "piVar9") (= "=") (pointer_expression "*(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" (* "*") (cast_expression "(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x41c) + (uint)local_3c * 4" (pointer_expression "*(int *)(param_1 + 0x41c)" (* "*") (cast_expression "(int *)(param_1 + 0x41c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x41c)" (( "(") (binary_expression "param_1 + 0x41c" (identifier "param_1") (+ "+") (number_literal "0x41c")) () ")")))) (+ "+") (binary_expression "(uint)local_3c * 4" (cast_expression "(uint)local_3c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_3c")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (piVar9 != (int *)0x0) {\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }" (if "if") (parenthesized_expression "(piVar9 != (int *)0x0)" (( "(") (binary_expression "piVar9 != (int *)0x0" (identifier "piVar9") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          uVar7 = ((int *)*piVar9)[1];\n          piVar12 = (int *)*piVar9;\n          while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }\n          iVar5 = *piVar9;\n          if (iVar5 != 0) goto LAB_00058e56;\n        }" ({ "{") (expression_statement "uVar7 = ((int *)*piVar9)[1];" (assignment_expression "uVar7 = ((int *)*piVar9)[1]" (identifier "uVar7") (= "=") (subscript_expression "((int *)*piVar9)[1]" (parenthesized_expression "((int *)*piVar9)" (( "(") (cast_expression "(int *)*piVar9" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) () ")")) ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar12 = (int *)*piVar9;" (assignment_expression "piVar12 = (int *)*piVar9" (identifier "piVar12") (= "=") (cast_expression "(int *)*piVar9" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar9" (* "*") (identifier "piVar9")))) (; ";")) (while_statement "while (piVar10 = piVar12, (uint)local_4c != uVar7) {\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }" (while "while") (parenthesized_expression "(piVar10 = piVar12, (uint)local_4c != uVar7)" (( "(") (comma_expression "piVar10 = piVar12, (uint)local_4c != uVar7" (assignment_expression "piVar10 = piVar12" (identifier "piVar10") (= "=") (identifier "piVar12")) (, ",") (binary_expression "(uint)local_4c != uVar7" (cast_expression "(uint)local_4c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_4c")) (!= "!=") (identifier "uVar7"))) () ")")) (compound_statement "{\n            piVar12 = (int *)*piVar10;\n            if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;\n          }" ({ "{") (expression_statement "piVar12 = (int *)*piVar10;" (assignment_expression "piVar12 = (int *)*piVar10" (identifier "piVar12") (= "=") (cast_expression "(int *)*piVar10" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar10" (* "*") (identifier "piVar10")))) (; ";")) (if_statement "if ((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))\n            goto LAB_00058e6b;" (if "if") (parenthesized_expression "((piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))" (( "(") (binary_expression "(piVar12 == (int *)0x0) ||\n               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54)" (parenthesized_expression "(piVar12 == (int *)0x0)" (( "(") (binary_expression "piVar12 == (int *)0x0" (identifier "piVar12") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54)" (( "(") (comma_expression "uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54" (assignment_expression "uVar7 = piVar12[1]" (identifier "uVar7") (= "=") (subscript_expression "piVar12[1]" (identifier "piVar12") ([ "[") (number_literal "1") (] "]"))) (, ",") (comma_expression "piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54" (assignment_expression "piVar9 = piVar10" (identifier "piVar9") (= "=") (identifier "piVar10")) (, ",") (binary_expression "(uint)local_3c != uVar7 % (uint)local_54" (cast_expression "(uint)local_3c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_3c")) (!= "!=") (binary_expression "uVar7 % (uint)local_54" (identifier "uVar7") (% "%") (cast_expression "(uint)local_54" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_54")))))) () ")"))) () ")")) (goto_statement "goto LAB_00058e6b;" (goto "goto") (statement_identifier "LAB_00058e6b") (; ";"))) (} "}"))) (expression_statement "iVar5 = *piVar9;" (assignment_expression "iVar5 = *piVar9" (identifier "iVar5") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (if_statement "if (iVar5 != 0) goto LAB_00058e56;" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00058e56;" (goto "goto") (statement_identifier "LAB_00058e56") (; ";"))) (} "}"))) (labeled_statement "LAB_00058e6b:\n        *(undefined4 *)(puVar11 + -0x10) = 0xc;" (statement_identifier "LAB_00058e6b") (: ":") (expression_statement "*(undefined4 *)(puVar11 + -0x10) = 0xc;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = 0xc" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "0xc")) (; ";"))) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x58e78;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x58e78" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x58e78")) (; ";")) (expression_statement "puVar4 = (undefined4 *)FUN_001e5200();" (assignment_expression "puVar4 = (undefined4 *)FUN_001e5200()" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)FUN_001e5200()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e5200()" (identifier "FUN_001e5200") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[1] = uVar3;" (assignment_expression "puVar4[1] = uVar3" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar4[2] = 0;" (assignment_expression "puVar4[2] = 0" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar11 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar11 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0xc)" (( "(") (binary_expression "puVar11 + -0xc" (identifier "puVar11") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined4 **)(puVar11 + -0x10) = puVar4;" (assignment_expression "*(undefined4 **)(puVar11 + -0x10) = puVar4" (pointer_expression "*(undefined4 **)(puVar11 + -0x10)" (* "*") (cast_expression "(undefined4 **)(puVar11 + -0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "*(uint *)(puVar11 + -0x14) = uVar3;" (assignment_expression "*(uint *)(puVar11 + -0x14) = uVar3" (pointer_expression "*(uint *)(puVar11 + -0x14)" (* "*") (cast_expression "(uint *)(puVar11 + -0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*(uint *)(puVar11 + -0x18) = (uint)local_3c;" (assignment_expression "*(uint *)(puVar11 + -0x18) = (uint)local_3c" (pointer_expression "*(uint *)(puVar11 + -0x18)" (* "*") (cast_expression "(uint *)(puVar11 + -0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x18)" (( "(") (binary_expression "puVar11 + -0x18" (identifier "puVar11") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (cast_expression "(uint)local_3c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_3c"))) (; ";")) (expression_statement "*(int *)(puVar11 + -0x1c) = local_50;" (assignment_expression "*(int *)(puVar11 + -0x1c) = local_50" (pointer_expression "*(int *)(puVar11 + -0x1c)" (* "*") (cast_expression "(int *)(puVar11 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x1c)" (( "(") (binary_expression "puVar11 + -0x1c" (identifier "puVar11") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "local_50")) (; ";")) (expression_statement "*(int **)(puVar11 + -0x20) = local_30;" (assignment_expression "*(int **)(puVar11 + -0x20) = local_30" (pointer_expression "*(int **)(puVar11 + -0x20)" (* "*") (cast_expression "(int **)(puVar11 + -0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0x20)" (( "(") (binary_expression "puVar11 + -0x20" (identifier "puVar11") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "local_30")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x24) = 0x58e9d;" (assignment_expression "*(undefined4 *)(puVar11 + -0x24) = 0x58e9d" (pointer_expression "*(undefined4 *)(puVar11 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x24)" (( "(") (binary_expression "puVar11 + -0x24" (identifier "puVar11") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x58e9d")) (; ";")) (expression_statement "FUN_0005d420();" (call_expression "FUN_0005d420()" (identifier "FUN_0005d420") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar11 = puVar11 + -4;" (assignment_expression "puVar11 = puVar11 + -4" (identifier "puVar11") (= "=") (binary_expression "puVar11 + -4" (identifier "puVar11") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "iVar5 = local_30[0];" (assignment_expression "iVar5 = local_30[0]" (identifier "iVar5") (= "=") (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "uVar13 = local_4c;" (assignment_expression "uVar13 = local_4c" (identifier "uVar13") (= "=") (identifier "local_4c")) (; ";")) (labeled_statement "LAB_00058e56:\n        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);" (statement_identifier "LAB_00058e56") (: ":") (expression_statement "uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);" (assignment_expression "uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c)" (identifier "uVar14") (= "=") (call_expression "CONCAT44(local_3c._4_4_,(uint)local_3c)" (identifier "CONCAT44") (argument_list "(local_3c._4_4_,(uint)local_3c)" (( "(") (field_expression "local_3c._4_4_" (identifier "local_3c") (. ".") (field_identifier "_4_4_")) (, ",") (cast_expression "(uint)local_3c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_3c")) () ")")))) (; ";"))) (expression_statement "*(undefined4 **)(iVar5 + 8) = local_34;" (assignment_expression "*(undefined4 **)(iVar5 + 8) = local_34" (pointer_expression "*(undefined4 **)(iVar5 + 8)" (* "*") (cast_expression "(undefined4 **)(iVar5 + 8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 8)" (( "(") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "local_34")) (; ";")) (} "}")))) (expression_statement "local_4c._4_4_ = (int)(uVar13 >> 0x20);" (assignment_expression "local_4c._4_4_ = (int)(uVar13 >> 0x20)" (field_expression "local_4c._4_4_" (identifier "local_4c") (. ".") (field_identifier "_4_4_")) (= "=") (cast_expression "(int)(uVar13 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar13 >> 0x20)" (( "(") (binary_expression "uVar13 >> 0x20" (identifier "uVar13") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_4c._0_4_ = (uint)uVar13;" (assignment_expression "local_4c._0_4_ = (uint)uVar13" (field_expression "local_4c._0_4_" (identifier "local_4c") (. ".") (field_identifier "_0_4_")) (= "=") (cast_expression "(uint)uVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar13"))) (; ";")) (expression_statement "local_3c._4_4_ = (int)(uVar14 >> 0x20);" (assignment_expression "local_3c._4_4_ = (int)(uVar14 >> 0x20)" (field_expression "local_3c._4_4_" (identifier "local_3c") (. ".") (field_identifier "_4_4_")) (= "=") (cast_expression "(int)(uVar14 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar14 >> 0x20)" (( "(") (binary_expression "uVar14 >> 0x20" (identifier "uVar14") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_3c._0_4_ = (uint)uVar14;" (assignment_expression "local_3c._0_4_ = (uint)uVar14" (field_expression "local_3c._0_4_" (identifier "local_3c") (. ".") (field_identifier "_0_4_")) (= "=") (cast_expression "(uint)uVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar14"))) (; ";")) (if_statement "if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {\n        return local_34;\n      }" (if "if") (parenthesized_expression "(local_4c._4_4_ == 0 && param_2 == (uint)local_4c)" (( "(") (binary_expression "local_4c._4_4_ == 0 && param_2 == (uint)local_4c" (binary_expression "local_4c._4_4_ == 0" (field_expression "local_4c._4_4_" (identifier "local_4c") (. ".") (field_identifier "_4_4_")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "param_2 == (uint)local_4c" (identifier "param_2") (== "==") (cast_expression "(uint)local_4c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_4c")))) () ")")) (compound_statement "{\n        return local_34;\n      }" ({ "{") (return_statement "return local_34;" (return "return") (identifier "local_34") (; ";")) (} "}"))) (expression_statement "pbVar6 = *(byte **)(param_1 + 0x18);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x18)" (identifier "pbVar6") (= "=") (pointer_expression "*(byte **)(param_1 + 0x18)" (* "*") (cast_expression "(byte **)(param_1 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (*(byte **)(param_1 + 0x10) <= pbVar6) {\n        return (undefined4 *)0x0;\n      }" (if "if") (parenthesized_expression "(*(byte **)(param_1 + 0x10) <= pbVar6)" (( "(") (binary_expression "*(byte **)(param_1 + 0x10) <= pbVar6" (pointer_expression "*(byte **)(param_1 + 0x10)" (* "*") (cast_expression "(byte **)(param_1 + 0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (<= "<=") (identifier "pbVar6")) () ")")) (compound_statement "{\n        return (undefined4 *)0x0;\n      }" ({ "{") (return_statement "return (undefined4 *)0x0;" (return "return") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (} "}"))) (expression_statement "*(byte **)(param_1 + 0x18) = pbVar6;" (assignment_expression "*(byte **)(param_1 + 0x18) = pbVar6" (pointer_expression "*(byte **)(param_1 + 0x18)" (* "*") (cast_expression "(byte **)(param_1 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "pbVar6")) (; ";")) (} "}"))) (return_statement "return (undefined4 *)0x0;" (return "return") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: Abbrev_code * do_get_abbrev(Dwarf_abbrev_table * this, uint code) */

type_6 * __thiscall gold::Dwarf_abbrev_table::do_get_abbrev(Dwarf_abbrev_table *this,type_1 function_1)

{
  type_2 var_14;
  type_2 var_13;
  type_3 *var_4;
  type_4 var_15;
  type_5 __position;
  type_6 *pAVar5;
  type_4 var_17;
  type_7 *__n_elt;
  type_3 *var_3;
  type_2 *var_6;
  type_8 *var_19;
  type_1 var_5;
  type_2 *var_9;
  type_9 var_2;
  type_9 p_Var13;
  type_1 var_1;
  type_10 var_18;
  uint64_t uVar16;
  type_11 local_4c;
  type_11 local_3c;
  type_12 local_30 [8];
  size_t var_8;
  type_1 local_24;
  float local_20;
  
  var_1 = (this->high_abbrev_codes_)._M_h._M_bucket_count;
  var_5 = function_1 % var_1;
  var_2 = (this->high_abbrev_codes_)._M_h._M_buckets[var_5];
  if (var_2 != (type_9)0x0) {
    var_3 = var_2->_M_nxt[1]._M_nxt;
    p_Var13 = var_2->_M_nxt;
    while (var_3 != (type_3 *)function_1) {
      var_4 = p_Var13->_M_nxt;
      if ((var_4 == (type_3 *)0x0) ||
         (var_3 = var_4[1]._M_nxt, var_2 = p_Var13, p_Var13 = var_4,
         var_5 != (type_1)var_3 % var_1)) goto LAB_00058af8;
    }
    if (var_2->_M_nxt != (type_3 *)0x0) {
      return (type_6 *)var_2->_M_nxt[2]._M_nxt;
    }
  }
LAB_00058af8:
  var_6 = this->buffer_pos_;
  if (var_6 < this->buffer_end_) {
    while( true ) {
      var_14 = *var_6;
      if ((char)var_14 < '\0') {
        local_4c = var_7(var_6 + 1,&var_8,var_14);
      }
      else {
        var_8 = 1;
        local_4c = (uint64_t)var_14;
      }
      var_6 = this->buffer_end_;
      if (local_4c._4_4_ == 0 && (type_8 *)local_4c == (type_8 *)0x0) break;
      var_9 = this->buffer_pos_ + var_8;
      this->buffer_pos_ = var_9;
      if (var_6 <= var_9) {
        return (type_6 *)0x0;
      }
      var_14 = *var_9;
      var_9 = var_9 + 1;
      if ((char)var_14 < '\0') {
        uVar16 = var_7(var_9,&var_8,var_14);
        var_1 = (type_1)uVar16;
        var_6 = this->buffer_end_;
        var_9 = this->buffer_pos_ + var_8;
      }
      else {
        var_8 = 1;
        var_1 = (type_1)var_14;
      }
      this->buffer_pos_ = var_9;
      if (var_6 <= var_9) {
        return (type_6 *)0x0;
      }
      var_14 = *var_9;
      this->buffer_pos_ = var_9 + 1;
      pAVar5 = (type_6 *)var_10(0x14);
      pAVar5->tag = var_1;
      var_13 = pAVar5->field_0x4;
      (pAVar5->attributes).
      super__Vector_base<gold::Dwarf_abbrev_table::var_11,_std::allocator<gold::Dwarf_abbrev_table::var_11>var_12>
      ._M_impl._M_start = (type_4)0x0;
      (pAVar5->attributes).
      super__Vector_base<gold::Dwarf_abbrev_table::var_11,_std::allocator<gold::Dwarf_abbrev_table::var_11>var_12>
      ._M_impl._M_finish = (type_4)0x0;
      pAVar5->field_0x4 = var_13 & 0xfc | var_14 == 1;
      (pAVar5->attributes).
      super__Vector_base<gold::Dwarf_abbrev_table::var_11,_std::allocator<gold::Dwarf_abbrev_table::var_11>var_12>
      ._M_impl._M_end_of_storage = (type_4)0x0;
                    /* try { // try from 00058be1 to 00058be5 has its CatchHandler @ 00058ea8 */
      var_17 = (type_4)var_10(0x50);
      var_15 = (pAVar5->attributes).
               super__Vector_base<gold::Dwarf_abbrev_table::var_11,_std::allocator<gold::Dwarf_abbrev_table::var_11>var_12>
               ._M_impl._M_start;
      if (var_15 != (type_4)0x0) {
        var_16(var_15);
      }
      (pAVar5->attributes).
      super__Vector_base<gold::Dwarf_abbrev_table::var_11,_std::allocator<gold::Dwarf_abbrev_table::var_11>var_12>
      ._M_impl._M_start = var_17;
      (pAVar5->attributes).
      super__Vector_base<gold::Dwarf_abbrev_table::var_11,_std::allocator<gold::Dwarf_abbrev_table::var_11>var_12>
      ._M_impl._M_finish = var_17;
      (pAVar5->attributes).
      super__Vector_base<gold::Dwarf_abbrev_table::var_11,_std::allocator<gold::Dwarf_abbrev_table::var_11>var_12>
      ._M_impl._M_end_of_storage = var_17 + 10;
      var_6 = this->buffer_pos_;
      if (this->buffer_end_ <= var_6) {
        return (type_6 *)0x0;
      }
      while( true ) {
        var_14 = *var_6;
        if ((char)var_14 < '\0') {
          var_18 = var_7(var_6 + 1,&var_8,var_14);
          var_9 = this->buffer_pos_ + var_8;
          this->buffer_pos_ = var_9;
          if (this->buffer_end_ <= var_9) {
            return (type_6 *)0x0;
          }
        }
        else {
          var_18 = (type_10)var_14;
          var_8 = 1;
          var_9 = this->buffer_pos_ + 1;
          this->buffer_pos_ = var_9;
          if (this->buffer_end_ <= var_9) {
            return (type_6 *)0x0;
          }
        }
        var_1 = (type_1)var_18;
        var_6 = var_9 + 1;
        var_14 = *var_9;
        if ((char)var_14 < '\0') {
          local_3c = var_7(var_6,&var_8,var_14);
          var_6 = this->buffer_pos_ + var_8;
        }
        else {
          var_8 = 1;
          local_3c = (uint64_t)var_14;
        }
        this->buffer_pos_ = var_6;
        if ((local_3c._4_4_ == 0 && (int)(var_18 >> 0x20) == 0) &&
            ((float)local_3c == 0.0 && var_1 == 0)) break;
        if (var_18 == 1) {
          pAVar5->field_0x4 = pAVar5->field_0x4 | 2;
        }
        local_20 = (float)local_3c;
        __position._M_current =
             (pAVar5->attributes).
             super__Vector_base<gold::Dwarf_abbrev_table::var_11,_std::allocator<gold::Dwarf_abbrev_table::var_11>var_12>
             ._M_impl._M_finish;
        local_24 = var_1;
        if (__position._M_current ==
            (pAVar5->attributes).
            super__Vector_base<gold::Dwarf_abbrev_table::var_11,_std::allocator<gold::Dwarf_abbrev_table::var_11>var_12>
            ._M_impl._M_end_of_storage) {
          std::
          vector<gold::Dwarf_abbrev_table::var_11,_std::allocator<gold::Dwarf_abbrev_table::var_11>var_12>
          ::_M_realloc_insert<gold::Dwarf_abbrev_table::var_11>
                    (&pAVar5->attributes,__position,(var_11 *)&stack0xffffffdc);
          var_6 = this->buffer_pos_;
        }
        else {
          (__position._M_current)->attr = var_1;
          (__position._M_current)->form = (type_1)(float)local_3c;
          (pAVar5->attributes).
          super__Vector_base<gold::Dwarf_abbrev_table::var_11,_std::allocator<gold::Dwarf_abbrev_table::var_11>var_12>
          ._M_impl._M_finish = __position._M_current + 1;
        }
        if (this->buffer_end_ <= var_6) {
          return (type_6 *)0x0;
        }
      }
      if ((type_8 *)local_4c < (type_8 *)0x100) {
        this->low_abbrev_codes_[(int)(type_8 *)local_4c] = pAVar5;
      }
      else {
        var_1 = (this->high_abbrev_codes_)._M_h._M_bucket_count;
        var_5 = (type_1)(type_8 *)local_4c % var_1;
        var_2 = (this->high_abbrev_codes_)._M_h._M_buckets[var_5];
        if (var_2 != (type_9)0x0) {
          var_19 = (type_8 *)var_2->_M_nxt[1]._M_nxt;
          var_3 = var_2->_M_nxt;
          while (p_Var13 = var_3, (type_8 *)local_4c != var_19) {
            var_3 = p_Var13->_M_nxt;
            if ((var_3 == (type_3 *)0x0) ||
               (var_19 = (type_8 *)var_3[1]._M_nxt, var_2 = p_Var13,
               var_5 != (type_1)var_19 % var_1)) goto LAB_00058e6b;
          }
          var_3 = var_2->_M_nxt;
          if (var_3 != (type_3 *)0x0) goto LAB_00058e56;
        }
LAB_00058e6b:
        __n_elt = (type_7 *)var_10(0xc);
        *__n_elt = 0;
        __n_elt[1] = (type_8 *)local_4c;
        __n_elt[2] = 0;
        std::
        _Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::type_6*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::type_6*>var_12>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_20<false,_false,var_21>var_12>
        ::var_22
                  ((_Hashtable<unsigned_int,_std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::type_6*>,_std::allocator<std::pair<unsigned_int_const,_const_gold::Dwarf_abbrev_table::type_6*>var_12>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_20<false,_false,var_21>var_12>
                    *)local_30,(type_13)&this->high_abbrev_codes_,var_5,(type_8 *)local_4c,
                   (type_13)__n_elt);
        var_3 = (type_3 *)local_30._0_4_;
LAB_00058e56:
        var_3[2]._M_nxt = (type_3 *)pAVar5;
      }
      if (local_4c._4_4_ == 0 && (type_8 *)function_1 == (type_8 *)local_4c) {
        return pAVar5;
      }
      var_6 = this->buffer_pos_;
      if (this->buffer_end_ <= var_6) {
        return (type_6 *)0x0;
      }
    }
    this->buffer_pos_ = var_6;
  }
  return (type_6 *)0x0;
}


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

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

undefined4 * MASKED(int param_1,uint param_2)

{
  byte bVar1;
  uint *puVar2;
  uint uVar3;
  undefined4 *puVar4;
  int iVar5;
  byte *pbVar6;
  uint uVar7;
  byte *pbVar8;
  int *piVar9;
  int *piVar10;
  undefined1 *puVar11;
  int *piVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  int aiStack_80 [9];
  undefined1 auStack_5c [4];
  uint *local_58;
  undefined4 *local_54;
  int local_50;
  undefined8 local_4c;
  int *local_44;
  undefined **local_40;
  undefined8 local_3c;
  undefined4 *local_34;
  int local_30 [2];
  int local_28;
  uint local_24;
  uint local_20;
  
  uVar13 = CONCAT44(local_4c._4_4_,(uint)local_4c);
  local_40 = &__DT_PLTGOT;
  puVar11 = auStack_5c;
  local_50 = param_1 + 0x41c;
  local_3c._0_4_ = param_2 % *(uint *)(param_1 + 0x420);
  piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);
  if (piVar9 != (int *)0x0) {
    uVar7 = ((int *)*piVar9)[1];
    piVar12 = (int *)*piVar9;
    while (uVar7 != param_2) {
      piVar10 = (int *)*piVar12;
      if ((piVar10 == (int *)0x0) ||
         (uVar7 = piVar10[1], piVar9 = piVar12, piVar12 = piVar10,
         (uint)local_3c != uVar7 % *(uint *)(param_1 + 0x420))) goto LAB_00058af8;
    }
    if (*piVar9 != 0) {
      return *(undefined4 **)(*piVar9 + 8);
    }
  }
LAB_00058af8:
  pbVar6 = *(byte **)(param_1 + 0x18);
  if (pbVar6 < *(byte **)(param_1 + 0x10)) {
    local_44 = &local_28;
    while( true ) {
      bVar1 = *pbVar6;
      if ((char)bVar1 < '\0') {
        *(uint *)(puVar11 + -8) = (uint)bVar1;
        *(int **)(puVar11 + -0xc) = local_44;
        *(byte **)(puVar11 + -0x10) = pbVar6 + 1;
        *(undefined4 *)(puVar11 + -0x14) = 0x58d73;
        local_4c = uVar13;
        uVar13 = FUN_00095970();
      }
      else {
        local_28 = 1;
        uVar13 = (ulonglong)(uint)bVar1;
      }
      pbVar6 = *(byte **)(param_1 + 0x10);
      if (uVar13 == 0) break;
      pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));
      *(byte **)(param_1 + 0x18) = pbVar8;
      if (pbVar6 <= pbVar8) {
        return (undefined4 *)0x0;
      }
      bVar1 = *pbVar8;
      pbVar8 = pbVar8 + 1;
      local_4c = uVar13;
      if ((char)bVar1 < '\0') {
        *(uint *)(puVar11 + -8) = (uint)bVar1;
        *(int **)(puVar11 + -0xc) = local_44;
        *(byte **)(puVar11 + -0x10) = pbVar8;
        *(undefined4 *)(puVar11 + -0x14) = 0x58de0;
        local_3c = FUN_00095970();
        pbVar6 = *(byte **)(param_1 + 0x10);
        pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));
      }
      else {
        local_28 = 1;
        local_3c = (ulonglong)(uint)bVar1;
      }
      *(byte **)(param_1 + 0x18) = pbVar8;
      if (pbVar6 <= pbVar8) {
        return (undefined4 *)0x0;
      }
      bVar1 = *pbVar8;
      *(byte **)(param_1 + 0x18) = pbVar8 + 1;
      *(undefined4 *)(puVar11 + -0x10) = 0x14;
      *(undefined4 *)(puVar11 + -0x14) = 0x58ba1;
      puVar4 = (undefined4 *)FUN_001e5200();
      *puVar4 = (uint)local_3c;
      puVar4[2] = 0;
      local_3c._0_4_ = CONCAT31(local_3c._1_3_,*(byte *)(puVar4 + 1));
      puVar4[3] = 0;
      *(byte *)(puVar4 + 1) = *(byte *)(puVar4 + 1) & 0xfc | bVar1 == 1;
      local_54 = puVar4 + 2;
      puVar4[4] = 0;
      *(undefined4 *)(puVar11 + -0x10) = 0x50;
                    /* try { // try from 00058be1 to 00058be5 has its CatchHandler @ 00058ea8 */
      *(undefined4 *)(puVar11 + -0x14) = 0x58be6;
      local_34 = puVar4;
      iVar5 = FUN_001e5200();
      if (puVar4[2] != 0) {
        *(undefined4 *)(puVar11 + -0x10) = puVar4[2];
        *(undefined4 *)(puVar11 + -0x14) = 0x58bfc;
        local_3c._0_4_ = iVar5;
        FUN_001e6db0();
        iVar5 = (uint)local_3c;
      }
      local_34[2] = iVar5;
      local_34[3] = iVar5;
      local_34[4] = iVar5 + 0x50;
      pbVar6 = *(byte **)(param_1 + 0x18);
      if (*(byte **)(param_1 + 0x10) <= pbVar6) {
        return (undefined4 *)0x0;
      }
      local_58 = &local_24;
      while( true ) {
        bVar1 = *pbVar6;
        if ((char)bVar1 < '\0') {
          *(uint *)(puVar11 + -8) = (uint)bVar1;
          *(int **)(puVar11 + -0xc) = local_44;
          *(byte **)(puVar11 + -0x10) = pbVar6 + 1;
          *(undefined4 *)(puVar11 + -0x14) = 0x58ce5;
          uVar13 = FUN_00095970();
          pbVar8 = (byte *)(local_28 + *(int *)(param_1 + 0x18));
          *(byte **)(param_1 + 0x18) = pbVar8;
          if (*(byte **)(param_1 + 0x10) <= pbVar8) {
            return (undefined4 *)0x0;
          }
        }
        else {
          uVar13 = (ulonglong)(uint)bVar1;
          local_28 = 1;
          pbVar8 = (byte *)(*(int *)(param_1 + 0x18) + 1);
          *(byte **)(param_1 + 0x18) = pbVar8;
          if (*(byte **)(param_1 + 0x10) <= pbVar8) {
            return (undefined4 *)0x0;
          }
        }
        uVar7 = (uint)uVar13;
        pbVar6 = pbVar8 + 1;
        bVar1 = *pbVar8;
        if ((char)bVar1 < '\0') {
          *(uint *)(puVar11 + -8) = (uint)bVar1;
          *(int **)(puVar11 + -0xc) = local_44;
          *(byte **)(puVar11 + -0x10) = pbVar6;
          *(undefined4 *)(puVar11 + -0x14) = 0x58d28;
          uVar14 = FUN_00095970();
          pbVar6 = (byte *)(local_28 + *(int *)(param_1 + 0x18));
        }
        else {
          local_28 = 1;
          uVar14 = (ulonglong)(uint)bVar1;
        }
        uVar3 = (uint)local_4c;
        local_3c._4_4_ = (int)(uVar14 >> 0x20);
        local_3c._0_4_ = (uint)uVar14;
        *(byte **)(param_1 + 0x18) = pbVar6;
        if ((local_3c._4_4_ == 0 && (int)(uVar13 >> 0x20) == 0) &&
            ((uint)local_3c == 0 && uVar7 == 0)) break;
        if (uVar13 == 1) {
          *(byte *)(local_34 + 1) = *(byte *)(local_34 + 1) | 2;
        }
        local_20 = (uint)local_3c;
        puVar2 = (uint *)local_34[3];
        local_24 = uVar7;
        local_3c = uVar14;
        if (puVar2 == (uint *)local_34[4]) {
          *(uint **)(puVar11 + -8) = local_58;
          *(uint **)(puVar11 + -0xc) = puVar2;
          *(undefined4 **)(puVar11 + -0x10) = local_54;
          *(undefined4 *)(puVar11 + -0x14) = 0x58d4f;
          FUN_0005b5b0();
          pbVar6 = *(byte **)(param_1 + 0x18);
        }
        else {
          *puVar2 = uVar7;
          puVar2[1] = (uint)local_3c;
          local_34[3] = puVar2 + 2;
        }
        if (*(byte **)(param_1 + 0x10) <= pbVar6) {
          return (undefined4 *)0x0;
        }
      }
      uVar13 = local_4c;
      if ((uint)local_4c < 0x100) {
        *(undefined4 **)(param_1 + 0x1c + (uint)local_4c * 4) = local_34;
      }
      else {
        local_54 = *(undefined4 **)(param_1 + 0x420);
        local_3c._0_4_ = (uint)local_4c % (uint)local_54;
        piVar9 = *(int **)(*(int *)(param_1 + 0x41c) + (uint)local_3c * 4);
        if (piVar9 != (int *)0x0) {
          uVar7 = ((int *)*piVar9)[1];
          piVar12 = (int *)*piVar9;
          while (piVar10 = piVar12, (uint)local_4c != uVar7) {
            piVar12 = (int *)*piVar10;
            if ((piVar12 == (int *)0x0) ||
               (uVar7 = piVar12[1], piVar9 = piVar10, (uint)local_3c != uVar7 % (uint)local_54))
            goto LAB_00058e6b;
          }
          iVar5 = *piVar9;
          if (iVar5 != 0) goto LAB_00058e56;
        }
LAB_00058e6b:
        *(undefined4 *)(puVar11 + -0x10) = 0xc;
        *(undefined4 *)(puVar11 + -0x14) = 0x58e78;
        puVar4 = (undefined4 *)FUN_001e5200();
        *puVar4 = 0;
        puVar4[1] = uVar3;
        puVar4[2] = 0;
        *(undefined4 *)(puVar11 + -0xc) = 1;
        *(undefined4 **)(puVar11 + -0x10) = puVar4;
        *(uint *)(puVar11 + -0x14) = uVar3;
        *(uint *)(puVar11 + -0x18) = (uint)local_3c;
        *(int *)(puVar11 + -0x1c) = local_50;
        *(int **)(puVar11 + -0x20) = local_30;
        *(undefined4 *)(puVar11 + -0x24) = 0x58e9d;
        FUN_0005d420();
        puVar11 = puVar11 + -4;
        iVar5 = local_30[0];
        uVar13 = local_4c;
LAB_00058e56:
        uVar14 = CONCAT44(local_3c._4_4_,(uint)local_3c);
        *(undefined4 **)(iVar5 + 8) = local_34;
      }
      local_4c._4_4_ = (int)(uVar13 >> 0x20);
      local_4c._0_4_ = (uint)uVar13;
      local_3c._4_4_ = (int)(uVar14 >> 0x20);
      local_3c._0_4_ = (uint)uVar14;
      if (local_4c._4_4_ == 0 && param_2 == (uint)local_4c) {
        return local_34;
      }
      pbVar6 = *(byte **)(param_1 + 0x18);
      if (*(byte **)(param_1 + 0x10) <= pbVar6) {
        return (undefined4 *)0x0;
      }
    }
    *(byte **)(param_1 + 0x18) = pbVar6;
  }
  return (undefined4 *)0x0;
}

