
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: bool do_add_input_section(Output_merge_data * this, Relobj * object,
   uint shndx) */

bool __thiscall
gold::Output_merge_data::do_add_input_section(Output_merge_data *this,Relobj *object,uint shndx)

{
  size_type *psVar1;
  uint length;
  _Hash_node_base *p_Var2;
  __bucket_type *pp_Var3;
  bool bVar4;
  Object_merge_map *this_00;
  Input_merge_map *this_01;
  _Hash_node_base *p_Var5;
  _Hash_node_base *p_Var6;
  __bucket_type *pp_Var7;
  uint uVar8;
  __bucket_type p_Var9;
  __bucket_type p_Var10;
  uint local_44;
  uchar *local_40;
  _Hash_node_base *local_38;
  char local_34 [4];
  size_type local_30;
  bool is_new;
  section_size_type len;
  size_t local_20 [3];
  undefined4 uStack_14;
  
  uStack_14 = 0x1c532e;
  local_40 = Object::decompressed_section_contents
                       (&object->super_Object,shndx,&len,&is_new,(uint64_t *)0x0);
  length = (uint)(this->super_Output_merge_base).entsize_;
  if (*(int *)((int)&(this->super_Output_merge_base).entsize_ + 4) != 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");
  }
  if (len % length != 0) {
    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);
    if (bVar4 != false) {
      operator_delete__(local_40);
      return false;
    }
    return bVar4;
  }
  this->input_count_ = this->input_count_ + len / length;
  this_00 = Relobj::get_or_create_merge_map(object);
  this_01 = Object_merge_map::get_or_make_input_merge_map(this_00,(Output_section_data *)this,shndx)
  ;
  if (len != 0) {
    local_44 = 0;
    do {
      local_38 = (_Hash_node_base *)this->len_;
      add_constant(this,local_40);
      p_Var5 = (_Hash_node_base *)
               Merge_data_hash::operator()
                         ((Merge_data_hash *)&this->hashtable_,(Merge_data_key)local_38);
      uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;
      p_Var10 = (this->hashtable_)._M_h._M_buckets[uVar8];
      if (p_Var10 != (__bucket_type)0x0) {
        p_Var6 = p_Var10->_M_nxt[2]._M_nxt;
        p_Var2 = p_Var10->_M_nxt;
        while ((p_Var9 = p_Var2, p_Var6 != p_Var5 ||
               (bVar4 = Merge_data_eq::operator()
                                  (&(this->hashtable_)._M_h.
                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>
                                    .
                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>
                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt
                                  ), !bVar4))) {
          p_Var2 = p_Var9->_M_nxt;
          if ((p_Var2 == (_Hash_node_base *)0x0) ||
             (p_Var6 = p_Var2[2]._M_nxt, p_Var10 = p_Var9,
             uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count)) goto LAB_001c54d8;
        }
        p_Var6 = p_Var10->_M_nxt;
        if (p_Var6 != (_Hash_node_base *)0x0) {
          this->len_ = this->len_ - length;
          local_38 = p_Var6[1]._M_nxt;
          goto LAB_001c5480;
        }
      }
LAB_001c54d8:
      p_Var6 = (_Hash_node_base *)operator_new(0xc);
      p_Var6->_M_nxt = (_Hash_node_base *)0x0;
      p_Var6[1]._M_nxt = local_38;
      local_20[0] = (this->hashtable_)._M_h._M_rehash_policy._M_next_resize;
      std::__detail::_Prime_rehash_policy::_M_need_rehash
                ((uint)local_34,(uint)&(this->hashtable_)._M_h._M_rehash_policy,
                 (this->hashtable_)._M_h._M_bucket_count);
      if (local_34[0] != '\0') {
                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */
        std::
        _Hashtable<int,_int,_std::allocator<int>,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>
        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20);
        uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;
      }
      pp_Var3 = (this->hashtable_)._M_h._M_buckets;
      pp_Var7 = pp_Var3 + uVar8;
      p_Var6[2]._M_nxt = p_Var5;
      if (*pp_Var7 == (__bucket_type)0x0) {
        p_Var5 = (this->hashtable_)._M_h._M_before_begin._M_nxt;
        (this->hashtable_)._M_h._M_before_begin._M_nxt = p_Var6;
        p_Var6->_M_nxt = p_Var5;
        if (p_Var5 != (_Hash_node_base *)0x0) {
          pp_Var3[(uint)p_Var5[2]._M_nxt % (this->hashtable_)._M_h._M_bucket_count] = p_Var6;
        }
        *pp_Var7 = &(this->hashtable_)._M_h._M_before_begin;
      }
      else {
        p_Var6->_M_nxt = (*pp_Var7)->_M_nxt;
        (*pp_Var7)->_M_nxt = p_Var6;
      }
      psVar1 = &(this->hashtable_)._M_h._M_element_count;
      *psVar1 = *psVar1 + 1;
LAB_001c5480:
      Object_merge_map::Input_merge_map::add_mapping
                (this_01,local_44,length,(section_offset_type)local_38);
      local_40 = local_40 + length;
      local_44 = local_44 + length;
    } while (local_44 < len);
  }
  if ((this->super_Output_merge_base).keeps_input_sections_ == false) {
    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);
  }
  else {
    Output_merge_base::record_input_section(&this->super_Output_merge_base,object,shndx);
    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);
  }
  if (bVar4 == false) {
    return true;
  }
  operator_delete__(local_40);
  return bVar4;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

uint FUN_001c5320(int param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  char cVar4;
  undefined4 uVar5;
  int *piVar6;
  uint uVar7;
  int *piVar8;
  int *piVar9;
  undefined1 *puVar10;
  undefined4 uStackY_90;
  undefined1 auStack_6c [4];
  int local_68;
  char *local_64;
  undefined4 local_60;
  int local_5c;
  int local_58;
  undefined **local_54;
  uint local_50;
  int local_4c;
  uint local_48;
  uint local_44;
  int local_40;
  uint local_3c;
  uint local_38;
  char local_34 [4];
  undefined4 local_30;
  byte local_25;
  uint local_24;
  undefined4 local_20 [3];
  undefined4 uStack_14;
  
  uStack_14 = 0x1c532e;
  local_54 = &__DT_PLTGOT;
  local_40 = FUN_000b1f60(param_2,param_3,&local_24,&local_25,0);
  local_50 = *(uint *)(param_1 + 0x2c);
  if (*(int *)(param_1 + 0x30) != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);
  }
  local_44 = local_24 % local_50;
  if (local_44 != 0) {
    local_25 = local_40 != 0 & local_25;
    if (local_25 != 0) {
      FUN_001e6d50(local_40);
      return 0;
    }
    return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);
  }
  *(int *)(param_1 + 0x68) =
       *(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50);
  uVar5 = FUN_000b1f00(param_2);
  local_60 = FUN_001c5010(uVar5,param_1,param_3);
  puVar10 = auStack_6c;
  if (local_24 != 0) {
    local_5c = param_1 + 0x6c;
    local_64 = local_34;
    local_68 = param_1 + 0x84;
    puVar10 = auStack_6c;
    do {
      iVar1 = *(int *)(param_1 + 0x60);
      *(int *)(puVar10 + -0xc) = local_40;
      *(int *)(puVar10 + -0x10) = param_1;
      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;
      FUN_001c4d60();
      *(int *)(puVar10 + -0xc) = iVar1;
      *(int *)(puVar10 + -0x10) = local_5c;
      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;
      local_38 = iVar1;
      local_3c = FUN_001c4c70();
      local_48 = local_3c % *(uint *)(param_1 + 0x78);
      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);
      local_58 = local_48 * 4;
      if (piVar6 != (int *)0x0) {
        local_4c = param_1 + 0x70;
        uVar7 = ((int *)*piVar6)[2];
        piVar8 = (int *)*piVar6;
        do {
          piVar9 = piVar8;
          if (uVar7 == local_3c) {
            *(int *)(puVar10 + -8) = piVar9[1];
            *(uint *)(puVar10 + -0xc) = local_38;
            *(int *)(puVar10 + -0x10) = local_4c;
            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;
            cVar4 = FUN_001c4d00();
            if (cVar4 != '\0') {
              iVar1 = *piVar6;
              if (iVar1 != 0) {
                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;
                local_38 = *(int *)(iVar1 + 4);
                goto LAB_001c5480;
              }
              break;
            }
          }
          piVar8 = (int *)*piVar9;
          if ((piVar8 == (int *)0x0) ||
             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))
          break;
        } while( true );
      }
      *(undefined4 *)(puVar10 + -0x10) = 0xc;
      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;
      piVar6 = (int *)FUN_001e5200();
      *piVar6 = 0;
      piVar6[1] = local_38;
      local_20[0] = *(undefined4 *)(param_1 + 0x88);
      *(undefined4 *)(puVar10 + -0x10) = 1;
      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);
      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);
      *(int *)(puVar10 + -0x1c) = local_68;
      *(char **)(puVar10 + -0x20) = local_64;
      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;
      FUN_0022c460();
      if (local_34[0] != '\0') {
        *(undefined4 **)(puVar10 + -0xc) = local_20;
        *(undefined4 *)(puVar10 + -0x10) = local_30;
        *(int *)(puVar10 + -0x14) = local_5c;
                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */
        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;
        FUN_001c9270();
        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;
      }
      puVar10 = puVar10 + -4;
      iVar1 = *(int *)(param_1 + 0x74);
      piVar8 = (int *)(local_58 + iVar1);
      piVar6[2] = local_3c;
      if ((int *)*piVar8 == (int *)0x0) {
        iVar2 = *(int *)(param_1 + 0x7c);
        *(int **)(param_1 + 0x7c) = piVar6;
        *piVar6 = iVar2;
        if (iVar2 != 0) {
          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;
        }
        *piVar8 = param_1 + 0x7c;
      }
      else {
        *piVar6 = *(int *)*piVar8;
        *(int **)*piVar8 = piVar6;
      }
      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;
LAB_001c5480:
      uVar3 = local_44;
      uVar7 = local_50;
      *(uint *)(puVar10 + -4) = local_38;
      *(uint *)(puVar10 + -8) = local_50;
      *(uint *)(puVar10 + -0xc) = local_44;
      *(undefined4 *)(puVar10 + -0x10) = local_60;
      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;
      FUN_001c4f10();
      local_40 = local_40 + uVar7;
      local_44 = uVar3 + uVar7;
    } while (local_44 < local_24);
  }
  if (*(char *)(param_1 + 0x34) == '\0') {
    local_25 = local_40 != 0 & local_25;
  }
  else {
    *(undefined4 *)(puVar10 + -8) = param_3;
    *(undefined4 *)(puVar10 + -0xc) = param_2;
    *(int *)(puVar10 + -0x10) = param_1;
    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;
    FUN_001c5140();
    local_25 = local_40 != 0 & local_25;
  }
  if (local_25 == 0) {
    return 1;
  }
  *(int *)(puVar10 + -0x10) = local_40;
  local_38 = CONCAT31(local_38._1_3_,local_25);
  *(undefined4 *)(puVar10 + -0x14) = 0x1c55f4;
  FUN_001e6d50();
  return local_38 & 0xff;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
LEA EAX,[EBP + -0x21]
PUSH EBX
CALL 0x00035840
ADD EBX,0x1c9cd2
SUB ESP,0x68
MOV ESI,dword ptr [EBP + 0x8]
PUSH 0x0
PUSH EAX
LEA EAX,[EBP + -0x20]
PUSH EAX
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
MOV dword ptr [EBP + -0x50],EBX
CALL 0x000b1f60
ADD ESP,0x20
MOV dword ptr [EBP + -0x3c],EAX
MOV EAX,dword ptr [ESI + 0x2c]
MOV dword ptr [EBP + -0x4c],EAX
MOV EAX,dword ptr [ESI + 0x30]
TEST EAX,EAX
JNZ 0x001c5603
MOV EAX,dword ptr [EBP + -0x20]
XOR EDX,EDX
DIV dword ptr [EBP + -0x4c]
MOV dword ptr [EBP + -0x40],EDX
TEST EDX,EDX
JZ 0x001c5390
MOV ESI,dword ptr [EBP + -0x3c]
TEST ESI,ESI
SETNZ AL
AND AL,byte ptr [EBP + -0x21]
JNZ 0x001c55a0
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD dword ptr [ESI + 0x68],EAX
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x50]
PUSH dword ptr [EBP + 0xc]
CALL 0x000b1f00
ADD ESP,0xc
PUSH dword ptr [EBP + 0x10]
PUSH ESI
PUSH EAX
CALL 0x001c5010
MOV EBX,dword ptr [EBP + -0x20]
ADD ESP,0x10
MOV dword ptr [EBP + -0x5c],EAX
TEST EBX,EBX
JZ 0x001c54a9
LEA EAX,[ESI + 0x6c]
MOV dword ptr [EBP + -0x58],EAX
LEA EAX,[EBP + -0x30]
MOV dword ptr [EBP + -0x60],EAX
LEA EAX,[ESI + 0x84]
MOV dword ptr [EBP + -0x64],EAX
LEA ESI,[ESI]
SUB ESP,0x8
MOV EAX,dword ptr [ESI + 0x60]
PUSH dword ptr [EBP + -0x3c]
PUSH ESI
MOV EBX,EAX
CALL 0x001c4d60
POP EDX
POP ECX
PUSH EBX
PUSH dword ptr [EBP + -0x58]
MOV dword ptr [EBP + -0x34],EBX
CALL 0x001c4c70
XOR EDX,EDX
ADD ESP,0x10
MOV dword ptr [EBP + -0x38],EAX
DIV dword ptr [ESI + 0x78]
MOV EAX,dword ptr [ESI + 0x74]
MOV EDI,dword ptr [EAX + EDX*0x4]
LEA ECX,[EDX*0x4 + 0x0]
MOV dword ptr [EBP + -0x44],EDX
MOV dword ptr [EBP + -0x54],ECX
TEST EDI,EDI
JZ 0x001c54d8
MOV EBX,dword ptr [EDI]
LEA EDX,[ESI + 0x70]
MOV dword ptr [EBP + -0x48],EDX
MOV ECX,dword ptr [EBX + 0x8]
JMP 0x001c5451
MOV EAX,dword ptr [EBX]
TEST EAX,EAX
JZ 0x001c54d8
MOV ECX,dword ptr [EAX + 0x8]
MOV EDI,EBX
XOR EDX,EDX
MOV EBX,EAX
MOV EAX,ECX
DIV dword ptr [ESI + 0x78]
CMP dword ptr [EBP + -0x44],EDX
JNZ 0x001c54d8
CMP ECX,dword ptr [EBP + -0x38]
JNZ 0x001c5430
SUB ESP,0x4
PUSH dword ptr [EBX + 0x4]
PUSH dword ptr [EBP + -0x34]
PUSH dword ptr [EBP + -0x48]
CALL 0x001c4d00
ADD ESP,0x10
TEST AL,AL
JZ 0x001c5430
MOV EAX,dword ptr [EDI]
TEST EAX,EAX
JZ 0x001c54d8
MOV EBX,dword ptr [EBP + -0x4c]
SUB dword ptr [ESI + 0x60],EBX
MOV EAX,dword ptr [EAX + 0x4]
MOV dword ptr [EBP + -0x34],EAX
MOV EDI,dword ptr [EBP + -0x4c]
MOV EBX,dword ptr [EBP + -0x40]
PUSH dword ptr [EBP + -0x34]
PUSH EDI
PUSH EBX
PUSH dword ptr [EBP + -0x5c]
CALL 0x001c4f10
MOV EAX,EBX
ADD dword ptr [EBP + -0x3c],EDI
ADD ESP,0x10
ADD EAX,EDI
MOV dword ptr [EBP + -0x40],EAX
CMP dword ptr [EBP + -0x20],EAX
JA 0x001c53d8
CMP byte ptr [ESI + 0x34],0x0
JNZ 0x001c55c0
MOV EAX,dword ptr [EBP + -0x3c]
TEST EAX,EAX
SETNZ AL
AND AL,byte ptr [EBP + -0x21]
JNZ 0x001c55e3
LEA ESP,[EBP + -0xc]
MOV EAX,0x1
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x50]
PUSH 0xc
CALL 0x001e5200
MOV EBX,dword ptr [EBP + -0x50]
MOV dword ptr [EAX],0x0
MOV EDI,EAX
MOV EAX,dword ptr [EBP + -0x34]
MOV dword ptr [EDI + 0x4],EAX
MOV EAX,dword ptr [ESI + 0x88]
MOV dword ptr [ESP],0x1
PUSH dword ptr [ESI + 0x80]
PUSH dword ptr [ESI + 0x78]
PUSH dword ptr [EBP + -0x64]
PUSH dword ptr [EBP + -0x60]
MOV dword ptr [EBP + -0x1c],EAX
CALL 0x0022c460
MOV EAX,dword ptr [EBP + -0x2c]
ADD ESP,0x1c
CMP byte ptr [EBP + -0x30],0x0
JZ 0x001c554b
SUB ESP,0x4
LEA EDX,[EBP + -0x1c]
PUSH EDX
PUSH EAX
PUSH dword ptr [EBP + -0x58]
CALL 0x001c9270
MOV EAX,dword ptr [EBP + -0x38]
XOR EDX,EDX
ADD ESP,0x10
DIV dword ptr [ESI + 0x78]
LEA EAX,[EDX*0x4 + 0x0]
MOV dword ptr [EBP + -0x54],EAX
MOV EBX,dword ptr [ESI + 0x74]
MOV ECX,dword ptr [EBP + -0x54]
MOV EAX,dword ptr [EBP + -0x38]
ADD ECX,EBX
MOV dword ptr [EDI + 0x8],EAX
MOV EAX,dword ptr [ECX]
TEST EAX,EAX
JZ 0x001c5578
MOV EAX,dword ptr [EAX]
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [ECX]
MOV dword ptr [EAX],EDI
ADD dword ptr [ESI + 0x80],0x1
JMP 0x001c5480
MOV EAX,dword ptr [ESI + 0x7c]
MOV dword ptr [ESI + 0x7c],EDI
MOV dword ptr [EDI],EAX
TEST EAX,EAX
JZ 0x001c558f
MOV EAX,dword ptr [EAX + 0x8]
XOR EDX,EDX
DIV dword ptr [ESI + 0x78]
MOV dword ptr [EBX + EDX*0x4],EDI
LEA EAX,[ESI + 0x7c]
MOV dword ptr [ECX],EAX
JMP 0x001c5567
SUB ESP,0xc
PUSH dword ptr [EBP + -0x3c]
MOV EBX,dword ptr [EBP + -0x50]
CALL 0x001e6d50
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x4
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
PUSH ESI
CALL 0x001c5140
MOV EAX,dword ptr [EBP + -0x3c]
ADD ESP,0x10
TEST EAX,EAX
SETNZ AL
AND AL,byte ptr [EBP + -0x21]
JZ 0x001c54c4
SUB ESP,0xc
PUSH dword ptr [EBP + -0x3c]
MOV EBX,dword ptr [EBP + -0x50]
MOV byte ptr [EBP + -0x34],AL
CALL 0x001e6d50
MOVZX EAX,byte ptr [EBP + -0x34]
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EBX,dword ptr [EBP + -0x50]
PUSH EDI
LEA EAX,[EBX + 0xfff11330]
PUSH EAX
LEA EAX,[EBX + 0xffef8419]
PUSH 0xc0
PUSH EAX
CALL 0x00069d00
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nuint FUN_001c5320(int param_1,undefined4 param_2,undefined4 param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char cVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  uint uVar7;\n  int *piVar8;\n  int *piVar9;\n  undefined1 *puVar10;\n  undefined4 uStackY_90;\n  undefined1 auStack_6c [4];\n  int local_68;\n  char *local_64;\n  undefined4 local_60;\n  int local_5c;\n  int local_58;\n  undefined **local_54;\n  uint local_50;\n  int local_4c;\n  uint local_48;\n  uint local_44;\n  int local_40;\n  uint local_3c;\n  uint local_38;\n  char local_34 [4];\n  undefined4 local_30;\n  byte local_25;\n  uint local_24;\n  undefined4 local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1c532e;\n  local_54 = &__DT_PLTGOT;\n  local_40 = FUN_000b1f60(param_2,param_3,&local_24,&local_25,0);\n  local_50 = *(uint *)(param_1 + 0x2c);\n  if (*(int *)(param_1 + 0x30) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);\n  }\n  local_44 = local_24 % local_50;\n  if (local_44 != 0) {\n    local_25 = local_40 != 0 & local_25;\n    if (local_25 != 0) {\n      FUN_001e6d50(local_40);\n      return 0;\n    }\n    return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);\n  }\n  *(int *)(param_1 + 0x68) =\n       *(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50);\n  uVar5 = FUN_000b1f00(param_2);\n  local_60 = FUN_001c5010(uVar5,param_1,param_3);\n  puVar10 = auStack_6c;\n  if (local_24 != 0) {\n    local_5c = param_1 + 0x6c;\n    local_64 = local_34;\n    local_68 = param_1 + 0x84;\n    puVar10 = auStack_6c;\n    do {\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */\n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    } while (local_44 < local_24);\n  }\n  if (*(char *)(param_1 + 0x34) == '\0') {\n    local_25 = local_40 != 0 & local_25;\n  }\n  else {\n    *(undefined4 *)(puVar10 + -8) = param_3;\n    *(undefined4 *)(puVar10 + -0xc) = param_2;\n    *(int *)(puVar10 + -0x10) = param_1;\n    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;\n    FUN_001c5140();\n    local_25 = local_40 != 0 & local_25;\n  }\n  if (local_25 == 0) {\n    return 1;\n  }\n  *(int *)(puVar10 + -0x10) = local_40;\n  local_38 = CONCAT31(local_38._1_3_,local_25);\n  *(undefined4 *)(puVar10 + -0x14) = 0x1c55f4;\n  FUN_001e6d50();\n  return local_38 & 0xff;\n}\n\n" comment (function_definition "uint FUN_001c5320(int param_1,undefined4 param_2,undefined4 param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char cVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  uint uVar7;\n  int *piVar8;\n  int *piVar9;\n  undefined1 *puVar10;\n  undefined4 uStackY_90;\n  undefined1 auStack_6c [4];\n  int local_68;\n  char *local_64;\n  undefined4 local_60;\n  int local_5c;\n  int local_58;\n  undefined **local_54;\n  uint local_50;\n  int local_4c;\n  uint local_48;\n  uint local_44;\n  int local_40;\n  uint local_3c;\n  uint local_38;\n  char local_34 [4];\n  undefined4 local_30;\n  byte local_25;\n  uint local_24;\n  undefined4 local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1c532e;\n  local_54 = &__DT_PLTGOT;\n  local_40 = FUN_000b1f60(param_2,param_3,&local_24,&local_25,0);\n  local_50 = *(uint *)(param_1 + 0x2c);\n  if (*(int *)(param_1 + 0x30) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);\n  }\n  local_44 = local_24 % local_50;\n  if (local_44 != 0) {\n    local_25 = local_40 != 0 & local_25;\n    if (local_25 != 0) {\n      FUN_001e6d50(local_40);\n      return 0;\n    }\n    return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);\n  }\n  *(int *)(param_1 + 0x68) =\n       *(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50);\n  uVar5 = FUN_000b1f00(param_2);\n  local_60 = FUN_001c5010(uVar5,param_1,param_3);\n  puVar10 = auStack_6c;\n  if (local_24 != 0) {\n    local_5c = param_1 + 0x6c;\n    local_64 = local_34;\n    local_68 = param_1 + 0x84;\n    puVar10 = auStack_6c;\n    do {\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */\n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    } while (local_44 < local_24);\n  }\n  if (*(char *)(param_1 + 0x34) == '\0') {\n    local_25 = local_40 != 0 & local_25;\n  }\n  else {\n    *(undefined4 *)(puVar10 + -8) = param_3;\n    *(undefined4 *)(puVar10 + -0xc) = param_2;\n    *(int *)(puVar10 + -0x10) = param_1;\n    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;\n    FUN_001c5140();\n    local_25 = local_40 != 0 & local_25;\n  }\n  if (local_25 == 0) {\n    return 1;\n  }\n  *(int *)(puVar10 + -0x10) = local_40;\n  local_38 = CONCAT31(local_38._1_3_,local_25);\n  *(undefined4 *)(puVar10 + -0x14) = 0x1c55f4;\n  FUN_001e6d50();\n  return local_38 & 0xff;\n}" type_identifier (function_declarator "FUN_001c5320(int param_1,undefined4 param_2,undefined4 param_3)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char cVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  uint uVar7;\n  int *piVar8;\n  int *piVar9;\n  undefined1 *puVar10;\n  undefined4 uStackY_90;\n  undefined1 auStack_6c [4];\n  int local_68;\n  char *local_64;\n  undefined4 local_60;\n  int local_5c;\n  int local_58;\n  undefined **local_54;\n  uint local_50;\n  int local_4c;\n  uint local_48;\n  uint local_44;\n  int local_40;\n  uint local_3c;\n  uint local_38;\n  char local_34 [4];\n  undefined4 local_30;\n  byte local_25;\n  uint local_24;\n  undefined4 local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1c532e;\n  local_54 = &__DT_PLTGOT;\n  local_40 = FUN_000b1f60(param_2,param_3,&local_24,&local_25,0);\n  local_50 = *(uint *)(param_1 + 0x2c);\n  if (*(int *)(param_1 + 0x30) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);\n  }\n  local_44 = local_24 % local_50;\n  if (local_44 != 0) {\n    local_25 = local_40 != 0 & local_25;\n    if (local_25 != 0) {\n      FUN_001e6d50(local_40);\n      return 0;\n    }\n    return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);\n  }\n  *(int *)(param_1 + 0x68) =\n       *(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50);\n  uVar5 = FUN_000b1f00(param_2);\n  local_60 = FUN_001c5010(uVar5,param_1,param_3);\n  puVar10 = auStack_6c;\n  if (local_24 != 0) {\n    local_5c = param_1 + 0x6c;\n    local_64 = local_34;\n    local_68 = param_1 + 0x84;\n    puVar10 = auStack_6c;\n    do {\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */\n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    } while (local_44 < local_24);\n  }\n  if (*(char *)(param_1 + 0x34) == '\0') {\n    local_25 = local_40 != 0 & local_25;\n  }\n  else {\n    *(undefined4 *)(puVar10 + -8) = param_3;\n    *(undefined4 *)(puVar10 + -0xc) = param_2;\n    *(int *)(puVar10 + -0x10) = param_1;\n    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;\n    FUN_001c5140();\n    local_25 = local_40 != 0 & local_25;\n  }\n  if (local_25 == 0) {\n    return 1;\n  }\n  *(int *)(puVar10 + -0x10) = local_40;\n  local_38 = CONCAT31(local_38._1_3_,local_25);\n  *(undefined4 *)(puVar10 + -0x14) = 0x1c55f4;\n  FUN_001e6d50();\n  return local_38 & 0xff;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined4 uStackY_90;" type_identifier identifier ;) (declaration "undefined1 auStack_6c [4];" type_identifier (array_declarator "auStack_6c [4]" identifier [ number_literal ]) ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "char *local_64;" primitive_type (pointer_declarator "*local_64" * identifier) ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "undefined **local_54;" type_identifier (pointer_declarator "**local_54" * (pointer_declarator "*local_54" * identifier)) ;) (declaration "uint local_50;" type_identifier identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "uint local_38;" type_identifier identifier ;) (declaration "char local_34 [4];" primitive_type (array_declarator "local_34 [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "byte local_25;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "undefined4 local_20 [3];" type_identifier (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1c532e;" (assignment_expression "uStack_14 = 0x1c532e" identifier = number_literal) ;) (expression_statement "local_54 = &__DT_PLTGOT;" (assignment_expression "local_54 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "local_40 = FUN_000b1f60(param_2,param_3,&local_24,&local_25,0);" (assignment_expression "local_40 = FUN_000b1f60(param_2,param_3,&local_24,&local_25,0)" identifier = (call_expression "FUN_000b1f60(param_2,param_3,&local_24,&local_25,0)" identifier (argument_list "(param_2,param_3,&local_24,&local_25,0)" ( identifier , identifier , (pointer_expression "&local_24" & identifier) , (pointer_expression "&local_25" & identifier) , number_literal )))) ;) (expression_statement "local_50 = *(uint *)(param_1 + 0x2c);" (assignment_expression "local_50 = *(uint *)(param_1 + 0x2c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x2c)" * (cast_expression "(uint *)(param_1 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0x30) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x30) != 0)" ( (binary_expression "*(int *)(param_1 + 0x30) != 0" (pointer_expression "*(int *)(param_1 + 0x30)" * (cast_expression "(int *)(param_1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);\n  }" { comment (expression_statement "FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);" (call_expression "FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34)" identifier (argument_list "((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34)" ( (binary_expression "(int)local_54 + -0x107be7" (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , number_literal , (binary_expression "local_54 + -0x3bb34" identifier + number_literal) ))) ;) })) (expression_statement "local_44 = local_24 % local_50;" (assignment_expression "local_44 = local_24 % local_50" identifier = (binary_expression "local_24 % local_50" identifier % identifier)) ;) (if_statement "if (local_44 != 0) {\n    local_25 = local_40 != 0 & local_25;\n    if (local_25 != 0) {\n      FUN_001e6d50(local_40);\n      return 0;\n    }\n    return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);\n  }" if (parenthesized_expression "(local_44 != 0)" ( (binary_expression "local_44 != 0" identifier != number_literal) )) (compound_statement "{\n    local_25 = local_40 != 0 & local_25;\n    if (local_25 != 0) {\n      FUN_001e6d50(local_40);\n      return 0;\n    }\n    return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);\n  }" { (expression_statement "local_25 = local_40 != 0 & local_25;" (assignment_expression "local_25 = local_40 != 0 & local_25" identifier = (binary_expression "local_40 != 0 & local_25" (binary_expression "local_40 != 0" identifier != number_literal) & identifier)) ;) (if_statement "if (local_25 != 0) {\n      FUN_001e6d50(local_40);\n      return 0;\n    }" if (parenthesized_expression "(local_25 != 0)" ( (binary_expression "local_25 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_001e6d50(local_40);\n      return 0;\n    }" { (expression_statement "FUN_001e6d50(local_40);" (call_expression "FUN_001e6d50(local_40)" identifier (argument_list "(local_40)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (return_statement "return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);" return (call_expression "CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25)" identifier (argument_list "((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25)" ( (call_expression "(int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8)" (parenthesized_expression "(int3)" ( identifier )) (argument_list "((ulonglong)local_24 / (ulonglong)local_50 >> 8)" ( (binary_expression "(ulonglong)local_24 / (ulonglong)local_50 >> 8" (binary_expression "(ulonglong)local_24 / (ulonglong)local_50" (cast_expression "(ulonglong)local_24" ( (type_descriptor "ulonglong" type_identifier) ) identifier) / (cast_expression "(ulonglong)local_50" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) ))) , identifier ))) ;) })) (expression_statement "*(int *)(param_1 + 0x68) =\n       *(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50);" (assignment_expression "*(int *)(param_1 + 0x68) =\n       *(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50)" (pointer_expression "*(int *)(param_1 + 0x68)" * (cast_expression "(int *)(param_1 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50)" (pointer_expression "*(int *)(param_1 + 0x68)" * (cast_expression "(int *)(param_1 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) + (cast_expression "(int)((ulonglong)local_24 / (ulonglong)local_50)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)local_24 / (ulonglong)local_50)" ( (binary_expression "(ulonglong)local_24 / (ulonglong)local_50" (cast_expression "(ulonglong)local_24" ( (type_descriptor "ulonglong" type_identifier) ) identifier) / (cast_expression "(ulonglong)local_50" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ))))) ;) (expression_statement "uVar5 = FUN_000b1f00(param_2);" (assignment_expression "uVar5 = FUN_000b1f00(param_2)" identifier = (call_expression "FUN_000b1f00(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "local_60 = FUN_001c5010(uVar5,param_1,param_3);" (assignment_expression "local_60 = FUN_001c5010(uVar5,param_1,param_3)" identifier = (call_expression "FUN_001c5010(uVar5,param_1,param_3)" identifier (argument_list "(uVar5,param_1,param_3)" ( identifier , identifier , identifier )))) ;) (expression_statement "puVar10 = auStack_6c;" (assignment_expression "puVar10 = auStack_6c" identifier = identifier) ;) (if_statement "if (local_24 != 0) {\n    local_5c = param_1 + 0x6c;\n    local_64 = local_34;\n    local_68 = param_1 + 0x84;\n    puVar10 = auStack_6c;\n    do {\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */\n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    } while (local_44 < local_24);\n  }" if (parenthesized_expression "(local_24 != 0)" ( (binary_expression "local_24 != 0" identifier != number_literal) )) (compound_statement "{\n    local_5c = param_1 + 0x6c;\n    local_64 = local_34;\n    local_68 = param_1 + 0x84;\n    puVar10 = auStack_6c;\n    do {\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */\n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    } while (local_44 < local_24);\n  }" { (expression_statement "local_5c = param_1 + 0x6c;" (assignment_expression "local_5c = param_1 + 0x6c" identifier = (binary_expression "param_1 + 0x6c" identifier + number_literal)) ;) (expression_statement "local_64 = local_34;" (assignment_expression "local_64 = local_34" identifier = identifier) ;) (expression_statement "local_68 = param_1 + 0x84;" (assignment_expression "local_68 = param_1 + 0x84" identifier = (binary_expression "param_1 + 0x84" identifier + number_literal)) ;) (expression_statement "puVar10 = auStack_6c;" (assignment_expression "puVar10 = auStack_6c" identifier = identifier) ;) (do_statement "do {\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */\n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    } while (local_44 < local_24);" do (compound_statement "{\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */\n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    }" { (expression_statement "iVar1 = *(int *)(param_1 + 0x60);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x60)" identifier = (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar10 + -0xc) = local_40;" (assignment_expression "*(int *)(puVar10 + -0xc) = local_40" (pointer_expression "*(int *)(puVar10 + -0xc)" * (cast_expression "(int *)(puVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar10 + -0x10) = param_1" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c53e9" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001c4d60();" (call_expression "FUN_001c4d60()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar10 + -0xc) = iVar1;" (assignment_expression "*(int *)(puVar10 + -0xc) = iVar1" (pointer_expression "*(int *)(puVar10 + -0xc)" * (cast_expression "(int *)(puVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0x10) = local_5c;" (assignment_expression "*(int *)(puVar10 + -0x10) = local_5c" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c53f7" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_38 = iVar1;" (assignment_expression "local_38 = iVar1" identifier = identifier) ;) (expression_statement "local_3c = FUN_001c4c70();" (assignment_expression "local_3c = FUN_001c4c70()" identifier = (call_expression "FUN_001c4c70()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_48 = local_3c % *(uint *)(param_1 + 0x78);" (assignment_expression "local_48 = local_3c % *(uint *)(param_1 + 0x78)" identifier = (binary_expression "local_3c % *(uint *)(param_1 + 0x78)" identifier % (pointer_expression "*(uint *)(param_1 + 0x78)" * (cast_expression "(uint *)(param_1 + 0x78)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))))) ;) (expression_statement "piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);" (assignment_expression "piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4)" identifier = (pointer_expression "*(int **)(*(int *)(param_1 + 0x74) + local_48 * 4)" * (cast_expression "(int **)(*(int *)(param_1 + 0x74) + local_48 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + local_48 * 4)" ( (binary_expression "*(int *)(param_1 + 0x74) + local_48 * 4" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + (binary_expression "local_48 * 4" identifier * number_literal)) ))))) ;) (expression_statement "local_58 = local_48 * 4;" (assignment_expression "local_58 = local_48 * 4" identifier = (binary_expression "local_48 * 4" identifier * number_literal)) ;) (if_statement "if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }" if (parenthesized_expression "(piVar6 != (int *)0x0)" ( (binary_expression "piVar6 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }" { (expression_statement "local_4c = param_1 + 0x70;" (assignment_expression "local_4c = param_1 + 0x70" identifier = (binary_expression "param_1 + 0x70" identifier + number_literal)) ;) (expression_statement "uVar7 = ((int *)*piVar6)[2];" (assignment_expression "uVar7 = ((int *)*piVar6)[2]" identifier = (subscript_expression "((int *)*piVar6)[2]" (parenthesized_expression "((int *)*piVar6)" ( (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier)) )) [ number_literal ])) ;) (expression_statement "piVar8 = (int *)*piVar6;" (assignment_expression "piVar8 = (int *)*piVar6" identifier = (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) (do_statement "do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );" do (compound_statement "{\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        }" { (expression_statement "piVar9 = piVar8;" (assignment_expression "piVar9 = piVar8" identifier = identifier) ;) (if_statement "if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }" if (parenthesized_expression "(uVar7 == local_3c)" ( (binary_expression "uVar7 == local_3c" identifier == identifier) )) (compound_statement "{\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }" { (expression_statement "*(int *)(puVar10 + -8) = piVar9[1];" (assignment_expression "*(int *)(puVar10 + -8) = piVar9[1]" (pointer_expression "*(int *)(puVar10 + -8)" * (cast_expression "(int *)(puVar10 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = (subscript_expression "piVar9[1]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(puVar10 + -0xc) = local_38;" (assignment_expression "*(uint *)(puVar10 + -0xc) = local_38" (pointer_expression "*(uint *)(puVar10 + -0xc)" * (cast_expression "(uint *)(puVar10 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0x10) = local_4c;" (assignment_expression "*(int *)(puVar10 + -0x10) = local_4c" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c5467;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c5467" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar4 = FUN_001c4d00();" (assignment_expression "cVar4 = FUN_001c4d00()" identifier = (call_expression "FUN_001c4d00()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }" { (expression_statement "iVar1 = *piVar6;" (assignment_expression "iVar1 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (if_statement "if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }" { (expression_statement "*(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;" (assignment_expression "*(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50" (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x60) - local_50" (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) - identifier)) ;) (expression_statement "local_38 = *(int *)(iVar1 + 4);" (assignment_expression "local_38 = *(int *)(iVar1 + 4)" identifier = (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_001c5480;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) })) (expression_statement "piVar8 = (int *)*piVar9;" (assignment_expression "piVar8 = (int *)*piVar9" identifier = (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) (if_statement "if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;" if (parenthesized_expression "((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))" ( (binary_expression "(piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78))" (parenthesized_expression "(piVar8 == (int *)0x0)" ( (binary_expression "piVar8 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78))" ( (comma_expression "uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)" (assignment_expression "uVar7 = piVar8[2]" identifier = (subscript_expression "piVar8[2]" identifier [ number_literal ])) , (comma_expression "piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)" (assignment_expression "piVar6 = piVar9" identifier = identifier) , (binary_expression "local_48 != uVar7 % *(uint *)(param_1 + 0x78)" identifier != (binary_expression "uVar7 % *(uint *)(param_1 + 0x78)" identifier % (pointer_expression "*(uint *)(param_1 + 0x78)" * (cast_expression "(uint *)(param_1 + 0x78)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))))))) ))) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = 0xc;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = 0xc" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c54e5" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar6 = (int *)FUN_001e5200();" (assignment_expression "piVar6 = (int *)FUN_001e5200()" identifier = (cast_expression "(int *)FUN_001e5200()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5200()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*piVar6 = 0;" (assignment_expression "*piVar6 = 0" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "piVar6[1] = local_38;" (assignment_expression "piVar6[1] = local_38" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_20[0] = *(undefined4 *)(param_1 + 0x88);" (assignment_expression "local_20[0] = *(undefined4 *)(param_1 + 0x88)" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(param_1 + 0x88)" * (cast_expression "(undefined4 *)(param_1 + 0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x88)" ( (binary_expression "param_1 + 0x88" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = 1;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = 1" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80)" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x80)" * (cast_expression "(undefined4 *)(param_1 + 0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78)" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" * (cast_expression "(undefined4 *)(puVar10 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x78)" * (cast_expression "(undefined4 *)(param_1 + 0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar10 + -0x1c) = local_68;" (assignment_expression "*(int *)(puVar10 + -0x1c) = local_68" (pointer_expression "*(int *)(puVar10 + -0x1c)" * (cast_expression "(int *)(puVar10 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x1c)" ( (binary_expression "puVar10 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(char **)(puVar10 + -0x20) = local_64;" (assignment_expression "*(char **)(puVar10 + -0x20) = local_64" (pointer_expression "*(char **)(puVar10 + -0x20)" * (cast_expression "(char **)(puVar10 + -0x20)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x20)" ( (binary_expression "puVar10 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x24) = 0x1c551a;" (assignment_expression "*(undefined4 *)(puVar10 + -0x24) = 0x1c551a" (pointer_expression "*(undefined4 *)(puVar10 + -0x24)" * (cast_expression "(undefined4 *)(puVar10 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x24)" ( (binary_expression "puVar10 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0022c460();" (call_expression "FUN_0022c460()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */\n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }" if (parenthesized_expression "(local_34[0] != '\0')" ( (binary_expression "local_34[0] != '\0'" (subscript_expression "local_34[0]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */\n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }" { (expression_statement "*(undefined4 **)(puVar10 + -0xc) = local_20;" (assignment_expression "*(undefined4 **)(puVar10 + -0xc) = local_20" (pointer_expression "*(undefined4 **)(puVar10 + -0xc)" * (cast_expression "(undefined4 **)(puVar10 + -0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = local_30;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = local_30" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0x14) = local_5c;" (assignment_expression "*(int *)(puVar10 + -0x14) = local_5c" (pointer_expression "*(int *)(puVar10 + -0x14)" * (cast_expression "(int *)(puVar10 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = identifier) ;) comment (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0x1c5536;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0x1c5536" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" * (cast_expression "(undefined4 *)(puVar10 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001c9270();" (call_expression "FUN_001c9270()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;" (assignment_expression "local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4" identifier = (binary_expression "(local_3c % *(uint *)(param_1 + 0x78)) * 4" (parenthesized_expression "(local_3c % *(uint *)(param_1 + 0x78))" ( (binary_expression "local_3c % *(uint *)(param_1 + 0x78)" identifier % (pointer_expression "*(uint *)(param_1 + 0x78)" * (cast_expression "(uint *)(param_1 + 0x78)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) ))))) )) * number_literal)) ;) })) (expression_statement "puVar10 = puVar10 + -4;" (assignment_expression "puVar10 = puVar10 + -4" identifier = (binary_expression "puVar10 + -4" identifier + number_literal)) ;) (expression_statement "iVar1 = *(int *)(param_1 + 0x74);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x74)" identifier = (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) ))))) ;) (expression_statement "piVar8 = (int *)(local_58 + iVar1);" (assignment_expression "piVar8 = (int *)(local_58 + iVar1)" identifier = (cast_expression "(int *)(local_58 + iVar1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + iVar1)" ( (binary_expression "local_58 + iVar1" identifier + identifier) )))) ;) (expression_statement "piVar6[2] = local_3c;" (assignment_expression "piVar6[2] = local_3c" (subscript_expression "piVar6[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }" if (parenthesized_expression "((int *)*piVar8 == (int *)0x0)" ( (binary_expression "(int *)*piVar8 == (int *)0x0" (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier)) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }" { (expression_statement "iVar2 = *(int *)(param_1 + 0x7c);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x7c)" identifier = (pointer_expression "*(int *)(param_1 + 0x7c)" * (cast_expression "(int *)(param_1 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7c)" ( (binary_expression "param_1 + 0x7c" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(param_1 + 0x7c) = piVar6;" (assignment_expression "*(int **)(param_1 + 0x7c) = piVar6" (pointer_expression "*(int **)(param_1 + 0x7c)" * (cast_expression "(int **)(param_1 + 0x7c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x7c)" ( (binary_expression "param_1 + 0x7c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*piVar6 = iVar2;" (assignment_expression "*piVar6 = iVar2" (pointer_expression "*piVar6" * identifier) = identifier) ;) (if_statement "if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }" { (expression_statement "*(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;" (assignment_expression "*(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6" (pointer_expression "*(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4)" * (cast_expression "(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4)" ( (binary_expression "iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4" identifier + (binary_expression "(*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4" (parenthesized_expression "(*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78))" ( (binary_expression "*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)" (pointer_expression "*(uint *)(iVar2 + 8)" * (cast_expression "(uint *)(iVar2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) % (pointer_expression "*(uint *)(param_1 + 0x78)" * (cast_expression "(uint *)(param_1 + 0x78)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) ))))) )) * number_literal)) )))) = identifier) ;) })) (expression_statement "*piVar8 = param_1 + 0x7c;" (assignment_expression "*piVar8 = param_1 + 0x7c" (pointer_expression "*piVar8" * identifier) = (binary_expression "param_1 + 0x7c" identifier + number_literal)) ;) }) (else_clause "else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }" else (compound_statement "{\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }" { (expression_statement "*piVar6 = *(int *)*piVar8;" (assignment_expression "*piVar6 = *(int *)*piVar8" (pointer_expression "*piVar6" * identifier) = (pointer_expression "*(int *)*piVar8" * (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier)))) ;) (expression_statement "*(int **)*piVar8 = piVar6;" (assignment_expression "*(int **)*piVar8 = piVar6" (pointer_expression "*(int **)*piVar8" * (cast_expression "(int **)*piVar8" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*piVar8" * identifier))) = identifier) ;) }))) (expression_statement "*(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;" (assignment_expression "*(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1" (pointer_expression "*(int *)(param_1 + 0x80)" * (cast_expression "(int *)(param_1 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x80) + 1" (pointer_expression "*(int *)(param_1 + 0x80)" * (cast_expression "(int *)(param_1 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) + number_literal)) ;) (labeled_statement "LAB_001c5480:\n      uVar3 = local_44;" statement_identifier : (expression_statement "uVar3 = local_44;" (assignment_expression "uVar3 = local_44" identifier = identifier) ;)) (expression_statement "uVar7 = local_50;" (assignment_expression "uVar7 = local_50" identifier = identifier) ;) (expression_statement "*(uint *)(puVar10 + -4) = local_38;" (assignment_expression "*(uint *)(puVar10 + -4) = local_38" (pointer_expression "*(uint *)(puVar10 + -4)" * (cast_expression "(uint *)(puVar10 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -4)" ( (binary_expression "puVar10 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar10 + -8) = local_50;" (assignment_expression "*(uint *)(puVar10 + -8) = local_50" (pointer_expression "*(uint *)(puVar10 + -8)" * (cast_expression "(uint *)(puVar10 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar10 + -0xc) = local_44;" (assignment_expression "*(uint *)(puVar10 + -0xc) = local_44" (pointer_expression "*(uint *)(puVar10 + -0xc)" * (cast_expression "(uint *)(puVar10 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = local_60;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = local_60" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c5493;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c5493" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001c4f10();" (call_expression "FUN_001c4f10()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_40 = local_40 + uVar7;" (assignment_expression "local_40 = local_40 + uVar7" identifier = (binary_expression "local_40 + uVar7" identifier + identifier)) ;) (expression_statement "local_44 = uVar3 + uVar7;" (assignment_expression "local_44 = uVar3 + uVar7" identifier = (binary_expression "uVar3 + uVar7" identifier + identifier)) ;) }) while (parenthesized_expression "(local_44 < local_24)" ( (binary_expression "local_44 < local_24" identifier < identifier) )) ;) })) (if_statement "if (*(char *)(param_1 + 0x34) == '\0') {\n    local_25 = local_40 != 0 & local_25;\n  }\n  else {\n    *(undefined4 *)(puVar10 + -8) = param_3;\n    *(undefined4 *)(puVar10 + -0xc) = param_2;\n    *(int *)(puVar10 + -0x10) = param_1;\n    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;\n    FUN_001c5140();\n    local_25 = local_40 != 0 & local_25;\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0x34) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x34) == '\0'" (pointer_expression "*(char *)(param_1 + 0x34)" * (cast_expression "(char *)(param_1 + 0x34)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_25 = local_40 != 0 & local_25;\n  }" { (expression_statement "local_25 = local_40 != 0 & local_25;" (assignment_expression "local_25 = local_40 != 0 & local_25" identifier = (binary_expression "local_40 != 0 & local_25" (binary_expression "local_40 != 0" identifier != number_literal) & identifier)) ;) }) (else_clause "else {\n    *(undefined4 *)(puVar10 + -8) = param_3;\n    *(undefined4 *)(puVar10 + -0xc) = param_2;\n    *(int *)(puVar10 + -0x10) = param_1;\n    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;\n    FUN_001c5140();\n    local_25 = local_40 != 0 & local_25;\n  }" else (compound_statement "{\n    *(undefined4 *)(puVar10 + -8) = param_3;\n    *(undefined4 *)(puVar10 + -0xc) = param_2;\n    *(int *)(puVar10 + -0x10) = param_1;\n    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;\n    FUN_001c5140();\n    local_25 = local_40 != 0 & local_25;\n  }" { (expression_statement "*(undefined4 *)(puVar10 + -8) = param_3;" (assignment_expression "*(undefined4 *)(puVar10 + -8) = param_3" (pointer_expression "*(undefined4 *)(puVar10 + -8)" * (cast_expression "(undefined4 *)(puVar10 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = param_2;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = param_2" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" * (cast_expression "(undefined4 *)(puVar10 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar10 + -0x10) = param_1" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c55cf" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001c5140();" (call_expression "FUN_001c5140()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_25 = local_40 != 0 & local_25;" (assignment_expression "local_25 = local_40 != 0 & local_25" identifier = (binary_expression "local_40 != 0 & local_25" (binary_expression "local_40 != 0" identifier != number_literal) & identifier)) ;) }))) (if_statement "if (local_25 == 0) {\n    return 1;\n  }" if (parenthesized_expression "(local_25 == 0)" ( (binary_expression "local_25 == 0" identifier == number_literal) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "*(int *)(puVar10 + -0x10) = local_40;" (assignment_expression "*(int *)(puVar10 + -0x10) = local_40" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_38 = CONCAT31(local_38._1_3_,local_25);" (assignment_expression "local_38 = CONCAT31(local_38._1_3_,local_25)" identifier = (call_expression "CONCAT31(local_38._1_3_,local_25)" identifier (argument_list "(local_38._1_3_,local_25)" ( (field_expression "local_38._1_3_" identifier . field_identifier) , identifier )))) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c55f4;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c55f4" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001e6d50();" (call_expression "FUN_001e6d50()" identifier (argument_list "()" ( ))) ;) (return_statement "return local_38 & 0xff;" return (binary_expression "local_38 & 0xff" identifier & number_literal) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* DWARF original prototype: bool do_add_input_section(Output_merge_data * this, Relobj * object,\n   uint shndx) */\n\nbool __thiscall\ngold::Output_merge_data::do_add_input_section(Output_merge_data *this,Relobj *object,uint shndx)\n\n{\n  size_type *psVar1;\n  uint length;\n  _Hash_node_base *p_Var2;\n  __bucket_type *pp_Var3;\n  bool bVar4;\n  Object_merge_map *this_00;\n  Input_merge_map *this_01;\n  _Hash_node_base *p_Var5;\n  _Hash_node_base *p_Var6;\n  __bucket_type *pp_Var7;\n  uint uVar8;\n  __bucket_type p_Var9;\n  __bucket_type p_Var10;\n  uint local_44;\n  uchar *local_40;\n  _Hash_node_base *local_38;\n  char local_34 [4];\n  size_type local_30;\n  bool is_new;\n  section_size_type len;\n  size_t local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1c532e;\n  local_40 = Object::decompressed_section_contents\n                       (&object->super_Object,shndx,&len,&is_new,(uint64_t *)0x0);\n  length = (uint)(this->super_Output_merge_base).entsize_;\n  if (*(int *)((int)&(this->super_Output_merge_base).entsize_ + 4) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");\n  }\n  if (len % length != 0) {\n    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);\n    if (bVar4 != false) {\n      operator_delete__(local_40);\n      return false;\n    }\n    return bVar4;\n  }\n  this->input_count_ = this->input_count_ + len / length;\n  this_00 = Relobj::get_or_create_merge_map(object);\n  this_01 = Object_merge_map::get_or_make_input_merge_map(this_00,(Output_section_data *)this,shndx)\n  ;\n  if (len != 0) {\n    local_44 = 0;\n    do {\n      local_38 = (_Hash_node_base *)this->len_;\n      add_constant(this,local_40);\n      p_Var5 = (_Hash_node_base *)\n               Merge_data_hash::operator()\n                         ((Merge_data_hash *)&this->hashtable_,(Merge_data_key)local_38);\n      uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;\n      p_Var10 = (this->hashtable_)._M_h._M_buckets[uVar8];\n      if (p_Var10 != (__bucket_type)0x0) {\n        p_Var6 = p_Var10->_M_nxt[2]._M_nxt;\n        p_Var2 = p_Var10->_M_nxt;\n        while ((p_Var9 = p_Var2, p_Var6 != p_Var5 ||\n               (bVar4 = Merge_data_eq::operator()\n                                  (&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>\n                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt\n                                  ), !bVar4))) {\n          p_Var2 = p_Var9->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (p_Var6 = p_Var2[2]._M_nxt, p_Var10 = p_Var9,\n             uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count)) goto LAB_001c54d8;\n        }\n        p_Var6 = p_Var10->_M_nxt;\n        if (p_Var6 != (_Hash_node_base *)0x0) {\n          this->len_ = this->len_ - length;\n          local_38 = p_Var6[1]._M_nxt;\n          goto LAB_001c5480;\n        }\n      }\nLAB_001c54d8:\n      p_Var6 = (_Hash_node_base *)operator_new(0xc);\n      p_Var6->_M_nxt = (_Hash_node_base *)0x0;\n      p_Var6[1]._M_nxt = local_38;\n      local_20[0] = (this->hashtable_)._M_h._M_rehash_policy._M_next_resize;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->hashtable_)._M_h._M_rehash_policy,\n                 (this->hashtable_)._M_h._M_bucket_count);\n      if (local_34[0] != '\0') {\n                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */\n        std::\n        _Hashtable<int,_int,_std::allocator<int>,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20);\n        uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;\n      }\n      pp_Var3 = (this->hashtable_)._M_h._M_buckets;\n      pp_Var7 = pp_Var3 + uVar8;\n      p_Var6[2]._M_nxt = p_Var5;\n      if (*pp_Var7 == (__bucket_type)0x0) {\n        p_Var5 = (this->hashtable_)._M_h._M_before_begin._M_nxt;\n        (this->hashtable_)._M_h._M_before_begin._M_nxt = p_Var6;\n        p_Var6->_M_nxt = p_Var5;\n        if (p_Var5 != (_Hash_node_base *)0x0) {\n          pp_Var3[(uint)p_Var5[2]._M_nxt % (this->hashtable_)._M_h._M_bucket_count] = p_Var6;\n        }\n        *pp_Var7 = &(this->hashtable_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var6->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var6;\n      }\n      psVar1 = &(this->hashtable_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\nLAB_001c5480:\n      Object_merge_map::Input_merge_map::add_mapping\n                (this_01,local_44,length,(section_offset_type)local_38);\n      local_40 = local_40 + length;\n      local_44 = local_44 + length;\n    } while (local_44 < len);\n  }\n  if ((this->super_Output_merge_base).keeps_input_sections_ == false) {\n    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);\n  }\n  else {\n    Output_merge_base::record_input_section(&this->super_Output_merge_base,object,shndx);\n    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);\n  }\n  if (bVar4 == false) {\n    return true;\n  }\n  operator_delete__(local_40);\n  return bVar4;\n}\n\n" comment comment (function_definition "bool __thiscall\ngold::Output_merge_data::do_add_input_section(Output_merge_data *this,Relobj *object,uint shndx)\n\n{\n  size_type *psVar1;\n  uint length;\n  _Hash_node_base *p_Var2;\n  __bucket_type *pp_Var3;\n  bool bVar4;\n  Object_merge_map *this_00;\n  Input_merge_map *this_01;\n  _Hash_node_base *p_Var5;\n  _Hash_node_base *p_Var6;\n  __bucket_type *pp_Var7;\n  uint uVar8;\n  __bucket_type p_Var9;\n  __bucket_type p_Var10;\n  uint local_44;\n  uchar *local_40;\n  _Hash_node_base *local_38;\n  char local_34 [4];\n  size_type local_30;\n  bool is_new;\n  section_size_type len;\n  size_t local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1c532e;\n  local_40 = Object::decompressed_section_contents\n                       (&object->super_Object,shndx,&len,&is_new,(uint64_t *)0x0);\n  length = (uint)(this->super_Output_merge_base).entsize_;\n  if (*(int *)((int)&(this->super_Output_merge_base).entsize_ + 4) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");\n  }\n  if (len % length != 0) {\n    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);\n    if (bVar4 != false) {\n      operator_delete__(local_40);\n      return false;\n    }\n    return bVar4;\n  }\n  this->input_count_ = this->input_count_ + len / length;\n  this_00 = Relobj::get_or_create_merge_map(object);\n  this_01 = Object_merge_map::get_or_make_input_merge_map(this_00,(Output_section_data *)this,shndx)\n  ;\n  if (len != 0) {\n    local_44 = 0;\n    do {\n      local_38 = (_Hash_node_base *)this->len_;\n      add_constant(this,local_40);\n      p_Var5 = (_Hash_node_base *)\n               Merge_data_hash::operator()\n                         ((Merge_data_hash *)&this->hashtable_,(Merge_data_key)local_38);\n      uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;\n      p_Var10 = (this->hashtable_)._M_h._M_buckets[uVar8];\n      if (p_Var10 != (__bucket_type)0x0) {\n        p_Var6 = p_Var10->_M_nxt[2]._M_nxt;\n        p_Var2 = p_Var10->_M_nxt;\n        while ((p_Var9 = p_Var2, p_Var6 != p_Var5 ||\n               (bVar4 = Merge_data_eq::operator()\n                                  (&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>\n                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt\n                                  ), !bVar4))) {\n          p_Var2 = p_Var9->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (p_Var6 = p_Var2[2]._M_nxt, p_Var10 = p_Var9,\n             uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count)) goto LAB_001c54d8;\n        }\n        p_Var6 = p_Var10->_M_nxt;\n        if (p_Var6 != (_Hash_node_base *)0x0) {\n          this->len_ = this->len_ - length;\n          local_38 = p_Var6[1]._M_nxt;\n          goto LAB_001c5480;\n        }\n      }\nLAB_001c54d8:\n      p_Var6 = (_Hash_node_base *)operator_new(0xc);\n      p_Var6->_M_nxt = (_Hash_node_base *)0x0;\n      p_Var6[1]._M_nxt = local_38;\n      local_20[0] = (this->hashtable_)._M_h._M_rehash_policy._M_next_resize;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->hashtable_)._M_h._M_rehash_policy,\n                 (this->hashtable_)._M_h._M_bucket_count);\n      if (local_34[0] != '\0') {\n                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */\n        std::\n        _Hashtable<int,_int,_std::allocator<int>,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20);\n        uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;\n      }\n      pp_Var3 = (this->hashtable_)._M_h._M_buckets;\n      pp_Var7 = pp_Var3 + uVar8;\n      p_Var6[2]._M_nxt = p_Var5;\n      if (*pp_Var7 == (__bucket_type)0x0) {\n        p_Var5 = (this->hashtable_)._M_h._M_before_begin._M_nxt;\n        (this->hashtable_)._M_h._M_before_begin._M_nxt = p_Var6;\n        p_Var6->_M_nxt = p_Var5;\n        if (p_Var5 != (_Hash_node_base *)0x0) {\n          pp_Var3[(uint)p_Var5[2]._M_nxt % (this->hashtable_)._M_h._M_bucket_count] = p_Var6;\n        }\n        *pp_Var7 = &(this->hashtable_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var6->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var6;\n      }\n      psVar1 = &(this->hashtable_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\nLAB_001c5480:\n      Object_merge_map::Input_merge_map::add_mapping\n                (this_01,local_44,length,(section_offset_type)local_38);\n      local_40 = local_40 + length;\n      local_44 = local_44 + length;\n    } while (local_44 < len);\n  }\n  if ((this->super_Output_merge_base).keeps_input_sections_ == false) {\n    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);\n  }\n  else {\n    Output_merge_base::record_input_section(&this->super_Output_merge_base,object,shndx);\n    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);\n  }\n  if (bVar4 == false) {\n    return true;\n  }\n  operator_delete__(local_40);\n  return bVar4;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_merge_data::" identifier : : identifier : :) (function_declarator "do_add_input_section(Output_merge_data *this,Relobj *object,uint shndx)" identifier (parameter_list "(Output_merge_data *this,Relobj *object,uint shndx)" ( (parameter_declaration "Output_merge_data *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Relobj *object" type_identifier (pointer_declarator "*object" * identifier)) , (parameter_declaration "uint shndx" type_identifier identifier) ))) (compound_statement "{\n  size_type *psVar1;\n  uint length;\n  _Hash_node_base *p_Var2;\n  __bucket_type *pp_Var3;\n  bool bVar4;\n  Object_merge_map *this_00;\n  Input_merge_map *this_01;\n  _Hash_node_base *p_Var5;\n  _Hash_node_base *p_Var6;\n  __bucket_type *pp_Var7;\n  uint uVar8;\n  __bucket_type p_Var9;\n  __bucket_type p_Var10;\n  uint local_44;\n  uchar *local_40;\n  _Hash_node_base *local_38;\n  char local_34 [4];\n  size_type local_30;\n  bool is_new;\n  section_size_type len;\n  size_t local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1c532e;\n  local_40 = Object::decompressed_section_contents\n                       (&object->super_Object,shndx,&len,&is_new,(uint64_t *)0x0);\n  length = (uint)(this->super_Output_merge_base).entsize_;\n  if (*(int *)((int)&(this->super_Output_merge_base).entsize_ + 4) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");\n  }\n  if (len % length != 0) {\n    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);\n    if (bVar4 != false) {\n      operator_delete__(local_40);\n      return false;\n    }\n    return bVar4;\n  }\n  this->input_count_ = this->input_count_ + len / length;\n  this_00 = Relobj::get_or_create_merge_map(object);\n  this_01 = Object_merge_map::get_or_make_input_merge_map(this_00,(Output_section_data *)this,shndx)\n  ;\n  if (len != 0) {\n    local_44 = 0;\n    do {\n      local_38 = (_Hash_node_base *)this->len_;\n      add_constant(this,local_40);\n      p_Var5 = (_Hash_node_base *)\n               Merge_data_hash::operator()\n                         ((Merge_data_hash *)&this->hashtable_,(Merge_data_key)local_38);\n      uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;\n      p_Var10 = (this->hashtable_)._M_h._M_buckets[uVar8];\n      if (p_Var10 != (__bucket_type)0x0) {\n        p_Var6 = p_Var10->_M_nxt[2]._M_nxt;\n        p_Var2 = p_Var10->_M_nxt;\n        while ((p_Var9 = p_Var2, p_Var6 != p_Var5 ||\n               (bVar4 = Merge_data_eq::operator()\n                                  (&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>\n                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt\n                                  ), !bVar4))) {\n          p_Var2 = p_Var9->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (p_Var6 = p_Var2[2]._M_nxt, p_Var10 = p_Var9,\n             uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count)) goto LAB_001c54d8;\n        }\n        p_Var6 = p_Var10->_M_nxt;\n        if (p_Var6 != (_Hash_node_base *)0x0) {\n          this->len_ = this->len_ - length;\n          local_38 = p_Var6[1]._M_nxt;\n          goto LAB_001c5480;\n        }\n      }\nLAB_001c54d8:\n      p_Var6 = (_Hash_node_base *)operator_new(0xc);\n      p_Var6->_M_nxt = (_Hash_node_base *)0x0;\n      p_Var6[1]._M_nxt = local_38;\n      local_20[0] = (this->hashtable_)._M_h._M_rehash_policy._M_next_resize;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->hashtable_)._M_h._M_rehash_policy,\n                 (this->hashtable_)._M_h._M_bucket_count);\n      if (local_34[0] != '\0') {\n                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */\n        std::\n        _Hashtable<int,_int,_std::allocator<int>,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20);\n        uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;\n      }\n      pp_Var3 = (this->hashtable_)._M_h._M_buckets;\n      pp_Var7 = pp_Var3 + uVar8;\n      p_Var6[2]._M_nxt = p_Var5;\n      if (*pp_Var7 == (__bucket_type)0x0) {\n        p_Var5 = (this->hashtable_)._M_h._M_before_begin._M_nxt;\n        (this->hashtable_)._M_h._M_before_begin._M_nxt = p_Var6;\n        p_Var6->_M_nxt = p_Var5;\n        if (p_Var5 != (_Hash_node_base *)0x0) {\n          pp_Var3[(uint)p_Var5[2]._M_nxt % (this->hashtable_)._M_h._M_bucket_count] = p_Var6;\n        }\n        *pp_Var7 = &(this->hashtable_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var6->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var6;\n      }\n      psVar1 = &(this->hashtable_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\nLAB_001c5480:\n      Object_merge_map::Input_merge_map::add_mapping\n                (this_01,local_44,length,(section_offset_type)local_38);\n      local_40 = local_40 + length;\n      local_44 = local_44 + length;\n    } while (local_44 < len);\n  }\n  if ((this->super_Output_merge_base).keeps_input_sections_ == false) {\n    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);\n  }\n  else {\n    Output_merge_base::record_input_section(&this->super_Output_merge_base,object,shndx);\n    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);\n  }\n  if (bVar4 == false) {\n    return true;\n  }\n  operator_delete__(local_40);\n  return bVar4;\n}" { (declaration "size_type *psVar1;" type_identifier (pointer_declarator "*psVar1" * identifier) ;) (declaration "uint length;" type_identifier identifier ;) (declaration "_Hash_node_base *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "__bucket_type *pp_Var3;" type_identifier (pointer_declarator "*pp_Var3" * identifier) ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "Object_merge_map *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "Input_merge_map *this_01;" type_identifier (pointer_declarator "*this_01" * identifier) ;) (declaration "_Hash_node_base *p_Var5;" type_identifier (pointer_declarator "*p_Var5" * identifier) ;) (declaration "_Hash_node_base *p_Var6;" type_identifier (pointer_declarator "*p_Var6" * identifier) ;) (declaration "__bucket_type *pp_Var7;" type_identifier (pointer_declarator "*pp_Var7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "__bucket_type p_Var9;" type_identifier identifier ;) (declaration "__bucket_type p_Var10;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uchar *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "_Hash_node_base *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "char local_34 [4];" primitive_type (array_declarator "local_34 [4]" identifier [ number_literal ]) ;) (declaration "size_type local_30;" type_identifier identifier ;) (declaration "bool is_new;" primitive_type identifier ;) (declaration "section_size_type len;" type_identifier identifier ;) (declaration "size_t local_20 [3];" primitive_type (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1c532e;" (assignment_expression "uStack_14 = 0x1c532e" identifier = number_literal) ;) (ERROR "local_40 = Object::" (assignment_expression "local_40 = Object" identifier = identifier) : :) (expression_statement "decompressed_section_contents\n                       (&object->super_Object,shndx,&len,&is_new,(uint64_t *)0x0);" (call_expression "decompressed_section_contents\n                       (&object->super_Object,shndx,&len,&is_new,(uint64_t *)0x0)" identifier (argument_list "(&object->super_Object,shndx,&len,&is_new,(uint64_t *)0x0)" ( (pointer_expression "&object->super_Object" & (field_expression "object->super_Object" identifier -> field_identifier)) , identifier , (pointer_expression "&len" & identifier) , (pointer_expression "&is_new" & identifier) , (cast_expression "(uint64_t *)0x0" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "length = (uint)(this->super_Output_merge_base).entsize_;" (assignment_expression "length = (uint)(this->super_Output_merge_base).entsize_" identifier = (field_expression "(uint)(this->super_Output_merge_base).entsize_" (call_expression "(uint)(this->super_Output_merge_base)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(this->super_Output_merge_base)" ( (field_expression "this->super_Output_merge_base" identifier -> field_identifier) ))) . field_identifier)) ;) (if_statement "if (*(int *)((int)&(this->super_Output_merge_base).entsize_ + 4) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");\n  }" if (parenthesized_expression "(*(int *)((int)&(this->super_Output_merge_base).entsize_ + 4) != 0)" ( (binary_expression "*(int *)((int)&(this->super_Output_merge_base).entsize_ + 4) != 0" (pointer_expression "*(int *)((int)&(this->super_Output_merge_base).entsize_ + 4)" * (cast_expression "(int *)((int)&(this->super_Output_merge_base).entsize_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(this->super_Output_merge_base).entsize_ + 4)" ( (binary_expression "(int)&(this->super_Output_merge_base).entsize_ + 4" (cast_expression "(int)&(this->super_Output_merge_base).entsize_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(this->super_Output_merge_base).entsize_" & (field_expression "(this->super_Output_merge_base).entsize_" (parenthesized_expression "(this->super_Output_merge_base)" ( (field_expression "this->super_Output_merge_base" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");" (call_expression "do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types")" identifier (argument_list "("../../gold/gold.h",0xc0,"convert_types")" ( (string_literal ""../../gold/gold.h"" " string_content ") , number_literal , (string_literal ""convert_types"" " string_content ") ))) ;) })) (if_statement "if (len % length != 0) {\n    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);\n    if (bVar4 != false) {\n      operator_delete__(local_40);\n      return false;\n    }\n    return bVar4;\n  }" if (parenthesized_expression "(len % length != 0)" ( (binary_expression "len % length != 0" (binary_expression "len % length" identifier % identifier) != number_literal) )) (compound_statement "{\n    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);\n    if (bVar4 != false) {\n      operator_delete__(local_40);\n      return false;\n    }\n    return bVar4;\n  }" { (expression_statement "bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);" (assignment_expression "bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new)" identifier = (cast_expression "(bool)(local_40 != (uchar *)0x0 & is_new)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(local_40 != (uchar *)0x0 & is_new)" ( (binary_expression "local_40 != (uchar *)0x0 & is_new" (binary_expression "local_40 != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) & identifier) )))) ;) (if_statement "if (bVar4 != false) {\n      operator_delete__(local_40);\n      return false;\n    }" if (parenthesized_expression "(bVar4 != false)" ( (binary_expression "bVar4 != false" identifier != false) )) (compound_statement "{\n      operator_delete__(local_40);\n      return false;\n    }" { (expression_statement "operator_delete__(local_40);" (call_expression "operator_delete__(local_40)" identifier (argument_list "(local_40)" ( identifier ))) ;) (return_statement "return false;" return false ;) })) (return_statement "return bVar4;" return identifier ;) })) (expression_statement "this->input_count_ = this->input_count_ + len / length;" (assignment_expression "this->input_count_ = this->input_count_ + len / length" (field_expression "this->input_count_" identifier -> field_identifier) = (binary_expression "this->input_count_ + len / length" (field_expression "this->input_count_" identifier -> field_identifier) + (binary_expression "len / length" identifier / identifier))) ;) (ERROR "this_00 = Relobj::" (assignment_expression "this_00 = Relobj" identifier = identifier) : :) (expression_statement "get_or_create_merge_map(object);" (call_expression "get_or_create_merge_map(object)" identifier (argument_list "(object)" ( identifier ))) ;) (ERROR "this_01 = Object_merge_map::" (assignment_expression "this_01 = Object_merge_map" identifier = identifier) : :) (expression_statement "get_or_make_input_merge_map(this_00,(Output_section_data *)this,shndx)\n  ;" (call_expression "get_or_make_input_merge_map(this_00,(Output_section_data *)this,shndx)" identifier (argument_list "(this_00,(Output_section_data *)this,shndx)" ( identifier , (cast_expression "(Output_section_data *)this" ( (type_descriptor "Output_section_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (if_statement "if (len != 0) {\n    local_44 = 0;\n    do {\n      local_38 = (_Hash_node_base *)this->len_;\n      add_constant(this,local_40);\n      p_Var5 = (_Hash_node_base *)\n               Merge_data_hash::operator()\n                         ((Merge_data_hash *)&this->hashtable_,(Merge_data_key)local_38);\n      uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;\n      p_Var10 = (this->hashtable_)._M_h._M_buckets[uVar8];\n      if (p_Var10 != (__bucket_type)0x0) {\n        p_Var6 = p_Var10->_M_nxt[2]._M_nxt;\n        p_Var2 = p_Var10->_M_nxt;\n        while ((p_Var9 = p_Var2, p_Var6 != p_Var5 ||\n               (bVar4 = Merge_data_eq::operator()\n                                  (&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>\n                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt\n                                  ), !bVar4))) {\n          p_Var2 = p_Var9->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (p_Var6 = p_Var2[2]._M_nxt, p_Var10 = p_Var9,\n             uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count)) goto LAB_001c54d8;\n        }\n        p_Var6 = p_Var10->_M_nxt;\n        if (p_Var6 != (_Hash_node_base *)0x0) {\n          this->len_ = this->len_ - length;\n          local_38 = p_Var6[1]._M_nxt;\n          goto LAB_001c5480;\n        }\n      }\nLAB_001c54d8:\n      p_Var6 = (_Hash_node_base *)operator_new(0xc);\n      p_Var6->_M_nxt = (_Hash_node_base *)0x0;\n      p_Var6[1]._M_nxt = local_38;\n      local_20[0] = (this->hashtable_)._M_h._M_rehash_policy._M_next_resize;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->hashtable_)._M_h._M_rehash_policy,\n                 (this->hashtable_)._M_h._M_bucket_count);\n      if (local_34[0] != '\0') {\n                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */\n        std::\n        _Hashtable<int,_int,_std::allocator<int>,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20);\n        uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;\n      }\n      pp_Var3 = (this->hashtable_)._M_h._M_buckets;\n      pp_Var7 = pp_Var3 + uVar8;\n      p_Var6[2]._M_nxt = p_Var5;\n      if (*pp_Var7 == (__bucket_type)0x0) {\n        p_Var5 = (this->hashtable_)._M_h._M_before_begin._M_nxt;\n        (this->hashtable_)._M_h._M_before_begin._M_nxt = p_Var6;\n        p_Var6->_M_nxt = p_Var5;\n        if (p_Var5 != (_Hash_node_base *)0x0) {\n          pp_Var3[(uint)p_Var5[2]._M_nxt % (this->hashtable_)._M_h._M_bucket_count] = p_Var6;\n        }\n        *pp_Var7 = &(this->hashtable_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var6->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var6;\n      }\n      psVar1 = &(this->hashtable_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\nLAB_001c5480:\n      Object_merge_map::Input_merge_map::add_mapping\n                (this_01,local_44,length,(section_offset_type)local_38);\n      local_40 = local_40 + length;\n      local_44 = local_44 + length;\n    } while (local_44 < len);\n  }" if (parenthesized_expression "(len != 0)" ( (binary_expression "len != 0" identifier != number_literal) )) (compound_statement "{\n    local_44 = 0;\n    do {\n      local_38 = (_Hash_node_base *)this->len_;\n      add_constant(this,local_40);\n      p_Var5 = (_Hash_node_base *)\n               Merge_data_hash::operator()\n                         ((Merge_data_hash *)&this->hashtable_,(Merge_data_key)local_38);\n      uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;\n      p_Var10 = (this->hashtable_)._M_h._M_buckets[uVar8];\n      if (p_Var10 != (__bucket_type)0x0) {\n        p_Var6 = p_Var10->_M_nxt[2]._M_nxt;\n        p_Var2 = p_Var10->_M_nxt;\n        while ((p_Var9 = p_Var2, p_Var6 != p_Var5 ||\n               (bVar4 = Merge_data_eq::operator()\n                                  (&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>\n                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt\n                                  ), !bVar4))) {\n          p_Var2 = p_Var9->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (p_Var6 = p_Var2[2]._M_nxt, p_Var10 = p_Var9,\n             uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count)) goto LAB_001c54d8;\n        }\n        p_Var6 = p_Var10->_M_nxt;\n        if (p_Var6 != (_Hash_node_base *)0x0) {\n          this->len_ = this->len_ - length;\n          local_38 = p_Var6[1]._M_nxt;\n          goto LAB_001c5480;\n        }\n      }\nLAB_001c54d8:\n      p_Var6 = (_Hash_node_base *)operator_new(0xc);\n      p_Var6->_M_nxt = (_Hash_node_base *)0x0;\n      p_Var6[1]._M_nxt = local_38;\n      local_20[0] = (this->hashtable_)._M_h._M_rehash_policy._M_next_resize;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->hashtable_)._M_h._M_rehash_policy,\n                 (this->hashtable_)._M_h._M_bucket_count);\n      if (local_34[0] != '\0') {\n                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */\n        std::\n        _Hashtable<int,_int,_std::allocator<int>,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20);\n        uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;\n      }\n      pp_Var3 = (this->hashtable_)._M_h._M_buckets;\n      pp_Var7 = pp_Var3 + uVar8;\n      p_Var6[2]._M_nxt = p_Var5;\n      if (*pp_Var7 == (__bucket_type)0x0) {\n        p_Var5 = (this->hashtable_)._M_h._M_before_begin._M_nxt;\n        (this->hashtable_)._M_h._M_before_begin._M_nxt = p_Var6;\n        p_Var6->_M_nxt = p_Var5;\n        if (p_Var5 != (_Hash_node_base *)0x0) {\n          pp_Var3[(uint)p_Var5[2]._M_nxt % (this->hashtable_)._M_h._M_bucket_count] = p_Var6;\n        }\n        *pp_Var7 = &(this->hashtable_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var6->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var6;\n      }\n      psVar1 = &(this->hashtable_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\nLAB_001c5480:\n      Object_merge_map::Input_merge_map::add_mapping\n                (this_01,local_44,length,(section_offset_type)local_38);\n      local_40 = local_40 + length;\n      local_44 = local_44 + length;\n    } while (local_44 < len);\n  }" { (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (do_statement "do {\n      local_38 = (_Hash_node_base *)this->len_;\n      add_constant(this,local_40);\n      p_Var5 = (_Hash_node_base *)\n               Merge_data_hash::operator()\n                         ((Merge_data_hash *)&this->hashtable_,(Merge_data_key)local_38);\n      uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;\n      p_Var10 = (this->hashtable_)._M_h._M_buckets[uVar8];\n      if (p_Var10 != (__bucket_type)0x0) {\n        p_Var6 = p_Var10->_M_nxt[2]._M_nxt;\n        p_Var2 = p_Var10->_M_nxt;\n        while ((p_Var9 = p_Var2, p_Var6 != p_Var5 ||\n               (bVar4 = Merge_data_eq::operator()\n                                  (&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>\n                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt\n                                  ), !bVar4))) {\n          p_Var2 = p_Var9->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (p_Var6 = p_Var2[2]._M_nxt, p_Var10 = p_Var9,\n             uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count)) goto LAB_001c54d8;\n        }\n        p_Var6 = p_Var10->_M_nxt;\n        if (p_Var6 != (_Hash_node_base *)0x0) {\n          this->len_ = this->len_ - length;\n          local_38 = p_Var6[1]._M_nxt;\n          goto LAB_001c5480;\n        }\n      }\nLAB_001c54d8:\n      p_Var6 = (_Hash_node_base *)operator_new(0xc);\n      p_Var6->_M_nxt = (_Hash_node_base *)0x0;\n      p_Var6[1]._M_nxt = local_38;\n      local_20[0] = (this->hashtable_)._M_h._M_rehash_policy._M_next_resize;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->hashtable_)._M_h._M_rehash_policy,\n                 (this->hashtable_)._M_h._M_bucket_count);\n      if (local_34[0] != '\0') {\n                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */\n        std::\n        _Hashtable<int,_int,_std::allocator<int>,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20);\n        uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;\n      }\n      pp_Var3 = (this->hashtable_)._M_h._M_buckets;\n      pp_Var7 = pp_Var3 + uVar8;\n      p_Var6[2]._M_nxt = p_Var5;\n      if (*pp_Var7 == (__bucket_type)0x0) {\n        p_Var5 = (this->hashtable_)._M_h._M_before_begin._M_nxt;\n        (this->hashtable_)._M_h._M_before_begin._M_nxt = p_Var6;\n        p_Var6->_M_nxt = p_Var5;\n        if (p_Var5 != (_Hash_node_base *)0x0) {\n          pp_Var3[(uint)p_Var5[2]._M_nxt % (this->hashtable_)._M_h._M_bucket_count] = p_Var6;\n        }\n        *pp_Var7 = &(this->hashtable_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var6->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var6;\n      }\n      psVar1 = &(this->hashtable_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\nLAB_001c5480:\n      Object_merge_map::Input_merge_map::add_mapping\n                (this_01,local_44,length,(section_offset_type)local_38);\n      local_40 = local_40 + length;\n      local_44 = local_44 + length;\n    } while (local_44 < len);" do (compound_statement "{\n      local_38 = (_Hash_node_base *)this->len_;\n      add_constant(this,local_40);\n      p_Var5 = (_Hash_node_base *)\n               Merge_data_hash::operator()\n                         ((Merge_data_hash *)&this->hashtable_,(Merge_data_key)local_38);\n      uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;\n      p_Var10 = (this->hashtable_)._M_h._M_buckets[uVar8];\n      if (p_Var10 != (__bucket_type)0x0) {\n        p_Var6 = p_Var10->_M_nxt[2]._M_nxt;\n        p_Var2 = p_Var10->_M_nxt;\n        while ((p_Var9 = p_Var2, p_Var6 != p_Var5 ||\n               (bVar4 = Merge_data_eq::operator()\n                                  (&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>\n                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt\n                                  ), !bVar4))) {\n          p_Var2 = p_Var9->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (p_Var6 = p_Var2[2]._M_nxt, p_Var10 = p_Var9,\n             uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count)) goto LAB_001c54d8;\n        }\n        p_Var6 = p_Var10->_M_nxt;\n        if (p_Var6 != (_Hash_node_base *)0x0) {\n          this->len_ = this->len_ - length;\n          local_38 = p_Var6[1]._M_nxt;\n          goto LAB_001c5480;\n        }\n      }\nLAB_001c54d8:\n      p_Var6 = (_Hash_node_base *)operator_new(0xc);\n      p_Var6->_M_nxt = (_Hash_node_base *)0x0;\n      p_Var6[1]._M_nxt = local_38;\n      local_20[0] = (this->hashtable_)._M_h._M_rehash_policy._M_next_resize;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->hashtable_)._M_h._M_rehash_policy,\n                 (this->hashtable_)._M_h._M_bucket_count);\n      if (local_34[0] != '\0') {\n                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */\n        std::\n        _Hashtable<int,_int,_std::allocator<int>,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20);\n        uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;\n      }\n      pp_Var3 = (this->hashtable_)._M_h._M_buckets;\n      pp_Var7 = pp_Var3 + uVar8;\n      p_Var6[2]._M_nxt = p_Var5;\n      if (*pp_Var7 == (__bucket_type)0x0) {\n        p_Var5 = (this->hashtable_)._M_h._M_before_begin._M_nxt;\n        (this->hashtable_)._M_h._M_before_begin._M_nxt = p_Var6;\n        p_Var6->_M_nxt = p_Var5;\n        if (p_Var5 != (_Hash_node_base *)0x0) {\n          pp_Var3[(uint)p_Var5[2]._M_nxt % (this->hashtable_)._M_h._M_bucket_count] = p_Var6;\n        }\n        *pp_Var7 = &(this->hashtable_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var6->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var6;\n      }\n      psVar1 = &(this->hashtable_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\nLAB_001c5480:\n      Object_merge_map::Input_merge_map::add_mapping\n                (this_01,local_44,length,(section_offset_type)local_38);\n      local_40 = local_40 + length;\n      local_44 = local_44 + length;\n    }" { (expression_statement "local_38 = (_Hash_node_base *)this->len_;" (assignment_expression "local_38 = (_Hash_node_base *)this->len_" identifier = (cast_expression "(_Hash_node_base *)this->len_" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "this->len_" identifier -> field_identifier))) ;) (expression_statement "add_constant(this,local_40);" (call_expression "add_constant(this,local_40)" identifier (argument_list "(this,local_40)" ( identifier , identifier ))) ;) (ERROR "p_Var5 = (_Hash_node_base *)\n               Merge_data_hash::" (assignment_expression "p_Var5 = (_Hash_node_base *)\n               Merge_data_hash" identifier = (cast_expression "(_Hash_node_base *)\n               Merge_data_hash" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : :) (expression_statement "operator()\n                         ((Merge_data_hash *)&this->hashtable_,(Merge_data_key)local_38);" (call_expression "operator()\n                         ((Merge_data_hash *)&this->hashtable_,(Merge_data_key)local_38)" (call_expression "operator()" identifier (argument_list "()" ( ))) (argument_list "((Merge_data_hash *)&this->hashtable_,(Merge_data_key)local_38)" ( (cast_expression "(Merge_data_hash *)&this->hashtable_" ( (type_descriptor "Merge_data_hash *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->hashtable_" & (field_expression "this->hashtable_" identifier -> field_identifier))) , (cast_expression "(Merge_data_key)local_38" ( (type_descriptor "Merge_data_key" type_identifier) ) identifier) ))) ;) (expression_statement "uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;" (assignment_expression "uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count" identifier = (binary_expression "(uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count" (cast_expression "(uint)p_Var5" ( (type_descriptor "uint" type_identifier) ) identifier) % (field_expression "(this->hashtable_)._M_h._M_bucket_count" (field_expression "(this->hashtable_)._M_h" (parenthesized_expression "(this->hashtable_)" ( (field_expression "this->hashtable_" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "p_Var10 = (this->hashtable_)._M_h._M_buckets[uVar8];" (assignment_expression "p_Var10 = (this->hashtable_)._M_h._M_buckets[uVar8]" identifier = (subscript_expression "(this->hashtable_)._M_h._M_buckets[uVar8]" (field_expression "(this->hashtable_)._M_h._M_buckets" (field_expression "(this->hashtable_)._M_h" (parenthesized_expression "(this->hashtable_)" ( (field_expression "this->hashtable_" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ identifier ])) ;) (if_statement "if (p_Var10 != (__bucket_type)0x0) {\n        p_Var6 = p_Var10->_M_nxt[2]._M_nxt;\n        p_Var2 = p_Var10->_M_nxt;\n        while ((p_Var9 = p_Var2, p_Var6 != p_Var5 ||\n               (bVar4 = Merge_data_eq::operator()\n                                  (&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>\n                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt\n                                  ), !bVar4))) {\n          p_Var2 = p_Var9->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (p_Var6 = p_Var2[2]._M_nxt, p_Var10 = p_Var9,\n             uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count)) goto LAB_001c54d8;\n        }\n        p_Var6 = p_Var10->_M_nxt;\n        if (p_Var6 != (_Hash_node_base *)0x0) {\n          this->len_ = this->len_ - length;\n          local_38 = p_Var6[1]._M_nxt;\n          goto LAB_001c5480;\n        }\n      }" if (parenthesized_expression "(p_Var10 != (__bucket_type)0x0)" ( (binary_expression "p_Var10 != (__bucket_type)0x0" identifier != (cast_expression "(__bucket_type)0x0" ( (type_descriptor "__bucket_type" type_identifier) ) number_literal)) )) (compound_statement "{\n        p_Var6 = p_Var10->_M_nxt[2]._M_nxt;\n        p_Var2 = p_Var10->_M_nxt;\n        while ((p_Var9 = p_Var2, p_Var6 != p_Var5 ||\n               (bVar4 = Merge_data_eq::operator()\n                                  (&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>\n                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt\n                                  ), !bVar4))) {\n          p_Var2 = p_Var9->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (p_Var6 = p_Var2[2]._M_nxt, p_Var10 = p_Var9,\n             uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count)) goto LAB_001c54d8;\n        }\n        p_Var6 = p_Var10->_M_nxt;\n        if (p_Var6 != (_Hash_node_base *)0x0) {\n          this->len_ = this->len_ - length;\n          local_38 = p_Var6[1]._M_nxt;\n          goto LAB_001c5480;\n        }\n      }" { (expression_statement "p_Var6 = p_Var10->_M_nxt[2]._M_nxt;" (assignment_expression "p_Var6 = p_Var10->_M_nxt[2]._M_nxt" identifier = (field_expression "p_Var10->_M_nxt[2]._M_nxt" (subscript_expression "p_Var10->_M_nxt[2]" (field_expression "p_Var10->_M_nxt" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "p_Var2 = p_Var10->_M_nxt;" (assignment_expression "p_Var2 = p_Var10->_M_nxt" identifier = (field_expression "p_Var10->_M_nxt" identifier -> field_identifier)) ;) (while_statement "while ((p_Var9 = p_Var2, p_Var6 != p_Var5 ||\n               (bVar4 = Merge_data_eq::operator()\n                                  (&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>\n                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt\n                                  ), !bVar4))) {\n          p_Var2 = p_Var9->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (p_Var6 = p_Var2[2]._M_nxt, p_Var10 = p_Var9,\n             uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count)) goto LAB_001c54d8;\n        }" while (parenthesized_expression "((p_Var9 = p_Var2, p_Var6 != p_Var5 ||\n               (bVar4 = Merge_data_eq::operator()\n                                  (&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>\n                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt\n                                  ), !bVar4)))" ( (parenthesized_expression "(p_Var9 = p_Var2, p_Var6 != p_Var5 ||\n               (bVar4 = Merge_data_eq::operator()\n                                  (&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>\n                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt\n                                  ), !bVar4))" ( (comma_expression "p_Var9 = p_Var2, p_Var6 != p_Var5 ||\n               (bVar4 = Merge_data_eq::operator()\n                                  (&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>\n                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt\n                                  ), !bVar4)" (assignment_expression "p_Var9 = p_Var2" identifier = identifier) , (binary_expression "p_Var6 != p_Var5 ||\n               (bVar4 = Merge_data_eq::operator()\n                                  (&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>\n                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt\n                                  ), !bVar4)" (binary_expression "p_Var6 != p_Var5" identifier != identifier) || (parenthesized_expression "(bVar4 = Merge_data_eq::operator()\n                                  (&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>\n                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt\n                                  ), !bVar4)" ( (ERROR "bVar4 = Merge_data_eq::" (assignment_expression "bVar4 = Merge_data_eq" identifier = identifier) : :) (comma_expression "operator()\n                                  (&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>\n                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt\n                                  ), !bVar4" (call_expression "operator()\n                                  (&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>\n                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt\n                                  )" (call_expression "operator()" identifier (argument_list "()" ( ))) (argument_list "(&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int,_int,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0,_gold::Output_merge_data::Merge_data_eq,_false>\n                                    ._M_tp,(Merge_data_key)local_38,(Merge_data_key)p_Var9[1]._M_nxt\n                                  )" ( (binary_expression "&(this->hashtable_)._M_h.\n                                    super__Hashtable_base<int" (pointer_expression "&(this->hashtable_)._M_h.\n                                    super__Hashtable_base" & (field_expression "(this->hashtable_)._M_h.\n                                    super__Hashtable_base" (field_expression "(this->hashtable_)._M_h" (parenthesized_expression "(this->hashtable_)" ( (field_expression "this->hashtable_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) < identifier) , identifier , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_gold::Output_merge_data::" identifier : : identifier : :) identifier , (ERROR "_gold::Output_merge_data::" identifier : : identifier : :) identifier , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::__detail::" identifier : : identifier : :) (binary_expression "_Hashtable_traits<true" identifier < true) , identifier , (binary_expression "_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper<0" (field_expression "_true>_>\n                                    .\n                                    super__Hashtable_ebo_helper" (binary_expression "_true>_" identifier > identifier) (ERROR ">" >) . field_identifier) < number_literal) , (ERROR "_gold::Output_merge_data::" identifier : : identifier : :) identifier , (field_expression "_false>\n                                    ._M_tp" identifier (ERROR ">" >) . field_identifier) , (cast_expression "(Merge_data_key)local_38" ( (type_descriptor "Merge_data_key" type_identifier) ) identifier) , (cast_expression "(Merge_data_key)p_Var9[1]._M_nxt" ( (type_descriptor "Merge_data_key" type_identifier) ) (field_expression "p_Var9[1]._M_nxt" (subscript_expression "p_Var9[1]" identifier [ number_literal ]) . field_identifier)) ))) , (unary_expression "!bVar4" ! identifier)) )))) )) )) (compound_statement "{\n          p_Var2 = p_Var9->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (p_Var6 = p_Var2[2]._M_nxt, p_Var10 = p_Var9,\n             uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count)) goto LAB_001c54d8;\n        }" { (expression_statement "p_Var2 = p_Var9->_M_nxt;" (assignment_expression "p_Var2 = p_Var9->_M_nxt" identifier = (field_expression "p_Var9->_M_nxt" identifier -> field_identifier)) ;) (if_statement "if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (p_Var6 = p_Var2[2]._M_nxt, p_Var10 = p_Var9,\n             uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count)) goto LAB_001c54d8;" if (parenthesized_expression "((p_Var2 == (_Hash_node_base *)0x0) ||\n             (p_Var6 = p_Var2[2]._M_nxt, p_Var10 = p_Var9,\n             uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count))" ( (binary_expression "(p_Var2 == (_Hash_node_base *)0x0) ||\n             (p_Var6 = p_Var2[2]._M_nxt, p_Var10 = p_Var9,\n             uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count)" (parenthesized_expression "(p_Var2 == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var2 == (_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_Var6 = p_Var2[2]._M_nxt, p_Var10 = p_Var9,\n             uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count)" ( (comma_expression "p_Var6 = p_Var2[2]._M_nxt, p_Var10 = p_Var9,\n             uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count" (assignment_expression "p_Var6 = p_Var2[2]._M_nxt" identifier = (field_expression "p_Var2[2]._M_nxt" (subscript_expression "p_Var2[2]" identifier [ number_literal ]) . field_identifier)) , (comma_expression "p_Var10 = p_Var9,\n             uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count" (assignment_expression "p_Var10 = p_Var9" identifier = identifier) , (binary_expression "uVar8 != (uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count" identifier != (binary_expression "(uint)p_Var6 % (this->hashtable_)._M_h._M_bucket_count" (cast_expression "(uint)p_Var6" ( (type_descriptor "uint" type_identifier) ) identifier) % (field_expression "(this->hashtable_)._M_h._M_bucket_count" (field_expression "(this->hashtable_)._M_h" (parenthesized_expression "(this->hashtable_)" ( (field_expression "this->hashtable_" identifier -> field_identifier) )) . field_identifier) . field_identifier))))) ))) )) (goto_statement "goto LAB_001c54d8;" goto statement_identifier ;)) })) (expression_statement "p_Var6 = p_Var10->_M_nxt;" (assignment_expression "p_Var6 = p_Var10->_M_nxt" identifier = (field_expression "p_Var10->_M_nxt" identifier -> field_identifier)) ;) (if_statement "if (p_Var6 != (_Hash_node_base *)0x0) {\n          this->len_ = this->len_ - length;\n          local_38 = p_Var6[1]._M_nxt;\n          goto LAB_001c5480;\n        }" if (parenthesized_expression "(p_Var6 != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var6 != (_Hash_node_base *)0x0" identifier != (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          this->len_ = this->len_ - length;\n          local_38 = p_Var6[1]._M_nxt;\n          goto LAB_001c5480;\n        }" { (expression_statement "this->len_ = this->len_ - length;" (assignment_expression "this->len_ = this->len_ - length" (field_expression "this->len_" identifier -> field_identifier) = (binary_expression "this->len_ - length" (field_expression "this->len_" identifier -> field_identifier) - identifier)) ;) (expression_statement "local_38 = p_Var6[1]._M_nxt;" (assignment_expression "local_38 = p_Var6[1]._M_nxt" identifier = (field_expression "p_Var6[1]._M_nxt" (subscript_expression "p_Var6[1]" identifier [ number_literal ]) . field_identifier)) ;) (goto_statement "goto LAB_001c5480;" goto statement_identifier ;) })) })) (labeled_statement "LAB_001c54d8:\n      p_Var6 = (_Hash_node_base *)operator_new(0xc);" statement_identifier : (expression_statement "p_Var6 = (_Hash_node_base *)operator_new(0xc);" (assignment_expression "p_Var6 = (_Hash_node_base *)operator_new(0xc)" identifier = (cast_expression "(_Hash_node_base *)operator_new(0xc)" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;)) (expression_statement "p_Var6->_M_nxt = (_Hash_node_base *)0x0;" (assignment_expression "p_Var6->_M_nxt = (_Hash_node_base *)0x0" (field_expression "p_Var6->_M_nxt" identifier -> field_identifier) = (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_Var6[1]._M_nxt = local_38;" (assignment_expression "p_Var6[1]._M_nxt = local_38" (field_expression "p_Var6[1]._M_nxt" (subscript_expression "p_Var6[1]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "local_20[0] = (this->hashtable_)._M_h._M_rehash_policy._M_next_resize;" (assignment_expression "local_20[0] = (this->hashtable_)._M_h._M_rehash_policy._M_next_resize" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (field_expression "(this->hashtable_)._M_h._M_rehash_policy._M_next_resize" (field_expression "(this->hashtable_)._M_h._M_rehash_policy" (field_expression "(this->hashtable_)._M_h" (parenthesized_expression "(this->hashtable_)" ( (field_expression "this->hashtable_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) (labeled_statement "std::__detail::_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->hashtable_)._M_h._M_rehash_policy,\n                 (this->hashtable_)._M_h._M_bucket_count);" statement_identifier : (ERROR ":" :) (labeled_statement "__detail::_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->hashtable_)._M_h._M_rehash_policy,\n                 (this->hashtable_)._M_h._M_bucket_count);" statement_identifier : (ERROR ":" :) (labeled_statement "_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->hashtable_)._M_h._M_rehash_policy,\n                 (this->hashtable_)._M_h._M_bucket_count);" statement_identifier : (ERROR ":" :) (expression_statement "_M_need_rehash\n                ((uint)local_34,(uint)&(this->hashtable_)._M_h._M_rehash_policy,\n                 (this->hashtable_)._M_h._M_bucket_count);" (call_expression "_M_need_rehash\n                ((uint)local_34,(uint)&(this->hashtable_)._M_h._M_rehash_policy,\n                 (this->hashtable_)._M_h._M_bucket_count)" identifier (argument_list "((uint)local_34,(uint)&(this->hashtable_)._M_h._M_rehash_policy,\n                 (this->hashtable_)._M_h._M_bucket_count)" ( (cast_expression "(uint)local_34" ( (type_descriptor "uint" type_identifier) ) identifier) , (binary_expression "(uint)&(this->hashtable_)._M_h._M_rehash_policy" (parenthesized_expression "(uint)" ( identifier )) & (field_expression "(this->hashtable_)._M_h._M_rehash_policy" (field_expression "(this->hashtable_)._M_h" (parenthesized_expression "(this->hashtable_)" ( (field_expression "this->hashtable_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (field_expression "(this->hashtable_)._M_h._M_bucket_count" (field_expression "(this->hashtable_)._M_h" (parenthesized_expression "(this->hashtable_)" ( (field_expression "this->hashtable_" identifier -> field_identifier) )) . field_identifier) . field_identifier) ))) ;)))) (if_statement "if (local_34[0] != '\0') {\n                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */\n        std::\n        _Hashtable<int,_int,_std::allocator<int>,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20);\n        uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;\n      }" if (parenthesized_expression "(local_34[0] != '\0')" ( (binary_expression "local_34[0] != '\0'" (subscript_expression "local_34[0]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */\n        std::\n        _Hashtable<int,_int,_std::allocator<int>,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20);\n        uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;\n      }" { comment (ERROR "std::\n        _Hashtable<int,_int,_std::allocator<int>,_std::" (comma_expression "std::\n        _Hashtable<int,_int,_std::allocator<int>,_std" identifier (ERROR "::\n        _Hashtable<int,_int,_std::allocator<int>" : : (comma_expression "_Hashtable<int,_int,_std" (binary_expression "_Hashtable<int" identifier < identifier) , (comma_expression "_int,_std" identifier , identifier)) : : (binary_expression "allocator<int" identifier < identifier) >) , identifier) : :) (labeled_statement "__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20);" statement_identifier (ERROR "::_Identity,_gold:" : : (comma_expression "_Identity,_gold" identifier , identifier) :) : (labeled_statement "Output_merge_data::Merge_data_eq,_gold::Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20);" statement_identifier (ERROR "::Merge_data_eq,_gold:" : : (comma_expression "Merge_data_eq,_gold" identifier , identifier) :) : (labeled_statement "Output_merge_data::Merge_data_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20);" statement_identifier (ERROR "::Merge_data_hash,_std:" : : (comma_expression "Merge_data_hash,_std" identifier , identifier) :) : (labeled_statement "__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20);" statement_identifier (ERROR "::_Mod_range_hashing,_std:" : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) :) : (labeled_statement "__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20);" statement_identifier (ERROR "::_Default_ranged_hash,_std:" : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) :) : (labeled_statement "__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20);" statement_identifier (ERROR "::_Prime_rehash_policy,_std:" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<true,_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20);" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<true,_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20);" (comma_expression "_Hashtable_traits<true,_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20)" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_true,_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20)" identifier , (binary_expression "_true>_>\n        ::_M_rehash(&(this->hashtable_)._M_h,local_30,local_20)" (binary_expression "_true>_" identifier > identifier) > (ERROR "::" : :) (call_expression "_M_rehash(&(this->hashtable_)._M_h,local_30,local_20)" identifier (argument_list "(&(this->hashtable_)._M_h,local_30,local_20)" ( (pointer_expression "&(this->hashtable_)._M_h" & (field_expression "(this->hashtable_)._M_h" (parenthesized_expression "(this->hashtable_)" ( (field_expression "this->hashtable_" identifier -> field_identifier) )) . field_identifier)) , identifier , identifier )))))) ;)))))))) (expression_statement "uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count;" (assignment_expression "uVar8 = (uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count" identifier = (binary_expression "(uint)p_Var5 % (this->hashtable_)._M_h._M_bucket_count" (cast_expression "(uint)p_Var5" ( (type_descriptor "uint" type_identifier) ) identifier) % (field_expression "(this->hashtable_)._M_h._M_bucket_count" (field_expression "(this->hashtable_)._M_h" (parenthesized_expression "(this->hashtable_)" ( (field_expression "this->hashtable_" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) })) (expression_statement "pp_Var3 = (this->hashtable_)._M_h._M_buckets;" (assignment_expression "pp_Var3 = (this->hashtable_)._M_h._M_buckets" identifier = (field_expression "(this->hashtable_)._M_h._M_buckets" (field_expression "(this->hashtable_)._M_h" (parenthesized_expression "(this->hashtable_)" ( (field_expression "this->hashtable_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "pp_Var7 = pp_Var3 + uVar8;" (assignment_expression "pp_Var7 = pp_Var3 + uVar8" identifier = (binary_expression "pp_Var3 + uVar8" identifier + identifier)) ;) (expression_statement "p_Var6[2]._M_nxt = p_Var5;" (assignment_expression "p_Var6[2]._M_nxt = p_Var5" (field_expression "p_Var6[2]._M_nxt" (subscript_expression "p_Var6[2]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (if_statement "if (*pp_Var7 == (__bucket_type)0x0) {\n        p_Var5 = (this->hashtable_)._M_h._M_before_begin._M_nxt;\n        (this->hashtable_)._M_h._M_before_begin._M_nxt = p_Var6;\n        p_Var6->_M_nxt = p_Var5;\n        if (p_Var5 != (_Hash_node_base *)0x0) {\n          pp_Var3[(uint)p_Var5[2]._M_nxt % (this->hashtable_)._M_h._M_bucket_count] = p_Var6;\n        }\n        *pp_Var7 = &(this->hashtable_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var6->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var6;\n      }" if (parenthesized_expression "(*pp_Var7 == (__bucket_type)0x0)" ( (binary_expression "*pp_Var7 == (__bucket_type)0x0" (pointer_expression "*pp_Var7" * identifier) == (cast_expression "(__bucket_type)0x0" ( (type_descriptor "__bucket_type" type_identifier) ) number_literal)) )) (compound_statement "{\n        p_Var5 = (this->hashtable_)._M_h._M_before_begin._M_nxt;\n        (this->hashtable_)._M_h._M_before_begin._M_nxt = p_Var6;\n        p_Var6->_M_nxt = p_Var5;\n        if (p_Var5 != (_Hash_node_base *)0x0) {\n          pp_Var3[(uint)p_Var5[2]._M_nxt % (this->hashtable_)._M_h._M_bucket_count] = p_Var6;\n        }\n        *pp_Var7 = &(this->hashtable_)._M_h._M_before_begin;\n      }" { (expression_statement "p_Var5 = (this->hashtable_)._M_h._M_before_begin._M_nxt;" (assignment_expression "p_Var5 = (this->hashtable_)._M_h._M_before_begin._M_nxt" identifier = (field_expression "(this->hashtable_)._M_h._M_before_begin._M_nxt" (field_expression "(this->hashtable_)._M_h._M_before_begin" (field_expression "(this->hashtable_)._M_h" (parenthesized_expression "(this->hashtable_)" ( (field_expression "this->hashtable_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "(this->hashtable_)._M_h._M_before_begin._M_nxt = p_Var6;" (assignment_expression "(this->hashtable_)._M_h._M_before_begin._M_nxt = p_Var6" (field_expression "(this->hashtable_)._M_h._M_before_begin._M_nxt" (field_expression "(this->hashtable_)._M_h._M_before_begin" (field_expression "(this->hashtable_)._M_h" (parenthesized_expression "(this->hashtable_)" ( (field_expression "this->hashtable_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "p_Var6->_M_nxt = p_Var5;" (assignment_expression "p_Var6->_M_nxt = p_Var5" (field_expression "p_Var6->_M_nxt" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var5 != (_Hash_node_base *)0x0) {\n          pp_Var3[(uint)p_Var5[2]._M_nxt % (this->hashtable_)._M_h._M_bucket_count] = p_Var6;\n        }" if (parenthesized_expression "(p_Var5 != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var5 != (_Hash_node_base *)0x0" identifier != (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pp_Var3[(uint)p_Var5[2]._M_nxt % (this->hashtable_)._M_h._M_bucket_count] = p_Var6;\n        }" { (expression_statement "pp_Var3[(uint)p_Var5[2]._M_nxt % (this->hashtable_)._M_h._M_bucket_count] = p_Var6;" (assignment_expression "pp_Var3[(uint)p_Var5[2]._M_nxt % (this->hashtable_)._M_h._M_bucket_count] = p_Var6" (subscript_expression "pp_Var3[(uint)p_Var5[2]._M_nxt % (this->hashtable_)._M_h._M_bucket_count]" identifier [ (binary_expression "(uint)p_Var5[2]._M_nxt % (this->hashtable_)._M_h._M_bucket_count" (cast_expression "(uint)p_Var5[2]._M_nxt" ( (type_descriptor "uint" type_identifier) ) (field_expression "p_Var5[2]._M_nxt" (subscript_expression "p_Var5[2]" identifier [ number_literal ]) . field_identifier)) % (field_expression "(this->hashtable_)._M_h._M_bucket_count" (field_expression "(this->hashtable_)._M_h" (parenthesized_expression "(this->hashtable_)" ( (field_expression "this->hashtable_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ]) = identifier) ;) })) (expression_statement "*pp_Var7 = &(this->hashtable_)._M_h._M_before_begin;" (assignment_expression "*pp_Var7 = &(this->hashtable_)._M_h._M_before_begin" (pointer_expression "*pp_Var7" * identifier) = (pointer_expression "&(this->hashtable_)._M_h._M_before_begin" & (field_expression "(this->hashtable_)._M_h._M_before_begin" (field_expression "(this->hashtable_)._M_h" (parenthesized_expression "(this->hashtable_)" ( (field_expression "this->hashtable_" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) }) (else_clause "else {\n        p_Var6->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var6;\n      }" else (compound_statement "{\n        p_Var6->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var6;\n      }" { (expression_statement "p_Var6->_M_nxt = (*pp_Var7)->_M_nxt;" (assignment_expression "p_Var6->_M_nxt = (*pp_Var7)->_M_nxt" (field_expression "p_Var6->_M_nxt" identifier -> field_identifier) = (field_expression "(*pp_Var7)->_M_nxt" (parenthesized_expression "(*pp_Var7)" ( (pointer_expression "*pp_Var7" * identifier) )) -> field_identifier)) ;) (expression_statement "(*pp_Var7)->_M_nxt = p_Var6;" (assignment_expression "(*pp_Var7)->_M_nxt = p_Var6" (field_expression "(*pp_Var7)->_M_nxt" (parenthesized_expression "(*pp_Var7)" ( (pointer_expression "*pp_Var7" * identifier) )) -> field_identifier) = identifier) ;) }))) (expression_statement "psVar1 = &(this->hashtable_)._M_h._M_element_count;" (assignment_expression "psVar1 = &(this->hashtable_)._M_h._M_element_count" identifier = (pointer_expression "&(this->hashtable_)._M_h._M_element_count" & (field_expression "(this->hashtable_)._M_h._M_element_count" (field_expression "(this->hashtable_)._M_h" (parenthesized_expression "(this->hashtable_)" ( (field_expression "this->hashtable_" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*psVar1 = *psVar1 + 1;" (assignment_expression "*psVar1 = *psVar1 + 1" (pointer_expression "*psVar1" * identifier) = (binary_expression "*psVar1 + 1" (pointer_expression "*psVar1" * identifier) + number_literal)) ;) (labeled_statement "LAB_001c5480:\n      Object_merge_map::Input_merge_map::add_mapping\n                (this_01,local_44,length,(section_offset_type)local_38);" statement_identifier : (labeled_statement "Object_merge_map::Input_merge_map::add_mapping\n                (this_01,local_44,length,(section_offset_type)local_38);" statement_identifier : (ERROR ":" :) (labeled_statement "Input_merge_map::add_mapping\n                (this_01,local_44,length,(section_offset_type)local_38);" statement_identifier : (ERROR ":" :) (expression_statement "add_mapping\n                (this_01,local_44,length,(section_offset_type)local_38);" (call_expression "add_mapping\n                (this_01,local_44,length,(section_offset_type)local_38)" identifier (argument_list "(this_01,local_44,length,(section_offset_type)local_38)" ( identifier , identifier , identifier , (cast_expression "(section_offset_type)local_38" ( (type_descriptor "section_offset_type" type_identifier) ) identifier) ))) ;)))) (expression_statement "local_40 = local_40 + length;" (assignment_expression "local_40 = local_40 + length" identifier = (binary_expression "local_40 + length" identifier + identifier)) ;) (expression_statement "local_44 = local_44 + length;" (assignment_expression "local_44 = local_44 + length" identifier = (binary_expression "local_44 + length" identifier + identifier)) ;) }) while (parenthesized_expression "(local_44 < len)" ( (binary_expression "local_44 < len" identifier < identifier) )) ;) })) (if_statement "if ((this->super_Output_merge_base).keeps_input_sections_ == false) {\n    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);\n  }\n  else {\n    Output_merge_base::record_input_section(&this->super_Output_merge_base,object,shndx);\n    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);\n  }" if (parenthesized_expression "((this->super_Output_merge_base).keeps_input_sections_ == false)" ( (binary_expression "(this->super_Output_merge_base).keeps_input_sections_ == false" (field_expression "(this->super_Output_merge_base).keeps_input_sections_" (parenthesized_expression "(this->super_Output_merge_base)" ( (field_expression "this->super_Output_merge_base" identifier -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\n    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);\n  }" { (expression_statement "bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);" (assignment_expression "bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new)" identifier = (cast_expression "(bool)(local_40 != (uchar *)0x0 & is_new)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(local_40 != (uchar *)0x0 & is_new)" ( (binary_expression "local_40 != (uchar *)0x0 & is_new" (binary_expression "local_40 != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) & identifier) )))) ;) }) (else_clause "else {\n    Output_merge_base::record_input_section(&this->super_Output_merge_base,object,shndx);\n    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);\n  }" else (compound_statement "{\n    Output_merge_base::record_input_section(&this->super_Output_merge_base,object,shndx);\n    bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);\n  }" { (labeled_statement "Output_merge_base::record_input_section(&this->super_Output_merge_base,object,shndx);" statement_identifier : (ERROR ":" :) (expression_statement "record_input_section(&this->super_Output_merge_base,object,shndx);" (call_expression "record_input_section(&this->super_Output_merge_base,object,shndx)" identifier (argument_list "(&this->super_Output_merge_base,object,shndx)" ( (pointer_expression "&this->super_Output_merge_base" & (field_expression "this->super_Output_merge_base" identifier -> field_identifier)) , identifier , identifier ))) ;)) (expression_statement "bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new);" (assignment_expression "bVar4 = (bool)(local_40 != (uchar *)0x0 & is_new)" identifier = (cast_expression "(bool)(local_40 != (uchar *)0x0 & is_new)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(local_40 != (uchar *)0x0 & is_new)" ( (binary_expression "local_40 != (uchar *)0x0 & is_new" (binary_expression "local_40 != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) & identifier) )))) ;) }))) (if_statement "if (bVar4 == false) {\n    return true;\n  }" if (parenthesized_expression "(bVar4 == false)" ( (binary_expression "bVar4 == false" identifier == false) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (expression_statement "operator_delete__(local_40);" (call_expression "operator_delete__(local_40)" identifier (argument_list "(local_40)" ( identifier ))) ;) (return_statement "return bVar4;" return identifier ;) })))
(translation_unit "uint FUN_001c5320(int param_1,undefined4 param_2,undefined4 param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char cVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  uint uVar7;\n  int *piVar8;\n  int *piVar9;\n  undefined1 *puVar10;\n  undefined4 uStackY_90;\n  undefined1 auStack_6c [4];\n  int local_68;\n  char *local_64;\n  undefined4 local_60;\n  int local_5c;\n  int local_58;\n  undefined **local_54;\n  uint local_50;\n  int local_4c;\n  uint local_48;\n  uint local_44;\n  int local_40;\n  uint local_3c;\n  uint local_38;\n  char local_34 [4];\n  undefined4 local_30;\n  byte local_25;\n  uint local_24;\n  undefined4 local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1c532e;\n  local_54 = &__DT_PLTGOT;\n  local_40 = FUN_000b1f60(param_2,param_3,&local_24,&local_25,0);\n  local_50 = *(uint *)(param_1 + 0x2c);\n  if (*(int *)(param_1 + 0x30) != 0) {\n                    \n    FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);\n  }\n  local_44 = local_24 % local_50;\n  if (local_44 != 0) {\n    local_25 = local_40 != 0 & local_25;\n    if (local_25 != 0) {\n      FUN_001e6d50(local_40);\n      return 0;\n    }\n    return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);\n  }\n  *(int *)(param_1 + 0x68) =\n       *(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50);\n  uVar5 = FUN_000b1f00(param_2);\n  local_60 = FUN_001c5010(uVar5,param_1,param_3);\n  puVar10 = auStack_6c;\n  if (local_24 != 0) {\n    local_5c = param_1 + 0x6c;\n    local_64 = local_34;\n    local_68 = param_1 + 0x84;\n    puVar10 = auStack_6c;\n    do {\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    \n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    } while (local_44 < local_24);\n  }\n  if (*(char *)(param_1 + 0x34) == '\0') {\n    local_25 = local_40 != 0 & local_25;\n  }\n  else {\n    *(undefined4 *)(puVar10 + -8) = param_3;\n    *(undefined4 *)(puVar10 + -0xc) = param_2;\n    *(int *)(puVar10 + -0x10) = param_1;\n    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;\n    FUN_001c5140();\n    local_25 = local_40 != 0 & local_25;\n  }\n  if (local_25 == 0) {\n    return 1;\n  }\n  *(int *)(puVar10 + -0x10) = local_40;\n  local_38 = CONCAT31(local_38._1_3_,local_25);\n  *(undefined4 *)(puVar10 + -0x14) = 0x1c55f4;\n  FUN_001e6d50();\n  return local_38 & 0xff;\n}\n\n" (function_definition "uint FUN_001c5320(int param_1,undefined4 param_2,undefined4 param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char cVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  uint uVar7;\n  int *piVar8;\n  int *piVar9;\n  undefined1 *puVar10;\n  undefined4 uStackY_90;\n  undefined1 auStack_6c [4];\n  int local_68;\n  char *local_64;\n  undefined4 local_60;\n  int local_5c;\n  int local_58;\n  undefined **local_54;\n  uint local_50;\n  int local_4c;\n  uint local_48;\n  uint local_44;\n  int local_40;\n  uint local_3c;\n  uint local_38;\n  char local_34 [4];\n  undefined4 local_30;\n  byte local_25;\n  uint local_24;\n  undefined4 local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1c532e;\n  local_54 = &__DT_PLTGOT;\n  local_40 = FUN_000b1f60(param_2,param_3,&local_24,&local_25,0);\n  local_50 = *(uint *)(param_1 + 0x2c);\n  if (*(int *)(param_1 + 0x30) != 0) {\n                    \n    FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);\n  }\n  local_44 = local_24 % local_50;\n  if (local_44 != 0) {\n    local_25 = local_40 != 0 & local_25;\n    if (local_25 != 0) {\n      FUN_001e6d50(local_40);\n      return 0;\n    }\n    return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);\n  }\n  *(int *)(param_1 + 0x68) =\n       *(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50);\n  uVar5 = FUN_000b1f00(param_2);\n  local_60 = FUN_001c5010(uVar5,param_1,param_3);\n  puVar10 = auStack_6c;\n  if (local_24 != 0) {\n    local_5c = param_1 + 0x6c;\n    local_64 = local_34;\n    local_68 = param_1 + 0x84;\n    puVar10 = auStack_6c;\n    do {\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    \n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    } while (local_44 < local_24);\n  }\n  if (*(char *)(param_1 + 0x34) == '\0') {\n    local_25 = local_40 != 0 & local_25;\n  }\n  else {\n    *(undefined4 *)(puVar10 + -8) = param_3;\n    *(undefined4 *)(puVar10 + -0xc) = param_2;\n    *(int *)(puVar10 + -0x10) = param_1;\n    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;\n    FUN_001c5140();\n    local_25 = local_40 != 0 & local_25;\n  }\n  if (local_25 == 0) {\n    return 1;\n  }\n  *(int *)(puVar10 + -0x10) = local_40;\n  local_38 = CONCAT31(local_38._1_3_,local_25);\n  *(undefined4 *)(puVar10 + -0x14) = 0x1c55f4;\n  FUN_001e6d50();\n  return local_38 & 0xff;\n}" type_identifier (function_declarator "FUN_001c5320(int param_1,undefined4 param_2,undefined4 param_3)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char cVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  uint uVar7;\n  int *piVar8;\n  int *piVar9;\n  undefined1 *puVar10;\n  undefined4 uStackY_90;\n  undefined1 auStack_6c [4];\n  int local_68;\n  char *local_64;\n  undefined4 local_60;\n  int local_5c;\n  int local_58;\n  undefined **local_54;\n  uint local_50;\n  int local_4c;\n  uint local_48;\n  uint local_44;\n  int local_40;\n  uint local_3c;\n  uint local_38;\n  char local_34 [4];\n  undefined4 local_30;\n  byte local_25;\n  uint local_24;\n  undefined4 local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1c532e;\n  local_54 = &__DT_PLTGOT;\n  local_40 = FUN_000b1f60(param_2,param_3,&local_24,&local_25,0);\n  local_50 = *(uint *)(param_1 + 0x2c);\n  if (*(int *)(param_1 + 0x30) != 0) {\n                    \n    FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);\n  }\n  local_44 = local_24 % local_50;\n  if (local_44 != 0) {\n    local_25 = local_40 != 0 & local_25;\n    if (local_25 != 0) {\n      FUN_001e6d50(local_40);\n      return 0;\n    }\n    return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);\n  }\n  *(int *)(param_1 + 0x68) =\n       *(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50);\n  uVar5 = FUN_000b1f00(param_2);\n  local_60 = FUN_001c5010(uVar5,param_1,param_3);\n  puVar10 = auStack_6c;\n  if (local_24 != 0) {\n    local_5c = param_1 + 0x6c;\n    local_64 = local_34;\n    local_68 = param_1 + 0x84;\n    puVar10 = auStack_6c;\n    do {\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    \n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    } while (local_44 < local_24);\n  }\n  if (*(char *)(param_1 + 0x34) == '\0') {\n    local_25 = local_40 != 0 & local_25;\n  }\n  else {\n    *(undefined4 *)(puVar10 + -8) = param_3;\n    *(undefined4 *)(puVar10 + -0xc) = param_2;\n    *(int *)(puVar10 + -0x10) = param_1;\n    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;\n    FUN_001c5140();\n    local_25 = local_40 != 0 & local_25;\n  }\n  if (local_25 == 0) {\n    return 1;\n  }\n  *(int *)(puVar10 + -0x10) = local_40;\n  local_38 = CONCAT31(local_38._1_3_,local_25);\n  *(undefined4 *)(puVar10 + -0x14) = 0x1c55f4;\n  FUN_001e6d50();\n  return local_38 & 0xff;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined4 uStackY_90;" type_identifier identifier ;) (declaration "undefined1 auStack_6c [4];" type_identifier (array_declarator "auStack_6c [4]" identifier [ number_literal ]) ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "char *local_64;" primitive_type (pointer_declarator "*local_64" * identifier) ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "undefined **local_54;" type_identifier (pointer_declarator "**local_54" * (pointer_declarator "*local_54" * identifier)) ;) (declaration "uint local_50;" type_identifier identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "uint local_38;" type_identifier identifier ;) (declaration "char local_34 [4];" primitive_type (array_declarator "local_34 [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "byte local_25;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "undefined4 local_20 [3];" type_identifier (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1c532e;" (assignment_expression "uStack_14 = 0x1c532e" identifier = number_literal) ;) (expression_statement "local_54 = &__DT_PLTGOT;" (assignment_expression "local_54 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "local_40 = FUN_000b1f60(param_2,param_3,&local_24,&local_25,0);" (assignment_expression "local_40 = FUN_000b1f60(param_2,param_3,&local_24,&local_25,0)" identifier = (call_expression "FUN_000b1f60(param_2,param_3,&local_24,&local_25,0)" identifier (argument_list "(param_2,param_3,&local_24,&local_25,0)" ( identifier , identifier , (pointer_expression "&local_24" & identifier) , (pointer_expression "&local_25" & identifier) , number_literal )))) ;) (expression_statement "local_50 = *(uint *)(param_1 + 0x2c);" (assignment_expression "local_50 = *(uint *)(param_1 + 0x2c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x2c)" * (cast_expression "(uint *)(param_1 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0x30) != 0) {\n                    \n    FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x30) != 0)" ( (binary_expression "*(int *)(param_1 + 0x30) != 0" (pointer_expression "*(int *)(param_1 + 0x30)" * (cast_expression "(int *)(param_1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    \n    FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);\n  }" { (expression_statement "FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);" (call_expression "FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34)" identifier (argument_list "((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34)" ( (binary_expression "(int)local_54 + -0x107be7" (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , number_literal , (binary_expression "local_54 + -0x3bb34" identifier + number_literal) ))) ;) })) (expression_statement "local_44 = local_24 % local_50;" (assignment_expression "local_44 = local_24 % local_50" identifier = (binary_expression "local_24 % local_50" identifier % identifier)) ;) (if_statement "if (local_44 != 0) {\n    local_25 = local_40 != 0 & local_25;\n    if (local_25 != 0) {\n      FUN_001e6d50(local_40);\n      return 0;\n    }\n    return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);\n  }" if (parenthesized_expression "(local_44 != 0)" ( (binary_expression "local_44 != 0" identifier != number_literal) )) (compound_statement "{\n    local_25 = local_40 != 0 & local_25;\n    if (local_25 != 0) {\n      FUN_001e6d50(local_40);\n      return 0;\n    }\n    return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);\n  }" { (expression_statement "local_25 = local_40 != 0 & local_25;" (assignment_expression "local_25 = local_40 != 0 & local_25" identifier = (binary_expression "local_40 != 0 & local_25" (binary_expression "local_40 != 0" identifier != number_literal) & identifier)) ;) (if_statement "if (local_25 != 0) {\n      FUN_001e6d50(local_40);\n      return 0;\n    }" if (parenthesized_expression "(local_25 != 0)" ( (binary_expression "local_25 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_001e6d50(local_40);\n      return 0;\n    }" { (expression_statement "FUN_001e6d50(local_40);" (call_expression "FUN_001e6d50(local_40)" identifier (argument_list "(local_40)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (return_statement "return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);" return (call_expression "CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25)" identifier (argument_list "((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25)" ( (call_expression "(int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8)" (parenthesized_expression "(int3)" ( identifier )) (argument_list "((ulonglong)local_24 / (ulonglong)local_50 >> 8)" ( (binary_expression "(ulonglong)local_24 / (ulonglong)local_50 >> 8" (binary_expression "(ulonglong)local_24 / (ulonglong)local_50" (cast_expression "(ulonglong)local_24" ( (type_descriptor "ulonglong" type_identifier) ) identifier) / (cast_expression "(ulonglong)local_50" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) ))) , identifier ))) ;) })) (expression_statement "*(int *)(param_1 + 0x68) =\n       *(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50);" (assignment_expression "*(int *)(param_1 + 0x68) =\n       *(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50)" (pointer_expression "*(int *)(param_1 + 0x68)" * (cast_expression "(int *)(param_1 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50)" (pointer_expression "*(int *)(param_1 + 0x68)" * (cast_expression "(int *)(param_1 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) + (cast_expression "(int)((ulonglong)local_24 / (ulonglong)local_50)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)local_24 / (ulonglong)local_50)" ( (binary_expression "(ulonglong)local_24 / (ulonglong)local_50" (cast_expression "(ulonglong)local_24" ( (type_descriptor "ulonglong" type_identifier) ) identifier) / (cast_expression "(ulonglong)local_50" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ))))) ;) (expression_statement "uVar5 = FUN_000b1f00(param_2);" (assignment_expression "uVar5 = FUN_000b1f00(param_2)" identifier = (call_expression "FUN_000b1f00(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "local_60 = FUN_001c5010(uVar5,param_1,param_3);" (assignment_expression "local_60 = FUN_001c5010(uVar5,param_1,param_3)" identifier = (call_expression "FUN_001c5010(uVar5,param_1,param_3)" identifier (argument_list "(uVar5,param_1,param_3)" ( identifier , identifier , identifier )))) ;) (expression_statement "puVar10 = auStack_6c;" (assignment_expression "puVar10 = auStack_6c" identifier = identifier) ;) (if_statement "if (local_24 != 0) {\n    local_5c = param_1 + 0x6c;\n    local_64 = local_34;\n    local_68 = param_1 + 0x84;\n    puVar10 = auStack_6c;\n    do {\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    \n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    } while (local_44 < local_24);\n  }" if (parenthesized_expression "(local_24 != 0)" ( (binary_expression "local_24 != 0" identifier != number_literal) )) (compound_statement "{\n    local_5c = param_1 + 0x6c;\n    local_64 = local_34;\n    local_68 = param_1 + 0x84;\n    puVar10 = auStack_6c;\n    do {\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    \n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    } while (local_44 < local_24);\n  }" { (expression_statement "local_5c = param_1 + 0x6c;" (assignment_expression "local_5c = param_1 + 0x6c" identifier = (binary_expression "param_1 + 0x6c" identifier + number_literal)) ;) (expression_statement "local_64 = local_34;" (assignment_expression "local_64 = local_34" identifier = identifier) ;) (expression_statement "local_68 = param_1 + 0x84;" (assignment_expression "local_68 = param_1 + 0x84" identifier = (binary_expression "param_1 + 0x84" identifier + number_literal)) ;) (expression_statement "puVar10 = auStack_6c;" (assignment_expression "puVar10 = auStack_6c" identifier = identifier) ;) (do_statement "do {\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    \n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    } while (local_44 < local_24);" do (compound_statement "{\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    \n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    }" { (expression_statement "iVar1 = *(int *)(param_1 + 0x60);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x60)" identifier = (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar10 + -0xc) = local_40;" (assignment_expression "*(int *)(puVar10 + -0xc) = local_40" (pointer_expression "*(int *)(puVar10 + -0xc)" * (cast_expression "(int *)(puVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar10 + -0x10) = param_1" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c53e9" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001c4d60();" (call_expression "FUN_001c4d60()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar10 + -0xc) = iVar1;" (assignment_expression "*(int *)(puVar10 + -0xc) = iVar1" (pointer_expression "*(int *)(puVar10 + -0xc)" * (cast_expression "(int *)(puVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0x10) = local_5c;" (assignment_expression "*(int *)(puVar10 + -0x10) = local_5c" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c53f7" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_38 = iVar1;" (assignment_expression "local_38 = iVar1" identifier = identifier) ;) (expression_statement "local_3c = FUN_001c4c70();" (assignment_expression "local_3c = FUN_001c4c70()" identifier = (call_expression "FUN_001c4c70()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_48 = local_3c % *(uint *)(param_1 + 0x78);" (assignment_expression "local_48 = local_3c % *(uint *)(param_1 + 0x78)" identifier = (binary_expression "local_3c % *(uint *)(param_1 + 0x78)" identifier % (pointer_expression "*(uint *)(param_1 + 0x78)" * (cast_expression "(uint *)(param_1 + 0x78)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))))) ;) (expression_statement "piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);" (assignment_expression "piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4)" identifier = (pointer_expression "*(int **)(*(int *)(param_1 + 0x74) + local_48 * 4)" * (cast_expression "(int **)(*(int *)(param_1 + 0x74) + local_48 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + local_48 * 4)" ( (binary_expression "*(int *)(param_1 + 0x74) + local_48 * 4" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + (binary_expression "local_48 * 4" identifier * number_literal)) ))))) ;) (expression_statement "local_58 = local_48 * 4;" (assignment_expression "local_58 = local_48 * 4" identifier = (binary_expression "local_48 * 4" identifier * number_literal)) ;) (if_statement "if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }" if (parenthesized_expression "(piVar6 != (int *)0x0)" ( (binary_expression "piVar6 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }" { (expression_statement "local_4c = param_1 + 0x70;" (assignment_expression "local_4c = param_1 + 0x70" identifier = (binary_expression "param_1 + 0x70" identifier + number_literal)) ;) (expression_statement "uVar7 = ((int *)*piVar6)[2];" (assignment_expression "uVar7 = ((int *)*piVar6)[2]" identifier = (subscript_expression "((int *)*piVar6)[2]" (parenthesized_expression "((int *)*piVar6)" ( (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier)) )) [ number_literal ])) ;) (expression_statement "piVar8 = (int *)*piVar6;" (assignment_expression "piVar8 = (int *)*piVar6" identifier = (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) (do_statement "do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );" do (compound_statement "{\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        }" { (expression_statement "piVar9 = piVar8;" (assignment_expression "piVar9 = piVar8" identifier = identifier) ;) (if_statement "if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }" if (parenthesized_expression "(uVar7 == local_3c)" ( (binary_expression "uVar7 == local_3c" identifier == identifier) )) (compound_statement "{\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }" { (expression_statement "*(int *)(puVar10 + -8) = piVar9[1];" (assignment_expression "*(int *)(puVar10 + -8) = piVar9[1]" (pointer_expression "*(int *)(puVar10 + -8)" * (cast_expression "(int *)(puVar10 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = (subscript_expression "piVar9[1]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(puVar10 + -0xc) = local_38;" (assignment_expression "*(uint *)(puVar10 + -0xc) = local_38" (pointer_expression "*(uint *)(puVar10 + -0xc)" * (cast_expression "(uint *)(puVar10 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0x10) = local_4c;" (assignment_expression "*(int *)(puVar10 + -0x10) = local_4c" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c5467;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c5467" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar4 = FUN_001c4d00();" (assignment_expression "cVar4 = FUN_001c4d00()" identifier = (call_expression "FUN_001c4d00()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }" { (expression_statement "iVar1 = *piVar6;" (assignment_expression "iVar1 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (if_statement "if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }" { (expression_statement "*(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;" (assignment_expression "*(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50" (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x60) - local_50" (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) - identifier)) ;) (expression_statement "local_38 = *(int *)(iVar1 + 4);" (assignment_expression "local_38 = *(int *)(iVar1 + 4)" identifier = (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_001c5480;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) })) (expression_statement "piVar8 = (int *)*piVar9;" (assignment_expression "piVar8 = (int *)*piVar9" identifier = (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) (if_statement "if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;" if (parenthesized_expression "((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))" ( (binary_expression "(piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78))" (parenthesized_expression "(piVar8 == (int *)0x0)" ( (binary_expression "piVar8 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78))" ( (comma_expression "uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)" (assignment_expression "uVar7 = piVar8[2]" identifier = (subscript_expression "piVar8[2]" identifier [ number_literal ])) , (comma_expression "piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)" (assignment_expression "piVar6 = piVar9" identifier = identifier) , (binary_expression "local_48 != uVar7 % *(uint *)(param_1 + 0x78)" identifier != (binary_expression "uVar7 % *(uint *)(param_1 + 0x78)" identifier % (pointer_expression "*(uint *)(param_1 + 0x78)" * (cast_expression "(uint *)(param_1 + 0x78)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))))))) ))) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = 0xc;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = 0xc" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c54e5" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar6 = (int *)FUN_001e5200();" (assignment_expression "piVar6 = (int *)FUN_001e5200()" identifier = (cast_expression "(int *)FUN_001e5200()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5200()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*piVar6 = 0;" (assignment_expression "*piVar6 = 0" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "piVar6[1] = local_38;" (assignment_expression "piVar6[1] = local_38" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_20[0] = *(undefined4 *)(param_1 + 0x88);" (assignment_expression "local_20[0] = *(undefined4 *)(param_1 + 0x88)" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(param_1 + 0x88)" * (cast_expression "(undefined4 *)(param_1 + 0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x88)" ( (binary_expression "param_1 + 0x88" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = 1;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = 1" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80)" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x80)" * (cast_expression "(undefined4 *)(param_1 + 0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78)" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" * (cast_expression "(undefined4 *)(puVar10 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x78)" * (cast_expression "(undefined4 *)(param_1 + 0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar10 + -0x1c) = local_68;" (assignment_expression "*(int *)(puVar10 + -0x1c) = local_68" (pointer_expression "*(int *)(puVar10 + -0x1c)" * (cast_expression "(int *)(puVar10 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x1c)" ( (binary_expression "puVar10 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(char **)(puVar10 + -0x20) = local_64;" (assignment_expression "*(char **)(puVar10 + -0x20) = local_64" (pointer_expression "*(char **)(puVar10 + -0x20)" * (cast_expression "(char **)(puVar10 + -0x20)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x20)" ( (binary_expression "puVar10 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x24) = 0x1c551a;" (assignment_expression "*(undefined4 *)(puVar10 + -0x24) = 0x1c551a" (pointer_expression "*(undefined4 *)(puVar10 + -0x24)" * (cast_expression "(undefined4 *)(puVar10 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x24)" ( (binary_expression "puVar10 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0022c460();" (call_expression "FUN_0022c460()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    \n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }" if (parenthesized_expression "(local_34[0] != '\0')" ( (binary_expression "local_34[0] != '\0'" (subscript_expression "local_34[0]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    \n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }" { (expression_statement "*(undefined4 **)(puVar10 + -0xc) = local_20;" (assignment_expression "*(undefined4 **)(puVar10 + -0xc) = local_20" (pointer_expression "*(undefined4 **)(puVar10 + -0xc)" * (cast_expression "(undefined4 **)(puVar10 + -0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = local_30;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = local_30" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0x14) = local_5c;" (assignment_expression "*(int *)(puVar10 + -0x14) = local_5c" (pointer_expression "*(int *)(puVar10 + -0x14)" * (cast_expression "(int *)(puVar10 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0x1c5536;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0x1c5536" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" * (cast_expression "(undefined4 *)(puVar10 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001c9270();" (call_expression "FUN_001c9270()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;" (assignment_expression "local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4" identifier = (binary_expression "(local_3c % *(uint *)(param_1 + 0x78)) * 4" (parenthesized_expression "(local_3c % *(uint *)(param_1 + 0x78))" ( (binary_expression "local_3c % *(uint *)(param_1 + 0x78)" identifier % (pointer_expression "*(uint *)(param_1 + 0x78)" * (cast_expression "(uint *)(param_1 + 0x78)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) ))))) )) * number_literal)) ;) })) (expression_statement "puVar10 = puVar10 + -4;" (assignment_expression "puVar10 = puVar10 + -4" identifier = (binary_expression "puVar10 + -4" identifier + number_literal)) ;) (expression_statement "iVar1 = *(int *)(param_1 + 0x74);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x74)" identifier = (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) ))))) ;) (expression_statement "piVar8 = (int *)(local_58 + iVar1);" (assignment_expression "piVar8 = (int *)(local_58 + iVar1)" identifier = (cast_expression "(int *)(local_58 + iVar1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + iVar1)" ( (binary_expression "local_58 + iVar1" identifier + identifier) )))) ;) (expression_statement "piVar6[2] = local_3c;" (assignment_expression "piVar6[2] = local_3c" (subscript_expression "piVar6[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }" if (parenthesized_expression "((int *)*piVar8 == (int *)0x0)" ( (binary_expression "(int *)*piVar8 == (int *)0x0" (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier)) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }" { (expression_statement "iVar2 = *(int *)(param_1 + 0x7c);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x7c)" identifier = (pointer_expression "*(int *)(param_1 + 0x7c)" * (cast_expression "(int *)(param_1 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7c)" ( (binary_expression "param_1 + 0x7c" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(param_1 + 0x7c) = piVar6;" (assignment_expression "*(int **)(param_1 + 0x7c) = piVar6" (pointer_expression "*(int **)(param_1 + 0x7c)" * (cast_expression "(int **)(param_1 + 0x7c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x7c)" ( (binary_expression "param_1 + 0x7c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*piVar6 = iVar2;" (assignment_expression "*piVar6 = iVar2" (pointer_expression "*piVar6" * identifier) = identifier) ;) (if_statement "if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }" { (expression_statement "*(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;" (assignment_expression "*(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6" (pointer_expression "*(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4)" * (cast_expression "(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4)" ( (binary_expression "iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4" identifier + (binary_expression "(*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4" (parenthesized_expression "(*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78))" ( (binary_expression "*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)" (pointer_expression "*(uint *)(iVar2 + 8)" * (cast_expression "(uint *)(iVar2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) % (pointer_expression "*(uint *)(param_1 + 0x78)" * (cast_expression "(uint *)(param_1 + 0x78)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) ))))) )) * number_literal)) )))) = identifier) ;) })) (expression_statement "*piVar8 = param_1 + 0x7c;" (assignment_expression "*piVar8 = param_1 + 0x7c" (pointer_expression "*piVar8" * identifier) = (binary_expression "param_1 + 0x7c" identifier + number_literal)) ;) }) (else_clause "else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }" else (compound_statement "{\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }" { (expression_statement "*piVar6 = *(int *)*piVar8;" (assignment_expression "*piVar6 = *(int *)*piVar8" (pointer_expression "*piVar6" * identifier) = (pointer_expression "*(int *)*piVar8" * (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier)))) ;) (expression_statement "*(int **)*piVar8 = piVar6;" (assignment_expression "*(int **)*piVar8 = piVar6" (pointer_expression "*(int **)*piVar8" * (cast_expression "(int **)*piVar8" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*piVar8" * identifier))) = identifier) ;) }))) (expression_statement "*(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;" (assignment_expression "*(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1" (pointer_expression "*(int *)(param_1 + 0x80)" * (cast_expression "(int *)(param_1 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x80) + 1" (pointer_expression "*(int *)(param_1 + 0x80)" * (cast_expression "(int *)(param_1 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) + number_literal)) ;) (labeled_statement "LAB_001c5480:\n      uVar3 = local_44;" statement_identifier : (expression_statement "uVar3 = local_44;" (assignment_expression "uVar3 = local_44" identifier = identifier) ;)) (expression_statement "uVar7 = local_50;" (assignment_expression "uVar7 = local_50" identifier = identifier) ;) (expression_statement "*(uint *)(puVar10 + -4) = local_38;" (assignment_expression "*(uint *)(puVar10 + -4) = local_38" (pointer_expression "*(uint *)(puVar10 + -4)" * (cast_expression "(uint *)(puVar10 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -4)" ( (binary_expression "puVar10 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar10 + -8) = local_50;" (assignment_expression "*(uint *)(puVar10 + -8) = local_50" (pointer_expression "*(uint *)(puVar10 + -8)" * (cast_expression "(uint *)(puVar10 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar10 + -0xc) = local_44;" (assignment_expression "*(uint *)(puVar10 + -0xc) = local_44" (pointer_expression "*(uint *)(puVar10 + -0xc)" * (cast_expression "(uint *)(puVar10 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = local_60;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = local_60" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c5493;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c5493" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001c4f10();" (call_expression "FUN_001c4f10()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_40 = local_40 + uVar7;" (assignment_expression "local_40 = local_40 + uVar7" identifier = (binary_expression "local_40 + uVar7" identifier + identifier)) ;) (expression_statement "local_44 = uVar3 + uVar7;" (assignment_expression "local_44 = uVar3 + uVar7" identifier = (binary_expression "uVar3 + uVar7" identifier + identifier)) ;) }) while (parenthesized_expression "(local_44 < local_24)" ( (binary_expression "local_44 < local_24" identifier < identifier) )) ;) })) (if_statement "if (*(char *)(param_1 + 0x34) == '\0') {\n    local_25 = local_40 != 0 & local_25;\n  }\n  else {\n    *(undefined4 *)(puVar10 + -8) = param_3;\n    *(undefined4 *)(puVar10 + -0xc) = param_2;\n    *(int *)(puVar10 + -0x10) = param_1;\n    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;\n    FUN_001c5140();\n    local_25 = local_40 != 0 & local_25;\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0x34) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x34) == '\0'" (pointer_expression "*(char *)(param_1 + 0x34)" * (cast_expression "(char *)(param_1 + 0x34)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_25 = local_40 != 0 & local_25;\n  }" { (expression_statement "local_25 = local_40 != 0 & local_25;" (assignment_expression "local_25 = local_40 != 0 & local_25" identifier = (binary_expression "local_40 != 0 & local_25" (binary_expression "local_40 != 0" identifier != number_literal) & identifier)) ;) }) (else_clause "else {\n    *(undefined4 *)(puVar10 + -8) = param_3;\n    *(undefined4 *)(puVar10 + -0xc) = param_2;\n    *(int *)(puVar10 + -0x10) = param_1;\n    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;\n    FUN_001c5140();\n    local_25 = local_40 != 0 & local_25;\n  }" else (compound_statement "{\n    *(undefined4 *)(puVar10 + -8) = param_3;\n    *(undefined4 *)(puVar10 + -0xc) = param_2;\n    *(int *)(puVar10 + -0x10) = param_1;\n    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;\n    FUN_001c5140();\n    local_25 = local_40 != 0 & local_25;\n  }" { (expression_statement "*(undefined4 *)(puVar10 + -8) = param_3;" (assignment_expression "*(undefined4 *)(puVar10 + -8) = param_3" (pointer_expression "*(undefined4 *)(puVar10 + -8)" * (cast_expression "(undefined4 *)(puVar10 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = param_2;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = param_2" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" * (cast_expression "(undefined4 *)(puVar10 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar10 + -0x10) = param_1" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c55cf" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001c5140();" (call_expression "FUN_001c5140()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_25 = local_40 != 0 & local_25;" (assignment_expression "local_25 = local_40 != 0 & local_25" identifier = (binary_expression "local_40 != 0 & local_25" (binary_expression "local_40 != 0" identifier != number_literal) & identifier)) ;) }))) (if_statement "if (local_25 == 0) {\n    return 1;\n  }" if (parenthesized_expression "(local_25 == 0)" ( (binary_expression "local_25 == 0" identifier == number_literal) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "*(int *)(puVar10 + -0x10) = local_40;" (assignment_expression "*(int *)(puVar10 + -0x10) = local_40" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_38 = CONCAT31(local_38._1_3_,local_25);" (assignment_expression "local_38 = CONCAT31(local_38._1_3_,local_25)" identifier = (call_expression "CONCAT31(local_38._1_3_,local_25)" identifier (argument_list "(local_38._1_3_,local_25)" ( (field_expression "local_38._1_3_" identifier . field_identifier) , identifier )))) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c55f4;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c55f4" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001e6d50();" (call_expression "FUN_001e6d50()" identifier (argument_list "()" ( ))) ;) (return_statement "return local_38 & 0xff;" return (binary_expression "local_38 & 0xff" identifier & number_literal) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT % IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != LIT) & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })) (return_statement return (call_expression IDENT (argument_list ( (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) ))) , IDENT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (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 IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression 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) )))) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (break_statement break ;) })) })) (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 IDENT != (binary_expression IDENT % (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))))) ))) )) (break_statement break ;)) }) while (parenthesized_expression ( BOOL )) ;) })) (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 ]) = (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 *)) ) (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) )))) = (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT % (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) * LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (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 * IDENT) = IDENT) ;) (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) % (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) * LIT)) )))) = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression * IDENT))) = IDENT) ;) }))) (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)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != LIT) & IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != LIT) & IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return (binary_expression IDENT & LIT) ;) })))
(function_definition "uint FUN_001c5320(int param_1,undefined4 param_2,undefined4 param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char cVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  uint uVar7;\n  int *piVar8;\n  int *piVar9;\n  undefined1 *puVar10;\n  undefined4 uStackY_90;\n  undefined1 auStack_6c [4];\n  int local_68;\n  char *local_64;\n  undefined4 local_60;\n  int local_5c;\n  int local_58;\n  undefined **local_54;\n  uint local_50;\n  int local_4c;\n  uint local_48;\n  uint local_44;\n  int local_40;\n  uint local_3c;\n  uint local_38;\n  char local_34 [4];\n  undefined4 local_30;\n  byte local_25;\n  uint local_24;\n  undefined4 local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1c532e;\n  local_54 = &__DT_PLTGOT;\n  local_40 = FUN_000b1f60(param_2,param_3,&local_24,&local_25,0);\n  local_50 = *(uint *)(param_1 + 0x2c);\n  if (*(int *)(param_1 + 0x30) != 0) {\n                    \n    FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);\n  }\n  local_44 = local_24 % local_50;\n  if (local_44 != 0) {\n    local_25 = local_40 != 0 & local_25;\n    if (local_25 != 0) {\n      FUN_001e6d50(local_40);\n      return 0;\n    }\n    return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);\n  }\n  *(int *)(param_1 + 0x68) =\n       *(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50);\n  uVar5 = FUN_000b1f00(param_2);\n  local_60 = FUN_001c5010(uVar5,param_1,param_3);\n  puVar10 = auStack_6c;\n  if (local_24 != 0) {\n    local_5c = param_1 + 0x6c;\n    local_64 = local_34;\n    local_68 = param_1 + 0x84;\n    puVar10 = auStack_6c;\n    do {\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    \n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    } while (local_44 < local_24);\n  }\n  if (*(char *)(param_1 + 0x34) == '\0') {\n    local_25 = local_40 != 0 & local_25;\n  }\n  else {\n    *(undefined4 *)(puVar10 + -8) = param_3;\n    *(undefined4 *)(puVar10 + -0xc) = param_2;\n    *(int *)(puVar10 + -0x10) = param_1;\n    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;\n    FUN_001c5140();\n    local_25 = local_40 != 0 & local_25;\n  }\n  if (local_25 == 0) {\n    return 1;\n  }\n  *(int *)(puVar10 + -0x10) = local_40;\n  local_38 = CONCAT31(local_38._1_3_,local_25);\n  *(undefined4 *)(puVar10 + -0x14) = 0x1c55f4;\n  FUN_001e6d50();\n  return local_38 & 0xff;\n}" (type_identifier "uint") (function_declarator "FUN_001c5320(int param_1,undefined4 param_2,undefined4 param_3)" (identifier "FUN_001c5320") (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char cVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  uint uVar7;\n  int *piVar8;\n  int *piVar9;\n  undefined1 *puVar10;\n  undefined4 uStackY_90;\n  undefined1 auStack_6c [4];\n  int local_68;\n  char *local_64;\n  undefined4 local_60;\n  int local_5c;\n  int local_58;\n  undefined **local_54;\n  uint local_50;\n  int local_4c;\n  uint local_48;\n  uint local_44;\n  int local_40;\n  uint local_3c;\n  uint local_38;\n  char local_34 [4];\n  undefined4 local_30;\n  byte local_25;\n  uint local_24;\n  undefined4 local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1c532e;\n  local_54 = &__DT_PLTGOT;\n  local_40 = FUN_000b1f60(param_2,param_3,&local_24,&local_25,0);\n  local_50 = *(uint *)(param_1 + 0x2c);\n  if (*(int *)(param_1 + 0x30) != 0) {\n                    \n    FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);\n  }\n  local_44 = local_24 % local_50;\n  if (local_44 != 0) {\n    local_25 = local_40 != 0 & local_25;\n    if (local_25 != 0) {\n      FUN_001e6d50(local_40);\n      return 0;\n    }\n    return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);\n  }\n  *(int *)(param_1 + 0x68) =\n       *(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50);\n  uVar5 = FUN_000b1f00(param_2);\n  local_60 = FUN_001c5010(uVar5,param_1,param_3);\n  puVar10 = auStack_6c;\n  if (local_24 != 0) {\n    local_5c = param_1 + 0x6c;\n    local_64 = local_34;\n    local_68 = param_1 + 0x84;\n    puVar10 = auStack_6c;\n    do {\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    \n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    } while (local_44 < local_24);\n  }\n  if (*(char *)(param_1 + 0x34) == '\0') {\n    local_25 = local_40 != 0 & local_25;\n  }\n  else {\n    *(undefined4 *)(puVar10 + -8) = param_3;\n    *(undefined4 *)(puVar10 + -0xc) = param_2;\n    *(int *)(puVar10 + -0x10) = param_1;\n    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;\n    FUN_001c5140();\n    local_25 = local_40 != 0 & local_25;\n  }\n  if (local_25 == 0) {\n    return 1;\n  }\n  *(int *)(puVar10 + -0x10) = local_40;\n  local_38 = CONCAT31(local_38._1_3_,local_25);\n  *(undefined4 *)(puVar10 + -0x14) = 0x1c55f4;\n  FUN_001e6d50();\n  return local_38 & 0xff;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "char cVar4;" (primitive_type "char") (identifier "cVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "undefined1 *puVar10;" (type_identifier "undefined1") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "undefined4 uStackY_90;" (type_identifier "undefined4") (identifier "uStackY_90") (; ";")) (declaration "undefined1 auStack_6c [4];" (type_identifier "undefined1") (array_declarator "auStack_6c [4]" (identifier "auStack_6c") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "int local_68;" (primitive_type "int") (identifier "local_68") (; ";")) (declaration "char *local_64;" (primitive_type "char") (pointer_declarator "*local_64" (* "*") (identifier "local_64")) (; ";")) (declaration "undefined4 local_60;" (type_identifier "undefined4") (identifier "local_60") (; ";")) (declaration "int local_5c;" (primitive_type "int") (identifier "local_5c") (; ";")) (declaration "int local_58;" (primitive_type "int") (identifier "local_58") (; ";")) (declaration "undefined **local_54;" (type_identifier "undefined") (pointer_declarator "**local_54" (* "*") (pointer_declarator "*local_54" (* "*") (identifier "local_54"))) (; ";")) (declaration "uint local_50;" (type_identifier "uint") (identifier "local_50") (; ";")) (declaration "int local_4c;" (primitive_type "int") (identifier "local_4c") (; ";")) (declaration "uint local_48;" (type_identifier "uint") (identifier "local_48") (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "uint local_3c;" (type_identifier "uint") (identifier "local_3c") (; ";")) (declaration "uint local_38;" (type_identifier "uint") (identifier "local_38") (; ";")) (declaration "char local_34 [4];" (primitive_type "char") (array_declarator "local_34 [4]" (identifier "local_34") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "byte local_25;" (type_identifier "byte") (identifier "local_25") (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (declaration "undefined4 local_20 [3];" (type_identifier "undefined4") (array_declarator "local_20 [3]" (identifier "local_20") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x1c532e;" (assignment_expression "uStack_14 = 0x1c532e" (identifier "uStack_14") (= "=") (number_literal "0x1c532e")) (; ";")) (expression_statement "local_54 = &__DT_PLTGOT;" (assignment_expression "local_54 = &__DT_PLTGOT" (identifier "local_54") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "local_40 = FUN_000b1f60(param_2,param_3,&local_24,&local_25,0);" (assignment_expression "local_40 = FUN_000b1f60(param_2,param_3,&local_24,&local_25,0)" (identifier "local_40") (= "=") (call_expression "FUN_000b1f60(param_2,param_3,&local_24,&local_25,0)" (identifier "FUN_000b1f60") (argument_list "(param_2,param_3,&local_24,&local_25,0)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (pointer_expression "&local_24" (& "&") (identifier "local_24")) (, ",") (pointer_expression "&local_25" (& "&") (identifier "local_25")) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "local_50 = *(uint *)(param_1 + 0x2c);" (assignment_expression "local_50 = *(uint *)(param_1 + 0x2c)" (identifier "local_50") (= "=") (pointer_expression "*(uint *)(param_1 + 0x2c)" (* "*") (cast_expression "(uint *)(param_1 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x30) != 0) {\n                    \n    FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x30) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x30) != 0" (pointer_expression "*(int *)(param_1 + 0x30)" (* "*") (cast_expression "(int *)(param_1 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);\n  }" ({ "{") (expression_statement "FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);" (call_expression "FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34)" (identifier "FUN_00069d00") (argument_list "((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34)" (( "(") (binary_expression "(int)local_54 + -0x107be7" (cast_expression "(int)local_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_54")) (+ "+") (number_literal "-0x107be7")) (, ",") (number_literal "0xc0") (, ",") (binary_expression "local_54 + -0x3bb34" (identifier "local_54") (+ "+") (number_literal "-0x3bb34")) () ")"))) (; ";")) (} "}"))) (expression_statement "local_44 = local_24 % local_50;" (assignment_expression "local_44 = local_24 % local_50" (identifier "local_44") (= "=") (binary_expression "local_24 % local_50" (identifier "local_24") (% "%") (identifier "local_50"))) (; ";")) (if_statement "if (local_44 != 0) {\n    local_25 = local_40 != 0 & local_25;\n    if (local_25 != 0) {\n      FUN_001e6d50(local_40);\n      return 0;\n    }\n    return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);\n  }" (if "if") (parenthesized_expression "(local_44 != 0)" (( "(") (binary_expression "local_44 != 0" (identifier "local_44") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    local_25 = local_40 != 0 & local_25;\n    if (local_25 != 0) {\n      FUN_001e6d50(local_40);\n      return 0;\n    }\n    return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);\n  }" ({ "{") (expression_statement "local_25 = local_40 != 0 & local_25;" (assignment_expression "local_25 = local_40 != 0 & local_25" (identifier "local_25") (= "=") (binary_expression "local_40 != 0 & local_25" (binary_expression "local_40 != 0" (identifier "local_40") (!= "!=") (number_literal "0")) (& "&") (identifier "local_25"))) (; ";")) (if_statement "if (local_25 != 0) {\n      FUN_001e6d50(local_40);\n      return 0;\n    }" (if "if") (parenthesized_expression "(local_25 != 0)" (( "(") (binary_expression "local_25 != 0" (identifier "local_25") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_001e6d50(local_40);\n      return 0;\n    }" ({ "{") (expression_statement "FUN_001e6d50(local_40);" (call_expression "FUN_001e6d50(local_40)" (identifier "FUN_001e6d50") (argument_list "(local_40)" (( "(") (identifier "local_40") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (return_statement "return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);" (return "return") (call_expression "CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25)" (identifier "CONCAT31") (argument_list "((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25)" (( "(") (call_expression "(int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8)" (parenthesized_expression "(int3)" (( "(") (identifier "int3") () ")")) (argument_list "((ulonglong)local_24 / (ulonglong)local_50 >> 8)" (( "(") (binary_expression "(ulonglong)local_24 / (ulonglong)local_50 >> 8" (binary_expression "(ulonglong)local_24 / (ulonglong)local_50" (cast_expression "(ulonglong)local_24" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "local_24")) (/ "/") (cast_expression "(ulonglong)local_50" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "local_50"))) (>> ">>") (number_literal "8")) () ")"))) (, ",") (identifier "local_25") () ")"))) (; ";")) (} "}"))) (expression_statement "*(int *)(param_1 + 0x68) =\n       *(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50);" (assignment_expression "*(int *)(param_1 + 0x68) =\n       *(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50)" (pointer_expression "*(int *)(param_1 + 0x68)" (* "*") (cast_expression "(int *)(param_1 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x68)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50)" (pointer_expression "*(int *)(param_1 + 0x68)" (* "*") (cast_expression "(int *)(param_1 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x68)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) () ")")))) (+ "+") (cast_expression "(int)((ulonglong)local_24 / (ulonglong)local_50)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)local_24 / (ulonglong)local_50)" (( "(") (binary_expression "(ulonglong)local_24 / (ulonglong)local_50" (cast_expression "(ulonglong)local_24" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "local_24")) (/ "/") (cast_expression "(ulonglong)local_50" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "local_50"))) () ")"))))) (; ";")) (expression_statement "uVar5 = FUN_000b1f00(param_2);" (assignment_expression "uVar5 = FUN_000b1f00(param_2)" (identifier "uVar5") (= "=") (call_expression "FUN_000b1f00(param_2)" (identifier "FUN_000b1f00") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "local_60 = FUN_001c5010(uVar5,param_1,param_3);" (assignment_expression "local_60 = FUN_001c5010(uVar5,param_1,param_3)" (identifier "local_60") (= "=") (call_expression "FUN_001c5010(uVar5,param_1,param_3)" (identifier "FUN_001c5010") (argument_list "(uVar5,param_1,param_3)" (( "(") (identifier "uVar5") (, ",") (identifier "param_1") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "puVar10 = auStack_6c;" (assignment_expression "puVar10 = auStack_6c" (identifier "puVar10") (= "=") (identifier "auStack_6c")) (; ";")) (if_statement "if (local_24 != 0) {\n    local_5c = param_1 + 0x6c;\n    local_64 = local_34;\n    local_68 = param_1 + 0x84;\n    puVar10 = auStack_6c;\n    do {\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    \n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    } while (local_44 < local_24);\n  }" (if "if") (parenthesized_expression "(local_24 != 0)" (( "(") (binary_expression "local_24 != 0" (identifier "local_24") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    local_5c = param_1 + 0x6c;\n    local_64 = local_34;\n    local_68 = param_1 + 0x84;\n    puVar10 = auStack_6c;\n    do {\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    \n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    } while (local_44 < local_24);\n  }" ({ "{") (expression_statement "local_5c = param_1 + 0x6c;" (assignment_expression "local_5c = param_1 + 0x6c" (identifier "local_5c") (= "=") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c"))) (; ";")) (expression_statement "local_64 = local_34;" (assignment_expression "local_64 = local_34" (identifier "local_64") (= "=") (identifier "local_34")) (; ";")) (expression_statement "local_68 = param_1 + 0x84;" (assignment_expression "local_68 = param_1 + 0x84" (identifier "local_68") (= "=") (binary_expression "param_1 + 0x84" (identifier "param_1") (+ "+") (number_literal "0x84"))) (; ";")) (expression_statement "puVar10 = auStack_6c;" (assignment_expression "puVar10 = auStack_6c" (identifier "puVar10") (= "=") (identifier "auStack_6c")) (; ";")) (do_statement "do {\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    \n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    } while (local_44 < local_24);" (do "do") (compound_statement "{\n      iVar1 = *(int *)(param_1 + 0x60);\n      *(int *)(puVar10 + -0xc) = local_40;\n      *(int *)(puVar10 + -0x10) = param_1;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;\n      FUN_001c4d60();\n      *(int *)(puVar10 + -0xc) = iVar1;\n      *(int *)(puVar10 + -0x10) = local_5c;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;\n      local_38 = iVar1;\n      local_3c = FUN_001c4c70();\n      local_48 = local_3c % *(uint *)(param_1 + 0x78);\n      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);\n      local_58 = local_48 * 4;\n      if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }\n      *(undefined4 *)(puVar10 + -0x10) = 0xc;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;\n      piVar6 = (int *)FUN_001e5200();\n      *piVar6 = 0;\n      piVar6[1] = local_38;\n      local_20[0] = *(undefined4 *)(param_1 + 0x88);\n      *(undefined4 *)(puVar10 + -0x10) = 1;\n      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);\n      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);\n      *(int *)(puVar10 + -0x1c) = local_68;\n      *(char **)(puVar10 + -0x20) = local_64;\n      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;\n      FUN_0022c460();\n      if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    \n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }\n      puVar10 = puVar10 + -4;\n      iVar1 = *(int *)(param_1 + 0x74);\n      piVar8 = (int *)(local_58 + iVar1);\n      piVar6[2] = local_3c;\n      if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }\n      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;\nLAB_001c5480:\n      uVar3 = local_44;\n      uVar7 = local_50;\n      *(uint *)(puVar10 + -4) = local_38;\n      *(uint *)(puVar10 + -8) = local_50;\n      *(uint *)(puVar10 + -0xc) = local_44;\n      *(undefined4 *)(puVar10 + -0x10) = local_60;\n      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;\n      FUN_001c4f10();\n      local_40 = local_40 + uVar7;\n      local_44 = uVar3 + uVar7;\n    }" ({ "{") (expression_statement "iVar1 = *(int *)(param_1 + 0x60);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x60)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0x60)" (* "*") (cast_expression "(int *)(param_1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar10 + -0xc) = local_40;" (assignment_expression "*(int *)(puVar10 + -0xc) = local_40" (pointer_expression "*(int *)(puVar10 + -0xc)" (* "*") (cast_expression "(int *)(puVar10 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_40")) (; ";")) (expression_statement "*(int *)(puVar10 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar10 + -0x10) = param_1" (pointer_expression "*(int *)(puVar10 + -0x10)" (* "*") (cast_expression "(int *)(puVar10 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c53e9" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c53e9")) (; ";")) (expression_statement "FUN_001c4d60();" (call_expression "FUN_001c4d60()" (identifier "FUN_001c4d60") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(puVar10 + -0xc) = iVar1;" (assignment_expression "*(int *)(puVar10 + -0xc) = iVar1" (pointer_expression "*(int *)(puVar10 + -0xc)" (* "*") (cast_expression "(int *)(puVar10 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "*(int *)(puVar10 + -0x10) = local_5c;" (assignment_expression "*(int *)(puVar10 + -0x10) = local_5c" (pointer_expression "*(int *)(puVar10 + -0x10)" (* "*") (cast_expression "(int *)(puVar10 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_5c")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c53f7" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c53f7")) (; ";")) (expression_statement "local_38 = iVar1;" (assignment_expression "local_38 = iVar1" (identifier "local_38") (= "=") (identifier "iVar1")) (; ";")) (expression_statement "local_3c = FUN_001c4c70();" (assignment_expression "local_3c = FUN_001c4c70()" (identifier "local_3c") (= "=") (call_expression "FUN_001c4c70()" (identifier "FUN_001c4c70") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "local_48 = local_3c % *(uint *)(param_1 + 0x78);" (assignment_expression "local_48 = local_3c % *(uint *)(param_1 + 0x78)" (identifier "local_48") (= "=") (binary_expression "local_3c % *(uint *)(param_1 + 0x78)" (identifier "local_3c") (% "%") (pointer_expression "*(uint *)(param_1 + 0x78)" (* "*") (cast_expression "(uint *)(param_1 + 0x78)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")")))))) (; ";")) (expression_statement "piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);" (assignment_expression "piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4)" (identifier "piVar6") (= "=") (pointer_expression "*(int **)(*(int *)(param_1 + 0x74) + local_48 * 4)" (* "*") (cast_expression "(int **)(*(int *)(param_1 + 0x74) + local_48 * 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x74) + local_48 * 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x74) + local_48 * 4" (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (+ "+") (binary_expression "local_48 * 4" (identifier "local_48") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "local_58 = local_48 * 4;" (assignment_expression "local_58 = local_48 * 4" (identifier "local_58") (= "=") (binary_expression "local_48 * 4" (identifier "local_48") (* "*") (number_literal "4"))) (; ";")) (if_statement "if (piVar6 != (int *)0x0) {\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }" (if "if") (parenthesized_expression "(piVar6 != (int *)0x0)" (( "(") (binary_expression "piVar6 != (int *)0x0" (identifier "piVar6") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        local_4c = param_1 + 0x70;\n        uVar7 = ((int *)*piVar6)[2];\n        piVar8 = (int *)*piVar6;\n        do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );\n      }" ({ "{") (expression_statement "local_4c = param_1 + 0x70;" (assignment_expression "local_4c = param_1 + 0x70" (identifier "local_4c") (= "=") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70"))) (; ";")) (expression_statement "uVar7 = ((int *)*piVar6)[2];" (assignment_expression "uVar7 = ((int *)*piVar6)[2]" (identifier "uVar7") (= "=") (subscript_expression "((int *)*piVar6)[2]" (parenthesized_expression "((int *)*piVar6)" (( "(") (cast_expression "(int *)*piVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) () ")")) ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "piVar8 = (int *)*piVar6;" (assignment_expression "piVar8 = (int *)*piVar6" (identifier "piVar8") (= "=") (cast_expression "(int *)*piVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")))) (; ";")) (do_statement "do {\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        } while( true );" (do "do") (compound_statement "{\n          piVar9 = piVar8;\n          if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }\n          piVar8 = (int *)*piVar9;\n          if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;\n        }" ({ "{") (expression_statement "piVar9 = piVar8;" (assignment_expression "piVar9 = piVar8" (identifier "piVar9") (= "=") (identifier "piVar8")) (; ";")) (if_statement "if (uVar7 == local_3c) {\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }" (if "if") (parenthesized_expression "(uVar7 == local_3c)" (( "(") (binary_expression "uVar7 == local_3c" (identifier "uVar7") (== "==") (identifier "local_3c")) () ")")) (compound_statement "{\n            *(int *)(puVar10 + -8) = piVar9[1];\n            *(uint *)(puVar10 + -0xc) = local_38;\n            *(int *)(puVar10 + -0x10) = local_4c;\n            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;\n            cVar4 = FUN_001c4d00();\n            if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }\n          }" ({ "{") (expression_statement "*(int *)(puVar10 + -8) = piVar9[1];" (assignment_expression "*(int *)(puVar10 + -8) = piVar9[1]" (pointer_expression "*(int *)(puVar10 + -8)" (* "*") (cast_expression "(int *)(puVar10 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -8)" (( "(") (binary_expression "puVar10 + -8" (identifier "puVar10") (+ "+") (number_literal "-8")) () ")")))) (= "=") (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(uint *)(puVar10 + -0xc) = local_38;" (assignment_expression "*(uint *)(puVar10 + -0xc) = local_38" (pointer_expression "*(uint *)(puVar10 + -0xc)" (* "*") (cast_expression "(uint *)(puVar10 + -0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_38")) (; ";")) (expression_statement "*(int *)(puVar10 + -0x10) = local_4c;" (assignment_expression "*(int *)(puVar10 + -0x10) = local_4c" (pointer_expression "*(int *)(puVar10 + -0x10)" (* "*") (cast_expression "(int *)(puVar10 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_4c")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c5467;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c5467" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c5467")) (; ";")) (expression_statement "cVar4 = FUN_001c4d00();" (assignment_expression "cVar4 = FUN_001c4d00()" (identifier "cVar4") (= "=") (call_expression "FUN_001c4d00()" (identifier "FUN_001c4d00") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar4 != '\0') {\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }" (if "if") (parenthesized_expression "(cVar4 != '\0')" (( "(") (binary_expression "cVar4 != '\0'" (identifier "cVar4") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              iVar1 = *piVar6;\n              if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }\n              break;\n            }" ({ "{") (expression_statement "iVar1 = *piVar6;" (assignment_expression "iVar1 = *piVar6" (identifier "iVar1") (= "=") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) (; ";")) (if_statement "if (iVar1 != 0) {\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;\n                local_38 = *(int *)(iVar1 + 4);\n                goto LAB_001c5480;\n              }" ({ "{") (expression_statement "*(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;" (assignment_expression "*(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50" (pointer_expression "*(int *)(param_1 + 0x60)" (* "*") (cast_expression "(int *)(param_1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x60) - local_50" (pointer_expression "*(int *)(param_1 + 0x60)" (* "*") (cast_expression "(int *)(param_1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (- "-") (identifier "local_50"))) (; ";")) (expression_statement "local_38 = *(int *)(iVar1 + 4);" (assignment_expression "local_38 = *(int *)(iVar1 + 4)" (identifier "local_38") (= "=") (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (goto_statement "goto LAB_001c5480;" (goto "goto") (statement_identifier "LAB_001c5480") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (} "}"))) (expression_statement "piVar8 = (int *)*piVar9;" (assignment_expression "piVar8 = (int *)*piVar9" (identifier "piVar8") (= "=") (cast_expression "(int *)*piVar9" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar9" (* "*") (identifier "piVar9")))) (; ";")) (if_statement "if ((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))\n          break;" (if "if") (parenthesized_expression "((piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))" (( "(") (binary_expression "(piVar8 == (int *)0x0) ||\n             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78))" (parenthesized_expression "(piVar8 == (int *)0x0)" (( "(") (binary_expression "piVar8 == (int *)0x0" (identifier "piVar8") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78))" (( "(") (comma_expression "uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)" (assignment_expression "uVar7 = piVar8[2]" (identifier "uVar7") (= "=") (subscript_expression "piVar8[2]" (identifier "piVar8") ([ "[") (number_literal "2") (] "]"))) (, ",") (comma_expression "piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)" (assignment_expression "piVar6 = piVar9" (identifier "piVar6") (= "=") (identifier "piVar9")) (, ",") (binary_expression "local_48 != uVar7 % *(uint *)(param_1 + 0x78)" (identifier "local_48") (!= "!=") (binary_expression "uVar7 % *(uint *)(param_1 + 0x78)" (identifier "uVar7") (% "%") (pointer_expression "*(uint *)(param_1 + 0x78)" (* "*") (cast_expression "(uint *)(param_1 + 0x78)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")")))))))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = 0xc;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = 0xc" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "0xc")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c54e5" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c54e5")) (; ";")) (expression_statement "piVar6 = (int *)FUN_001e5200();" (assignment_expression "piVar6 = (int *)FUN_001e5200()" (identifier "piVar6") (= "=") (cast_expression "(int *)FUN_001e5200()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e5200()" (identifier "FUN_001e5200") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*piVar6 = 0;" (assignment_expression "*piVar6 = 0" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar6[1] = local_38;" (assignment_expression "piVar6[1] = local_38" (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_38")) (; ";")) (expression_statement "local_20[0] = *(undefined4 *)(param_1 + 0x88);" (assignment_expression "local_20[0] = *(undefined4 *)(param_1 + 0x88)" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x88)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x88)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x88)" (( "(") (binary_expression "param_1 + 0x88" (identifier "param_1") (+ "+") (number_literal "0x88")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = 1;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = 1" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80)" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x80)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x80)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78)" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x18)" (( "(") (binary_expression "puVar10 + -0x18" (identifier "puVar10") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x78)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x78)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar10 + -0x1c) = local_68;" (assignment_expression "*(int *)(puVar10 + -0x1c) = local_68" (pointer_expression "*(int *)(puVar10 + -0x1c)" (* "*") (cast_expression "(int *)(puVar10 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x1c)" (( "(") (binary_expression "puVar10 + -0x1c" (identifier "puVar10") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "local_68")) (; ";")) (expression_statement "*(char **)(puVar10 + -0x20) = local_64;" (assignment_expression "*(char **)(puVar10 + -0x20) = local_64" (pointer_expression "*(char **)(puVar10 + -0x20)" (* "*") (cast_expression "(char **)(puVar10 + -0x20)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x20)" (( "(") (binary_expression "puVar10 + -0x20" (identifier "puVar10") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "local_64")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x24) = 0x1c551a;" (assignment_expression "*(undefined4 *)(puVar10 + -0x24) = 0x1c551a" (pointer_expression "*(undefined4 *)(puVar10 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x24)" (( "(") (binary_expression "puVar10 + -0x24" (identifier "puVar10") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x1c551a")) (; ";")) (expression_statement "FUN_0022c460();" (call_expression "FUN_0022c460()" (identifier "FUN_0022c460") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (local_34[0] != '\0') {\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    \n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }" (if "if") (parenthesized_expression "(local_34[0] != '\0')" (( "(") (binary_expression "local_34[0] != '\0'" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        *(undefined4 **)(puVar10 + -0xc) = local_20;\n        *(undefined4 *)(puVar10 + -0x10) = local_30;\n        *(int *)(puVar10 + -0x14) = local_5c;\n                    \n        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;\n        FUN_001c9270();\n        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;\n      }" ({ "{") (expression_statement "*(undefined4 **)(puVar10 + -0xc) = local_20;" (assignment_expression "*(undefined4 **)(puVar10 + -0xc) = local_20" (pointer_expression "*(undefined4 **)(puVar10 + -0xc)" (* "*") (cast_expression "(undefined4 **)(puVar10 + -0xc)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_20")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = local_30;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = local_30" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_30")) (; ";")) (expression_statement "*(int *)(puVar10 + -0x14) = local_5c;" (assignment_expression "*(int *)(puVar10 + -0x14) = local_5c" (pointer_expression "*(int *)(puVar10 + -0x14)" (* "*") (cast_expression "(int *)(puVar10 + -0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "local_5c")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0x1c5536;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0x1c5536" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x18)" (( "(") (binary_expression "puVar10 + -0x18" (identifier "puVar10") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x1c5536")) (; ";")) (expression_statement "FUN_001c9270();" (call_expression "FUN_001c9270()" (identifier "FUN_001c9270") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;" (assignment_expression "local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4" (identifier "local_58") (= "=") (binary_expression "(local_3c % *(uint *)(param_1 + 0x78)) * 4" (parenthesized_expression "(local_3c % *(uint *)(param_1 + 0x78))" (( "(") (binary_expression "local_3c % *(uint *)(param_1 + 0x78)" (identifier "local_3c") (% "%") (pointer_expression "*(uint *)(param_1 + 0x78)" (* "*") (cast_expression "(uint *)(param_1 + 0x78)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")"))))) () ")")) (* "*") (number_literal "4"))) (; ";")) (} "}"))) (expression_statement "puVar10 = puVar10 + -4;" (assignment_expression "puVar10 = puVar10 + -4" (identifier "puVar10") (= "=") (binary_expression "puVar10 + -4" (identifier "puVar10") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "iVar1 = *(int *)(param_1 + 0x74);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x74)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")"))))) (; ";")) (expression_statement "piVar8 = (int *)(local_58 + iVar1);" (assignment_expression "piVar8 = (int *)(local_58 + iVar1)" (identifier "piVar8") (= "=") (cast_expression "(int *)(local_58 + iVar1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_58 + iVar1)" (( "(") (binary_expression "local_58 + iVar1" (identifier "local_58") (+ "+") (identifier "iVar1")) () ")")))) (; ";")) (expression_statement "piVar6[2] = local_3c;" (assignment_expression "piVar6[2] = local_3c" (subscript_expression "piVar6[2]" (identifier "piVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_3c")) (; ";")) (if_statement "if ((int *)*piVar8 == (int *)0x0) {\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }\n      else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }" (if "if") (parenthesized_expression "((int *)*piVar8 == (int *)0x0)" (( "(") (binary_expression "(int *)*piVar8 == (int *)0x0" (cast_expression "(int *)*piVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        iVar2 = *(int *)(param_1 + 0x7c);\n        *(int **)(param_1 + 0x7c) = piVar6;\n        *piVar6 = iVar2;\n        if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }\n        *piVar8 = param_1 + 0x7c;\n      }" ({ "{") (expression_statement "iVar2 = *(int *)(param_1 + 0x7c);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x7c)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x7c)" (* "*") (cast_expression "(int *)(param_1 + 0x7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x7c)" (( "(") (binary_expression "param_1 + 0x7c" (identifier "param_1") (+ "+") (number_literal "0x7c")) () ")"))))) (; ";")) (expression_statement "*(int **)(param_1 + 0x7c) = piVar6;" (assignment_expression "*(int **)(param_1 + 0x7c) = piVar6" (pointer_expression "*(int **)(param_1 + 0x7c)" (* "*") (cast_expression "(int **)(param_1 + 0x7c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x7c)" (( "(") (binary_expression "param_1 + 0x7c" (identifier "param_1") (+ "+") (number_literal "0x7c")) () ")")))) (= "=") (identifier "piVar6")) (; ";")) (expression_statement "*piVar6 = iVar2;" (assignment_expression "*piVar6 = iVar2" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (identifier "iVar2")) (; ";")) (if_statement "if (iVar2 != 0) {\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;\n        }" ({ "{") (expression_statement "*(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;" (assignment_expression "*(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6" (pointer_expression "*(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4)" (* "*") (cast_expression "(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4)" (( "(") (binary_expression "iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4" (identifier "iVar1") (+ "+") (binary_expression "(*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4" (parenthesized_expression "(*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78))" (( "(") (binary_expression "*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)" (pointer_expression "*(uint *)(iVar2 + 8)" (* "*") (cast_expression "(uint *)(iVar2 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")")))) (% "%") (pointer_expression "*(uint *)(param_1 + 0x78)" (* "*") (cast_expression "(uint *)(param_1 + 0x78)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")"))))) () ")")) (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "piVar6")) (; ";")) (} "}"))) (expression_statement "*piVar8 = param_1 + 0x7c;" (assignment_expression "*piVar8 = param_1 + 0x7c" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (binary_expression "param_1 + 0x7c" (identifier "param_1") (+ "+") (number_literal "0x7c"))) (; ";")) (} "}")) (else_clause "else {\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }" (else "else") (compound_statement "{\n        *piVar6 = *(int *)*piVar8;\n        *(int **)*piVar8 = piVar6;\n      }" ({ "{") (expression_statement "*piVar6 = *(int *)*piVar8;" (assignment_expression "*piVar6 = *(int *)*piVar8" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (pointer_expression "*(int *)*piVar8" (* "*") (cast_expression "(int *)*piVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))))) (; ";")) (expression_statement "*(int **)*piVar8 = piVar6;" (assignment_expression "*(int **)*piVar8 = piVar6" (pointer_expression "*(int **)*piVar8" (* "*") (cast_expression "(int **)*piVar8" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "*piVar8" (* "*") (identifier "piVar8")))) (= "=") (identifier "piVar6")) (; ";")) (} "}")))) (expression_statement "*(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;" (assignment_expression "*(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1" (pointer_expression "*(int *)(param_1 + 0x80)" (* "*") (cast_expression "(int *)(param_1 + 0x80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x80) + 1" (pointer_expression "*(int *)(param_1 + 0x80)" (* "*") (cast_expression "(int *)(param_1 + 0x80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (labeled_statement "LAB_001c5480:\n      uVar3 = local_44;" (statement_identifier "LAB_001c5480") (: ":") (expression_statement "uVar3 = local_44;" (assignment_expression "uVar3 = local_44" (identifier "uVar3") (= "=") (identifier "local_44")) (; ";"))) (expression_statement "uVar7 = local_50;" (assignment_expression "uVar7 = local_50" (identifier "uVar7") (= "=") (identifier "local_50")) (; ";")) (expression_statement "*(uint *)(puVar10 + -4) = local_38;" (assignment_expression "*(uint *)(puVar10 + -4) = local_38" (pointer_expression "*(uint *)(puVar10 + -4)" (* "*") (cast_expression "(uint *)(puVar10 + -4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -4)" (( "(") (binary_expression "puVar10 + -4" (identifier "puVar10") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "local_38")) (; ";")) (expression_statement "*(uint *)(puVar10 + -8) = local_50;" (assignment_expression "*(uint *)(puVar10 + -8) = local_50" (pointer_expression "*(uint *)(puVar10 + -8)" (* "*") (cast_expression "(uint *)(puVar10 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -8)" (( "(") (binary_expression "puVar10 + -8" (identifier "puVar10") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "local_50")) (; ";")) (expression_statement "*(uint *)(puVar10 + -0xc) = local_44;" (assignment_expression "*(uint *)(puVar10 + -0xc) = local_44" (pointer_expression "*(uint *)(puVar10 + -0xc)" (* "*") (cast_expression "(uint *)(puVar10 + -0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_44")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = local_60;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = local_60" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_60")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c5493;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c5493" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c5493")) (; ";")) (expression_statement "FUN_001c4f10();" (call_expression "FUN_001c4f10()" (identifier "FUN_001c4f10") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_40 = local_40 + uVar7;" (assignment_expression "local_40 = local_40 + uVar7" (identifier "local_40") (= "=") (binary_expression "local_40 + uVar7" (identifier "local_40") (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "local_44 = uVar3 + uVar7;" (assignment_expression "local_44 = uVar3 + uVar7" (identifier "local_44") (= "=") (binary_expression "uVar3 + uVar7" (identifier "uVar3") (+ "+") (identifier "uVar7"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_44 < local_24)" (( "(") (binary_expression "local_44 < local_24" (identifier "local_44") (< "<") (identifier "local_24")) () ")")) (; ";")) (} "}"))) (if_statement "if (*(char *)(param_1 + 0x34) == '\0') {\n    local_25 = local_40 != 0 & local_25;\n  }\n  else {\n    *(undefined4 *)(puVar10 + -8) = param_3;\n    *(undefined4 *)(puVar10 + -0xc) = param_2;\n    *(int *)(puVar10 + -0x10) = param_1;\n    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;\n    FUN_001c5140();\n    local_25 = local_40 != 0 & local_25;\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x34) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x34) == '\0'" (pointer_expression "*(char *)(param_1 + 0x34)" (* "*") (cast_expression "(char *)(param_1 + 0x34)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    local_25 = local_40 != 0 & local_25;\n  }" ({ "{") (expression_statement "local_25 = local_40 != 0 & local_25;" (assignment_expression "local_25 = local_40 != 0 & local_25" (identifier "local_25") (= "=") (binary_expression "local_40 != 0 & local_25" (binary_expression "local_40 != 0" (identifier "local_40") (!= "!=") (number_literal "0")) (& "&") (identifier "local_25"))) (; ";")) (} "}")) (else_clause "else {\n    *(undefined4 *)(puVar10 + -8) = param_3;\n    *(undefined4 *)(puVar10 + -0xc) = param_2;\n    *(int *)(puVar10 + -0x10) = param_1;\n    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;\n    FUN_001c5140();\n    local_25 = local_40 != 0 & local_25;\n  }" (else "else") (compound_statement "{\n    *(undefined4 *)(puVar10 + -8) = param_3;\n    *(undefined4 *)(puVar10 + -0xc) = param_2;\n    *(int *)(puVar10 + -0x10) = param_1;\n    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;\n    FUN_001c5140();\n    local_25 = local_40 != 0 & local_25;\n  }" ({ "{") (expression_statement "*(undefined4 *)(puVar10 + -8) = param_3;" (assignment_expression "*(undefined4 *)(puVar10 + -8) = param_3" (pointer_expression "*(undefined4 *)(puVar10 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -8)" (( "(") (binary_expression "puVar10 + -8" (identifier "puVar10") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = param_2;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = param_2" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(int *)(puVar10 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar10 + -0x10) = param_1" (pointer_expression "*(int *)(puVar10 + -0x10)" (* "*") (cast_expression "(int *)(puVar10 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c55cf" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c55cf")) (; ";")) (expression_statement "FUN_001c5140();" (call_expression "FUN_001c5140()" (identifier "FUN_001c5140") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_25 = local_40 != 0 & local_25;" (assignment_expression "local_25 = local_40 != 0 & local_25" (identifier "local_25") (= "=") (binary_expression "local_40 != 0 & local_25" (binary_expression "local_40 != 0" (identifier "local_40") (!= "!=") (number_literal "0")) (& "&") (identifier "local_25"))) (; ";")) (} "}")))) (if_statement "if (local_25 == 0) {\n    return 1;\n  }" (if "if") (parenthesized_expression "(local_25 == 0)" (( "(") (binary_expression "local_25 == 0" (identifier "local_25") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 1;\n  }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "*(int *)(puVar10 + -0x10) = local_40;" (assignment_expression "*(int *)(puVar10 + -0x10) = local_40" (pointer_expression "*(int *)(puVar10 + -0x10)" (* "*") (cast_expression "(int *)(puVar10 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_40")) (; ";")) (expression_statement "local_38 = CONCAT31(local_38._1_3_,local_25);" (assignment_expression "local_38 = CONCAT31(local_38._1_3_,local_25)" (identifier "local_38") (= "=") (call_expression "CONCAT31(local_38._1_3_,local_25)" (identifier "CONCAT31") (argument_list "(local_38._1_3_,local_25)" (( "(") (field_expression "local_38._1_3_" (identifier "local_38") (. ".") (field_identifier "_1_3_")) (, ",") (identifier "local_25") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x1c55f4;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x1c55f4" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c55f4")) (; ";")) (expression_statement "FUN_001e6d50();" (call_expression "FUN_001e6d50()" (identifier "FUN_001e6d50") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return local_38 & 0xff;" (return "return") (binary_expression "local_38 & 0xff" (identifier "local_38") (& "&") (number_literal "0xff")) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: bool do_add_input_section(Output_merge_data * this, Relobj * object,
   uint shndx) */

bool __thiscall
gold::type_1::function_1(type_1 *this,type_2 *object,type_3 shndx)

{
  type_4 *psVar1;
  type_3 var_4;
  type_5 *var_20;
  type_6 *var_25;
  bool var_7;
  type_7 *this_00;
  type_8 *this_01;
  type_5 *var_15;
  type_5 *var_14;
  type_6 *pp_Var7;
  type_3 var_21;
  type_6 p_Var9;
  type_6 var_13;
  type_3 var_27;
  type_9 *var_5;
  type_5 *local_38;
  char local_34 [4];
  type_4 local_30;
  bool var_6;
  type_10 var_3;
  size_t local_20 [3];
  type_11 uStack_14;
  
  uStack_14 = 0x1c532e;
  var_5 = Object::var_1
                       (&object->super_Object,shndx,&var_3,&var_6,(uint64_t *)0x0);
  var_4 = (type_3)(this->super_Output_merge_base).entsize_;
  if (*(int *)((int)&(this->super_Output_merge_base).entsize_ + 4) != 0) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/gold.h",0xc0,"convert_types");
  }
  if (var_3 % var_4 != 0) {
    var_7 = (bool)(var_5 != (type_9 *)0x0 & var_6);
    if (var_7 != false) {
      var_8(var_5);
      return false;
    }
    return var_7;
  }
  this->input_count_ = this->input_count_ + var_3 / var_4;
  this_00 = type_2::var_9(object);
  this_01 = type_7::var_10(this_00,(type_12 *)this,shndx)
  ;
  if (var_3 != 0) {
    var_27 = 0;
    do {
      local_38 = (type_5 *)this->len_;
      var_11(this,var_5);
      var_15 = (type_5 *)
               type_13::var_12()
                         ((type_13 *)&this->hashtable_,(type_14)local_38);
      var_21 = (type_3)var_15 % (this->hashtable_)._M_h._M_bucket_count;
      var_13 = (this->hashtable_)._M_h._M_buckets[var_21];
      if (var_13 != (type_6)0x0) {
        var_14 = var_13->_M_nxt[2]._M_nxt;
        var_20 = var_13->_M_nxt;
        while ((p_Var9 = var_20, var_14 != var_15 ||
               (var_7 = Merge_data_eq::var_12()
                                  (&(this->hashtable_)._M_h.
                                    super__Hashtable_base<var_16,_int,_std::__detail::_Identity,_gold::type_1::Merge_data_eq,_gold::type_1::type_13,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::var_17<true,var_18,var_18>var_19>
                                    .
                                    super__Hashtable_ebo_helper<0,_gold::type_1::Merge_data_eq,_false>
                                    ._M_tp,(type_14)local_38,(type_14)p_Var9[1]._M_nxt
                                  ), !var_7))) {
          var_20 = p_Var9->_M_nxt;
          if ((var_20 == (type_5 *)0x0) ||
             (var_14 = var_20[2]._M_nxt, var_13 = p_Var9,
             var_21 != (type_3)var_14 % (this->hashtable_)._M_h._M_bucket_count)) goto LAB_001c54d8;
        }
        var_14 = var_13->_M_nxt;
        if (var_14 != (type_5 *)0x0) {
          this->len_ = this->len_ - var_4;
          local_38 = var_14[1]._M_nxt;
          goto LAB_001c5480;
        }
      }
LAB_001c54d8:
      var_14 = (type_5 *)var_22(0xc);
      var_14->_M_nxt = (type_5 *)0x0;
      var_14[1]._M_nxt = local_38;
      local_20[0] = (this->hashtable_)._M_h._M_rehash_policy._M_next_resize;
      std::__detail::_Prime_rehash_policy::var_23
                ((type_3)local_34,(type_3)&(this->hashtable_)._M_h._M_rehash_policy,
                 (this->hashtable_)._M_h._M_bucket_count);
      if (local_34[0] != '\0') {
                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */
        std::
        _Hashtable<var_16,_int,_std::allocator<var_16>,_std::__detail::_Identity,_gold::Output_merge_data::Merge_data_eq,_gold::Output_merge_data::type_13,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_17<true,var_18,var_18>var_19>
        ::var_24(&(this->hashtable_)._M_h,local_30,local_20);
        var_21 = (type_3)var_15 % (this->hashtable_)._M_h._M_bucket_count;
      }
      var_25 = (this->hashtable_)._M_h._M_buckets;
      pp_Var7 = var_25 + var_21;
      var_14[2]._M_nxt = var_15;
      if (*pp_Var7 == (type_6)0x0) {
        var_15 = (this->hashtable_)._M_h._M_before_begin._M_nxt;
        (this->hashtable_)._M_h._M_before_begin._M_nxt = var_14;
        var_14->_M_nxt = var_15;
        if (var_15 != (type_5 *)0x0) {
          var_25[(type_3)var_15[2]._M_nxt % (this->hashtable_)._M_h._M_bucket_count] = var_14;
        }
        *pp_Var7 = &(this->hashtable_)._M_h._M_before_begin;
      }
      else {
        var_14->_M_nxt = (*pp_Var7)->_M_nxt;
        (*pp_Var7)->_M_nxt = var_14;
      }
      psVar1 = &(this->hashtable_)._M_h._M_element_count;
      *psVar1 = *psVar1 + 1;
LAB_001c5480:
      Object_merge_map::Input_merge_map::var_26
                (this_01,var_27,var_4,(type_15)local_38);
      var_5 = var_5 + var_4;
      var_27 = var_27 + var_4;
    } while (var_27 < var_3);
  }
  if ((this->super_Output_merge_base).keeps_input_sections_ == false) {
    var_7 = (bool)(var_5 != (type_9 *)0x0 & var_6);
  }
  else {
    Output_merge_base::var_28(&this->super_Output_merge_base,object,shndx);
    var_7 = (bool)(var_5 != (type_9 *)0x0 & var_6);
  }
  if (var_7 == false) {
    return true;
  }
  var_8(var_5);
  return var_7;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

uint MASKED(int param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  char cVar4;
  undefined4 uVar5;
  int *piVar6;
  uint uVar7;
  int *piVar8;
  int *piVar9;
  undefined1 *puVar10;
  undefined4 uStackY_90;
  undefined1 auStack_6c [4];
  int local_68;
  char *local_64;
  undefined4 local_60;
  int local_5c;
  int local_58;
  undefined **local_54;
  uint local_50;
  int local_4c;
  uint local_48;
  uint local_44;
  int local_40;
  uint local_3c;
  uint local_38;
  char local_34 [4];
  undefined4 local_30;
  byte local_25;
  uint local_24;
  undefined4 local_20 [3];
  undefined4 uStack_14;
  
  uStack_14 = 0x1c532e;
  local_54 = &__DT_PLTGOT;
  local_40 = FUN_000b1f60(param_2,param_3,&local_24,&local_25,0);
  local_50 = *(uint *)(param_1 + 0x2c);
  if (*(int *)(param_1 + 0x30) != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00((int)local_54 + -0x107be7,0xc0,local_54 + -0x3bb34);
  }
  local_44 = local_24 % local_50;
  if (local_44 != 0) {
    local_25 = local_40 != 0 & local_25;
    if (local_25 != 0) {
      FUN_001e6d50(local_40);
      return 0;
    }
    return CONCAT31((int3)((ulonglong)local_24 / (ulonglong)local_50 >> 8),local_25);
  }
  *(int *)(param_1 + 0x68) =
       *(int *)(param_1 + 0x68) + (int)((ulonglong)local_24 / (ulonglong)local_50);
  uVar5 = FUN_000b1f00(param_2);
  local_60 = FUN_001c5010(uVar5,param_1,param_3);
  puVar10 = auStack_6c;
  if (local_24 != 0) {
    local_5c = param_1 + 0x6c;
    local_64 = local_34;
    local_68 = param_1 + 0x84;
    puVar10 = auStack_6c;
    do {
      iVar1 = *(int *)(param_1 + 0x60);
      *(int *)(puVar10 + -0xc) = local_40;
      *(int *)(puVar10 + -0x10) = param_1;
      *(undefined4 *)(puVar10 + -0x14) = 0x1c53e9;
      FUN_001c4d60();
      *(int *)(puVar10 + -0xc) = iVar1;
      *(int *)(puVar10 + -0x10) = local_5c;
      *(undefined4 *)(puVar10 + -0x14) = 0x1c53f7;
      local_38 = iVar1;
      local_3c = FUN_001c4c70();
      local_48 = local_3c % *(uint *)(param_1 + 0x78);
      piVar6 = *(int **)(*(int *)(param_1 + 0x74) + local_48 * 4);
      local_58 = local_48 * 4;
      if (piVar6 != (int *)0x0) {
        local_4c = param_1 + 0x70;
        uVar7 = ((int *)*piVar6)[2];
        piVar8 = (int *)*piVar6;
        do {
          piVar9 = piVar8;
          if (uVar7 == local_3c) {
            *(int *)(puVar10 + -8) = piVar9[1];
            *(uint *)(puVar10 + -0xc) = local_38;
            *(int *)(puVar10 + -0x10) = local_4c;
            *(undefined4 *)(puVar10 + -0x14) = 0x1c5467;
            cVar4 = FUN_001c4d00();
            if (cVar4 != '\0') {
              iVar1 = *piVar6;
              if (iVar1 != 0) {
                *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - local_50;
                local_38 = *(int *)(iVar1 + 4);
                goto LAB_001c5480;
              }
              break;
            }
          }
          piVar8 = (int *)*piVar9;
          if ((piVar8 == (int *)0x0) ||
             (uVar7 = piVar8[2], piVar6 = piVar9, local_48 != uVar7 % *(uint *)(param_1 + 0x78)))
          break;
        } while( true );
      }
      *(undefined4 *)(puVar10 + -0x10) = 0xc;
      *(undefined4 *)(puVar10 + -0x14) = 0x1c54e5;
      piVar6 = (int *)FUN_001e5200();
      *piVar6 = 0;
      piVar6[1] = local_38;
      local_20[0] = *(undefined4 *)(param_1 + 0x88);
      *(undefined4 *)(puVar10 + -0x10) = 1;
      *(undefined4 *)(puVar10 + -0x14) = *(undefined4 *)(param_1 + 0x80);
      *(undefined4 *)(puVar10 + -0x18) = *(undefined4 *)(param_1 + 0x78);
      *(int *)(puVar10 + -0x1c) = local_68;
      *(char **)(puVar10 + -0x20) = local_64;
      *(undefined4 *)(puVar10 + -0x24) = 0x1c551a;
      FUN_0022c460();
      if (local_34[0] != '\0') {
        *(undefined4 **)(puVar10 + -0xc) = local_20;
        *(undefined4 *)(puVar10 + -0x10) = local_30;
        *(int *)(puVar10 + -0x14) = local_5c;
                    /* try { // try from 001c5531 to 001c5535 has its CatchHandler @ 001c561f */
        *(undefined4 *)(puVar10 + -0x18) = 0x1c5536;
        FUN_001c9270();
        local_58 = (local_3c % *(uint *)(param_1 + 0x78)) * 4;
      }
      puVar10 = puVar10 + -4;
      iVar1 = *(int *)(param_1 + 0x74);
      piVar8 = (int *)(local_58 + iVar1);
      piVar6[2] = local_3c;
      if ((int *)*piVar8 == (int *)0x0) {
        iVar2 = *(int *)(param_1 + 0x7c);
        *(int **)(param_1 + 0x7c) = piVar6;
        *piVar6 = iVar2;
        if (iVar2 != 0) {
          *(int **)(iVar1 + (*(uint *)(iVar2 + 8) % *(uint *)(param_1 + 0x78)) * 4) = piVar6;
        }
        *piVar8 = param_1 + 0x7c;
      }
      else {
        *piVar6 = *(int *)*piVar8;
        *(int **)*piVar8 = piVar6;
      }
      *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;
LAB_001c5480:
      uVar3 = local_44;
      uVar7 = local_50;
      *(uint *)(puVar10 + -4) = local_38;
      *(uint *)(puVar10 + -8) = local_50;
      *(uint *)(puVar10 + -0xc) = local_44;
      *(undefined4 *)(puVar10 + -0x10) = local_60;
      *(undefined4 *)(puVar10 + -0x14) = 0x1c5493;
      FUN_001c4f10();
      local_40 = local_40 + uVar7;
      local_44 = uVar3 + uVar7;
    } while (local_44 < local_24);
  }
  if (*(char *)(param_1 + 0x34) == '\0') {
    local_25 = local_40 != 0 & local_25;
  }
  else {
    *(undefined4 *)(puVar10 + -8) = param_3;
    *(undefined4 *)(puVar10 + -0xc) = param_2;
    *(int *)(puVar10 + -0x10) = param_1;
    *(undefined4 *)(puVar10 + -0x14) = 0x1c55cf;
    FUN_001c5140();
    local_25 = local_40 != 0 & local_25;
  }
  if (local_25 == 0) {
    return 1;
  }
  *(int *)(puVar10 + -0x10) = local_40;
  local_38 = CONCAT31(local_38._1_3_,local_25);
  *(undefined4 *)(puVar10 + -0x14) = 0x1c55f4;
  FUN_001e6d50();
  return local_38 & 0xff;
}

