
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original name: _M_realloc_insert<const gold::Input_section_info&>
   DWARF original prototype: void
   _M_realloc_insert<const_gold::Input_section_info&>(vector<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>
   * this, iterator __position, Input_section_info * __args#0) */

void __thiscall
std::vector<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>::
_M_realloc_insert<const_gold::Input_section_info&>
          (vector<gold::Input_section_info,_std::allocator<gold::Input_section_info>_> *this,
          iterator __position,Input_section_info *__args_0)

{
  int iVar1;
  pointer pIVar2;
  pointer pIVar3;
  pointer pcVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  size_type sVar7;
  size_type sVar8;
  size_type *psVar9;
  pointer pIVar10;
  uint64_t uVar11;
  uint uVar12;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar13;
  pointer pIVar14;
  pointer pIVar15;
  pointer pIVar16;
  uint *puVar17;
  pointer pIVar18;
  uint local_34;
  pointer local_30;
  
  pIVar2 = (this->
           super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).
           _M_impl._M_start;
  pIVar3 = (this->
           super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).
           _M_impl._M_finish;
  uVar12 = (int)pIVar3 - (int)pIVar2 >> 6;
  if (uVar12 == 0) {
    local_34 = 1;
LAB_0013b3d7:
    uVar12 = local_34 << 6;
  }
  else {
    local_34 = uVar12 * 2;
    if ((uVar12 <= local_34) && (local_34 < 0x4000000)) {
      local_30 = (pointer)0x0;
      if (local_34 == 0) goto LAB_0013b145;
      goto LAB_0013b3d7;
    }
    local_34 = 0x3ffffff;
    uVar12 = 0xffffffc0;
  }
  local_30 = (pointer)operator_new(uVar12);
LAB_0013b145:
  puVar17 = (uint *)(((int)__position._M_current - (int)pIVar2) + (int)local_30);
  *puVar17 = (__args_0->input_section_).shndx_;
  puVar17[1] = (__args_0->input_section_).p2align_;
  puVar17[2] = *(uint *)&(__args_0->input_section_).u1_;
  puVar17[3] = *(uint *)((int)&(__args_0->input_section_).u1_ + 4);
  *(anon_union_4_4_139239c7_for_u2_ *)(puVar17 + 4) = (__args_0->input_section_).u2_;
  puVar17[5] = (__args_0->input_section_).section_order_index_;
  puVar17[6] = (uint)(puVar17 + 8);
  pcVar4 = (__args_0->section_name_)._M_dataplus._M_p;
                    /* try { // try from 0013b185 to 0013b189 has its CatchHandler @ 0013b3f0 */
  __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>
            ((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(puVar17 + 6),
             pcVar4,pcVar4 + (__args_0->section_name_)._M_string_length,0);
  uVar12 = *(uint *)((int)&__args_0->size_ + 4);
  puVar17[0xc] = (uint)__args_0->size_;
  uVar11 = __args_0->addralign_;
  puVar17[0xd] = uVar12;
  uVar12 = *(uint *)((int)&__args_0->addralign_ + 4);
  puVar17[0xe] = (uint)uVar11;
  puVar17[0xf] = uVar12;
  pIVar14 = local_30;
  if (__position._M_current != pIVar2) {
    iVar1 = ((uint)((int)__position._M_current + (-0x40 - (int)pIVar2)) >> 6) + 1;
    paVar13 = &(pIVar2->section_name_).field_2;
    do {
      (pIVar14->input_section_).shndx_ = paVar13[-2]._M_allocated_capacity;
      (pIVar14->input_section_).p2align_ = *(uint *)((int)paVar13 + -0x1c);
      *(undefined4 *)&(pIVar14->input_section_).u1_ = *(undefined4 *)((int)paVar13 + -0x18);
      *(undefined4 *)((int)&(pIVar14->input_section_).u1_ + 4) =
           *(undefined4 *)((int)paVar13 + -0x14);
      (pIVar14->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1);
      uVar12 = *(uint *)((int)paVar13 + -0xc);
      (pIVar14->section_name_)._M_dataplus._M_p = (pointer)&(pIVar14->section_name_).field_2;
      (pIVar14->input_section_).section_order_index_ = uVar12;
      pcVar4 = (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)pcVar4 == paVar13) {
        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;
        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 4) =
             *(undefined4 *)((int)paVar13 + 4);
        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 8) =
             *(undefined4 *)((int)paVar13 + 8);
        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 0xc) =
             *(undefined4 *)((int)paVar13 + 0xc);
      }
      else {
        (pIVar14->section_name_)._M_dataplus._M_p = pcVar4;
        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;
      }
      uVar5 = *(undefined4 *)((int)paVar13 + 0x14);
      pIVar18 = pIVar14 + 1;
      (pIVar14->section_name_)._M_string_length = *(size_type *)((int)paVar13 + -4);
      uVar6 = paVar13[1]._M_allocated_capacity;
      (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p = (pointer)paVar13;
      *(size_type *)((int)paVar13 + -4) = 0;
      paVar13->_M_local_buf[0] = '\0';
      *(undefined4 *)&pIVar14->size_ = uVar6;
      *(undefined4 *)((int)&pIVar14->size_ + 4) = uVar5;
      uVar5 = *(undefined4 *)((int)paVar13 + 0x1c);
      *(undefined4 *)&pIVar14->addralign_ = *(undefined4 *)((int)paVar13 + 0x18);
      *(undefined4 *)((int)&pIVar14->addralign_ + 4) = uVar5;
      paVar13 = paVar13 + 4;
      pIVar14 = pIVar18;
    } while (pIVar18 != local_30 + iVar1);
    pIVar14 = local_30 + iVar1;
  }
  pIVar18 = pIVar14 + 1;
  pIVar10 = pIVar2;
  if (__position._M_current != pIVar3) {
    uVar12 = (uint)((int)pIVar3 + (-0x40 - (int)__position._M_current)) >> 6;
    paVar13 = &((__position._M_current)->section_name_).field_2;
    pIVar16 = pIVar18;
    do {
      sVar8 = paVar13[-2]._M_allocated_capacity;
      (pIVar16->section_name_)._M_dataplus._M_p = (pointer)&(pIVar16->section_name_).field_2;
      (pIVar16->input_section_).shndx_ = sVar8;
      (pIVar16->input_section_).p2align_ = *(size_type *)((int)paVar13 + -0x1c);
      *(size_type *)&(pIVar16->input_section_).u1_ = *(size_type *)((int)paVar13 + -0x18);
      *(size_type *)((int)&(pIVar16->input_section_).u1_ + 4) = *(size_type *)((int)paVar13 + -0x14)
      ;
      (pIVar16->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1);
      (pIVar16->input_section_).section_order_index_ = *(size_type *)((int)paVar13 + -0xc);
      psVar9 = (size_type *)(((string *)((int)paVar13 + -8))->_M_dataplus)._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)psVar9 == paVar13) {
        (pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;
        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 4) =
             *(size_type *)((int)paVar13 + 4);
        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 8) =
             *(size_type *)((int)paVar13 + 8);
        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 0xc) =
             *(size_type *)((int)paVar13 + 0xc);
      }
      else {
        (pIVar16->section_name_)._M_dataplus._M_p = (pointer)psVar9;
        (pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;
      }
      sVar8 = *(size_type *)((int)paVar13 + -4);
      sVar7 = *(size_type *)((int)paVar13 + 0x14);
      (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p = (pointer)paVar13;
      pIVar15 = pIVar16 + 1;
      *(size_type *)((int)paVar13 + -4) = 0;
      (pIVar16->section_name_)._M_string_length = sVar8;
      sVar8 = paVar13[1]._M_allocated_capacity;
      *(size_type *)((int)&pIVar16->size_ + 4) = sVar7;
      sVar7 = *(size_type *)((int)paVar13 + 0x1c);
      *(size_type *)&pIVar16->size_ = sVar8;
      paVar13->_M_local_buf[0] = '\0';
      *(size_type *)&pIVar16->addralign_ = *(size_type *)((int)paVar13 + 0x18);
      *(size_type *)((int)&pIVar16->addralign_ + 4) = sVar7;
      paVar13 = paVar13 + 4;
      pIVar16 = pIVar15;
    } while (pIVar15 != pIVar14 + uVar12 + 2);
    pIVar18 = pIVar18 + uVar12 + 1;
  }
  for (; pIVar10 != pIVar3; pIVar10 = pIVar10 + 1) {
    pcVar4 = (pIVar10->section_name_)._M_dataplus._M_p;
    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
         *)pcVar4 != &(pIVar10->section_name_).field_2) {
      operator_delete(pcVar4);
    }
  }
  if (pIVar2 != (pointer)0x0) {
    operator_delete(pIVar2);
  }
  (this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).
  _M_impl._M_finish = pIVar18;
  (this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).
  _M_impl._M_start = local_30;
  (this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).
  _M_impl._M_end_of_storage = local_30 + local_34;
  return;
}



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

void FUN_0013b0e0(int *param_1,int param_2,undefined4 *param_3)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  uint uVar5;
  int iVar6;
  undefined4 *puVar7;
  undefined4 *puVar8;
  undefined4 *puVar9;
  undefined4 *puVar10;
  undefined4 *puVar11;
  uint local_34;
  undefined4 *local_30;
  
  iVar1 = *param_1;
  iVar2 = param_1[1];
  uVar5 = iVar2 - iVar1 >> 6;
  if (uVar5 == 0) {
    local_34 = 1;
LAB_0013b3d7:
    iVar6 = local_34 << 6;
  }
  else {
    local_34 = uVar5 * 2;
    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {
      local_30 = (undefined4 *)0x0;
      if (local_34 == 0) goto LAB_0013b145;
      goto LAB_0013b3d7;
    }
    local_34 = 0x3ffffff;
    iVar6 = -0x40;
  }
  local_30 = (undefined4 *)FUN_001aa8c0(iVar6);
LAB_0013b145:
  puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30);
  *puVar11 = *param_3;
  puVar11[1] = param_3[1];
  puVar11[2] = param_3[2];
  puVar11[3] = param_3[3];
  puVar11[4] = param_3[4];
  puVar11[5] = param_3[5];
  puVar11[6] = puVar11 + 8;
                    /* try { // try from 0013b185 to 0013b189 has its CatchHandler @ 0013b3f0 */
  FUN_0007c4c0(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0);
  uVar3 = param_3[0xd];
  puVar11[0xc] = param_3[0xc];
  uVar4 = param_3[0xe];
  puVar11[0xd] = uVar3;
  uVar3 = param_3[0xf];
  puVar11[0xe] = uVar4;
  puVar11[0xf] = uVar3;
  puVar11 = local_30;
  if (param_2 != iVar1) {
    iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;
    puVar11 = (undefined4 *)(iVar1 + 0x20);
    puVar8 = local_30;
    do {
      *puVar8 = puVar11[-8];
      puVar8[1] = puVar11[-7];
      puVar8[2] = puVar11[-6];
      puVar8[3] = puVar11[-5];
      puVar8[4] = puVar11[-4];
      uVar3 = puVar11[-3];
      puVar8[6] = puVar8 + 8;
      puVar8[5] = uVar3;
      if ((undefined4 *)puVar11[-2] == puVar11) {
        puVar8[8] = *puVar11;
        puVar8[9] = puVar11[1];
        puVar8[10] = puVar11[2];
        puVar8[0xb] = puVar11[3];
      }
      else {
        puVar8[6] = (undefined4 *)puVar11[-2];
        puVar8[8] = *puVar11;
      }
      uVar3 = puVar11[5];
      puVar7 = puVar8 + 0x10;
      puVar8[7] = puVar11[-1];
      puVar11[-2] = puVar11;
      puVar11[-1] = 0;
      *(undefined1 *)puVar11 = 0;
      puVar8[0xc] = puVar11[4];
      puVar8[0xd] = uVar3;
      uVar3 = puVar11[7];
      puVar8[0xe] = puVar11[6];
      puVar8[0xf] = uVar3;
      puVar11 = puVar11 + 0x10;
      puVar8 = puVar7;
    } while (puVar7 != local_30 + iVar6 * 0x10);
    puVar11 = local_30 + iVar6 * 0x10;
  }
  puVar8 = puVar11 + 0x10;
  iVar6 = iVar1;
  if (param_2 != iVar2) {
    uVar5 = (iVar2 - param_2) - 0x40U >> 6;
    puVar7 = (undefined4 *)(param_2 + 0x20);
    puVar10 = puVar8;
    do {
      uVar3 = puVar7[-8];
      puVar10[6] = puVar10 + 8;
      *puVar10 = uVar3;
      puVar10[1] = puVar7[-7];
      puVar10[2] = puVar7[-6];
      puVar10[3] = puVar7[-5];
      puVar10[4] = puVar7[-4];
      puVar10[5] = puVar7[-3];
      if ((undefined4 *)puVar7[-2] == puVar7) {
        puVar10[8] = *puVar7;
        puVar10[9] = puVar7[1];
        puVar10[10] = puVar7[2];
        puVar10[0xb] = puVar7[3];
      }
      else {
        puVar10[6] = (undefined4 *)puVar7[-2];
        puVar10[8] = *puVar7;
      }
      uVar3 = puVar7[-1];
      uVar4 = puVar7[5];
      puVar7[-2] = puVar7;
      puVar9 = puVar10 + 0x10;
      puVar7[-1] = 0;
      puVar10[7] = uVar3;
      uVar3 = puVar7[4];
      puVar10[0xd] = uVar4;
      uVar4 = puVar7[7];
      puVar10[0xc] = uVar3;
      *(undefined1 *)puVar7 = 0;
      puVar10[0xe] = puVar7[6];
      puVar10[0xf] = uVar4;
      puVar7 = puVar7 + 0x10;
      puVar10 = puVar9;
    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);
    puVar8 = puVar8 + (uVar5 + 1) * 0x10;
  }
  for (; iVar6 != iVar2; iVar6 = iVar6 + 0x40) {
    if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {
      FUN_001ac470(*(int *)(iVar6 + 0x18));
    }
  }
  if (iVar1 != 0) {
    FUN_001ac470(iVar1);
  }
  param_1[1] = (int)puVar8;
  *param_1 = (int)local_30;
  param_1[2] = (int)(local_30 + local_34 * 0x10);
  return;
}


CALL 0x00058c42
ADD EAX,0x203f1b
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x2c
MOV EBX,dword ptr [EBP + 0xc]
MOV EDI,dword ptr [EBP + 0x10]
MOV dword ptr [EBP + -0x20],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV ESI,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x4]
MOV dword ptr [EBP + -0x24],EAX
SUB EAX,ESI
SUB EBX,ESI
SAR EAX,0x6
MOV dword ptr [EBP + -0x28],ESI
MOV ESI,EBX
JZ 0x0013b3d0
LEA EBX,[EAX + EAX*0x1]
MOV dword ptr [EBP + -0x30],EBX
CMP EAX,EBX
JBE 0x0013b3b0
MOV dword ptr [EBP + -0x30],0x3ffffff
MOV EAX,0xffffffc0
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x20]
PUSH EAX
CALL 0x001aa8c0
ADD ESP,0x10
MOV dword ptr [EBP + -0x2c],EAX
MOV EBX,dword ptr [EBP + -0x2c]
MOV EAX,dword ptr [EDI]
ADD ESI,EBX
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [EDI + 0x4]
LEA EDX,[ESI + 0x18]
MOV dword ptr [ESI + 0x4],EAX
MOV EAX,dword ptr [EDI + 0x8]
MOV dword ptr [ESI + 0x8],EAX
MOV EAX,dword ptr [EDI + 0xc]
MOV dword ptr [ESI + 0xc],EAX
MOV EAX,dword ptr [EDI + 0x10]
MOV dword ptr [ESI + 0x10],EAX
MOV EAX,dword ptr [EDI + 0x14]
MOV dword ptr [ESI + 0x14],EAX
LEA EAX,[ESI + 0x20]
MOV dword ptr [ESI + 0x18],EAX
MOV dword ptr [EBP + -0x1c],EAX
MOV EAX,dword ptr [EDI + 0x18]
PUSH 0x0
MOV ECX,dword ptr [EDI + 0x1c]
ADD ECX,EAX
PUSH ECX
PUSH EAX
PUSH EDX
CALL 0x0007c4c0
MOV EAX,dword ptr [EDI + 0x30]
MOV EDX,dword ptr [EDI + 0x34]
ADD ESP,0x10
MOV dword ptr [ESI + 0x30],EAX
MOV EAX,dword ptr [EDI + 0x38]
MOV dword ptr [ESI + 0x34],EDX
MOV EDX,dword ptr [EDI + 0x3c]
MOV dword ptr [ESI + 0x38],EAX
MOV EDI,dword ptr [EBP + -0x28]
MOV dword ptr [ESI + 0x3c],EDX
CMP dword ptr [EBP + 0xc],EDI
JZ 0x0013b3e8
MOV ESI,dword ptr [EBP + 0xc]
LEA EAX,[EDI + 0x20]
MOV EDX,EBX
SUB ESI,0x40
SUB ESI,EDI
SHR ESI,0x6
LEA EDI,[ESI + 0x1]
MOV ESI,EDI
SHL ESI,0x6
ADD ESI,EBX
JMP 0x0013b20e
MOV dword ptr [EDX + 0x18],ECX
MOV ECX,dword ptr [EAX]
MOV dword ptr [EDX + 0x20],ECX
MOV ECX,dword ptr [EAX + -0x4]
MOV EBX,dword ptr [EAX + 0x14]
ADD EDX,0x40
MOV dword ptr [EDX + -0x24],ECX
MOV ECX,dword ptr [EAX + 0x10]
MOV dword ptr [EAX + -0x8],EAX
ADD EAX,0x40
MOV dword ptr [EAX + -0x44],0x0
MOV byte ptr [EAX + -0x40],0x0
MOV dword ptr [EDX + -0x10],ECX
MOV dword ptr [EDX + -0xc],EBX
MOV ECX,dword ptr [EAX + -0x28]
MOV EBX,dword ptr [EAX + -0x24]
MOV dword ptr [EDX + -0x8],ECX
MOV dword ptr [EDX + -0x4],EBX
CMP EDX,ESI
JZ 0x0013b260
MOV ECX,dword ptr [EAX + -0x20]
LEA EBX,[EDX + 0x20]
MOV dword ptr [EDX],ECX
MOV ECX,dword ptr [EAX + -0x1c]
MOV dword ptr [EDX + 0x4],ECX
MOV ECX,dword ptr [EAX + -0x18]
MOV dword ptr [EDX + 0x8],ECX
MOV ECX,dword ptr [EAX + -0x14]
MOV dword ptr [EDX + 0xc],ECX
MOV ECX,dword ptr [EAX + -0x10]
MOV dword ptr [EDX + 0x10],ECX
MOV ECX,dword ptr [EAX + -0xc]
MOV dword ptr [EDX + 0x18],EBX
MOV dword ptr [EDX + 0x14],ECX
MOV ECX,dword ptr [EAX + -0x8]
CMP ECX,EAX
JNZ 0x0013b1d0
MOV ECX,dword ptr [EAX]
MOV dword ptr [EDX + 0x20],ECX
MOV ECX,dword ptr [EAX + 0x4]
MOV dword ptr [EDX + 0x24],ECX
MOV ECX,dword ptr [EAX + 0x8]
MOV dword ptr [EDX + 0x28],ECX
MOV ECX,dword ptr [EAX + 0xc]
MOV dword ptr [EDX + 0x2c],ECX
JMP 0x0013b1d8
MOV EAX,EDI
MOV EDX,dword ptr [EBP + -0x2c]
SHL EAX,0x6
ADD EDX,EAX
LEA ESI,[EDX + 0x40]
MOV EAX,dword ptr [EBP + -0x24]
CMP dword ptr [EBP + 0xc],EAX
JZ 0x0013b33a
MOV ECX,dword ptr [EBP + -0x24]
SUB ECX,dword ptr [EBP + 0xc]
LEA EBX,[ECX + -0x40]
MOV EAX,dword ptr [EBP + 0xc]
SHR EBX,0x6
LEA EDI,[EBX + 0x2]
ADD EAX,0x20
SHL EDI,0x6
ADD EDX,EDI
MOV EDI,EDX
MOV EDX,ESI
MOV dword ptr [EBP + -0x1c],EDI
MOV EDI,EBX
JMP 0x0013b2df
MOV dword ptr [EDX + 0x18],ECX
MOV ECX,dword ptr [EAX]
MOV dword ptr [EDX + 0x20],ECX
MOV ECX,dword ptr [EAX + -0x4]
MOV EBX,dword ptr [EAX + 0x14]
MOV dword ptr [EAX + -0x8],EAX
ADD EDX,0x40
MOV dword ptr [EAX + -0x4],0x0
ADD EAX,0x40
MOV dword ptr [EDX + -0x24],ECX
MOV ECX,dword ptr [EAX + -0x30]
MOV dword ptr [EDX + -0xc],EBX
MOV EBX,dword ptr [EAX + -0x24]
MOV dword ptr [EDX + -0x10],ECX
MOV ECX,dword ptr [EAX + -0x28]
MOV byte ptr [EAX + -0x40],0x0
MOV dword ptr [EDX + -0x8],ECX
MOV dword ptr [EDX + -0x4],EBX
CMP EDX,dword ptr [EBP + -0x1c]
JZ 0x0013b330
MOV ECX,dword ptr [EAX + -0x20]
LEA EBX,[EDX + 0x20]
MOV dword ptr [EDX + 0x18],EBX
MOV dword ptr [EDX],ECX
MOV ECX,dword ptr [EAX + -0x1c]
MOV dword ptr [EDX + 0x4],ECX
MOV ECX,dword ptr [EAX + -0x18]
MOV dword ptr [EDX + 0x8],ECX
MOV ECX,dword ptr [EAX + -0x14]
MOV dword ptr [EDX + 0xc],ECX
MOV ECX,dword ptr [EAX + -0x10]
MOV dword ptr [EDX + 0x10],ECX
MOV ECX,dword ptr [EAX + -0xc]
MOV dword ptr [EDX + 0x14],ECX
MOV ECX,dword ptr [EAX + -0x8]
CMP ECX,EAX
JNZ 0x0013b2a0
MOV ECX,dword ptr [EAX]
MOV dword ptr [EDX + 0x20],ECX
MOV ECX,dword ptr [EAX + 0x4]
MOV dword ptr [EDX + 0x24],ECX
MOV ECX,dword ptr [EAX + 0x8]
MOV dword ptr [EDX + 0x28],ECX
MOV ECX,dword ptr [EAX + 0xc]
MOV dword ptr [EDX + 0x2c],ECX
JMP 0x0013b2a8
MOV EBX,EDI
ADD EBX,0x1
SHL EBX,0x6
ADD ESI,EBX
MOV EAX,dword ptr [EBP + -0x28]
MOV EBX,dword ptr [EBP + -0x24]
MOV EDI,EAX
CMP EAX,EBX
JZ 0x0013b371
MOV EAX,dword ptr [EBP + -0x24]
MOV dword ptr [EBP + -0x1c],EAX
LEA ESI,[ESI]
MOV EAX,dword ptr [EDI + 0x18]
LEA EDX,[EDI + 0x20]
CMP EAX,EDX
JZ 0x0013b369
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x20]
PUSH EAX
CALL 0x001ac470
ADD ESP,0x10
ADD EDI,0x40
CMP EDI,dword ptr [EBP + -0x1c]
JNZ 0x0013b350
MOV EAX,dword ptr [EBP + -0x28]
TEST EAX,EAX
JZ 0x0013b389
SUB ESP,0xc
PUSH dword ptr [EBP + -0x28]
MOV EBX,dword ptr [EBP + -0x20]
CALL 0x001ac470
ADD ESP,0x10
MOV EAX,dword ptr [EBP + 0x8]
MOV EDI,dword ptr [EBP + -0x2c]
MOV dword ptr [EAX + 0x4],ESI
MOV ESI,dword ptr [EBP + 0x8]
MOV dword ptr [EAX],EDI
MOV EAX,dword ptr [EBP + -0x30]
SHL EAX,0x6
ADD EAX,EDI
MOV dword ptr [ESI + 0x8],EAX
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP EBX,0x3ffffff
JA 0x0013b127
MOV dword ptr [EBP + -0x2c],0x0
TEST EBX,EBX
JZ 0x0013b145
JMP 0x0013b3d7
MOV dword ptr [EBP + -0x30],0x1
MOV EAX,dword ptr [EBP + -0x30]
SHL EAX,0x6
JMP 0x0013b133
MOV EDX,dword ptr [EBP + -0x2c]
JMP 0x0013b26a
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_0013b0e0(int *param_1,int param_2,undefined4 *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *puVar11;\n  uint local_34;\n  undefined4 *local_30;\n  \n  iVar1 = *param_1;\n  iVar2 = param_1[1];\n  uVar5 = iVar2 - iVar1 >> 6;\n  if (uVar5 == 0) {\n    local_34 = 1;\nLAB_0013b3d7:\n    iVar6 = local_34 << 6;\n  }\n  else {\n    local_34 = uVar5 * 2;\n    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    iVar6 = -0x40;\n  }\n  local_30 = (undefined4 *)FUN_001aa8c0(iVar6);\nLAB_0013b145:\n  puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30);\n  *puVar11 = *param_3;\n  puVar11[1] = param_3[1];\n  puVar11[2] = param_3[2];\n  puVar11[3] = param_3[3];\n  puVar11[4] = param_3[4];\n  puVar11[5] = param_3[5];\n  puVar11[6] = puVar11 + 8;\n                    /* try { // try from 0013b185 to 0013b189 has its CatchHandler @ 0013b3f0 */\n  FUN_0007c4c0(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0);\n  uVar3 = param_3[0xd];\n  puVar11[0xc] = param_3[0xc];\n  uVar4 = param_3[0xe];\n  puVar11[0xd] = uVar3;\n  uVar3 = param_3[0xf];\n  puVar11[0xe] = uVar4;\n  puVar11[0xf] = uVar3;\n  puVar11 = local_30;\n  if (param_2 != iVar1) {\n    iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;\n    puVar11 = (undefined4 *)(iVar1 + 0x20);\n    puVar8 = local_30;\n    do {\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    } while (puVar7 != local_30 + iVar6 * 0x10);\n    puVar11 = local_30 + iVar6 * 0x10;\n  }\n  puVar8 = puVar11 + 0x10;\n  iVar6 = iVar1;\n  if (param_2 != iVar2) {\n    uVar5 = (iVar2 - param_2) - 0x40U >> 6;\n    puVar7 = (undefined4 *)(param_2 + 0x20);\n    puVar10 = puVar8;\n    do {\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);\n    puVar8 = puVar8 + (uVar5 + 1) * 0x10;\n  }\n  for (; iVar6 != iVar2; iVar6 = iVar6 + 0x40) {\n    if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }\n  }\n  if (iVar1 != 0) {\n    FUN_001ac470(iVar1);\n  }\n  param_1[1] = (int)puVar8;\n  *param_1 = (int)local_30;\n  param_1[2] = (int)(local_30 + local_34 * 0x10);\n  return;\n}\n\n" comment (function_definition "void FUN_0013b0e0(int *param_1,int param_2,undefined4 *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *puVar11;\n  uint local_34;\n  undefined4 *local_30;\n  \n  iVar1 = *param_1;\n  iVar2 = param_1[1];\n  uVar5 = iVar2 - iVar1 >> 6;\n  if (uVar5 == 0) {\n    local_34 = 1;\nLAB_0013b3d7:\n    iVar6 = local_34 << 6;\n  }\n  else {\n    local_34 = uVar5 * 2;\n    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    iVar6 = -0x40;\n  }\n  local_30 = (undefined4 *)FUN_001aa8c0(iVar6);\nLAB_0013b145:\n  puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30);\n  *puVar11 = *param_3;\n  puVar11[1] = param_3[1];\n  puVar11[2] = param_3[2];\n  puVar11[3] = param_3[3];\n  puVar11[4] = param_3[4];\n  puVar11[5] = param_3[5];\n  puVar11[6] = puVar11 + 8;\n                    /* try { // try from 0013b185 to 0013b189 has its CatchHandler @ 0013b3f0 */\n  FUN_0007c4c0(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0);\n  uVar3 = param_3[0xd];\n  puVar11[0xc] = param_3[0xc];\n  uVar4 = param_3[0xe];\n  puVar11[0xd] = uVar3;\n  uVar3 = param_3[0xf];\n  puVar11[0xe] = uVar4;\n  puVar11[0xf] = uVar3;\n  puVar11 = local_30;\n  if (param_2 != iVar1) {\n    iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;\n    puVar11 = (undefined4 *)(iVar1 + 0x20);\n    puVar8 = local_30;\n    do {\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    } while (puVar7 != local_30 + iVar6 * 0x10);\n    puVar11 = local_30 + iVar6 * 0x10;\n  }\n  puVar8 = puVar11 + 0x10;\n  iVar6 = iVar1;\n  if (param_2 != iVar2) {\n    uVar5 = (iVar2 - param_2) - 0x40U >> 6;\n    puVar7 = (undefined4 *)(param_2 + 0x20);\n    puVar10 = puVar8;\n    do {\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);\n    puVar8 = puVar8 + (uVar5 + 1) * 0x10;\n  }\n  for (; iVar6 != iVar2; iVar6 = iVar6 + 0x40) {\n    if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }\n  }\n  if (iVar1 != 0) {\n    FUN_001ac470(iVar1);\n  }\n  param_1[1] = (int)puVar8;\n  *param_1 = (int)local_30;\n  param_1[2] = (int)(local_30 + local_34 * 0x10);\n  return;\n}" primitive_type (function_declarator "FUN_0013b0e0(int *param_1,int param_2,undefined4 *param_3)" identifier (parameter_list "(int *param_1,int param_2,undefined4 *param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *puVar11;\n  uint local_34;\n  undefined4 *local_30;\n  \n  iVar1 = *param_1;\n  iVar2 = param_1[1];\n  uVar5 = iVar2 - iVar1 >> 6;\n  if (uVar5 == 0) {\n    local_34 = 1;\nLAB_0013b3d7:\n    iVar6 = local_34 << 6;\n  }\n  else {\n    local_34 = uVar5 * 2;\n    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    iVar6 = -0x40;\n  }\n  local_30 = (undefined4 *)FUN_001aa8c0(iVar6);\nLAB_0013b145:\n  puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30);\n  *puVar11 = *param_3;\n  puVar11[1] = param_3[1];\n  puVar11[2] = param_3[2];\n  puVar11[3] = param_3[3];\n  puVar11[4] = param_3[4];\n  puVar11[5] = param_3[5];\n  puVar11[6] = puVar11 + 8;\n                    /* try { // try from 0013b185 to 0013b189 has its CatchHandler @ 0013b3f0 */\n  FUN_0007c4c0(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0);\n  uVar3 = param_3[0xd];\n  puVar11[0xc] = param_3[0xc];\n  uVar4 = param_3[0xe];\n  puVar11[0xd] = uVar3;\n  uVar3 = param_3[0xf];\n  puVar11[0xe] = uVar4;\n  puVar11[0xf] = uVar3;\n  puVar11 = local_30;\n  if (param_2 != iVar1) {\n    iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;\n    puVar11 = (undefined4 *)(iVar1 + 0x20);\n    puVar8 = local_30;\n    do {\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    } while (puVar7 != local_30 + iVar6 * 0x10);\n    puVar11 = local_30 + iVar6 * 0x10;\n  }\n  puVar8 = puVar11 + 0x10;\n  iVar6 = iVar1;\n  if (param_2 != iVar2) {\n    uVar5 = (iVar2 - param_2) - 0x40U >> 6;\n    puVar7 = (undefined4 *)(param_2 + 0x20);\n    puVar10 = puVar8;\n    do {\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);\n    puVar8 = puVar8 + (uVar5 + 1) * 0x10;\n  }\n  for (; iVar6 != iVar2; iVar6 = iVar6 + 0x40) {\n    if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }\n  }\n  if (iVar1 != 0) {\n    FUN_001ac470(iVar1);\n  }\n  param_1[1] = (int)puVar8;\n  *param_1 = (int)local_30;\n  param_1[2] = (int)(local_30 + local_34 * 0x10);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "undefined4 *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (expression_statement "iVar1 = *param_1;" (assignment_expression "iVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar2 = param_1[1];" (assignment_expression "iVar2 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = iVar2 - iVar1 >> 6;" (assignment_expression "uVar5 = iVar2 - iVar1 >> 6" identifier = (binary_expression "iVar2 - iVar1 >> 6" (binary_expression "iVar2 - iVar1" identifier - identifier) >> number_literal)) ;) (if_statement "if (uVar5 == 0) {\n    local_34 = 1;\nLAB_0013b3d7:\n    iVar6 = local_34 << 6;\n  }\n  else {\n    local_34 = uVar5 * 2;\n    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    iVar6 = -0x40;\n  }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    local_34 = 1;\nLAB_0013b3d7:\n    iVar6 = local_34 << 6;\n  }" { (expression_statement "local_34 = 1;" (assignment_expression "local_34 = 1" identifier = number_literal) ;) (labeled_statement "LAB_0013b3d7:\n    iVar6 = local_34 << 6;" statement_identifier : (expression_statement "iVar6 = local_34 << 6;" (assignment_expression "iVar6 = local_34 << 6" identifier = (binary_expression "local_34 << 6" identifier << number_literal)) ;)) }) (else_clause "else {\n    local_34 = uVar5 * 2;\n    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    iVar6 = -0x40;\n  }" else (compound_statement "{\n    local_34 = uVar5 * 2;\n    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    iVar6 = -0x40;\n  }" { (expression_statement "local_34 = uVar5 * 2;" (assignment_expression "local_34 = uVar5 * 2" identifier = (binary_expression "uVar5 * 2" identifier * number_literal)) ;) (if_statement "if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }" if (parenthesized_expression "((uVar5 <= local_34) && (local_34 < 0x4000000))" ( (binary_expression "(uVar5 <= local_34) && (local_34 < 0x4000000)" (parenthesized_expression "(uVar5 <= local_34)" ( (binary_expression "uVar5 <= local_34" identifier <= identifier) )) && (parenthesized_expression "(local_34 < 0x4000000)" ( (binary_expression "local_34 < 0x4000000" identifier < number_literal) ))) )) (compound_statement "{\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }" { (expression_statement "local_30 = (undefined4 *)0x0;" (assignment_expression "local_30 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (local_34 == 0) goto LAB_0013b145;" if (parenthesized_expression "(local_34 == 0)" ( (binary_expression "local_34 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0013b145;" goto statement_identifier ;)) (goto_statement "goto LAB_0013b3d7;" goto statement_identifier ;) })) (expression_statement "local_34 = 0x3ffffff;" (assignment_expression "local_34 = 0x3ffffff" identifier = number_literal) ;) (expression_statement "iVar6 = -0x40;" (assignment_expression "iVar6 = -0x40" identifier = number_literal) ;) }))) (expression_statement "local_30 = (undefined4 *)FUN_001aa8c0(iVar6);" (assignment_expression "local_30 = (undefined4 *)FUN_001aa8c0(iVar6)" identifier = (cast_expression "(undefined4 *)FUN_001aa8c0(iVar6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))))) ;) (labeled_statement "LAB_0013b145:\n  puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30);" statement_identifier : (expression_statement "puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30);" (assignment_expression "puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30)" identifier = (cast_expression "(undefined4 *)((param_2 - iVar1) + (int)local_30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((param_2 - iVar1) + (int)local_30)" ( (binary_expression "(param_2 - iVar1) + (int)local_30" (parenthesized_expression "(param_2 - iVar1)" ( (binary_expression "param_2 - iVar1" identifier - identifier) )) + (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;)) (expression_statement "*puVar11 = *param_3;" (assignment_expression "*puVar11 = *param_3" (pointer_expression "*puVar11" * identifier) = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "puVar11[1] = param_3[1];" (assignment_expression "puVar11[1] = param_3[1]" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "puVar11[2] = param_3[2];" (assignment_expression "puVar11[2] = param_3[2]" (subscript_expression "puVar11[2]" identifier [ number_literal ]) = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (expression_statement "puVar11[3] = param_3[3];" (assignment_expression "puVar11[3] = param_3[3]" (subscript_expression "puVar11[3]" identifier [ number_literal ]) = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (expression_statement "puVar11[4] = param_3[4];" (assignment_expression "puVar11[4] = param_3[4]" (subscript_expression "puVar11[4]" identifier [ number_literal ]) = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (expression_statement "puVar11[5] = param_3[5];" (assignment_expression "puVar11[5] = param_3[5]" (subscript_expression "puVar11[5]" identifier [ number_literal ]) = (subscript_expression "param_3[5]" identifier [ number_literal ])) ;) (expression_statement "puVar11[6] = puVar11 + 8;" (assignment_expression "puVar11[6] = puVar11 + 8" (subscript_expression "puVar11[6]" identifier [ number_literal ]) = (binary_expression "puVar11 + 8" identifier + number_literal)) ;) comment (expression_statement "FUN_0007c4c0(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0);" (call_expression "FUN_0007c4c0(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0)" identifier (argument_list "(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0)" ( (binary_expression "puVar11 + 6" identifier + number_literal) , (subscript_expression "param_3[6]" identifier [ number_literal ]) , (binary_expression "param_3[7] + param_3[6]" (subscript_expression "param_3[7]" identifier [ number_literal ]) + (subscript_expression "param_3[6]" identifier [ number_literal ])) , number_literal ))) ;) (expression_statement "uVar3 = param_3[0xd];" (assignment_expression "uVar3 = param_3[0xd]" identifier = (subscript_expression "param_3[0xd]" identifier [ number_literal ])) ;) (expression_statement "puVar11[0xc] = param_3[0xc];" (assignment_expression "puVar11[0xc] = param_3[0xc]" (subscript_expression "puVar11[0xc]" identifier [ number_literal ]) = (subscript_expression "param_3[0xc]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_3[0xe];" (assignment_expression "uVar4 = param_3[0xe]" identifier = (subscript_expression "param_3[0xe]" identifier [ number_literal ])) ;) (expression_statement "puVar11[0xd] = uVar3;" (assignment_expression "puVar11[0xd] = uVar3" (subscript_expression "puVar11[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar3 = param_3[0xf];" (assignment_expression "uVar3 = param_3[0xf]" identifier = (subscript_expression "param_3[0xf]" identifier [ number_literal ])) ;) (expression_statement "puVar11[0xe] = uVar4;" (assignment_expression "puVar11[0xe] = uVar4" (subscript_expression "puVar11[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[0xf] = uVar3;" (assignment_expression "puVar11[0xf] = uVar3" (subscript_expression "puVar11[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11 = local_30;" (assignment_expression "puVar11 = local_30" identifier = identifier) ;) (if_statement "if (param_2 != iVar1) {\n    iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;\n    puVar11 = (undefined4 *)(iVar1 + 0x20);\n    puVar8 = local_30;\n    do {\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    } while (puVar7 != local_30 + iVar6 * 0x10);\n    puVar11 = local_30 + iVar6 * 0x10;\n  }" if (parenthesized_expression "(param_2 != iVar1)" ( (binary_expression "param_2 != iVar1" identifier != identifier) )) (compound_statement "{\n    iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;\n    puVar11 = (undefined4 *)(iVar1 + 0x20);\n    puVar8 = local_30;\n    do {\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    } while (puVar7 != local_30 + iVar6 * 0x10);\n    puVar11 = local_30 + iVar6 * 0x10;\n  }" { (expression_statement "iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;" (assignment_expression "iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1" identifier = (binary_expression "((uint)((param_2 + -0x40) - iVar1) >> 6) + 1" (parenthesized_expression "((uint)((param_2 + -0x40) - iVar1) >> 6)" ( (binary_expression "(uint)((param_2 + -0x40) - iVar1) >> 6" (call_expression "(uint)((param_2 + -0x40) - iVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((param_2 + -0x40) - iVar1)" ( (binary_expression "(param_2 + -0x40) - iVar1" (parenthesized_expression "(param_2 + -0x40)" ( (binary_expression "param_2 + -0x40" identifier + number_literal) )) - identifier) ))) >> number_literal) )) + number_literal)) ;) (expression_statement "puVar11 = (undefined4 *)(iVar1 + 0x20);" (assignment_expression "puVar11 = (undefined4 *)(iVar1 + 0x20)" identifier = (cast_expression "(undefined4 *)(iVar1 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x20)" ( (binary_expression "iVar1 + 0x20" identifier + number_literal) )))) ;) (expression_statement "puVar8 = local_30;" (assignment_expression "puVar8 = local_30" identifier = identifier) ;) (do_statement "do {\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    } while (puVar7 != local_30 + iVar6 * 0x10);" do (compound_statement "{\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    }" { (expression_statement "*puVar8 = puVar11[-8];" (assignment_expression "*puVar8 = puVar11[-8]" (pointer_expression "*puVar8" * identifier) = (subscript_expression "puVar11[-8]" identifier [ number_literal ])) ;) (expression_statement "puVar8[1] = puVar11[-7];" (assignment_expression "puVar8[1] = puVar11[-7]" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = (subscript_expression "puVar11[-7]" identifier [ number_literal ])) ;) (expression_statement "puVar8[2] = puVar11[-6];" (assignment_expression "puVar8[2] = puVar11[-6]" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = (subscript_expression "puVar11[-6]" identifier [ number_literal ])) ;) (expression_statement "puVar8[3] = puVar11[-5];" (assignment_expression "puVar8[3] = puVar11[-5]" (subscript_expression "puVar8[3]" identifier [ number_literal ]) = (subscript_expression "puVar11[-5]" identifier [ number_literal ])) ;) (expression_statement "puVar8[4] = puVar11[-4];" (assignment_expression "puVar8[4] = puVar11[-4]" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = (subscript_expression "puVar11[-4]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = puVar11[-3];" (assignment_expression "uVar3 = puVar11[-3]" identifier = (subscript_expression "puVar11[-3]" identifier [ number_literal ])) ;) (expression_statement "puVar8[6] = puVar8 + 8;" (assignment_expression "puVar8[6] = puVar8 + 8" (subscript_expression "puVar8[6]" identifier [ number_literal ]) = (binary_expression "puVar8 + 8" identifier + number_literal)) ;) (expression_statement "puVar8[5] = uVar3;" (assignment_expression "puVar8[5] = uVar3" (subscript_expression "puVar8[5]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }" if (parenthesized_expression "((undefined4 *)puVar11[-2] == puVar11)" ( (binary_expression "(undefined4 *)puVar11[-2] == puVar11" (cast_expression "(undefined4 *)puVar11[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar11[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }" { (expression_statement "puVar8[8] = *puVar11;" (assignment_expression "puVar8[8] = *puVar11" (subscript_expression "puVar8[8]" identifier [ number_literal ]) = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar8[9] = puVar11[1];" (assignment_expression "puVar8[9] = puVar11[1]" (subscript_expression "puVar8[9]" identifier [ number_literal ]) = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "puVar8[10] = puVar11[2];" (assignment_expression "puVar8[10] = puVar11[2]" (subscript_expression "puVar8[10]" identifier [ number_literal ]) = (subscript_expression "puVar11[2]" identifier [ number_literal ])) ;) (expression_statement "puVar8[0xb] = puVar11[3];" (assignment_expression "puVar8[0xb] = puVar11[3]" (subscript_expression "puVar8[0xb]" identifier [ number_literal ]) = (subscript_expression "puVar11[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }" else (compound_statement "{\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }" { (expression_statement "puVar8[6] = (undefined4 *)puVar11[-2];" (assignment_expression "puVar8[6] = (undefined4 *)puVar11[-2]" (subscript_expression "puVar8[6]" identifier [ number_literal ]) = (cast_expression "(undefined4 *)puVar11[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar11[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar8[8] = *puVar11;" (assignment_expression "puVar8[8] = *puVar11" (subscript_expression "puVar8[8]" identifier [ number_literal ]) = (pointer_expression "*puVar11" * identifier)) ;) }))) (expression_statement "uVar3 = puVar11[5];" (assignment_expression "uVar3 = puVar11[5]" identifier = (subscript_expression "puVar11[5]" identifier [ number_literal ])) ;) (expression_statement "puVar7 = puVar8 + 0x10;" (assignment_expression "puVar7 = puVar8 + 0x10" identifier = (binary_expression "puVar8 + 0x10" identifier + number_literal)) ;) (expression_statement "puVar8[7] = puVar11[-1];" (assignment_expression "puVar8[7] = puVar11[-1]" (subscript_expression "puVar8[7]" identifier [ number_literal ]) = (subscript_expression "puVar11[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar11[-2] = puVar11;" (assignment_expression "puVar11[-2] = puVar11" (subscript_expression "puVar11[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[-1] = 0;" (assignment_expression "puVar11[-1] = 0" (subscript_expression "puVar11[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar11 = 0;" (assignment_expression "*(undefined1 *)puVar11 = 0" (pointer_expression "*(undefined1 *)puVar11" * (cast_expression "(undefined1 *)puVar11" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar8[0xc] = puVar11[4];" (assignment_expression "puVar8[0xc] = puVar11[4]" (subscript_expression "puVar8[0xc]" identifier [ number_literal ]) = (subscript_expression "puVar11[4]" identifier [ number_literal ])) ;) (expression_statement "puVar8[0xd] = uVar3;" (assignment_expression "puVar8[0xd] = uVar3" (subscript_expression "puVar8[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar3 = puVar11[7];" (assignment_expression "uVar3 = puVar11[7]" identifier = (subscript_expression "puVar11[7]" identifier [ number_literal ])) ;) (expression_statement "puVar8[0xe] = puVar11[6];" (assignment_expression "puVar8[0xe] = puVar11[6]" (subscript_expression "puVar8[0xe]" identifier [ number_literal ]) = (subscript_expression "puVar11[6]" identifier [ number_literal ])) ;) (expression_statement "puVar8[0xf] = uVar3;" (assignment_expression "puVar8[0xf] = uVar3" (subscript_expression "puVar8[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11 = puVar11 + 0x10;" (assignment_expression "puVar11 = puVar11 + 0x10" identifier = (binary_expression "puVar11 + 0x10" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar7;" (assignment_expression "puVar8 = puVar7" identifier = identifier) ;) }) while (parenthesized_expression "(puVar7 != local_30 + iVar6 * 0x10)" ( (binary_expression "puVar7 != local_30 + iVar6 * 0x10" identifier != (binary_expression "local_30 + iVar6 * 0x10" identifier + (binary_expression "iVar6 * 0x10" identifier * number_literal))) )) ;) (expression_statement "puVar11 = local_30 + iVar6 * 0x10;" (assignment_expression "puVar11 = local_30 + iVar6 * 0x10" identifier = (binary_expression "local_30 + iVar6 * 0x10" identifier + (binary_expression "iVar6 * 0x10" identifier * number_literal))) ;) })) (expression_statement "puVar8 = puVar11 + 0x10;" (assignment_expression "puVar8 = puVar11 + 0x10" identifier = (binary_expression "puVar11 + 0x10" identifier + number_literal)) ;) (expression_statement "iVar6 = iVar1;" (assignment_expression "iVar6 = iVar1" identifier = identifier) ;) (if_statement "if (param_2 != iVar2) {\n    uVar5 = (iVar2 - param_2) - 0x40U >> 6;\n    puVar7 = (undefined4 *)(param_2 + 0x20);\n    puVar10 = puVar8;\n    do {\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);\n    puVar8 = puVar8 + (uVar5 + 1) * 0x10;\n  }" if (parenthesized_expression "(param_2 != iVar2)" ( (binary_expression "param_2 != iVar2" identifier != identifier) )) (compound_statement "{\n    uVar5 = (iVar2 - param_2) - 0x40U >> 6;\n    puVar7 = (undefined4 *)(param_2 + 0x20);\n    puVar10 = puVar8;\n    do {\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);\n    puVar8 = puVar8 + (uVar5 + 1) * 0x10;\n  }" { (expression_statement "uVar5 = (iVar2 - param_2) - 0x40U >> 6;" (assignment_expression "uVar5 = (iVar2 - param_2) - 0x40U >> 6" identifier = (binary_expression "(iVar2 - param_2) - 0x40U >> 6" (binary_expression "(iVar2 - param_2) - 0x40U" (parenthesized_expression "(iVar2 - param_2)" ( (binary_expression "iVar2 - param_2" identifier - identifier) )) - number_literal) >> number_literal)) ;) (expression_statement "puVar7 = (undefined4 *)(param_2 + 0x20);" (assignment_expression "puVar7 = (undefined4 *)(param_2 + 0x20)" identifier = (cast_expression "(undefined4 *)(param_2 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) )))) ;) (expression_statement "puVar10 = puVar8;" (assignment_expression "puVar10 = puVar8" identifier = identifier) ;) (do_statement "do {\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);" do (compound_statement "{\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    }" { (expression_statement "uVar3 = puVar7[-8];" (assignment_expression "uVar3 = puVar7[-8]" identifier = (subscript_expression "puVar7[-8]" identifier [ number_literal ])) ;) (expression_statement "puVar10[6] = puVar10 + 8;" (assignment_expression "puVar10[6] = puVar10 + 8" (subscript_expression "puVar10[6]" identifier [ number_literal ]) = (binary_expression "puVar10 + 8" identifier + number_literal)) ;) (expression_statement "*puVar10 = uVar3;" (assignment_expression "*puVar10 = uVar3" (pointer_expression "*puVar10" * identifier) = identifier) ;) (expression_statement "puVar10[1] = puVar7[-7];" (assignment_expression "puVar10[1] = puVar7[-7]" (subscript_expression "puVar10[1]" identifier [ number_literal ]) = (subscript_expression "puVar7[-7]" identifier [ number_literal ])) ;) (expression_statement "puVar10[2] = puVar7[-6];" (assignment_expression "puVar10[2] = puVar7[-6]" (subscript_expression "puVar10[2]" identifier [ number_literal ]) = (subscript_expression "puVar7[-6]" identifier [ number_literal ])) ;) (expression_statement "puVar10[3] = puVar7[-5];" (assignment_expression "puVar10[3] = puVar7[-5]" (subscript_expression "puVar10[3]" identifier [ number_literal ]) = (subscript_expression "puVar7[-5]" identifier [ number_literal ])) ;) (expression_statement "puVar10[4] = puVar7[-4];" (assignment_expression "puVar10[4] = puVar7[-4]" (subscript_expression "puVar10[4]" identifier [ number_literal ]) = (subscript_expression "puVar7[-4]" identifier [ number_literal ])) ;) (expression_statement "puVar10[5] = puVar7[-3];" (assignment_expression "puVar10[5] = puVar7[-3]" (subscript_expression "puVar10[5]" identifier [ number_literal ]) = (subscript_expression "puVar7[-3]" identifier [ number_literal ])) ;) (if_statement "if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }" if (parenthesized_expression "((undefined4 *)puVar7[-2] == puVar7)" ( (binary_expression "(undefined4 *)puVar7[-2] == puVar7" (cast_expression "(undefined4 *)puVar7[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }" { (expression_statement "puVar10[8] = *puVar7;" (assignment_expression "puVar10[8] = *puVar7" (subscript_expression "puVar10[8]" identifier [ number_literal ]) = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar10[9] = puVar7[1];" (assignment_expression "puVar10[9] = puVar7[1]" (subscript_expression "puVar10[9]" identifier [ number_literal ]) = (subscript_expression "puVar7[1]" identifier [ number_literal ])) ;) (expression_statement "puVar10[10] = puVar7[2];" (assignment_expression "puVar10[10] = puVar7[2]" (subscript_expression "puVar10[10]" identifier [ number_literal ]) = (subscript_expression "puVar7[2]" identifier [ number_literal ])) ;) (expression_statement "puVar10[0xb] = puVar7[3];" (assignment_expression "puVar10[0xb] = puVar7[3]" (subscript_expression "puVar10[0xb]" identifier [ number_literal ]) = (subscript_expression "puVar7[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }" else (compound_statement "{\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }" { (expression_statement "puVar10[6] = (undefined4 *)puVar7[-2];" (assignment_expression "puVar10[6] = (undefined4 *)puVar7[-2]" (subscript_expression "puVar10[6]" identifier [ number_literal ]) = (cast_expression "(undefined4 *)puVar7[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar10[8] = *puVar7;" (assignment_expression "puVar10[8] = *puVar7" (subscript_expression "puVar10[8]" identifier [ number_literal ]) = (pointer_expression "*puVar7" * identifier)) ;) }))) (expression_statement "uVar3 = puVar7[-1];" (assignment_expression "uVar3 = puVar7[-1]" identifier = (subscript_expression "puVar7[-1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = puVar7[5];" (assignment_expression "uVar4 = puVar7[5]" identifier = (subscript_expression "puVar7[5]" identifier [ number_literal ])) ;) (expression_statement "puVar7[-2] = puVar7;" (assignment_expression "puVar7[-2] = puVar7" (subscript_expression "puVar7[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9 = puVar10 + 0x10;" (assignment_expression "puVar9 = puVar10 + 0x10" identifier = (binary_expression "puVar10 + 0x10" identifier + number_literal)) ;) (expression_statement "puVar7[-1] = 0;" (assignment_expression "puVar7[-1] = 0" (subscript_expression "puVar7[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[7] = uVar3;" (assignment_expression "puVar10[7] = uVar3" (subscript_expression "puVar10[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar3 = puVar7[4];" (assignment_expression "uVar3 = puVar7[4]" identifier = (subscript_expression "puVar7[4]" identifier [ number_literal ])) ;) (expression_statement "puVar10[0xd] = uVar4;" (assignment_expression "puVar10[0xd] = uVar4" (subscript_expression "puVar10[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar4 = puVar7[7];" (assignment_expression "uVar4 = puVar7[7]" identifier = (subscript_expression "puVar7[7]" identifier [ number_literal ])) ;) (expression_statement "puVar10[0xc] = uVar3;" (assignment_expression "puVar10[0xc] = uVar3" (subscript_expression "puVar10[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)puVar7 = 0;" (assignment_expression "*(undefined1 *)puVar7 = 0" (pointer_expression "*(undefined1 *)puVar7" * (cast_expression "(undefined1 *)puVar7" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar10[0xe] = puVar7[6];" (assignment_expression "puVar10[0xe] = puVar7[6]" (subscript_expression "puVar10[0xe]" identifier [ number_literal ]) = (subscript_expression "puVar7[6]" identifier [ number_literal ])) ;) (expression_statement "puVar10[0xf] = uVar4;" (assignment_expression "puVar10[0xf] = uVar4" (subscript_expression "puVar10[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7 = puVar7 + 0x10;" (assignment_expression "puVar7 = puVar7 + 0x10" identifier = (binary_expression "puVar7 + 0x10" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "(puVar9 != puVar11 + (uVar5 + 2) * 0x10)" ( (binary_expression "puVar9 != puVar11 + (uVar5 + 2) * 0x10" identifier != (binary_expression "puVar11 + (uVar5 + 2) * 0x10" identifier + (binary_expression "(uVar5 + 2) * 0x10" (parenthesized_expression "(uVar5 + 2)" ( (binary_expression "uVar5 + 2" identifier + number_literal) )) * number_literal))) )) ;) (expression_statement "puVar8 = puVar8 + (uVar5 + 1) * 0x10;" (assignment_expression "puVar8 = puVar8 + (uVar5 + 1) * 0x10" identifier = (binary_expression "puVar8 + (uVar5 + 1) * 0x10" identifier + (binary_expression "(uVar5 + 1) * 0x10" (parenthesized_expression "(uVar5 + 1)" ( (binary_expression "uVar5 + 1" identifier + number_literal) )) * number_literal))) ;) })) (for_statement "for (; iVar6 != iVar2; iVar6 = iVar6 + 0x40) {\n    if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }\n  }" for ( ; (binary_expression "iVar6 != iVar2" identifier != identifier) ; (assignment_expression "iVar6 = iVar6 + 0x40" identifier = (binary_expression "iVar6 + 0x40" identifier + number_literal)) ) (compound_statement "{\n    if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }\n  }" { (if_statement "if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }" if (parenthesized_expression "(*(int *)(iVar6 + 0x18) != iVar6 + 0x20)" ( (binary_expression "*(int *)(iVar6 + 0x18) != iVar6 + 0x20" (pointer_expression "*(int *)(iVar6 + 0x18)" * (cast_expression "(int *)(iVar6 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) )))) != (binary_expression "iVar6 + 0x20" identifier + number_literal)) )) (compound_statement "{\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }" { (expression_statement "FUN_001ac470(*(int *)(iVar6 + 0x18));" (call_expression "FUN_001ac470(*(int *)(iVar6 + 0x18))" identifier (argument_list "(*(int *)(iVar6 + 0x18))" ( (pointer_expression "*(int *)(iVar6 + 0x18)" * (cast_expression "(int *)(iVar6 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) )))) ))) ;) })) })) (if_statement "if (iVar1 != 0) {\n    FUN_001ac470(iVar1);\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_001ac470(iVar1);\n  }" { (expression_statement "FUN_001ac470(iVar1);" (call_expression "FUN_001ac470(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) })) (expression_statement "param_1[1] = (int)puVar8;" (assignment_expression "param_1[1] = (int)puVar8" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*param_1 = (int)local_30;" (assignment_expression "*param_1 = (int)local_30" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[2] = (int)(local_30 + local_34 * 0x10);" (assignment_expression "param_1[2] = (int)(local_30 + local_34 * 0x10)" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (cast_expression "(int)(local_30 + local_34 * 0x10)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_30 + local_34 * 0x10)" ( (binary_expression "local_30 + local_34 * 0x10" identifier + (binary_expression "local_34 * 0x10" identifier * number_literal)) )))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Type propagation algorithm not settling */\n/* DWARF original name: _M_realloc_insert<const gold::Input_section_info&>\n   DWARF original prototype: void\n   _M_realloc_insert<const_gold::Input_section_info&>(vector<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>\n   * this, iterator __position, Input_section_info * __args#0) */\n\nvoid __thiscall\nstd::vector<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>::\n_M_realloc_insert<const_gold::Input_section_info&>\n          (vector<gold::Input_section_info,_std::allocator<gold::Input_section_info>_> *this,\n          iterator __position,Input_section_info *__args_0)\n\n{\n  int iVar1;\n  pointer pIVar2;\n  pointer pIVar3;\n  pointer pcVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  size_type sVar7;\n  size_type sVar8;\n  size_type *psVar9;\n  pointer pIVar10;\n  uint64_t uVar11;\n  uint uVar12;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar13;\n  pointer pIVar14;\n  pointer pIVar15;\n  pointer pIVar16;\n  uint *puVar17;\n  pointer pIVar18;\n  uint local_34;\n  pointer local_30;\n  \n  pIVar2 = (this->\n           super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n           _M_impl._M_start;\n  pIVar3 = (this->\n           super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n           _M_impl._M_finish;\n  uVar12 = (int)pIVar3 - (int)pIVar2 >> 6;\n  if (uVar12 == 0) {\n    local_34 = 1;\nLAB_0013b3d7:\n    uVar12 = local_34 << 6;\n  }\n  else {\n    local_34 = uVar12 * 2;\n    if ((uVar12 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (pointer)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    uVar12 = 0xffffffc0;\n  }\n  local_30 = (pointer)operator_new(uVar12);\nLAB_0013b145:\n  puVar17 = (uint *)(((int)__position._M_current - (int)pIVar2) + (int)local_30);\n  *puVar17 = (__args_0->input_section_).shndx_;\n  puVar17[1] = (__args_0->input_section_).p2align_;\n  puVar17[2] = *(uint *)&(__args_0->input_section_).u1_;\n  puVar17[3] = *(uint *)((int)&(__args_0->input_section_).u1_ + 4);\n  *(anon_union_4_4_139239c7_for_u2_ *)(puVar17 + 4) = (__args_0->input_section_).u2_;\n  puVar17[5] = (__args_0->input_section_).section_order_index_;\n  puVar17[6] = (uint)(puVar17 + 8);\n  pcVar4 = (__args_0->section_name_)._M_dataplus._M_p;\n                    /* try { // try from 0013b185 to 0013b189 has its CatchHandler @ 0013b3f0 */\n  __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>\n            ((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(puVar17 + 6),\n             pcVar4,pcVar4 + (__args_0->section_name_)._M_string_length,0);\n  uVar12 = *(uint *)((int)&__args_0->size_ + 4);\n  puVar17[0xc] = (uint)__args_0->size_;\n  uVar11 = __args_0->addralign_;\n  puVar17[0xd] = uVar12;\n  uVar12 = *(uint *)((int)&__args_0->addralign_ + 4);\n  puVar17[0xe] = (uint)uVar11;\n  puVar17[0xf] = uVar12;\n  pIVar14 = local_30;\n  if (__position._M_current != pIVar2) {\n    iVar1 = ((uint)((int)__position._M_current + (-0x40 - (int)pIVar2)) >> 6) + 1;\n    paVar13 = &(pIVar2->section_name_).field_2;\n    do {\n      (pIVar14->input_section_).shndx_ = paVar13[-2]._M_allocated_capacity;\n      (pIVar14->input_section_).p2align_ = *(uint *)((int)paVar13 + -0x1c);\n      *(undefined4 *)&(pIVar14->input_section_).u1_ = *(undefined4 *)((int)paVar13 + -0x18);\n      *(undefined4 *)((int)&(pIVar14->input_section_).u1_ + 4) =\n           *(undefined4 *)((int)paVar13 + -0x14);\n      (pIVar14->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1);\n      uVar12 = *(uint *)((int)paVar13 + -0xc);\n      (pIVar14->section_name_)._M_dataplus._M_p = (pointer)&(pIVar14->section_name_).field_2;\n      (pIVar14->input_section_).section_order_index_ = uVar12;\n      pcVar4 = (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar13) {\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 4) =\n             *(undefined4 *)((int)paVar13 + 4);\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 8) =\n             *(undefined4 *)((int)paVar13 + 8);\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 0xc) =\n             *(undefined4 *)((int)paVar13 + 0xc);\n      }\n      else {\n        (pIVar14->section_name_)._M_dataplus._M_p = pcVar4;\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n      }\n      uVar5 = *(undefined4 *)((int)paVar13 + 0x14);\n      pIVar18 = pIVar14 + 1;\n      (pIVar14->section_name_)._M_string_length = *(size_type *)((int)paVar13 + -4);\n      uVar6 = paVar13[1]._M_allocated_capacity;\n      (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p = (pointer)paVar13;\n      *(size_type *)((int)paVar13 + -4) = 0;\n      paVar13->_M_local_buf[0] = '\0';\n      *(undefined4 *)&pIVar14->size_ = uVar6;\n      *(undefined4 *)((int)&pIVar14->size_ + 4) = uVar5;\n      uVar5 = *(undefined4 *)((int)paVar13 + 0x1c);\n      *(undefined4 *)&pIVar14->addralign_ = *(undefined4 *)((int)paVar13 + 0x18);\n      *(undefined4 *)((int)&pIVar14->addralign_ + 4) = uVar5;\n      paVar13 = paVar13 + 4;\n      pIVar14 = pIVar18;\n    } while (pIVar18 != local_30 + iVar1);\n    pIVar14 = local_30 + iVar1;\n  }\n  pIVar18 = pIVar14 + 1;\n  pIVar10 = pIVar2;\n  if (__position._M_current != pIVar3) {\n    uVar12 = (uint)((int)pIVar3 + (-0x40 - (int)__position._M_current)) >> 6;\n    paVar13 = &((__position._M_current)->section_name_).field_2;\n    pIVar16 = pIVar18;\n    do {\n      sVar8 = paVar13[-2]._M_allocated_capacity;\n      (pIVar16->section_name_)._M_dataplus._M_p = (pointer)&(pIVar16->section_name_).field_2;\n      (pIVar16->input_section_).shndx_ = sVar8;\n      (pIVar16->input_section_).p2align_ = *(size_type *)((int)paVar13 + -0x1c);\n      *(size_type *)&(pIVar16->input_section_).u1_ = *(size_type *)((int)paVar13 + -0x18);\n      *(size_type *)((int)&(pIVar16->input_section_).u1_ + 4) = *(size_type *)((int)paVar13 + -0x14)\n      ;\n      (pIVar16->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1);\n      (pIVar16->input_section_).section_order_index_ = *(size_type *)((int)paVar13 + -0xc);\n      psVar9 = (size_type *)(((string *)((int)paVar13 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar9 == paVar13) {\n        (pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 4) =\n             *(size_type *)((int)paVar13 + 4);\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 8) =\n             *(size_type *)((int)paVar13 + 8);\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 0xc) =\n             *(size_type *)((int)paVar13 + 0xc);\n      }\n      else {\n        (pIVar16->section_name_)._M_dataplus._M_p = (pointer)psVar9;\n        (pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n      }\n      sVar8 = *(size_type *)((int)paVar13 + -4);\n      sVar7 = *(size_type *)((int)paVar13 + 0x14);\n      (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p = (pointer)paVar13;\n      pIVar15 = pIVar16 + 1;\n      *(size_type *)((int)paVar13 + -4) = 0;\n      (pIVar16->section_name_)._M_string_length = sVar8;\n      sVar8 = paVar13[1]._M_allocated_capacity;\n      *(size_type *)((int)&pIVar16->size_ + 4) = sVar7;\n      sVar7 = *(size_type *)((int)paVar13 + 0x1c);\n      *(size_type *)&pIVar16->size_ = sVar8;\n      paVar13->_M_local_buf[0] = '\0';\n      *(size_type *)&pIVar16->addralign_ = *(size_type *)((int)paVar13 + 0x18);\n      *(size_type *)((int)&pIVar16->addralign_ + 4) = sVar7;\n      paVar13 = paVar13 + 4;\n      pIVar16 = pIVar15;\n    } while (pIVar15 != pIVar14 + uVar12 + 2);\n    pIVar18 = pIVar18 + uVar12 + 1;\n  }\n  for (; pIVar10 != pIVar3; pIVar10 = pIVar10 + 1) {\n    pcVar4 = (pIVar10->section_name_)._M_dataplus._M_p;\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)pcVar4 != &(pIVar10->section_name_).field_2) {\n      operator_delete(pcVar4);\n    }\n  }\n  if (pIVar2 != (pointer)0x0) {\n    operator_delete(pIVar2);\n  }\n  (this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n  _M_impl._M_finish = pIVar18;\n  (this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n  _M_impl._M_start = local_30;\n  (this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n  _M_impl._M_end_of_storage = local_30 + local_34;\n  return;\n}\n\n" comment comment comment (declaration "void __thiscall\nstd::vector<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>::\n_M_realloc_insert<const_gold::Input_section_info&>\n          (vector<gold::Input_section_info,_std::allocator<gold::Input_section_info>_> *this,\n          iterator __position,Input_section_info *__args_0)\n\n{\n  int iVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::vector<gold::" identifier : : identifier < identifier : :) identifier , (ERROR "_std::allocator<gold::Input_section_info>_>::\n_M_realloc_insert<const_gold::Input_section_info&>\n          (vector<gold::Input_section_info,_std::allocator<gold::Input_section_info>_> *this,\n          iterator __position,Input_section_info *__args_0)\n\n{\n  int" identifier : : identifier < identifier : : identifier > identifier > : : identifier < identifier : : (function_declarator "Input_section_info&>\n          (vector<gold::Input_section_info,_std::allocator<gold::Input_section_info>_> *this,\n          iterator __position,Input_section_info *__args_0)" identifier (ERROR "&>" & >) (parameter_list "(vector<gold::Input_section_info,_std::allocator<gold::Input_section_info>_> *this,\n          iterator __position,Input_section_info *__args_0)" ( (parameter_declaration "vector<gold::Input_section_info" type_identifier (ERROR "<gold::" < identifier : :) identifier) , (parameter_declaration "_std::allocator<gold::Input_section_info>_> *this" type_identifier (ERROR "::allocator<gold::Input_section_info>_>" : : identifier < identifier : : identifier > identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "iterator __position" type_identifier identifier) , (parameter_declaration "Input_section_info *__args_0" type_identifier (pointer_declarator "*__args_0" * identifier)) ))) { primitive_type) identifier ;) (declaration "pointer pIVar2;" type_identifier identifier ;) (declaration "pointer pIVar3;" type_identifier identifier ;) (declaration "pointer pcVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "size_type sVar7;" type_identifier identifier ;) (declaration "size_type sVar8;" type_identifier identifier ;) (declaration "size_type *psVar9;" type_identifier (pointer_declarator "*psVar9" * identifier) ;) (declaration "pointer pIVar10;" type_identifier identifier ;) (declaration "uint64_t uVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (ERROR "anon_union_16_2_edb7204a_for_basic_string<char," (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) ,) (labeled_statement "_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar13;" statement_identifier (ERROR "::char_traits<char>,_std:" : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) :) : (expression_statement "allocator<char>_>_9\n  *paVar13;" (binary_expression "allocator<char>_>_9\n  *paVar13" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar13" identifier * identifier)) ;)) (declaration "pointer pIVar14;" type_identifier identifier ;) (declaration "pointer pIVar15;" type_identifier identifier ;) (declaration "pointer pIVar16;" type_identifier identifier ;) (declaration "uint *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "pointer pIVar18;" type_identifier identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "pointer local_30;" type_identifier identifier ;) (expression_statement "pIVar2 = (this->\n           super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n           _M_impl._M_start;" (assignment_expression "pIVar2 = (this->\n           super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n           _M_impl._M_start" identifier = (field_expression "(this->\n           super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n           _M_impl._M_start" (field_expression "(this->\n           super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n           _M_impl" (parenthesized_expression "(this->\n           super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>)" ( (ERROR "this->\n           super__Vector_base<gold::Input_section_info,_std::allocator<gold::" (comma_expression "this->\n           super__Vector_base<gold::Input_section_info,_std" (binary_expression "this->\n           super__Vector_base<gold" (field_expression "this->\n           super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Input_section_info" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Input_section_info>_>" (binary_expression "Input_section_info>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "pIVar3 = (this->\n           super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n           _M_impl._M_finish;" (assignment_expression "pIVar3 = (this->\n           super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n           _M_impl._M_finish" identifier = (field_expression "(this->\n           super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n           _M_impl._M_finish" (field_expression "(this->\n           super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n           _M_impl" (parenthesized_expression "(this->\n           super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>)" ( (ERROR "this->\n           super__Vector_base<gold::Input_section_info,_std::allocator<gold::" (comma_expression "this->\n           super__Vector_base<gold::Input_section_info,_std" (binary_expression "this->\n           super__Vector_base<gold" (field_expression "this->\n           super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Input_section_info" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Input_section_info>_>" (binary_expression "Input_section_info>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar12 = (int)pIVar3 - (int)pIVar2 >> 6;" (assignment_expression "uVar12 = (int)pIVar3 - (int)pIVar2 >> 6" identifier = (binary_expression "(int)pIVar3 - (int)pIVar2 >> 6" (binary_expression "(int)pIVar3 - (int)pIVar2" (cast_expression "(int)pIVar3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pIVar2" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (if_statement "if (uVar12 == 0) {\n    local_34 = 1;\nLAB_0013b3d7:\n    uVar12 = local_34 << 6;\n  }\n  else {\n    local_34 = uVar12 * 2;\n    if ((uVar12 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (pointer)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    uVar12 = 0xffffffc0;\n  }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n    local_34 = 1;\nLAB_0013b3d7:\n    uVar12 = local_34 << 6;\n  }" { (expression_statement "local_34 = 1;" (assignment_expression "local_34 = 1" identifier = number_literal) ;) (labeled_statement "LAB_0013b3d7:\n    uVar12 = local_34 << 6;" statement_identifier : (expression_statement "uVar12 = local_34 << 6;" (assignment_expression "uVar12 = local_34 << 6" identifier = (binary_expression "local_34 << 6" identifier << number_literal)) ;)) }) (else_clause "else {\n    local_34 = uVar12 * 2;\n    if ((uVar12 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (pointer)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    uVar12 = 0xffffffc0;\n  }" else (compound_statement "{\n    local_34 = uVar12 * 2;\n    if ((uVar12 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (pointer)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    uVar12 = 0xffffffc0;\n  }" { (expression_statement "local_34 = uVar12 * 2;" (assignment_expression "local_34 = uVar12 * 2" identifier = (binary_expression "uVar12 * 2" identifier * number_literal)) ;) (if_statement "if ((uVar12 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (pointer)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }" if (parenthesized_expression "((uVar12 <= local_34) && (local_34 < 0x4000000))" ( (binary_expression "(uVar12 <= local_34) && (local_34 < 0x4000000)" (parenthesized_expression "(uVar12 <= local_34)" ( (binary_expression "uVar12 <= local_34" identifier <= identifier) )) && (parenthesized_expression "(local_34 < 0x4000000)" ( (binary_expression "local_34 < 0x4000000" identifier < number_literal) ))) )) (compound_statement "{\n      local_30 = (pointer)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }" { (expression_statement "local_30 = (pointer)0x0;" (assignment_expression "local_30 = (pointer)0x0" identifier = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (if_statement "if (local_34 == 0) goto LAB_0013b145;" if (parenthesized_expression "(local_34 == 0)" ( (binary_expression "local_34 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0013b145;" goto statement_identifier ;)) (goto_statement "goto LAB_0013b3d7;" goto statement_identifier ;) })) (expression_statement "local_34 = 0x3ffffff;" (assignment_expression "local_34 = 0x3ffffff" identifier = number_literal) ;) (expression_statement "uVar12 = 0xffffffc0;" (assignment_expression "uVar12 = 0xffffffc0" identifier = number_literal) ;) }))) (expression_statement "local_30 = (pointer)operator_new(uVar12);" (assignment_expression "local_30 = (pointer)operator_new(uVar12)" identifier = (cast_expression "(pointer)operator_new(uVar12)" ( (type_descriptor "pointer" type_identifier) ) (call_expression "operator_new(uVar12)" identifier (argument_list "(uVar12)" ( identifier ))))) ;) (labeled_statement "LAB_0013b145:\n  puVar17 = (uint *)(((int)__position._M_current - (int)pIVar2) + (int)local_30);" statement_identifier : (expression_statement "puVar17 = (uint *)(((int)__position._M_current - (int)pIVar2) + (int)local_30);" (assignment_expression "puVar17 = (uint *)(((int)__position._M_current - (int)pIVar2) + (int)local_30)" identifier = (cast_expression "(uint *)(((int)__position._M_current - (int)pIVar2) + (int)local_30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)__position._M_current - (int)pIVar2) + (int)local_30)" ( (binary_expression "((int)__position._M_current - (int)pIVar2) + (int)local_30" (parenthesized_expression "((int)__position._M_current - (int)pIVar2)" ( (binary_expression "(int)__position._M_current - (int)pIVar2" (cast_expression "(int)__position._M_current" ( (type_descriptor "int" primitive_type) ) (field_expression "__position._M_current" identifier . field_identifier)) - (cast_expression "(int)pIVar2" ( (type_descriptor "int" primitive_type) ) identifier)) )) + (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;)) (expression_statement "*puVar17 = (__args_0->input_section_).shndx_;" (assignment_expression "*puVar17 = (__args_0->input_section_).shndx_" (pointer_expression "*puVar17" * identifier) = (field_expression "(__args_0->input_section_).shndx_" (parenthesized_expression "(__args_0->input_section_)" ( (field_expression "__args_0->input_section_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar17[1] = (__args_0->input_section_).p2align_;" (assignment_expression "puVar17[1] = (__args_0->input_section_).p2align_" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (field_expression "(__args_0->input_section_).p2align_" (parenthesized_expression "(__args_0->input_section_)" ( (field_expression "__args_0->input_section_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar17[2] = *(uint *)&(__args_0->input_section_).u1_;" (assignment_expression "puVar17[2] = *(uint *)&(__args_0->input_section_).u1_" (subscript_expression "puVar17[2]" identifier [ number_literal ]) = (pointer_expression "*(uint *)&(__args_0->input_section_).u1_" * (cast_expression "(uint *)&(__args_0->input_section_).u1_" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(__args_0->input_section_).u1_" & (field_expression "(__args_0->input_section_).u1_" (parenthesized_expression "(__args_0->input_section_)" ( (field_expression "__args_0->input_section_" identifier -> field_identifier) )) . field_identifier))))) ;) (expression_statement "puVar17[3] = *(uint *)((int)&(__args_0->input_section_).u1_ + 4);" (assignment_expression "puVar17[3] = *(uint *)((int)&(__args_0->input_section_).u1_ + 4)" (subscript_expression "puVar17[3]" identifier [ number_literal ]) = (pointer_expression "*(uint *)((int)&(__args_0->input_section_).u1_ + 4)" * (cast_expression "(uint *)((int)&(__args_0->input_section_).u1_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(__args_0->input_section_).u1_ + 4)" ( (binary_expression "(int)&(__args_0->input_section_).u1_ + 4" (cast_expression "(int)&(__args_0->input_section_).u1_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(__args_0->input_section_).u1_" & (field_expression "(__args_0->input_section_).u1_" (parenthesized_expression "(__args_0->input_section_)" ( (field_expression "__args_0->input_section_" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "*(anon_union_4_4_139239c7_for_u2_ *)(puVar17 + 4) = (__args_0->input_section_).u2_;" (assignment_expression "*(anon_union_4_4_139239c7_for_u2_ *)(puVar17 + 4) = (__args_0->input_section_).u2_" (pointer_expression "*(anon_union_4_4_139239c7_for_u2_ *)(puVar17 + 4)" * (cast_expression "(anon_union_4_4_139239c7_for_u2_ *)(puVar17 + 4)" ( (type_descriptor "anon_union_4_4_139239c7_for_u2_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 4)" ( (binary_expression "puVar17 + 4" identifier + number_literal) )))) = (field_expression "(__args_0->input_section_).u2_" (parenthesized_expression "(__args_0->input_section_)" ( (field_expression "__args_0->input_section_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar17[5] = (__args_0->input_section_).section_order_index_;" (assignment_expression "puVar17[5] = (__args_0->input_section_).section_order_index_" (subscript_expression "puVar17[5]" identifier [ number_literal ]) = (field_expression "(__args_0->input_section_).section_order_index_" (parenthesized_expression "(__args_0->input_section_)" ( (field_expression "__args_0->input_section_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar17[6] = (uint)(puVar17 + 8);" (assignment_expression "puVar17[6] = (uint)(puVar17 + 8)" (subscript_expression "puVar17[6]" identifier [ number_literal ]) = (call_expression "(uint)(puVar17 + 8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar17 + 8)" ( (binary_expression "puVar17 + 8" identifier + number_literal) )))) ;) (expression_statement "pcVar4 = (__args_0->section_name_)._M_dataplus._M_p;" (assignment_expression "pcVar4 = (__args_0->section_name_)._M_dataplus._M_p" identifier = (field_expression "(__args_0->section_name_)._M_dataplus._M_p" (field_expression "(__args_0->section_name_)._M_dataplus" (parenthesized_expression "(__args_0->section_name_)" ( (field_expression "__args_0->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) comment (labeled_statement "__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>\n            ((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(puVar17 + 6),\n             pcVar4,pcVar4 + (__args_0->section_name_)._M_string_length,0);" statement_identifier (ERROR "::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char*>\n            ((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(puVar17 + 6),\n             pcVar4,pcVar4 + (__args_0->section_name_)._M_string_length,0);" (binary_expression "_M_construct<char*>\n            ((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(puVar17 + 6),\n             pcVar4,pcVar4 + (__args_0->section_name_)._M_string_length,0)" (binary_expression "_M_construct<char" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(puVar17 + 6),\n             pcVar4,pcVar4 + (__args_0->section_name_)._M_string_length,0)" ( (comma_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(puVar17 + 6),\n             pcVar4,pcVar4 + (__args_0->section_name_)._M_string_length,0" (call_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(puVar17 + 6)" (parenthesized_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)" ( (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_> *" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(puVar17 + 6)" ( (binary_expression "puVar17 + 6" identifier + number_literal) ))) , (comma_expression "pcVar4,pcVar4 + (__args_0->section_name_)._M_string_length,0" identifier , (comma_expression "pcVar4 + (__args_0->section_name_)._M_string_length,0" (binary_expression "pcVar4 + (__args_0->section_name_)._M_string_length" identifier + (field_expression "(__args_0->section_name_)._M_string_length" (parenthesized_expression "(__args_0->section_name_)" ( (field_expression "__args_0->section_name_" identifier -> field_identifier) )) . field_identifier)) , number_literal))) ))) ;)) (expression_statement "uVar12 = *(uint *)((int)&__args_0->size_ + 4);" (assignment_expression "uVar12 = *(uint *)((int)&__args_0->size_ + 4)" identifier = (pointer_expression "*(uint *)((int)&__args_0->size_ + 4)" * (cast_expression "(uint *)((int)&__args_0->size_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&__args_0->size_ + 4)" ( (binary_expression "(int)&__args_0->size_ + 4" (cast_expression "(int)&__args_0->size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&__args_0->size_" & (field_expression "__args_0->size_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "puVar17[0xc] = (uint)__args_0->size_;" (assignment_expression "puVar17[0xc] = (uint)__args_0->size_" (subscript_expression "puVar17[0xc]" identifier [ number_literal ]) = (cast_expression "(uint)__args_0->size_" ( (type_descriptor "uint" type_identifier) ) (field_expression "__args_0->size_" identifier -> field_identifier))) ;) (expression_statement "uVar11 = __args_0->addralign_;" (assignment_expression "uVar11 = __args_0->addralign_" identifier = (field_expression "__args_0->addralign_" identifier -> field_identifier)) ;) (expression_statement "puVar17[0xd] = uVar12;" (assignment_expression "puVar17[0xd] = uVar12" (subscript_expression "puVar17[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar12 = *(uint *)((int)&__args_0->addralign_ + 4);" (assignment_expression "uVar12 = *(uint *)((int)&__args_0->addralign_ + 4)" identifier = (pointer_expression "*(uint *)((int)&__args_0->addralign_ + 4)" * (cast_expression "(uint *)((int)&__args_0->addralign_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&__args_0->addralign_ + 4)" ( (binary_expression "(int)&__args_0->addralign_ + 4" (cast_expression "(int)&__args_0->addralign_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&__args_0->addralign_" & (field_expression "__args_0->addralign_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "puVar17[0xe] = (uint)uVar11;" (assignment_expression "puVar17[0xe] = (uint)uVar11" (subscript_expression "puVar17[0xe]" identifier [ number_literal ]) = (cast_expression "(uint)uVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar17[0xf] = uVar12;" (assignment_expression "puVar17[0xf] = uVar12" (subscript_expression "puVar17[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pIVar14 = local_30;" (assignment_expression "pIVar14 = local_30" identifier = identifier) ;) (if_statement "if (__position._M_current != pIVar2) {\n    iVar1 = ((uint)((int)__position._M_current + (-0x40 - (int)pIVar2)) >> 6) + 1;\n    paVar13 = &(pIVar2->section_name_).field_2;\n    do {\n      (pIVar14->input_section_).shndx_ = paVar13[-2]._M_allocated_capacity;\n      (pIVar14->input_section_).p2align_ = *(uint *)((int)paVar13 + -0x1c);\n      *(undefined4 *)&(pIVar14->input_section_).u1_ = *(undefined4 *)((int)paVar13 + -0x18);\n      *(undefined4 *)((int)&(pIVar14->input_section_).u1_ + 4) =\n           *(undefined4 *)((int)paVar13 + -0x14);\n      (pIVar14->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1);\n      uVar12 = *(uint *)((int)paVar13 + -0xc);\n      (pIVar14->section_name_)._M_dataplus._M_p = (pointer)&(pIVar14->section_name_).field_2;\n      (pIVar14->input_section_).section_order_index_ = uVar12;\n      pcVar4 = (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar13) {\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 4) =\n             *(undefined4 *)((int)paVar13 + 4);\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 8) =\n             *(undefined4 *)((int)paVar13 + 8);\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 0xc) =\n             *(undefined4 *)((int)paVar13 + 0xc);\n      }\n      else {\n        (pIVar14->section_name_)._M_dataplus._M_p = pcVar4;\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n      }\n      uVar5 = *(undefined4 *)((int)paVar13 + 0x14);\n      pIVar18 = pIVar14 + 1;\n      (pIVar14->section_name_)._M_string_length = *(size_type *)((int)paVar13 + -4);\n      uVar6 = paVar13[1]._M_allocated_capacity;\n      (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p = (pointer)paVar13;\n      *(size_type *)((int)paVar13 + -4) = 0;\n      paVar13->_M_local_buf[0] = '\0';\n      *(undefined4 *)&pIVar14->size_ = uVar6;\n      *(undefined4 *)((int)&pIVar14->size_ + 4) = uVar5;\n      uVar5 = *(undefined4 *)((int)paVar13 + 0x1c);\n      *(undefined4 *)&pIVar14->addralign_ = *(undefined4 *)((int)paVar13 + 0x18);\n      *(undefined4 *)((int)&pIVar14->addralign_ + 4) = uVar5;\n      paVar13 = paVar13 + 4;\n      pIVar14 = pIVar18;\n    } while (pIVar18 != local_30 + iVar1);\n    pIVar14 = local_30 + iVar1;\n  }" if (parenthesized_expression "(__position._M_current != pIVar2)" ( (binary_expression "__position._M_current != pIVar2" (field_expression "__position._M_current" identifier . field_identifier) != identifier) )) (compound_statement "{\n    iVar1 = ((uint)((int)__position._M_current + (-0x40 - (int)pIVar2)) >> 6) + 1;\n    paVar13 = &(pIVar2->section_name_).field_2;\n    do {\n      (pIVar14->input_section_).shndx_ = paVar13[-2]._M_allocated_capacity;\n      (pIVar14->input_section_).p2align_ = *(uint *)((int)paVar13 + -0x1c);\n      *(undefined4 *)&(pIVar14->input_section_).u1_ = *(undefined4 *)((int)paVar13 + -0x18);\n      *(undefined4 *)((int)&(pIVar14->input_section_).u1_ + 4) =\n           *(undefined4 *)((int)paVar13 + -0x14);\n      (pIVar14->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1);\n      uVar12 = *(uint *)((int)paVar13 + -0xc);\n      (pIVar14->section_name_)._M_dataplus._M_p = (pointer)&(pIVar14->section_name_).field_2;\n      (pIVar14->input_section_).section_order_index_ = uVar12;\n      pcVar4 = (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar13) {\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 4) =\n             *(undefined4 *)((int)paVar13 + 4);\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 8) =\n             *(undefined4 *)((int)paVar13 + 8);\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 0xc) =\n             *(undefined4 *)((int)paVar13 + 0xc);\n      }\n      else {\n        (pIVar14->section_name_)._M_dataplus._M_p = pcVar4;\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n      }\n      uVar5 = *(undefined4 *)((int)paVar13 + 0x14);\n      pIVar18 = pIVar14 + 1;\n      (pIVar14->section_name_)._M_string_length = *(size_type *)((int)paVar13 + -4);\n      uVar6 = paVar13[1]._M_allocated_capacity;\n      (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p = (pointer)paVar13;\n      *(size_type *)((int)paVar13 + -4) = 0;\n      paVar13->_M_local_buf[0] = '\0';\n      *(undefined4 *)&pIVar14->size_ = uVar6;\n      *(undefined4 *)((int)&pIVar14->size_ + 4) = uVar5;\n      uVar5 = *(undefined4 *)((int)paVar13 + 0x1c);\n      *(undefined4 *)&pIVar14->addralign_ = *(undefined4 *)((int)paVar13 + 0x18);\n      *(undefined4 *)((int)&pIVar14->addralign_ + 4) = uVar5;\n      paVar13 = paVar13 + 4;\n      pIVar14 = pIVar18;\n    } while (pIVar18 != local_30 + iVar1);\n    pIVar14 = local_30 + iVar1;\n  }" { (expression_statement "iVar1 = ((uint)((int)__position._M_current + (-0x40 - (int)pIVar2)) >> 6) + 1;" (assignment_expression "iVar1 = ((uint)((int)__position._M_current + (-0x40 - (int)pIVar2)) >> 6) + 1" identifier = (binary_expression "((uint)((int)__position._M_current + (-0x40 - (int)pIVar2)) >> 6) + 1" (parenthesized_expression "((uint)((int)__position._M_current + (-0x40 - (int)pIVar2)) >> 6)" ( (binary_expression "(uint)((int)__position._M_current + (-0x40 - (int)pIVar2)) >> 6" (call_expression "(uint)((int)__position._M_current + (-0x40 - (int)pIVar2))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)__position._M_current + (-0x40 - (int)pIVar2))" ( (binary_expression "(int)__position._M_current + (-0x40 - (int)pIVar2)" (cast_expression "(int)__position._M_current" ( (type_descriptor "int" primitive_type) ) (field_expression "__position._M_current" identifier . field_identifier)) + (parenthesized_expression "(-0x40 - (int)pIVar2)" ( (binary_expression "-0x40 - (int)pIVar2" number_literal - (cast_expression "(int)pIVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) >> number_literal) )) + number_literal)) ;) (expression_statement "paVar13 = &(pIVar2->section_name_).field_2;" (assignment_expression "paVar13 = &(pIVar2->section_name_).field_2" identifier = (pointer_expression "&(pIVar2->section_name_).field_2" & (field_expression "(pIVar2->section_name_).field_2" (parenthesized_expression "(pIVar2->section_name_)" ( (field_expression "pIVar2->section_name_" identifier -> field_identifier) )) . field_identifier))) ;) (do_statement "do {\n      (pIVar14->input_section_).shndx_ = paVar13[-2]._M_allocated_capacity;\n      (pIVar14->input_section_).p2align_ = *(uint *)((int)paVar13 + -0x1c);\n      *(undefined4 *)&(pIVar14->input_section_).u1_ = *(undefined4 *)((int)paVar13 + -0x18);\n      *(undefined4 *)((int)&(pIVar14->input_section_).u1_ + 4) =\n           *(undefined4 *)((int)paVar13 + -0x14);\n      (pIVar14->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1);\n      uVar12 = *(uint *)((int)paVar13 + -0xc);\n      (pIVar14->section_name_)._M_dataplus._M_p = (pointer)&(pIVar14->section_name_).field_2;\n      (pIVar14->input_section_).section_order_index_ = uVar12;\n      pcVar4 = (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar13) {\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 4) =\n             *(undefined4 *)((int)paVar13 + 4);\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 8) =\n             *(undefined4 *)((int)paVar13 + 8);\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 0xc) =\n             *(undefined4 *)((int)paVar13 + 0xc);\n      }\n      else {\n        (pIVar14->section_name_)._M_dataplus._M_p = pcVar4;\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n      }\n      uVar5 = *(undefined4 *)((int)paVar13 + 0x14);\n      pIVar18 = pIVar14 + 1;\n      (pIVar14->section_name_)._M_string_length = *(size_type *)((int)paVar13 + -4);\n      uVar6 = paVar13[1]._M_allocated_capacity;\n      (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p = (pointer)paVar13;\n      *(size_type *)((int)paVar13 + -4) = 0;\n      paVar13->_M_local_buf[0] = '\0';\n      *(undefined4 *)&pIVar14->size_ = uVar6;\n      *(undefined4 *)((int)&pIVar14->size_ + 4) = uVar5;\n      uVar5 = *(undefined4 *)((int)paVar13 + 0x1c);\n      *(undefined4 *)&pIVar14->addralign_ = *(undefined4 *)((int)paVar13 + 0x18);\n      *(undefined4 *)((int)&pIVar14->addralign_ + 4) = uVar5;\n      paVar13 = paVar13 + 4;\n      pIVar14 = pIVar18;\n    } while (pIVar18 != local_30 + iVar1);" do (compound_statement "{\n      (pIVar14->input_section_).shndx_ = paVar13[-2]._M_allocated_capacity;\n      (pIVar14->input_section_).p2align_ = *(uint *)((int)paVar13 + -0x1c);\n      *(undefined4 *)&(pIVar14->input_section_).u1_ = *(undefined4 *)((int)paVar13 + -0x18);\n      *(undefined4 *)((int)&(pIVar14->input_section_).u1_ + 4) =\n           *(undefined4 *)((int)paVar13 + -0x14);\n      (pIVar14->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1);\n      uVar12 = *(uint *)((int)paVar13 + -0xc);\n      (pIVar14->section_name_)._M_dataplus._M_p = (pointer)&(pIVar14->section_name_).field_2;\n      (pIVar14->input_section_).section_order_index_ = uVar12;\n      pcVar4 = (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar13) {\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 4) =\n             *(undefined4 *)((int)paVar13 + 4);\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 8) =\n             *(undefined4 *)((int)paVar13 + 8);\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 0xc) =\n             *(undefined4 *)((int)paVar13 + 0xc);\n      }\n      else {\n        (pIVar14->section_name_)._M_dataplus._M_p = pcVar4;\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n      }\n      uVar5 = *(undefined4 *)((int)paVar13 + 0x14);\n      pIVar18 = pIVar14 + 1;\n      (pIVar14->section_name_)._M_string_length = *(size_type *)((int)paVar13 + -4);\n      uVar6 = paVar13[1]._M_allocated_capacity;\n      (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p = (pointer)paVar13;\n      *(size_type *)((int)paVar13 + -4) = 0;\n      paVar13->_M_local_buf[0] = '\0';\n      *(undefined4 *)&pIVar14->size_ = uVar6;\n      *(undefined4 *)((int)&pIVar14->size_ + 4) = uVar5;\n      uVar5 = *(undefined4 *)((int)paVar13 + 0x1c);\n      *(undefined4 *)&pIVar14->addralign_ = *(undefined4 *)((int)paVar13 + 0x18);\n      *(undefined4 *)((int)&pIVar14->addralign_ + 4) = uVar5;\n      paVar13 = paVar13 + 4;\n      pIVar14 = pIVar18;\n    }" { (expression_statement "(pIVar14->input_section_).shndx_ = paVar13[-2]._M_allocated_capacity;" (assignment_expression "(pIVar14->input_section_).shndx_ = paVar13[-2]._M_allocated_capacity" (field_expression "(pIVar14->input_section_).shndx_" (parenthesized_expression "(pIVar14->input_section_)" ( (field_expression "pIVar14->input_section_" identifier -> field_identifier) )) . field_identifier) = (field_expression "paVar13[-2]._M_allocated_capacity" (subscript_expression "paVar13[-2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "(pIVar14->input_section_).p2align_ = *(uint *)((int)paVar13 + -0x1c);" (assignment_expression "(pIVar14->input_section_).p2align_ = *(uint *)((int)paVar13 + -0x1c)" (field_expression "(pIVar14->input_section_).p2align_" (parenthesized_expression "(pIVar14->input_section_)" ( (field_expression "pIVar14->input_section_" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(uint *)((int)paVar13 + -0x1c)" * (cast_expression "(uint *)((int)paVar13 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + -0x1c)" ( (binary_expression "(int)paVar13 + -0x1c" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)&(pIVar14->input_section_).u1_ = *(undefined4 *)((int)paVar13 + -0x18);" (assignment_expression "*(undefined4 *)&(pIVar14->input_section_).u1_ = *(undefined4 *)((int)paVar13 + -0x18)" (pointer_expression "*(undefined4 *)&(pIVar14->input_section_).u1_" * (cast_expression "(undefined4 *)&(pIVar14->input_section_).u1_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pIVar14->input_section_).u1_" & (field_expression "(pIVar14->input_section_).u1_" (parenthesized_expression "(pIVar14->input_section_)" ( (field_expression "pIVar14->input_section_" identifier -> field_identifier) )) . field_identifier)))) = (pointer_expression "*(undefined4 *)((int)paVar13 + -0x18)" * (cast_expression "(undefined4 *)((int)paVar13 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + -0x18)" ( (binary_expression "(int)paVar13 + -0x18" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)&(pIVar14->input_section_).u1_ + 4) =\n           *(undefined4 *)((int)paVar13 + -0x14);" (assignment_expression "*(undefined4 *)((int)&(pIVar14->input_section_).u1_ + 4) =\n           *(undefined4 *)((int)paVar13 + -0x14)" (pointer_expression "*(undefined4 *)((int)&(pIVar14->input_section_).u1_ + 4)" * (cast_expression "(undefined4 *)((int)&(pIVar14->input_section_).u1_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pIVar14->input_section_).u1_ + 4)" ( (binary_expression "(int)&(pIVar14->input_section_).u1_ + 4" (cast_expression "(int)&(pIVar14->input_section_).u1_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pIVar14->input_section_).u1_" & (field_expression "(pIVar14->input_section_).u1_" (parenthesized_expression "(pIVar14->input_section_)" ( (field_expression "pIVar14->input_section_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)paVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)paVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + -0x14)" ( (binary_expression "(int)paVar13 + -0x14" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "(pIVar14->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1);" (assignment_expression "(pIVar14->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1)" (field_expression "(pIVar14->input_section_).u2_" (parenthesized_expression "(pIVar14->input_section_)" ( (field_expression "pIVar14->input_section_" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1)" * (cast_expression "(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1)" ( (type_descriptor "anon_union_4_4_139239c7_for_u2_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar13 + -1)" ( (binary_expression "paVar13 + -1" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = *(uint *)((int)paVar13 + -0xc);" (assignment_expression "uVar12 = *(uint *)((int)paVar13 + -0xc)" identifier = (pointer_expression "*(uint *)((int)paVar13 + -0xc)" * (cast_expression "(uint *)((int)paVar13 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + -0xc)" ( (binary_expression "(int)paVar13 + -0xc" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "(pIVar14->section_name_)._M_dataplus._M_p = (pointer)&(pIVar14->section_name_).field_2;" (assignment_expression "(pIVar14->section_name_)._M_dataplus._M_p = (pointer)&(pIVar14->section_name_).field_2" (field_expression "(pIVar14->section_name_)._M_dataplus._M_p" (field_expression "(pIVar14->section_name_)._M_dataplus" (parenthesized_expression "(pIVar14->section_name_)" ( (field_expression "pIVar14->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(pIVar14->section_name_).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(pIVar14->section_name_).field_2" (parenthesized_expression "(pIVar14->section_name_)" ( (field_expression "pIVar14->section_name_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "(pIVar14->input_section_).section_order_index_ = uVar12;" (assignment_expression "(pIVar14->input_section_).section_order_index_ = uVar12" (field_expression "(pIVar14->input_section_).section_order_index_" (parenthesized_expression "(pIVar14->input_section_)" ( (field_expression "pIVar14->input_section_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "pcVar4 = (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p;" (assignment_expression "pcVar4 = (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p" identifier = (field_expression "(((string *)((int)paVar13 + -8))->_M_dataplus)._M_p" (parenthesized_expression "(((string *)((int)paVar13 + -8))->_M_dataplus)" ( (field_expression "((string *)((int)paVar13 + -8))->_M_dataplus" (parenthesized_expression "((string *)((int)paVar13 + -8))" ( (cast_expression "(string *)((int)paVar13 + -8)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + -8)" ( (binary_expression "(int)paVar13 + -8" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )) -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar13) {\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 4) =\n             *(undefined4 *)((int)paVar13 + 4);\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 8) =\n             *(undefined4 *)((int)paVar13 + 8);\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 0xc) =\n             *(undefined4 *)((int)paVar13 + 0xc);\n      }\n      else {\n        (pIVar14->section_name_)._M_dataplus._M_p = pcVar4;\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n      }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar13)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar13)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n           *)pcVar4 == paVar13" (binary_expression "allocator<char>_>_9\n           *)pcVar4" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)pcVar4" identifier * (ERROR ")" )) identifier)) == identifier) )) )) (compound_statement "{\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 4) =\n             *(undefined4 *)((int)paVar13 + 4);\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 8) =\n             *(undefined4 *)((int)paVar13 + 8);\n        *(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 0xc) =\n             *(undefined4 *)((int)paVar13 + 0xc);\n      }" { (expression_statement "(pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;" (assignment_expression "(pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity" (field_expression "(pIVar14->section_name_).field_2._M_allocated_capacity" (field_expression "(pIVar14->section_name_).field_2" (parenthesized_expression "(pIVar14->section_name_)" ( (field_expression "pIVar14->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar13->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 4) =\n             *(undefined4 *)((int)paVar13 + 4);" (assignment_expression "*(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 4) =\n             *(undefined4 *)((int)paVar13 + 4)" (pointer_expression "*(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 4)" * (cast_expression "(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pIVar14->section_name_).field_2 + 4)" ( (binary_expression "(int)&(pIVar14->section_name_).field_2 + 4" (cast_expression "(int)&(pIVar14->section_name_).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pIVar14->section_name_).field_2" & (field_expression "(pIVar14->section_name_).field_2" (parenthesized_expression "(pIVar14->section_name_)" ( (field_expression "pIVar14->section_name_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)paVar13 + 4)" * (cast_expression "(undefined4 *)((int)paVar13 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + 4)" ( (binary_expression "(int)paVar13 + 4" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 8) =\n             *(undefined4 *)((int)paVar13 + 8);" (assignment_expression "*(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 8) =\n             *(undefined4 *)((int)paVar13 + 8)" (pointer_expression "*(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 8)" * (cast_expression "(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pIVar14->section_name_).field_2 + 8)" ( (binary_expression "(int)&(pIVar14->section_name_).field_2 + 8" (cast_expression "(int)&(pIVar14->section_name_).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pIVar14->section_name_).field_2" & (field_expression "(pIVar14->section_name_).field_2" (parenthesized_expression "(pIVar14->section_name_)" ( (field_expression "pIVar14->section_name_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)paVar13 + 8)" * (cast_expression "(undefined4 *)((int)paVar13 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + 8)" ( (binary_expression "(int)paVar13 + 8" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 0xc) =\n             *(undefined4 *)((int)paVar13 + 0xc);" (assignment_expression "*(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 0xc) =\n             *(undefined4 *)((int)paVar13 + 0xc)" (pointer_expression "*(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 0xc)" * (cast_expression "(undefined4 *)((int)&(pIVar14->section_name_).field_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pIVar14->section_name_).field_2 + 0xc)" ( (binary_expression "(int)&(pIVar14->section_name_).field_2 + 0xc" (cast_expression "(int)&(pIVar14->section_name_).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pIVar14->section_name_).field_2" & (field_expression "(pIVar14->section_name_).field_2" (parenthesized_expression "(pIVar14->section_name_)" ( (field_expression "pIVar14->section_name_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)paVar13 + 0xc)" * (cast_expression "(undefined4 *)((int)paVar13 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + 0xc)" ( (binary_expression "(int)paVar13 + 0xc" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n        (pIVar14->section_name_)._M_dataplus._M_p = pcVar4;\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n      }" else (compound_statement "{\n        (pIVar14->section_name_)._M_dataplus._M_p = pcVar4;\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n      }" { (expression_statement "(pIVar14->section_name_)._M_dataplus._M_p = pcVar4;" (assignment_expression "(pIVar14->section_name_)._M_dataplus._M_p = pcVar4" (field_expression "(pIVar14->section_name_)._M_dataplus._M_p" (field_expression "(pIVar14->section_name_)._M_dataplus" (parenthesized_expression "(pIVar14->section_name_)" ( (field_expression "pIVar14->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;" (assignment_expression "(pIVar14->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity" (field_expression "(pIVar14->section_name_).field_2._M_allocated_capacity" (field_expression "(pIVar14->section_name_).field_2" (parenthesized_expression "(pIVar14->section_name_)" ( (field_expression "pIVar14->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar13->_M_allocated_capacity" identifier -> field_identifier)) ;) }))) (expression_statement "uVar5 = *(undefined4 *)((int)paVar13 + 0x14);" (assignment_expression "uVar5 = *(undefined4 *)((int)paVar13 + 0x14)" identifier = (pointer_expression "*(undefined4 *)((int)paVar13 + 0x14)" * (cast_expression "(undefined4 *)((int)paVar13 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + 0x14)" ( (binary_expression "(int)paVar13 + 0x14" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pIVar18 = pIVar14 + 1;" (assignment_expression "pIVar18 = pIVar14 + 1" identifier = (binary_expression "pIVar14 + 1" identifier + number_literal)) ;) (expression_statement "(pIVar14->section_name_)._M_string_length = *(size_type *)((int)paVar13 + -4);" (assignment_expression "(pIVar14->section_name_)._M_string_length = *(size_type *)((int)paVar13 + -4)" (field_expression "(pIVar14->section_name_)._M_string_length" (parenthesized_expression "(pIVar14->section_name_)" ( (field_expression "pIVar14->section_name_" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(size_type *)((int)paVar13 + -4)" * (cast_expression "(size_type *)((int)paVar13 + -4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + -4)" ( (binary_expression "(int)paVar13 + -4" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar6 = paVar13[1]._M_allocated_capacity;" (assignment_expression "uVar6 = paVar13[1]._M_allocated_capacity" identifier = (field_expression "paVar13[1]._M_allocated_capacity" (subscript_expression "paVar13[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "(((string *)((int)paVar13 + -8))->_M_dataplus)._M_p = (pointer)paVar13;" (assignment_expression "(((string *)((int)paVar13 + -8))->_M_dataplus)._M_p = (pointer)paVar13" (field_expression "(((string *)((int)paVar13 + -8))->_M_dataplus)._M_p" (parenthesized_expression "(((string *)((int)paVar13 + -8))->_M_dataplus)" ( (field_expression "((string *)((int)paVar13 + -8))->_M_dataplus" (parenthesized_expression "((string *)((int)paVar13 + -8))" ( (cast_expression "(string *)((int)paVar13 + -8)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + -8)" ( (binary_expression "(int)paVar13 + -8" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )) -> field_identifier) )) . field_identifier) = (cast_expression "(pointer)paVar13" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "*(size_type *)((int)paVar13 + -4) = 0;" (assignment_expression "*(size_type *)((int)paVar13 + -4) = 0" (pointer_expression "*(size_type *)((int)paVar13 + -4)" * (cast_expression "(size_type *)((int)paVar13 + -4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + -4)" ( (binary_expression "(int)paVar13 + -4" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "paVar13->_M_local_buf[0] = '\0';" (assignment_expression "paVar13->_M_local_buf[0] = '\0'" (subscript_expression "paVar13->_M_local_buf[0]" (field_expression "paVar13->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(undefined4 *)&pIVar14->size_ = uVar6;" (assignment_expression "*(undefined4 *)&pIVar14->size_ = uVar6" (pointer_expression "*(undefined4 *)&pIVar14->size_" * (cast_expression "(undefined4 *)&pIVar14->size_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pIVar14->size_" & (field_expression "pIVar14->size_" identifier -> field_identifier)))) = identifier) ;) (expression_statement "*(undefined4 *)((int)&pIVar14->size_ + 4) = uVar5;" (assignment_expression "*(undefined4 *)((int)&pIVar14->size_ + 4) = uVar5" (pointer_expression "*(undefined4 *)((int)&pIVar14->size_ + 4)" * (cast_expression "(undefined4 *)((int)&pIVar14->size_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pIVar14->size_ + 4)" ( (binary_expression "(int)&pIVar14->size_ + 4" (cast_expression "(int)&pIVar14->size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pIVar14->size_" & (field_expression "pIVar14->size_" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "uVar5 = *(undefined4 *)((int)paVar13 + 0x1c);" (assignment_expression "uVar5 = *(undefined4 *)((int)paVar13 + 0x1c)" identifier = (pointer_expression "*(undefined4 *)((int)paVar13 + 0x1c)" * (cast_expression "(undefined4 *)((int)paVar13 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + 0x1c)" ( (binary_expression "(int)paVar13 + 0x1c" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)&pIVar14->addralign_ = *(undefined4 *)((int)paVar13 + 0x18);" (assignment_expression "*(undefined4 *)&pIVar14->addralign_ = *(undefined4 *)((int)paVar13 + 0x18)" (pointer_expression "*(undefined4 *)&pIVar14->addralign_" * (cast_expression "(undefined4 *)&pIVar14->addralign_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pIVar14->addralign_" & (field_expression "pIVar14->addralign_" identifier -> field_identifier)))) = (pointer_expression "*(undefined4 *)((int)paVar13 + 0x18)" * (cast_expression "(undefined4 *)((int)paVar13 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + 0x18)" ( (binary_expression "(int)paVar13 + 0x18" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)&pIVar14->addralign_ + 4) = uVar5;" (assignment_expression "*(undefined4 *)((int)&pIVar14->addralign_ + 4) = uVar5" (pointer_expression "*(undefined4 *)((int)&pIVar14->addralign_ + 4)" * (cast_expression "(undefined4 *)((int)&pIVar14->addralign_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pIVar14->addralign_ + 4)" ( (binary_expression "(int)&pIVar14->addralign_ + 4" (cast_expression "(int)&pIVar14->addralign_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pIVar14->addralign_" & (field_expression "pIVar14->addralign_" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "paVar13 = paVar13 + 4;" (assignment_expression "paVar13 = paVar13 + 4" identifier = (binary_expression "paVar13 + 4" identifier + number_literal)) ;) (expression_statement "pIVar14 = pIVar18;" (assignment_expression "pIVar14 = pIVar18" identifier = identifier) ;) }) while (parenthesized_expression "(pIVar18 != local_30 + iVar1)" ( (binary_expression "pIVar18 != local_30 + iVar1" identifier != (binary_expression "local_30 + iVar1" identifier + identifier)) )) ;) (expression_statement "pIVar14 = local_30 + iVar1;" (assignment_expression "pIVar14 = local_30 + iVar1" identifier = (binary_expression "local_30 + iVar1" identifier + identifier)) ;) })) (expression_statement "pIVar18 = pIVar14 + 1;" (assignment_expression "pIVar18 = pIVar14 + 1" identifier = (binary_expression "pIVar14 + 1" identifier + number_literal)) ;) (expression_statement "pIVar10 = pIVar2;" (assignment_expression "pIVar10 = pIVar2" identifier = identifier) ;) (if_statement "if (__position._M_current != pIVar3) {\n    uVar12 = (uint)((int)pIVar3 + (-0x40 - (int)__position._M_current)) >> 6;\n    paVar13 = &((__position._M_current)->section_name_).field_2;\n    pIVar16 = pIVar18;\n    do {\n      sVar8 = paVar13[-2]._M_allocated_capacity;\n      (pIVar16->section_name_)._M_dataplus._M_p = (pointer)&(pIVar16->section_name_).field_2;\n      (pIVar16->input_section_).shndx_ = sVar8;\n      (pIVar16->input_section_).p2align_ = *(size_type *)((int)paVar13 + -0x1c);\n      *(size_type *)&(pIVar16->input_section_).u1_ = *(size_type *)((int)paVar13 + -0x18);\n      *(size_type *)((int)&(pIVar16->input_section_).u1_ + 4) = *(size_type *)((int)paVar13 + -0x14)\n      ;\n      (pIVar16->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1);\n      (pIVar16->input_section_).section_order_index_ = *(size_type *)((int)paVar13 + -0xc);\n      psVar9 = (size_type *)(((string *)((int)paVar13 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar9 == paVar13) {\n        (pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 4) =\n             *(size_type *)((int)paVar13 + 4);\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 8) =\n             *(size_type *)((int)paVar13 + 8);\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 0xc) =\n             *(size_type *)((int)paVar13 + 0xc);\n      }\n      else {\n        (pIVar16->section_name_)._M_dataplus._M_p = (pointer)psVar9;\n        (pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n      }\n      sVar8 = *(size_type *)((int)paVar13 + -4);\n      sVar7 = *(size_type *)((int)paVar13 + 0x14);\n      (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p = (pointer)paVar13;\n      pIVar15 = pIVar16 + 1;\n      *(size_type *)((int)paVar13 + -4) = 0;\n      (pIVar16->section_name_)._M_string_length = sVar8;\n      sVar8 = paVar13[1]._M_allocated_capacity;\n      *(size_type *)((int)&pIVar16->size_ + 4) = sVar7;\n      sVar7 = *(size_type *)((int)paVar13 + 0x1c);\n      *(size_type *)&pIVar16->size_ = sVar8;\n      paVar13->_M_local_buf[0] = '\0';\n      *(size_type *)&pIVar16->addralign_ = *(size_type *)((int)paVar13 + 0x18);\n      *(size_type *)((int)&pIVar16->addralign_ + 4) = sVar7;\n      paVar13 = paVar13 + 4;\n      pIVar16 = pIVar15;\n    } while (pIVar15 != pIVar14 + uVar12 + 2);\n    pIVar18 = pIVar18 + uVar12 + 1;\n  }" if (parenthesized_expression "(__position._M_current != pIVar3)" ( (binary_expression "__position._M_current != pIVar3" (field_expression "__position._M_current" identifier . field_identifier) != identifier) )) (compound_statement "{\n    uVar12 = (uint)((int)pIVar3 + (-0x40 - (int)__position._M_current)) >> 6;\n    paVar13 = &((__position._M_current)->section_name_).field_2;\n    pIVar16 = pIVar18;\n    do {\n      sVar8 = paVar13[-2]._M_allocated_capacity;\n      (pIVar16->section_name_)._M_dataplus._M_p = (pointer)&(pIVar16->section_name_).field_2;\n      (pIVar16->input_section_).shndx_ = sVar8;\n      (pIVar16->input_section_).p2align_ = *(size_type *)((int)paVar13 + -0x1c);\n      *(size_type *)&(pIVar16->input_section_).u1_ = *(size_type *)((int)paVar13 + -0x18);\n      *(size_type *)((int)&(pIVar16->input_section_).u1_ + 4) = *(size_type *)((int)paVar13 + -0x14)\n      ;\n      (pIVar16->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1);\n      (pIVar16->input_section_).section_order_index_ = *(size_type *)((int)paVar13 + -0xc);\n      psVar9 = (size_type *)(((string *)((int)paVar13 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar9 == paVar13) {\n        (pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 4) =\n             *(size_type *)((int)paVar13 + 4);\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 8) =\n             *(size_type *)((int)paVar13 + 8);\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 0xc) =\n             *(size_type *)((int)paVar13 + 0xc);\n      }\n      else {\n        (pIVar16->section_name_)._M_dataplus._M_p = (pointer)psVar9;\n        (pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n      }\n      sVar8 = *(size_type *)((int)paVar13 + -4);\n      sVar7 = *(size_type *)((int)paVar13 + 0x14);\n      (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p = (pointer)paVar13;\n      pIVar15 = pIVar16 + 1;\n      *(size_type *)((int)paVar13 + -4) = 0;\n      (pIVar16->section_name_)._M_string_length = sVar8;\n      sVar8 = paVar13[1]._M_allocated_capacity;\n      *(size_type *)((int)&pIVar16->size_ + 4) = sVar7;\n      sVar7 = *(size_type *)((int)paVar13 + 0x1c);\n      *(size_type *)&pIVar16->size_ = sVar8;\n      paVar13->_M_local_buf[0] = '\0';\n      *(size_type *)&pIVar16->addralign_ = *(size_type *)((int)paVar13 + 0x18);\n      *(size_type *)((int)&pIVar16->addralign_ + 4) = sVar7;\n      paVar13 = paVar13 + 4;\n      pIVar16 = pIVar15;\n    } while (pIVar15 != pIVar14 + uVar12 + 2);\n    pIVar18 = pIVar18 + uVar12 + 1;\n  }" { (expression_statement "uVar12 = (uint)((int)pIVar3 + (-0x40 - (int)__position._M_current)) >> 6;" (assignment_expression "uVar12 = (uint)((int)pIVar3 + (-0x40 - (int)__position._M_current)) >> 6" identifier = (binary_expression "(uint)((int)pIVar3 + (-0x40 - (int)__position._M_current)) >> 6" (call_expression "(uint)((int)pIVar3 + (-0x40 - (int)__position._M_current))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pIVar3 + (-0x40 - (int)__position._M_current))" ( (binary_expression "(int)pIVar3 + (-0x40 - (int)__position._M_current)" (cast_expression "(int)pIVar3" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-0x40 - (int)__position._M_current)" ( (binary_expression "-0x40 - (int)__position._M_current" number_literal - (cast_expression "(int)__position._M_current" ( (type_descriptor "int" primitive_type) ) (field_expression "__position._M_current" identifier . field_identifier))) ))) ))) >> number_literal)) ;) (expression_statement "paVar13 = &((__position._M_current)->section_name_).field_2;" (assignment_expression "paVar13 = &((__position._M_current)->section_name_).field_2" identifier = (pointer_expression "&((__position._M_current)->section_name_).field_2" & (field_expression "((__position._M_current)->section_name_).field_2" (parenthesized_expression "((__position._M_current)->section_name_)" ( (field_expression "(__position._M_current)->section_name_" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) )) . field_identifier))) ;) (expression_statement "pIVar16 = pIVar18;" (assignment_expression "pIVar16 = pIVar18" identifier = identifier) ;) (do_statement "do {\n      sVar8 = paVar13[-2]._M_allocated_capacity;\n      (pIVar16->section_name_)._M_dataplus._M_p = (pointer)&(pIVar16->section_name_).field_2;\n      (pIVar16->input_section_).shndx_ = sVar8;\n      (pIVar16->input_section_).p2align_ = *(size_type *)((int)paVar13 + -0x1c);\n      *(size_type *)&(pIVar16->input_section_).u1_ = *(size_type *)((int)paVar13 + -0x18);\n      *(size_type *)((int)&(pIVar16->input_section_).u1_ + 4) = *(size_type *)((int)paVar13 + -0x14)\n      ;\n      (pIVar16->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1);\n      (pIVar16->input_section_).section_order_index_ = *(size_type *)((int)paVar13 + -0xc);\n      psVar9 = (size_type *)(((string *)((int)paVar13 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar9 == paVar13) {\n        (pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 4) =\n             *(size_type *)((int)paVar13 + 4);\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 8) =\n             *(size_type *)((int)paVar13 + 8);\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 0xc) =\n             *(size_type *)((int)paVar13 + 0xc);\n      }\n      else {\n        (pIVar16->section_name_)._M_dataplus._M_p = (pointer)psVar9;\n        (pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n      }\n      sVar8 = *(size_type *)((int)paVar13 + -4);\n      sVar7 = *(size_type *)((int)paVar13 + 0x14);\n      (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p = (pointer)paVar13;\n      pIVar15 = pIVar16 + 1;\n      *(size_type *)((int)paVar13 + -4) = 0;\n      (pIVar16->section_name_)._M_string_length = sVar8;\n      sVar8 = paVar13[1]._M_allocated_capacity;\n      *(size_type *)((int)&pIVar16->size_ + 4) = sVar7;\n      sVar7 = *(size_type *)((int)paVar13 + 0x1c);\n      *(size_type *)&pIVar16->size_ = sVar8;\n      paVar13->_M_local_buf[0] = '\0';\n      *(size_type *)&pIVar16->addralign_ = *(size_type *)((int)paVar13 + 0x18);\n      *(size_type *)((int)&pIVar16->addralign_ + 4) = sVar7;\n      paVar13 = paVar13 + 4;\n      pIVar16 = pIVar15;\n    } while (pIVar15 != pIVar14 + uVar12 + 2);" do (compound_statement "{\n      sVar8 = paVar13[-2]._M_allocated_capacity;\n      (pIVar16->section_name_)._M_dataplus._M_p = (pointer)&(pIVar16->section_name_).field_2;\n      (pIVar16->input_section_).shndx_ = sVar8;\n      (pIVar16->input_section_).p2align_ = *(size_type *)((int)paVar13 + -0x1c);\n      *(size_type *)&(pIVar16->input_section_).u1_ = *(size_type *)((int)paVar13 + -0x18);\n      *(size_type *)((int)&(pIVar16->input_section_).u1_ + 4) = *(size_type *)((int)paVar13 + -0x14)\n      ;\n      (pIVar16->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1);\n      (pIVar16->input_section_).section_order_index_ = *(size_type *)((int)paVar13 + -0xc);\n      psVar9 = (size_type *)(((string *)((int)paVar13 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar9 == paVar13) {\n        (pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 4) =\n             *(size_type *)((int)paVar13 + 4);\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 8) =\n             *(size_type *)((int)paVar13 + 8);\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 0xc) =\n             *(size_type *)((int)paVar13 + 0xc);\n      }\n      else {\n        (pIVar16->section_name_)._M_dataplus._M_p = (pointer)psVar9;\n        (pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n      }\n      sVar8 = *(size_type *)((int)paVar13 + -4);\n      sVar7 = *(size_type *)((int)paVar13 + 0x14);\n      (((string *)((int)paVar13 + -8))->_M_dataplus)._M_p = (pointer)paVar13;\n      pIVar15 = pIVar16 + 1;\n      *(size_type *)((int)paVar13 + -4) = 0;\n      (pIVar16->section_name_)._M_string_length = sVar8;\n      sVar8 = paVar13[1]._M_allocated_capacity;\n      *(size_type *)((int)&pIVar16->size_ + 4) = sVar7;\n      sVar7 = *(size_type *)((int)paVar13 + 0x1c);\n      *(size_type *)&pIVar16->size_ = sVar8;\n      paVar13->_M_local_buf[0] = '\0';\n      *(size_type *)&pIVar16->addralign_ = *(size_type *)((int)paVar13 + 0x18);\n      *(size_type *)((int)&pIVar16->addralign_ + 4) = sVar7;\n      paVar13 = paVar13 + 4;\n      pIVar16 = pIVar15;\n    }" { (expression_statement "sVar8 = paVar13[-2]._M_allocated_capacity;" (assignment_expression "sVar8 = paVar13[-2]._M_allocated_capacity" identifier = (field_expression "paVar13[-2]._M_allocated_capacity" (subscript_expression "paVar13[-2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "(pIVar16->section_name_)._M_dataplus._M_p = (pointer)&(pIVar16->section_name_).field_2;" (assignment_expression "(pIVar16->section_name_)._M_dataplus._M_p = (pointer)&(pIVar16->section_name_).field_2" (field_expression "(pIVar16->section_name_)._M_dataplus._M_p" (field_expression "(pIVar16->section_name_)._M_dataplus" (parenthesized_expression "(pIVar16->section_name_)" ( (field_expression "pIVar16->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(pIVar16->section_name_).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(pIVar16->section_name_).field_2" (parenthesized_expression "(pIVar16->section_name_)" ( (field_expression "pIVar16->section_name_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "(pIVar16->input_section_).shndx_ = sVar8;" (assignment_expression "(pIVar16->input_section_).shndx_ = sVar8" (field_expression "(pIVar16->input_section_).shndx_" (parenthesized_expression "(pIVar16->input_section_)" ( (field_expression "pIVar16->input_section_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(pIVar16->input_section_).p2align_ = *(size_type *)((int)paVar13 + -0x1c);" (assignment_expression "(pIVar16->input_section_).p2align_ = *(size_type *)((int)paVar13 + -0x1c)" (field_expression "(pIVar16->input_section_).p2align_" (parenthesized_expression "(pIVar16->input_section_)" ( (field_expression "pIVar16->input_section_" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(size_type *)((int)paVar13 + -0x1c)" * (cast_expression "(size_type *)((int)paVar13 + -0x1c)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + -0x1c)" ( (binary_expression "(int)paVar13 + -0x1c" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(size_type *)&(pIVar16->input_section_).u1_ = *(size_type *)((int)paVar13 + -0x18);" (assignment_expression "*(size_type *)&(pIVar16->input_section_).u1_ = *(size_type *)((int)paVar13 + -0x18)" (pointer_expression "*(size_type *)&(pIVar16->input_section_).u1_" * (cast_expression "(size_type *)&(pIVar16->input_section_).u1_" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pIVar16->input_section_).u1_" & (field_expression "(pIVar16->input_section_).u1_" (parenthesized_expression "(pIVar16->input_section_)" ( (field_expression "pIVar16->input_section_" identifier -> field_identifier) )) . field_identifier)))) = (pointer_expression "*(size_type *)((int)paVar13 + -0x18)" * (cast_expression "(size_type *)((int)paVar13 + -0x18)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + -0x18)" ( (binary_expression "(int)paVar13 + -0x18" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(size_type *)((int)&(pIVar16->input_section_).u1_ + 4) = *(size_type *)((int)paVar13 + -0x14)\n      ;" (assignment_expression "*(size_type *)((int)&(pIVar16->input_section_).u1_ + 4) = *(size_type *)((int)paVar13 + -0x14)" (pointer_expression "*(size_type *)((int)&(pIVar16->input_section_).u1_ + 4)" * (cast_expression "(size_type *)((int)&(pIVar16->input_section_).u1_ + 4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pIVar16->input_section_).u1_ + 4)" ( (binary_expression "(int)&(pIVar16->input_section_).u1_ + 4" (cast_expression "(int)&(pIVar16->input_section_).u1_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pIVar16->input_section_).u1_" & (field_expression "(pIVar16->input_section_).u1_" (parenthesized_expression "(pIVar16->input_section_)" ( (field_expression "pIVar16->input_section_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(size_type *)((int)paVar13 + -0x14)" * (cast_expression "(size_type *)((int)paVar13 + -0x14)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + -0x14)" ( (binary_expression "(int)paVar13 + -0x14" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "(pIVar16->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1);" (assignment_expression "(pIVar16->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1)" (field_expression "(pIVar16->input_section_).u2_" (parenthesized_expression "(pIVar16->input_section_)" ( (field_expression "pIVar16->input_section_" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1)" * (cast_expression "(anon_union_4_4_139239c7_for_u2_ *)(paVar13 + -1)" ( (type_descriptor "anon_union_4_4_139239c7_for_u2_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar13 + -1)" ( (binary_expression "paVar13 + -1" identifier + number_literal) ))))) ;) (expression_statement "(pIVar16->input_section_).section_order_index_ = *(size_type *)((int)paVar13 + -0xc);" (assignment_expression "(pIVar16->input_section_).section_order_index_ = *(size_type *)((int)paVar13 + -0xc)" (field_expression "(pIVar16->input_section_).section_order_index_" (parenthesized_expression "(pIVar16->input_section_)" ( (field_expression "pIVar16->input_section_" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(size_type *)((int)paVar13 + -0xc)" * (cast_expression "(size_type *)((int)paVar13 + -0xc)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + -0xc)" ( (binary_expression "(int)paVar13 + -0xc" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "psVar9 = (size_type *)(((string *)((int)paVar13 + -8))->_M_dataplus)._M_p;" (assignment_expression "psVar9 = (size_type *)(((string *)((int)paVar13 + -8))->_M_dataplus)._M_p" identifier = (cast_expression "(size_type *)(((string *)((int)paVar13 + -8))->_M_dataplus)._M_p" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(((string *)((int)paVar13 + -8))->_M_dataplus)._M_p" (parenthesized_expression "(((string *)((int)paVar13 + -8))->_M_dataplus)" ( (field_expression "((string *)((int)paVar13 + -8))->_M_dataplus" (parenthesized_expression "((string *)((int)paVar13 + -8))" ( (cast_expression "(string *)((int)paVar13 + -8)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + -8)" ( (binary_expression "(int)paVar13 + -8" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )) -> field_identifier) )) . field_identifier))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar9 == paVar13) {\n        (pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 4) =\n             *(size_type *)((int)paVar13 + 4);\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 8) =\n             *(size_type *)((int)paVar13 + 8);\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 0xc) =\n             *(size_type *)((int)paVar13 + 0xc);\n      }\n      else {\n        (pIVar16->section_name_)._M_dataplus._M_p = (pointer)psVar9;\n        (pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n      }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar9 == paVar13)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar9 == paVar13)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n           *)psVar9 == paVar13" (binary_expression "allocator<char>_>_9\n           *)psVar9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)psVar9" identifier * (ERROR ")" )) identifier)) == identifier) )) )) (compound_statement "{\n        (pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 4) =\n             *(size_type *)((int)paVar13 + 4);\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 8) =\n             *(size_type *)((int)paVar13 + 8);\n        *(size_type *)((int)&(pIVar16->section_name_).field_2 + 0xc) =\n             *(size_type *)((int)paVar13 + 0xc);\n      }" { (expression_statement "(pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;" (assignment_expression "(pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity" (field_expression "(pIVar16->section_name_).field_2._M_allocated_capacity" (field_expression "(pIVar16->section_name_).field_2" (parenthesized_expression "(pIVar16->section_name_)" ( (field_expression "pIVar16->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar13->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "*(size_type *)((int)&(pIVar16->section_name_).field_2 + 4) =\n             *(size_type *)((int)paVar13 + 4);" (assignment_expression "*(size_type *)((int)&(pIVar16->section_name_).field_2 + 4) =\n             *(size_type *)((int)paVar13 + 4)" (pointer_expression "*(size_type *)((int)&(pIVar16->section_name_).field_2 + 4)" * (cast_expression "(size_type *)((int)&(pIVar16->section_name_).field_2 + 4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pIVar16->section_name_).field_2 + 4)" ( (binary_expression "(int)&(pIVar16->section_name_).field_2 + 4" (cast_expression "(int)&(pIVar16->section_name_).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pIVar16->section_name_).field_2" & (field_expression "(pIVar16->section_name_).field_2" (parenthesized_expression "(pIVar16->section_name_)" ( (field_expression "pIVar16->section_name_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(size_type *)((int)paVar13 + 4)" * (cast_expression "(size_type *)((int)paVar13 + 4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + 4)" ( (binary_expression "(int)paVar13 + 4" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(size_type *)((int)&(pIVar16->section_name_).field_2 + 8) =\n             *(size_type *)((int)paVar13 + 8);" (assignment_expression "*(size_type *)((int)&(pIVar16->section_name_).field_2 + 8) =\n             *(size_type *)((int)paVar13 + 8)" (pointer_expression "*(size_type *)((int)&(pIVar16->section_name_).field_2 + 8)" * (cast_expression "(size_type *)((int)&(pIVar16->section_name_).field_2 + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pIVar16->section_name_).field_2 + 8)" ( (binary_expression "(int)&(pIVar16->section_name_).field_2 + 8" (cast_expression "(int)&(pIVar16->section_name_).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pIVar16->section_name_).field_2" & (field_expression "(pIVar16->section_name_).field_2" (parenthesized_expression "(pIVar16->section_name_)" ( (field_expression "pIVar16->section_name_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(size_type *)((int)paVar13 + 8)" * (cast_expression "(size_type *)((int)paVar13 + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + 8)" ( (binary_expression "(int)paVar13 + 8" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(size_type *)((int)&(pIVar16->section_name_).field_2 + 0xc) =\n             *(size_type *)((int)paVar13 + 0xc);" (assignment_expression "*(size_type *)((int)&(pIVar16->section_name_).field_2 + 0xc) =\n             *(size_type *)((int)paVar13 + 0xc)" (pointer_expression "*(size_type *)((int)&(pIVar16->section_name_).field_2 + 0xc)" * (cast_expression "(size_type *)((int)&(pIVar16->section_name_).field_2 + 0xc)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pIVar16->section_name_).field_2 + 0xc)" ( (binary_expression "(int)&(pIVar16->section_name_).field_2 + 0xc" (cast_expression "(int)&(pIVar16->section_name_).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pIVar16->section_name_).field_2" & (field_expression "(pIVar16->section_name_).field_2" (parenthesized_expression "(pIVar16->section_name_)" ( (field_expression "pIVar16->section_name_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(size_type *)((int)paVar13 + 0xc)" * (cast_expression "(size_type *)((int)paVar13 + 0xc)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + 0xc)" ( (binary_expression "(int)paVar13 + 0xc" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n        (pIVar16->section_name_)._M_dataplus._M_p = (pointer)psVar9;\n        (pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n      }" else (compound_statement "{\n        (pIVar16->section_name_)._M_dataplus._M_p = (pointer)psVar9;\n        (pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;\n      }" { (expression_statement "(pIVar16->section_name_)._M_dataplus._M_p = (pointer)psVar9;" (assignment_expression "(pIVar16->section_name_)._M_dataplus._M_p = (pointer)psVar9" (field_expression "(pIVar16->section_name_)._M_dataplus._M_p" (field_expression "(pIVar16->section_name_)._M_dataplus" (parenthesized_expression "(pIVar16->section_name_)" ( (field_expression "pIVar16->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(pointer)psVar9" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "(pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity;" (assignment_expression "(pIVar16->section_name_).field_2._M_allocated_capacity = paVar13->_M_allocated_capacity" (field_expression "(pIVar16->section_name_).field_2._M_allocated_capacity" (field_expression "(pIVar16->section_name_).field_2" (parenthesized_expression "(pIVar16->section_name_)" ( (field_expression "pIVar16->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar13->_M_allocated_capacity" identifier -> field_identifier)) ;) }))) (expression_statement "sVar8 = *(size_type *)((int)paVar13 + -4);" (assignment_expression "sVar8 = *(size_type *)((int)paVar13 + -4)" identifier = (pointer_expression "*(size_type *)((int)paVar13 + -4)" * (cast_expression "(size_type *)((int)paVar13 + -4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + -4)" ( (binary_expression "(int)paVar13 + -4" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "sVar7 = *(size_type *)((int)paVar13 + 0x14);" (assignment_expression "sVar7 = *(size_type *)((int)paVar13 + 0x14)" identifier = (pointer_expression "*(size_type *)((int)paVar13 + 0x14)" * (cast_expression "(size_type *)((int)paVar13 + 0x14)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + 0x14)" ( (binary_expression "(int)paVar13 + 0x14" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "(((string *)((int)paVar13 + -8))->_M_dataplus)._M_p = (pointer)paVar13;" (assignment_expression "(((string *)((int)paVar13 + -8))->_M_dataplus)._M_p = (pointer)paVar13" (field_expression "(((string *)((int)paVar13 + -8))->_M_dataplus)._M_p" (parenthesized_expression "(((string *)((int)paVar13 + -8))->_M_dataplus)" ( (field_expression "((string *)((int)paVar13 + -8))->_M_dataplus" (parenthesized_expression "((string *)((int)paVar13 + -8))" ( (cast_expression "(string *)((int)paVar13 + -8)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + -8)" ( (binary_expression "(int)paVar13 + -8" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )) -> field_identifier) )) . field_identifier) = (cast_expression "(pointer)paVar13" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "pIVar15 = pIVar16 + 1;" (assignment_expression "pIVar15 = pIVar16 + 1" identifier = (binary_expression "pIVar16 + 1" identifier + number_literal)) ;) (expression_statement "*(size_type *)((int)paVar13 + -4) = 0;" (assignment_expression "*(size_type *)((int)paVar13 + -4) = 0" (pointer_expression "*(size_type *)((int)paVar13 + -4)" * (cast_expression "(size_type *)((int)paVar13 + -4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + -4)" ( (binary_expression "(int)paVar13 + -4" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "(pIVar16->section_name_)._M_string_length = sVar8;" (assignment_expression "(pIVar16->section_name_)._M_string_length = sVar8" (field_expression "(pIVar16->section_name_)._M_string_length" (parenthesized_expression "(pIVar16->section_name_)" ( (field_expression "pIVar16->section_name_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "sVar8 = paVar13[1]._M_allocated_capacity;" (assignment_expression "sVar8 = paVar13[1]._M_allocated_capacity" identifier = (field_expression "paVar13[1]._M_allocated_capacity" (subscript_expression "paVar13[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "*(size_type *)((int)&pIVar16->size_ + 4) = sVar7;" (assignment_expression "*(size_type *)((int)&pIVar16->size_ + 4) = sVar7" (pointer_expression "*(size_type *)((int)&pIVar16->size_ + 4)" * (cast_expression "(size_type *)((int)&pIVar16->size_ + 4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pIVar16->size_ + 4)" ( (binary_expression "(int)&pIVar16->size_ + 4" (cast_expression "(int)&pIVar16->size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pIVar16->size_" & (field_expression "pIVar16->size_" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "sVar7 = *(size_type *)((int)paVar13 + 0x1c);" (assignment_expression "sVar7 = *(size_type *)((int)paVar13 + 0x1c)" identifier = (pointer_expression "*(size_type *)((int)paVar13 + 0x1c)" * (cast_expression "(size_type *)((int)paVar13 + 0x1c)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + 0x1c)" ( (binary_expression "(int)paVar13 + 0x1c" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(size_type *)&pIVar16->size_ = sVar8;" (assignment_expression "*(size_type *)&pIVar16->size_ = sVar8" (pointer_expression "*(size_type *)&pIVar16->size_" * (cast_expression "(size_type *)&pIVar16->size_" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pIVar16->size_" & (field_expression "pIVar16->size_" identifier -> field_identifier)))) = identifier) ;) (expression_statement "paVar13->_M_local_buf[0] = '\0';" (assignment_expression "paVar13->_M_local_buf[0] = '\0'" (subscript_expression "paVar13->_M_local_buf[0]" (field_expression "paVar13->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(size_type *)&pIVar16->addralign_ = *(size_type *)((int)paVar13 + 0x18);" (assignment_expression "*(size_type *)&pIVar16->addralign_ = *(size_type *)((int)paVar13 + 0x18)" (pointer_expression "*(size_type *)&pIVar16->addralign_" * (cast_expression "(size_type *)&pIVar16->addralign_" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pIVar16->addralign_" & (field_expression "pIVar16->addralign_" identifier -> field_identifier)))) = (pointer_expression "*(size_type *)((int)paVar13 + 0x18)" * (cast_expression "(size_type *)((int)paVar13 + 0x18)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar13 + 0x18)" ( (binary_expression "(int)paVar13 + 0x18" (cast_expression "(int)paVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(size_type *)((int)&pIVar16->addralign_ + 4) = sVar7;" (assignment_expression "*(size_type *)((int)&pIVar16->addralign_ + 4) = sVar7" (pointer_expression "*(size_type *)((int)&pIVar16->addralign_ + 4)" * (cast_expression "(size_type *)((int)&pIVar16->addralign_ + 4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pIVar16->addralign_ + 4)" ( (binary_expression "(int)&pIVar16->addralign_ + 4" (cast_expression "(int)&pIVar16->addralign_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pIVar16->addralign_" & (field_expression "pIVar16->addralign_" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "paVar13 = paVar13 + 4;" (assignment_expression "paVar13 = paVar13 + 4" identifier = (binary_expression "paVar13 + 4" identifier + number_literal)) ;) (expression_statement "pIVar16 = pIVar15;" (assignment_expression "pIVar16 = pIVar15" identifier = identifier) ;) }) while (parenthesized_expression "(pIVar15 != pIVar14 + uVar12 + 2)" ( (binary_expression "pIVar15 != pIVar14 + uVar12 + 2" identifier != (binary_expression "pIVar14 + uVar12 + 2" (binary_expression "pIVar14 + uVar12" identifier + identifier) + number_literal)) )) ;) (expression_statement "pIVar18 = pIVar18 + uVar12 + 1;" (assignment_expression "pIVar18 = pIVar18 + uVar12 + 1" identifier = (binary_expression "pIVar18 + uVar12 + 1" (binary_expression "pIVar18 + uVar12" identifier + identifier) + number_literal)) ;) })) (for_statement "for (; pIVar10 != pIVar3; pIVar10 = pIVar10 + 1) {\n    pcVar4 = (pIVar10->section_name_)._M_dataplus._M_p;\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)pcVar4 != &(pIVar10->section_name_).field_2) {\n      operator_delete(pcVar4);\n    }\n  }" for ( ; (binary_expression "pIVar10 != pIVar3" identifier != identifier) ; (assignment_expression "pIVar10 = pIVar10 + 1" identifier = (binary_expression "pIVar10 + 1" identifier + number_literal)) ) (compound_statement "{\n    pcVar4 = (pIVar10->section_name_)._M_dataplus._M_p;\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)pcVar4 != &(pIVar10->section_name_).field_2) {\n      operator_delete(pcVar4);\n    }\n  }" { (expression_statement "pcVar4 = (pIVar10->section_name_)._M_dataplus._M_p;" (assignment_expression "pcVar4 = (pIVar10->section_name_)._M_dataplus._M_p" identifier = (field_expression "(pIVar10->section_name_)._M_dataplus._M_p" (field_expression "(pIVar10->section_name_)._M_dataplus" (parenthesized_expression "(pIVar10->section_name_)" ( (field_expression "pIVar10->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)pcVar4 != &(pIVar10->section_name_).field_2) {\n      operator_delete(pcVar4);\n    }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)pcVar4 != &(pIVar10->section_name_).field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)pcVar4 != &(pIVar10->section_name_).field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n         *)pcVar4 != &(pIVar10->section_name_).field_2" (binary_expression "allocator<char>_>_9\n         *)pcVar4" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n         *)pcVar4" identifier * (ERROR ")" )) identifier)) != (pointer_expression "&(pIVar10->section_name_).field_2" & (field_expression "(pIVar10->section_name_).field_2" (parenthesized_expression "(pIVar10->section_name_)" ( (field_expression "pIVar10->section_name_" identifier -> field_identifier) )) . field_identifier))) )) )) (compound_statement "{\n      operator_delete(pcVar4);\n    }" { (expression_statement "operator_delete(pcVar4);" (call_expression "operator_delete(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier ))) ;) })) })) (if_statement "if (pIVar2 != (pointer)0x0) {\n    operator_delete(pIVar2);\n  }" if (parenthesized_expression "(pIVar2 != (pointer)0x0)" ( (binary_expression "pIVar2 != (pointer)0x0" identifier != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) )) (compound_statement "{\n    operator_delete(pIVar2);\n  }" { (expression_statement "operator_delete(pIVar2);" (call_expression "operator_delete(pIVar2)" identifier (argument_list "(pIVar2)" ( identifier ))) ;) })) (expression_statement "(this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n  _M_impl._M_finish = pIVar18;" (assignment_expression "(this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n  _M_impl._M_finish = pIVar18" (field_expression "(this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n  _M_impl._M_finish" (field_expression "(this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n  _M_impl" (parenthesized_expression "(this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>)" ( (ERROR "this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::" (comma_expression "this->super__Vector_base<gold::Input_section_info,_std" (binary_expression "this->super__Vector_base<gold" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Input_section_info" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Input_section_info>_>" (binary_expression "Input_section_info>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n  _M_impl._M_start = local_30;" (assignment_expression "(this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n  _M_impl._M_start = local_30" (field_expression "(this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n  _M_impl._M_start" (field_expression "(this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n  _M_impl" (parenthesized_expression "(this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>)" ( (ERROR "this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::" (comma_expression "this->super__Vector_base<gold::Input_section_info,_std" (binary_expression "this->super__Vector_base<gold" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Input_section_info" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Input_section_info>_>" (binary_expression "Input_section_info>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n  _M_impl._M_end_of_storage = local_30 + local_34;" (assignment_expression "(this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n  _M_impl._M_end_of_storage = local_30 + local_34" (field_expression "(this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n  _M_impl._M_end_of_storage" (field_expression "(this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>).\n  _M_impl" (parenthesized_expression "(this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>)" ( (ERROR "this->super__Vector_base<gold::Input_section_info,_std::allocator<gold::" (comma_expression "this->super__Vector_base<gold::Input_section_info,_std" (binary_expression "this->super__Vector_base<gold" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Input_section_info" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Input_section_info>_>" (binary_expression "Input_section_info>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier) = (binary_expression "local_30 + local_34" identifier + identifier)) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_0013b0e0(int *param_1,int param_2,undefined4 *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *puVar11;\n  uint local_34;\n  undefined4 *local_30;\n  \n  iVar1 = *param_1;\n  iVar2 = param_1[1];\n  uVar5 = iVar2 - iVar1 >> 6;\n  if (uVar5 == 0) {\n    local_34 = 1;\nLAB_0013b3d7:\n    iVar6 = local_34 << 6;\n  }\n  else {\n    local_34 = uVar5 * 2;\n    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    iVar6 = -0x40;\n  }\n  local_30 = (undefined4 *)FUN_001aa8c0(iVar6);\nLAB_0013b145:\n  puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30);\n  *puVar11 = *param_3;\n  puVar11[1] = param_3[1];\n  puVar11[2] = param_3[2];\n  puVar11[3] = param_3[3];\n  puVar11[4] = param_3[4];\n  puVar11[5] = param_3[5];\n  puVar11[6] = puVar11 + 8;\n                    \n  FUN_0007c4c0(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0);\n  uVar3 = param_3[0xd];\n  puVar11[0xc] = param_3[0xc];\n  uVar4 = param_3[0xe];\n  puVar11[0xd] = uVar3;\n  uVar3 = param_3[0xf];\n  puVar11[0xe] = uVar4;\n  puVar11[0xf] = uVar3;\n  puVar11 = local_30;\n  if (param_2 != iVar1) {\n    iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;\n    puVar11 = (undefined4 *)(iVar1 + 0x20);\n    puVar8 = local_30;\n    do {\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    } while (puVar7 != local_30 + iVar6 * 0x10);\n    puVar11 = local_30 + iVar6 * 0x10;\n  }\n  puVar8 = puVar11 + 0x10;\n  iVar6 = iVar1;\n  if (param_2 != iVar2) {\n    uVar5 = (iVar2 - param_2) - 0x40U >> 6;\n    puVar7 = (undefined4 *)(param_2 + 0x20);\n    puVar10 = puVar8;\n    do {\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);\n    puVar8 = puVar8 + (uVar5 + 1) * 0x10;\n  }\n  for (; iVar6 != iVar2; iVar6 = iVar6 + 0x40) {\n    if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }\n  }\n  if (iVar1 != 0) {\n    FUN_001ac470(iVar1);\n  }\n  param_1[1] = (int)puVar8;\n  *param_1 = (int)local_30;\n  param_1[2] = (int)(local_30 + local_34 * 0x10);\n  return;\n}\n\n" (function_definition "void FUN_0013b0e0(int *param_1,int param_2,undefined4 *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *puVar11;\n  uint local_34;\n  undefined4 *local_30;\n  \n  iVar1 = *param_1;\n  iVar2 = param_1[1];\n  uVar5 = iVar2 - iVar1 >> 6;\n  if (uVar5 == 0) {\n    local_34 = 1;\nLAB_0013b3d7:\n    iVar6 = local_34 << 6;\n  }\n  else {\n    local_34 = uVar5 * 2;\n    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    iVar6 = -0x40;\n  }\n  local_30 = (undefined4 *)FUN_001aa8c0(iVar6);\nLAB_0013b145:\n  puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30);\n  *puVar11 = *param_3;\n  puVar11[1] = param_3[1];\n  puVar11[2] = param_3[2];\n  puVar11[3] = param_3[3];\n  puVar11[4] = param_3[4];\n  puVar11[5] = param_3[5];\n  puVar11[6] = puVar11 + 8;\n                    \n  FUN_0007c4c0(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0);\n  uVar3 = param_3[0xd];\n  puVar11[0xc] = param_3[0xc];\n  uVar4 = param_3[0xe];\n  puVar11[0xd] = uVar3;\n  uVar3 = param_3[0xf];\n  puVar11[0xe] = uVar4;\n  puVar11[0xf] = uVar3;\n  puVar11 = local_30;\n  if (param_2 != iVar1) {\n    iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;\n    puVar11 = (undefined4 *)(iVar1 + 0x20);\n    puVar8 = local_30;\n    do {\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    } while (puVar7 != local_30 + iVar6 * 0x10);\n    puVar11 = local_30 + iVar6 * 0x10;\n  }\n  puVar8 = puVar11 + 0x10;\n  iVar6 = iVar1;\n  if (param_2 != iVar2) {\n    uVar5 = (iVar2 - param_2) - 0x40U >> 6;\n    puVar7 = (undefined4 *)(param_2 + 0x20);\n    puVar10 = puVar8;\n    do {\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);\n    puVar8 = puVar8 + (uVar5 + 1) * 0x10;\n  }\n  for (; iVar6 != iVar2; iVar6 = iVar6 + 0x40) {\n    if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }\n  }\n  if (iVar1 != 0) {\n    FUN_001ac470(iVar1);\n  }\n  param_1[1] = (int)puVar8;\n  *param_1 = (int)local_30;\n  param_1[2] = (int)(local_30 + local_34 * 0x10);\n  return;\n}" primitive_type (function_declarator "FUN_0013b0e0(int *param_1,int param_2,undefined4 *param_3)" identifier (parameter_list "(int *param_1,int param_2,undefined4 *param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *puVar11;\n  uint local_34;\n  undefined4 *local_30;\n  \n  iVar1 = *param_1;\n  iVar2 = param_1[1];\n  uVar5 = iVar2 - iVar1 >> 6;\n  if (uVar5 == 0) {\n    local_34 = 1;\nLAB_0013b3d7:\n    iVar6 = local_34 << 6;\n  }\n  else {\n    local_34 = uVar5 * 2;\n    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    iVar6 = -0x40;\n  }\n  local_30 = (undefined4 *)FUN_001aa8c0(iVar6);\nLAB_0013b145:\n  puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30);\n  *puVar11 = *param_3;\n  puVar11[1] = param_3[1];\n  puVar11[2] = param_3[2];\n  puVar11[3] = param_3[3];\n  puVar11[4] = param_3[4];\n  puVar11[5] = param_3[5];\n  puVar11[6] = puVar11 + 8;\n                    \n  FUN_0007c4c0(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0);\n  uVar3 = param_3[0xd];\n  puVar11[0xc] = param_3[0xc];\n  uVar4 = param_3[0xe];\n  puVar11[0xd] = uVar3;\n  uVar3 = param_3[0xf];\n  puVar11[0xe] = uVar4;\n  puVar11[0xf] = uVar3;\n  puVar11 = local_30;\n  if (param_2 != iVar1) {\n    iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;\n    puVar11 = (undefined4 *)(iVar1 + 0x20);\n    puVar8 = local_30;\n    do {\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    } while (puVar7 != local_30 + iVar6 * 0x10);\n    puVar11 = local_30 + iVar6 * 0x10;\n  }\n  puVar8 = puVar11 + 0x10;\n  iVar6 = iVar1;\n  if (param_2 != iVar2) {\n    uVar5 = (iVar2 - param_2) - 0x40U >> 6;\n    puVar7 = (undefined4 *)(param_2 + 0x20);\n    puVar10 = puVar8;\n    do {\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);\n    puVar8 = puVar8 + (uVar5 + 1) * 0x10;\n  }\n  for (; iVar6 != iVar2; iVar6 = iVar6 + 0x40) {\n    if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }\n  }\n  if (iVar1 != 0) {\n    FUN_001ac470(iVar1);\n  }\n  param_1[1] = (int)puVar8;\n  *param_1 = (int)local_30;\n  param_1[2] = (int)(local_30 + local_34 * 0x10);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "undefined4 *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (expression_statement "iVar1 = *param_1;" (assignment_expression "iVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar2 = param_1[1];" (assignment_expression "iVar2 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = iVar2 - iVar1 >> 6;" (assignment_expression "uVar5 = iVar2 - iVar1 >> 6" identifier = (binary_expression "iVar2 - iVar1 >> 6" (binary_expression "iVar2 - iVar1" identifier - identifier) >> number_literal)) ;) (if_statement "if (uVar5 == 0) {\n    local_34 = 1;\nLAB_0013b3d7:\n    iVar6 = local_34 << 6;\n  }\n  else {\n    local_34 = uVar5 * 2;\n    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    iVar6 = -0x40;\n  }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    local_34 = 1;\nLAB_0013b3d7:\n    iVar6 = local_34 << 6;\n  }" { (expression_statement "local_34 = 1;" (assignment_expression "local_34 = 1" identifier = number_literal) ;) (labeled_statement "LAB_0013b3d7:\n    iVar6 = local_34 << 6;" statement_identifier : (expression_statement "iVar6 = local_34 << 6;" (assignment_expression "iVar6 = local_34 << 6" identifier = (binary_expression "local_34 << 6" identifier << number_literal)) ;)) }) (else_clause "else {\n    local_34 = uVar5 * 2;\n    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    iVar6 = -0x40;\n  }" else (compound_statement "{\n    local_34 = uVar5 * 2;\n    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    iVar6 = -0x40;\n  }" { (expression_statement "local_34 = uVar5 * 2;" (assignment_expression "local_34 = uVar5 * 2" identifier = (binary_expression "uVar5 * 2" identifier * number_literal)) ;) (if_statement "if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }" if (parenthesized_expression "((uVar5 <= local_34) && (local_34 < 0x4000000))" ( (binary_expression "(uVar5 <= local_34) && (local_34 < 0x4000000)" (parenthesized_expression "(uVar5 <= local_34)" ( (binary_expression "uVar5 <= local_34" identifier <= identifier) )) && (parenthesized_expression "(local_34 < 0x4000000)" ( (binary_expression "local_34 < 0x4000000" identifier < number_literal) ))) )) (compound_statement "{\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }" { (expression_statement "local_30 = (undefined4 *)0x0;" (assignment_expression "local_30 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (local_34 == 0) goto LAB_0013b145;" if (parenthesized_expression "(local_34 == 0)" ( (binary_expression "local_34 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0013b145;" goto statement_identifier ;)) (goto_statement "goto LAB_0013b3d7;" goto statement_identifier ;) })) (expression_statement "local_34 = 0x3ffffff;" (assignment_expression "local_34 = 0x3ffffff" identifier = number_literal) ;) (expression_statement "iVar6 = -0x40;" (assignment_expression "iVar6 = -0x40" identifier = number_literal) ;) }))) (expression_statement "local_30 = (undefined4 *)FUN_001aa8c0(iVar6);" (assignment_expression "local_30 = (undefined4 *)FUN_001aa8c0(iVar6)" identifier = (cast_expression "(undefined4 *)FUN_001aa8c0(iVar6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))))) ;) (labeled_statement "LAB_0013b145:\n  puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30);" statement_identifier : (expression_statement "puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30);" (assignment_expression "puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30)" identifier = (cast_expression "(undefined4 *)((param_2 - iVar1) + (int)local_30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((param_2 - iVar1) + (int)local_30)" ( (binary_expression "(param_2 - iVar1) + (int)local_30" (parenthesized_expression "(param_2 - iVar1)" ( (binary_expression "param_2 - iVar1" identifier - identifier) )) + (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;)) (expression_statement "*puVar11 = *param_3;" (assignment_expression "*puVar11 = *param_3" (pointer_expression "*puVar11" * identifier) = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "puVar11[1] = param_3[1];" (assignment_expression "puVar11[1] = param_3[1]" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "puVar11[2] = param_3[2];" (assignment_expression "puVar11[2] = param_3[2]" (subscript_expression "puVar11[2]" identifier [ number_literal ]) = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (expression_statement "puVar11[3] = param_3[3];" (assignment_expression "puVar11[3] = param_3[3]" (subscript_expression "puVar11[3]" identifier [ number_literal ]) = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (expression_statement "puVar11[4] = param_3[4];" (assignment_expression "puVar11[4] = param_3[4]" (subscript_expression "puVar11[4]" identifier [ number_literal ]) = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (expression_statement "puVar11[5] = param_3[5];" (assignment_expression "puVar11[5] = param_3[5]" (subscript_expression "puVar11[5]" identifier [ number_literal ]) = (subscript_expression "param_3[5]" identifier [ number_literal ])) ;) (expression_statement "puVar11[6] = puVar11 + 8;" (assignment_expression "puVar11[6] = puVar11 + 8" (subscript_expression "puVar11[6]" identifier [ number_literal ]) = (binary_expression "puVar11 + 8" identifier + number_literal)) ;) (expression_statement "FUN_0007c4c0(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0);" (call_expression "FUN_0007c4c0(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0)" identifier (argument_list "(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0)" ( (binary_expression "puVar11 + 6" identifier + number_literal) , (subscript_expression "param_3[6]" identifier [ number_literal ]) , (binary_expression "param_3[7] + param_3[6]" (subscript_expression "param_3[7]" identifier [ number_literal ]) + (subscript_expression "param_3[6]" identifier [ number_literal ])) , number_literal ))) ;) (expression_statement "uVar3 = param_3[0xd];" (assignment_expression "uVar3 = param_3[0xd]" identifier = (subscript_expression "param_3[0xd]" identifier [ number_literal ])) ;) (expression_statement "puVar11[0xc] = param_3[0xc];" (assignment_expression "puVar11[0xc] = param_3[0xc]" (subscript_expression "puVar11[0xc]" identifier [ number_literal ]) = (subscript_expression "param_3[0xc]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_3[0xe];" (assignment_expression "uVar4 = param_3[0xe]" identifier = (subscript_expression "param_3[0xe]" identifier [ number_literal ])) ;) (expression_statement "puVar11[0xd] = uVar3;" (assignment_expression "puVar11[0xd] = uVar3" (subscript_expression "puVar11[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar3 = param_3[0xf];" (assignment_expression "uVar3 = param_3[0xf]" identifier = (subscript_expression "param_3[0xf]" identifier [ number_literal ])) ;) (expression_statement "puVar11[0xe] = uVar4;" (assignment_expression "puVar11[0xe] = uVar4" (subscript_expression "puVar11[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[0xf] = uVar3;" (assignment_expression "puVar11[0xf] = uVar3" (subscript_expression "puVar11[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11 = local_30;" (assignment_expression "puVar11 = local_30" identifier = identifier) ;) (if_statement "if (param_2 != iVar1) {\n    iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;\n    puVar11 = (undefined4 *)(iVar1 + 0x20);\n    puVar8 = local_30;\n    do {\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    } while (puVar7 != local_30 + iVar6 * 0x10);\n    puVar11 = local_30 + iVar6 * 0x10;\n  }" if (parenthesized_expression "(param_2 != iVar1)" ( (binary_expression "param_2 != iVar1" identifier != identifier) )) (compound_statement "{\n    iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;\n    puVar11 = (undefined4 *)(iVar1 + 0x20);\n    puVar8 = local_30;\n    do {\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    } while (puVar7 != local_30 + iVar6 * 0x10);\n    puVar11 = local_30 + iVar6 * 0x10;\n  }" { (expression_statement "iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;" (assignment_expression "iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1" identifier = (binary_expression "((uint)((param_2 + -0x40) - iVar1) >> 6) + 1" (parenthesized_expression "((uint)((param_2 + -0x40) - iVar1) >> 6)" ( (binary_expression "(uint)((param_2 + -0x40) - iVar1) >> 6" (call_expression "(uint)((param_2 + -0x40) - iVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((param_2 + -0x40) - iVar1)" ( (binary_expression "(param_2 + -0x40) - iVar1" (parenthesized_expression "(param_2 + -0x40)" ( (binary_expression "param_2 + -0x40" identifier + number_literal) )) - identifier) ))) >> number_literal) )) + number_literal)) ;) (expression_statement "puVar11 = (undefined4 *)(iVar1 + 0x20);" (assignment_expression "puVar11 = (undefined4 *)(iVar1 + 0x20)" identifier = (cast_expression "(undefined4 *)(iVar1 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x20)" ( (binary_expression "iVar1 + 0x20" identifier + number_literal) )))) ;) (expression_statement "puVar8 = local_30;" (assignment_expression "puVar8 = local_30" identifier = identifier) ;) (do_statement "do {\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    } while (puVar7 != local_30 + iVar6 * 0x10);" do (compound_statement "{\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    }" { (expression_statement "*puVar8 = puVar11[-8];" (assignment_expression "*puVar8 = puVar11[-8]" (pointer_expression "*puVar8" * identifier) = (subscript_expression "puVar11[-8]" identifier [ number_literal ])) ;) (expression_statement "puVar8[1] = puVar11[-7];" (assignment_expression "puVar8[1] = puVar11[-7]" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = (subscript_expression "puVar11[-7]" identifier [ number_literal ])) ;) (expression_statement "puVar8[2] = puVar11[-6];" (assignment_expression "puVar8[2] = puVar11[-6]" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = (subscript_expression "puVar11[-6]" identifier [ number_literal ])) ;) (expression_statement "puVar8[3] = puVar11[-5];" (assignment_expression "puVar8[3] = puVar11[-5]" (subscript_expression "puVar8[3]" identifier [ number_literal ]) = (subscript_expression "puVar11[-5]" identifier [ number_literal ])) ;) (expression_statement "puVar8[4] = puVar11[-4];" (assignment_expression "puVar8[4] = puVar11[-4]" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = (subscript_expression "puVar11[-4]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = puVar11[-3];" (assignment_expression "uVar3 = puVar11[-3]" identifier = (subscript_expression "puVar11[-3]" identifier [ number_literal ])) ;) (expression_statement "puVar8[6] = puVar8 + 8;" (assignment_expression "puVar8[6] = puVar8 + 8" (subscript_expression "puVar8[6]" identifier [ number_literal ]) = (binary_expression "puVar8 + 8" identifier + number_literal)) ;) (expression_statement "puVar8[5] = uVar3;" (assignment_expression "puVar8[5] = uVar3" (subscript_expression "puVar8[5]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }" if (parenthesized_expression "((undefined4 *)puVar11[-2] == puVar11)" ( (binary_expression "(undefined4 *)puVar11[-2] == puVar11" (cast_expression "(undefined4 *)puVar11[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar11[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }" { (expression_statement "puVar8[8] = *puVar11;" (assignment_expression "puVar8[8] = *puVar11" (subscript_expression "puVar8[8]" identifier [ number_literal ]) = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar8[9] = puVar11[1];" (assignment_expression "puVar8[9] = puVar11[1]" (subscript_expression "puVar8[9]" identifier [ number_literal ]) = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "puVar8[10] = puVar11[2];" (assignment_expression "puVar8[10] = puVar11[2]" (subscript_expression "puVar8[10]" identifier [ number_literal ]) = (subscript_expression "puVar11[2]" identifier [ number_literal ])) ;) (expression_statement "puVar8[0xb] = puVar11[3];" (assignment_expression "puVar8[0xb] = puVar11[3]" (subscript_expression "puVar8[0xb]" identifier [ number_literal ]) = (subscript_expression "puVar11[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }" else (compound_statement "{\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }" { (expression_statement "puVar8[6] = (undefined4 *)puVar11[-2];" (assignment_expression "puVar8[6] = (undefined4 *)puVar11[-2]" (subscript_expression "puVar8[6]" identifier [ number_literal ]) = (cast_expression "(undefined4 *)puVar11[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar11[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar8[8] = *puVar11;" (assignment_expression "puVar8[8] = *puVar11" (subscript_expression "puVar8[8]" identifier [ number_literal ]) = (pointer_expression "*puVar11" * identifier)) ;) }))) (expression_statement "uVar3 = puVar11[5];" (assignment_expression "uVar3 = puVar11[5]" identifier = (subscript_expression "puVar11[5]" identifier [ number_literal ])) ;) (expression_statement "puVar7 = puVar8 + 0x10;" (assignment_expression "puVar7 = puVar8 + 0x10" identifier = (binary_expression "puVar8 + 0x10" identifier + number_literal)) ;) (expression_statement "puVar8[7] = puVar11[-1];" (assignment_expression "puVar8[7] = puVar11[-1]" (subscript_expression "puVar8[7]" identifier [ number_literal ]) = (subscript_expression "puVar11[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar11[-2] = puVar11;" (assignment_expression "puVar11[-2] = puVar11" (subscript_expression "puVar11[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[-1] = 0;" (assignment_expression "puVar11[-1] = 0" (subscript_expression "puVar11[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar11 = 0;" (assignment_expression "*(undefined1 *)puVar11 = 0" (pointer_expression "*(undefined1 *)puVar11" * (cast_expression "(undefined1 *)puVar11" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar8[0xc] = puVar11[4];" (assignment_expression "puVar8[0xc] = puVar11[4]" (subscript_expression "puVar8[0xc]" identifier [ number_literal ]) = (subscript_expression "puVar11[4]" identifier [ number_literal ])) ;) (expression_statement "puVar8[0xd] = uVar3;" (assignment_expression "puVar8[0xd] = uVar3" (subscript_expression "puVar8[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar3 = puVar11[7];" (assignment_expression "uVar3 = puVar11[7]" identifier = (subscript_expression "puVar11[7]" identifier [ number_literal ])) ;) (expression_statement "puVar8[0xe] = puVar11[6];" (assignment_expression "puVar8[0xe] = puVar11[6]" (subscript_expression "puVar8[0xe]" identifier [ number_literal ]) = (subscript_expression "puVar11[6]" identifier [ number_literal ])) ;) (expression_statement "puVar8[0xf] = uVar3;" (assignment_expression "puVar8[0xf] = uVar3" (subscript_expression "puVar8[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11 = puVar11 + 0x10;" (assignment_expression "puVar11 = puVar11 + 0x10" identifier = (binary_expression "puVar11 + 0x10" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar7;" (assignment_expression "puVar8 = puVar7" identifier = identifier) ;) }) while (parenthesized_expression "(puVar7 != local_30 + iVar6 * 0x10)" ( (binary_expression "puVar7 != local_30 + iVar6 * 0x10" identifier != (binary_expression "local_30 + iVar6 * 0x10" identifier + (binary_expression "iVar6 * 0x10" identifier * number_literal))) )) ;) (expression_statement "puVar11 = local_30 + iVar6 * 0x10;" (assignment_expression "puVar11 = local_30 + iVar6 * 0x10" identifier = (binary_expression "local_30 + iVar6 * 0x10" identifier + (binary_expression "iVar6 * 0x10" identifier * number_literal))) ;) })) (expression_statement "puVar8 = puVar11 + 0x10;" (assignment_expression "puVar8 = puVar11 + 0x10" identifier = (binary_expression "puVar11 + 0x10" identifier + number_literal)) ;) (expression_statement "iVar6 = iVar1;" (assignment_expression "iVar6 = iVar1" identifier = identifier) ;) (if_statement "if (param_2 != iVar2) {\n    uVar5 = (iVar2 - param_2) - 0x40U >> 6;\n    puVar7 = (undefined4 *)(param_2 + 0x20);\n    puVar10 = puVar8;\n    do {\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);\n    puVar8 = puVar8 + (uVar5 + 1) * 0x10;\n  }" if (parenthesized_expression "(param_2 != iVar2)" ( (binary_expression "param_2 != iVar2" identifier != identifier) )) (compound_statement "{\n    uVar5 = (iVar2 - param_2) - 0x40U >> 6;\n    puVar7 = (undefined4 *)(param_2 + 0x20);\n    puVar10 = puVar8;\n    do {\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);\n    puVar8 = puVar8 + (uVar5 + 1) * 0x10;\n  }" { (expression_statement "uVar5 = (iVar2 - param_2) - 0x40U >> 6;" (assignment_expression "uVar5 = (iVar2 - param_2) - 0x40U >> 6" identifier = (binary_expression "(iVar2 - param_2) - 0x40U >> 6" (binary_expression "(iVar2 - param_2) - 0x40U" (parenthesized_expression "(iVar2 - param_2)" ( (binary_expression "iVar2 - param_2" identifier - identifier) )) - number_literal) >> number_literal)) ;) (expression_statement "puVar7 = (undefined4 *)(param_2 + 0x20);" (assignment_expression "puVar7 = (undefined4 *)(param_2 + 0x20)" identifier = (cast_expression "(undefined4 *)(param_2 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) )))) ;) (expression_statement "puVar10 = puVar8;" (assignment_expression "puVar10 = puVar8" identifier = identifier) ;) (do_statement "do {\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);" do (compound_statement "{\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    }" { (expression_statement "uVar3 = puVar7[-8];" (assignment_expression "uVar3 = puVar7[-8]" identifier = (subscript_expression "puVar7[-8]" identifier [ number_literal ])) ;) (expression_statement "puVar10[6] = puVar10 + 8;" (assignment_expression "puVar10[6] = puVar10 + 8" (subscript_expression "puVar10[6]" identifier [ number_literal ]) = (binary_expression "puVar10 + 8" identifier + number_literal)) ;) (expression_statement "*puVar10 = uVar3;" (assignment_expression "*puVar10 = uVar3" (pointer_expression "*puVar10" * identifier) = identifier) ;) (expression_statement "puVar10[1] = puVar7[-7];" (assignment_expression "puVar10[1] = puVar7[-7]" (subscript_expression "puVar10[1]" identifier [ number_literal ]) = (subscript_expression "puVar7[-7]" identifier [ number_literal ])) ;) (expression_statement "puVar10[2] = puVar7[-6];" (assignment_expression "puVar10[2] = puVar7[-6]" (subscript_expression "puVar10[2]" identifier [ number_literal ]) = (subscript_expression "puVar7[-6]" identifier [ number_literal ])) ;) (expression_statement "puVar10[3] = puVar7[-5];" (assignment_expression "puVar10[3] = puVar7[-5]" (subscript_expression "puVar10[3]" identifier [ number_literal ]) = (subscript_expression "puVar7[-5]" identifier [ number_literal ])) ;) (expression_statement "puVar10[4] = puVar7[-4];" (assignment_expression "puVar10[4] = puVar7[-4]" (subscript_expression "puVar10[4]" identifier [ number_literal ]) = (subscript_expression "puVar7[-4]" identifier [ number_literal ])) ;) (expression_statement "puVar10[5] = puVar7[-3];" (assignment_expression "puVar10[5] = puVar7[-3]" (subscript_expression "puVar10[5]" identifier [ number_literal ]) = (subscript_expression "puVar7[-3]" identifier [ number_literal ])) ;) (if_statement "if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }" if (parenthesized_expression "((undefined4 *)puVar7[-2] == puVar7)" ( (binary_expression "(undefined4 *)puVar7[-2] == puVar7" (cast_expression "(undefined4 *)puVar7[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }" { (expression_statement "puVar10[8] = *puVar7;" (assignment_expression "puVar10[8] = *puVar7" (subscript_expression "puVar10[8]" identifier [ number_literal ]) = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar10[9] = puVar7[1];" (assignment_expression "puVar10[9] = puVar7[1]" (subscript_expression "puVar10[9]" identifier [ number_literal ]) = (subscript_expression "puVar7[1]" identifier [ number_literal ])) ;) (expression_statement "puVar10[10] = puVar7[2];" (assignment_expression "puVar10[10] = puVar7[2]" (subscript_expression "puVar10[10]" identifier [ number_literal ]) = (subscript_expression "puVar7[2]" identifier [ number_literal ])) ;) (expression_statement "puVar10[0xb] = puVar7[3];" (assignment_expression "puVar10[0xb] = puVar7[3]" (subscript_expression "puVar10[0xb]" identifier [ number_literal ]) = (subscript_expression "puVar7[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }" else (compound_statement "{\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }" { (expression_statement "puVar10[6] = (undefined4 *)puVar7[-2];" (assignment_expression "puVar10[6] = (undefined4 *)puVar7[-2]" (subscript_expression "puVar10[6]" identifier [ number_literal ]) = (cast_expression "(undefined4 *)puVar7[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar10[8] = *puVar7;" (assignment_expression "puVar10[8] = *puVar7" (subscript_expression "puVar10[8]" identifier [ number_literal ]) = (pointer_expression "*puVar7" * identifier)) ;) }))) (expression_statement "uVar3 = puVar7[-1];" (assignment_expression "uVar3 = puVar7[-1]" identifier = (subscript_expression "puVar7[-1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = puVar7[5];" (assignment_expression "uVar4 = puVar7[5]" identifier = (subscript_expression "puVar7[5]" identifier [ number_literal ])) ;) (expression_statement "puVar7[-2] = puVar7;" (assignment_expression "puVar7[-2] = puVar7" (subscript_expression "puVar7[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9 = puVar10 + 0x10;" (assignment_expression "puVar9 = puVar10 + 0x10" identifier = (binary_expression "puVar10 + 0x10" identifier + number_literal)) ;) (expression_statement "puVar7[-1] = 0;" (assignment_expression "puVar7[-1] = 0" (subscript_expression "puVar7[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[7] = uVar3;" (assignment_expression "puVar10[7] = uVar3" (subscript_expression "puVar10[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar3 = puVar7[4];" (assignment_expression "uVar3 = puVar7[4]" identifier = (subscript_expression "puVar7[4]" identifier [ number_literal ])) ;) (expression_statement "puVar10[0xd] = uVar4;" (assignment_expression "puVar10[0xd] = uVar4" (subscript_expression "puVar10[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar4 = puVar7[7];" (assignment_expression "uVar4 = puVar7[7]" identifier = (subscript_expression "puVar7[7]" identifier [ number_literal ])) ;) (expression_statement "puVar10[0xc] = uVar3;" (assignment_expression "puVar10[0xc] = uVar3" (subscript_expression "puVar10[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)puVar7 = 0;" (assignment_expression "*(undefined1 *)puVar7 = 0" (pointer_expression "*(undefined1 *)puVar7" * (cast_expression "(undefined1 *)puVar7" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar10[0xe] = puVar7[6];" (assignment_expression "puVar10[0xe] = puVar7[6]" (subscript_expression "puVar10[0xe]" identifier [ number_literal ]) = (subscript_expression "puVar7[6]" identifier [ number_literal ])) ;) (expression_statement "puVar10[0xf] = uVar4;" (assignment_expression "puVar10[0xf] = uVar4" (subscript_expression "puVar10[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7 = puVar7 + 0x10;" (assignment_expression "puVar7 = puVar7 + 0x10" identifier = (binary_expression "puVar7 + 0x10" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "(puVar9 != puVar11 + (uVar5 + 2) * 0x10)" ( (binary_expression "puVar9 != puVar11 + (uVar5 + 2) * 0x10" identifier != (binary_expression "puVar11 + (uVar5 + 2) * 0x10" identifier + (binary_expression "(uVar5 + 2) * 0x10" (parenthesized_expression "(uVar5 + 2)" ( (binary_expression "uVar5 + 2" identifier + number_literal) )) * number_literal))) )) ;) (expression_statement "puVar8 = puVar8 + (uVar5 + 1) * 0x10;" (assignment_expression "puVar8 = puVar8 + (uVar5 + 1) * 0x10" identifier = (binary_expression "puVar8 + (uVar5 + 1) * 0x10" identifier + (binary_expression "(uVar5 + 1) * 0x10" (parenthesized_expression "(uVar5 + 1)" ( (binary_expression "uVar5 + 1" identifier + number_literal) )) * number_literal))) ;) })) (for_statement "for (; iVar6 != iVar2; iVar6 = iVar6 + 0x40) {\n    if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }\n  }" for ( ; (binary_expression "iVar6 != iVar2" identifier != identifier) ; (assignment_expression "iVar6 = iVar6 + 0x40" identifier = (binary_expression "iVar6 + 0x40" identifier + number_literal)) ) (compound_statement "{\n    if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }\n  }" { (if_statement "if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }" if (parenthesized_expression "(*(int *)(iVar6 + 0x18) != iVar6 + 0x20)" ( (binary_expression "*(int *)(iVar6 + 0x18) != iVar6 + 0x20" (pointer_expression "*(int *)(iVar6 + 0x18)" * (cast_expression "(int *)(iVar6 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) )))) != (binary_expression "iVar6 + 0x20" identifier + number_literal)) )) (compound_statement "{\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }" { (expression_statement "FUN_001ac470(*(int *)(iVar6 + 0x18));" (call_expression "FUN_001ac470(*(int *)(iVar6 + 0x18))" identifier (argument_list "(*(int *)(iVar6 + 0x18))" ( (pointer_expression "*(int *)(iVar6 + 0x18)" * (cast_expression "(int *)(iVar6 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) )))) ))) ;) })) })) (if_statement "if (iVar1 != 0) {\n    FUN_001ac470(iVar1);\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_001ac470(iVar1);\n  }" { (expression_statement "FUN_001ac470(iVar1);" (call_expression "FUN_001ac470(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) })) (expression_statement "param_1[1] = (int)puVar8;" (assignment_expression "param_1[1] = (int)puVar8" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*param_1 = (int)local_30;" (assignment_expression "*param_1 = (int)local_30" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[2] = (int)(local_30 + local_34 * 0x10);" (assignment_expression "param_1[2] = (int)(local_30 + local_34 * 0x10)" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (cast_expression "(int)(local_30 + local_34 * 0x10)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_30 + local_34 * 0x10)" ( (binary_expression "local_30 + local_34 * 0x10" identifier + (binary_expression "local_34 * 0x10" identifier * number_literal)) )))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (subscript_expression IDENT [ LIT ]) , (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ])) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT) ))) >> LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + (binary_expression IDENT * LIT))) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - LIT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT))) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT))) ;) })) (for_statement for ( ; (binary_expression IDENT != IDENT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (return_statement return ;) })))
(function_definition "void FUN_0013b0e0(int *param_1,int param_2,undefined4 *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *puVar11;\n  uint local_34;\n  undefined4 *local_30;\n  \n  iVar1 = *param_1;\n  iVar2 = param_1[1];\n  uVar5 = iVar2 - iVar1 >> 6;\n  if (uVar5 == 0) {\n    local_34 = 1;\nLAB_0013b3d7:\n    iVar6 = local_34 << 6;\n  }\n  else {\n    local_34 = uVar5 * 2;\n    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    iVar6 = -0x40;\n  }\n  local_30 = (undefined4 *)FUN_001aa8c0(iVar6);\nLAB_0013b145:\n  puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30);\n  *puVar11 = *param_3;\n  puVar11[1] = param_3[1];\n  puVar11[2] = param_3[2];\n  puVar11[3] = param_3[3];\n  puVar11[4] = param_3[4];\n  puVar11[5] = param_3[5];\n  puVar11[6] = puVar11 + 8;\n                    \n  FUN_0007c4c0(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0);\n  uVar3 = param_3[0xd];\n  puVar11[0xc] = param_3[0xc];\n  uVar4 = param_3[0xe];\n  puVar11[0xd] = uVar3;\n  uVar3 = param_3[0xf];\n  puVar11[0xe] = uVar4;\n  puVar11[0xf] = uVar3;\n  puVar11 = local_30;\n  if (param_2 != iVar1) {\n    iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;\n    puVar11 = (undefined4 *)(iVar1 + 0x20);\n    puVar8 = local_30;\n    do {\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    } while (puVar7 != local_30 + iVar6 * 0x10);\n    puVar11 = local_30 + iVar6 * 0x10;\n  }\n  puVar8 = puVar11 + 0x10;\n  iVar6 = iVar1;\n  if (param_2 != iVar2) {\n    uVar5 = (iVar2 - param_2) - 0x40U >> 6;\n    puVar7 = (undefined4 *)(param_2 + 0x20);\n    puVar10 = puVar8;\n    do {\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);\n    puVar8 = puVar8 + (uVar5 + 1) * 0x10;\n  }\n  for (; iVar6 != iVar2; iVar6 = iVar6 + 0x40) {\n    if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }\n  }\n  if (iVar1 != 0) {\n    FUN_001ac470(iVar1);\n  }\n  param_1[1] = (int)puVar8;\n  *param_1 = (int)local_30;\n  param_1[2] = (int)(local_30 + local_34 * 0x10);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0013b0e0(int *param_1,int param_2,undefined4 *param_3)" (identifier "FUN_0013b0e0") (parameter_list "(int *param_1,int param_2,undefined4 *param_3)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *puVar11;\n  uint local_34;\n  undefined4 *local_30;\n  \n  iVar1 = *param_1;\n  iVar2 = param_1[1];\n  uVar5 = iVar2 - iVar1 >> 6;\n  if (uVar5 == 0) {\n    local_34 = 1;\nLAB_0013b3d7:\n    iVar6 = local_34 << 6;\n  }\n  else {\n    local_34 = uVar5 * 2;\n    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    iVar6 = -0x40;\n  }\n  local_30 = (undefined4 *)FUN_001aa8c0(iVar6);\nLAB_0013b145:\n  puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30);\n  *puVar11 = *param_3;\n  puVar11[1] = param_3[1];\n  puVar11[2] = param_3[2];\n  puVar11[3] = param_3[3];\n  puVar11[4] = param_3[4];\n  puVar11[5] = param_3[5];\n  puVar11[6] = puVar11 + 8;\n                    \n  FUN_0007c4c0(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0);\n  uVar3 = param_3[0xd];\n  puVar11[0xc] = param_3[0xc];\n  uVar4 = param_3[0xe];\n  puVar11[0xd] = uVar3;\n  uVar3 = param_3[0xf];\n  puVar11[0xe] = uVar4;\n  puVar11[0xf] = uVar3;\n  puVar11 = local_30;\n  if (param_2 != iVar1) {\n    iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;\n    puVar11 = (undefined4 *)(iVar1 + 0x20);\n    puVar8 = local_30;\n    do {\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    } while (puVar7 != local_30 + iVar6 * 0x10);\n    puVar11 = local_30 + iVar6 * 0x10;\n  }\n  puVar8 = puVar11 + 0x10;\n  iVar6 = iVar1;\n  if (param_2 != iVar2) {\n    uVar5 = (iVar2 - param_2) - 0x40U >> 6;\n    puVar7 = (undefined4 *)(param_2 + 0x20);\n    puVar10 = puVar8;\n    do {\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);\n    puVar8 = puVar8 + (uVar5 + 1) * 0x10;\n  }\n  for (; iVar6 != iVar2; iVar6 = iVar6 + 0x40) {\n    if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }\n  }\n  if (iVar1 != 0) {\n    FUN_001ac470(iVar1);\n  }\n  param_1[1] = (int)puVar8;\n  *param_1 = (int)local_30;\n  param_1[2] = (int)(local_30 + local_34 * 0x10);\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined4 *puVar9;" (type_identifier "undefined4") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined4 *puVar10;" (type_identifier "undefined4") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "undefined4 *puVar11;" (type_identifier "undefined4") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "uint local_34;" (type_identifier "uint") (identifier "local_34") (; ";")) (declaration "undefined4 *local_30;" (type_identifier "undefined4") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (expression_statement "iVar1 = *param_1;" (assignment_expression "iVar1 = *param_1" (identifier "iVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "iVar2 = param_1[1];" (assignment_expression "iVar2 = param_1[1]" (identifier "iVar2") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar5 = iVar2 - iVar1 >> 6;" (assignment_expression "uVar5 = iVar2 - iVar1 >> 6" (identifier "uVar5") (= "=") (binary_expression "iVar2 - iVar1 >> 6" (binary_expression "iVar2 - iVar1" (identifier "iVar2") (- "-") (identifier "iVar1")) (>> ">>") (number_literal "6"))) (; ";")) (if_statement "if (uVar5 == 0) {\n    local_34 = 1;\nLAB_0013b3d7:\n    iVar6 = local_34 << 6;\n  }\n  else {\n    local_34 = uVar5 * 2;\n    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    iVar6 = -0x40;\n  }" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    local_34 = 1;\nLAB_0013b3d7:\n    iVar6 = local_34 << 6;\n  }" ({ "{") (expression_statement "local_34 = 1;" (assignment_expression "local_34 = 1" (identifier "local_34") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_0013b3d7:\n    iVar6 = local_34 << 6;" (statement_identifier "LAB_0013b3d7") (: ":") (expression_statement "iVar6 = local_34 << 6;" (assignment_expression "iVar6 = local_34 << 6" (identifier "iVar6") (= "=") (binary_expression "local_34 << 6" (identifier "local_34") (<< "<<") (number_literal "6"))) (; ";"))) (} "}")) (else_clause "else {\n    local_34 = uVar5 * 2;\n    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    iVar6 = -0x40;\n  }" (else "else") (compound_statement "{\n    local_34 = uVar5 * 2;\n    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }\n    local_34 = 0x3ffffff;\n    iVar6 = -0x40;\n  }" ({ "{") (expression_statement "local_34 = uVar5 * 2;" (assignment_expression "local_34 = uVar5 * 2" (identifier "local_34") (= "=") (binary_expression "uVar5 * 2" (identifier "uVar5") (* "*") (number_literal "2"))) (; ";")) (if_statement "if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }" (if "if") (parenthesized_expression "((uVar5 <= local_34) && (local_34 < 0x4000000))" (( "(") (binary_expression "(uVar5 <= local_34) && (local_34 < 0x4000000)" (parenthesized_expression "(uVar5 <= local_34)" (( "(") (binary_expression "uVar5 <= local_34" (identifier "uVar5") (<= "<=") (identifier "local_34")) () ")")) (&& "&&") (parenthesized_expression "(local_34 < 0x4000000)" (( "(") (binary_expression "local_34 < 0x4000000" (identifier "local_34") (< "<") (number_literal "0x4000000")) () ")"))) () ")")) (compound_statement "{\n      local_30 = (undefined4 *)0x0;\n      if (local_34 == 0) goto LAB_0013b145;\n      goto LAB_0013b3d7;\n    }" ({ "{") (expression_statement "local_30 = (undefined4 *)0x0;" (assignment_expression "local_30 = (undefined4 *)0x0" (identifier "local_30") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (local_34 == 0) goto LAB_0013b145;" (if "if") (parenthesized_expression "(local_34 == 0)" (( "(") (binary_expression "local_34 == 0" (identifier "local_34") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0013b145;" (goto "goto") (statement_identifier "LAB_0013b145") (; ";"))) (goto_statement "goto LAB_0013b3d7;" (goto "goto") (statement_identifier "LAB_0013b3d7") (; ";")) (} "}"))) (expression_statement "local_34 = 0x3ffffff;" (assignment_expression "local_34 = 0x3ffffff" (identifier "local_34") (= "=") (number_literal "0x3ffffff")) (; ";")) (expression_statement "iVar6 = -0x40;" (assignment_expression "iVar6 = -0x40" (identifier "iVar6") (= "=") (number_literal "-0x40")) (; ";")) (} "}")))) (expression_statement "local_30 = (undefined4 *)FUN_001aa8c0(iVar6);" (assignment_expression "local_30 = (undefined4 *)FUN_001aa8c0(iVar6)" (identifier "local_30") (= "=") (cast_expression "(undefined4 *)FUN_001aa8c0(iVar6)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001aa8c0(iVar6)" (identifier "FUN_001aa8c0") (argument_list "(iVar6)" (( "(") (identifier "iVar6") () ")"))))) (; ";")) (labeled_statement "LAB_0013b145:\n  puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30);" (statement_identifier "LAB_0013b145") (: ":") (expression_statement "puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30);" (assignment_expression "puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30)" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)((param_2 - iVar1) + (int)local_30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((param_2 - iVar1) + (int)local_30)" (( "(") (binary_expression "(param_2 - iVar1) + (int)local_30" (parenthesized_expression "(param_2 - iVar1)" (( "(") (binary_expression "param_2 - iVar1" (identifier "param_2") (- "-") (identifier "iVar1")) () ")")) (+ "+") (cast_expression "(int)local_30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_30"))) () ")")))) (; ";"))) (expression_statement "*puVar11 = *param_3;" (assignment_expression "*puVar11 = *param_3" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "puVar11[1] = param_3[1];" (assignment_expression "puVar11[1] = param_3[1]" (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar11[2] = param_3[2];" (assignment_expression "puVar11[2] = param_3[2]" (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar11[3] = param_3[3];" (assignment_expression "puVar11[3] = param_3[3]" (subscript_expression "puVar11[3]" (identifier "puVar11") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar11[4] = param_3[4];" (assignment_expression "puVar11[4] = param_3[4]" (subscript_expression "puVar11[4]" (identifier "puVar11") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "puVar11[5] = param_3[5];" (assignment_expression "puVar11[5] = param_3[5]" (subscript_expression "puVar11[5]" (identifier "puVar11") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "param_3[5]" (identifier "param_3") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar11[6] = puVar11 + 8;" (assignment_expression "puVar11[6] = puVar11 + 8" (subscript_expression "puVar11[6]" (identifier "puVar11") ([ "[") (number_literal "6") (] "]")) (= "=") (binary_expression "puVar11 + 8" (identifier "puVar11") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "FUN_0007c4c0(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0);" (call_expression "FUN_0007c4c0(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0)" (identifier "FUN_0007c4c0") (argument_list "(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0)" (( "(") (binary_expression "puVar11 + 6" (identifier "puVar11") (+ "+") (number_literal "6")) (, ",") (subscript_expression "param_3[6]" (identifier "param_3") ([ "[") (number_literal "6") (] "]")) (, ",") (binary_expression "param_3[7] + param_3[6]" (subscript_expression "param_3[7]" (identifier "param_3") ([ "[") (number_literal "7") (] "]")) (+ "+") (subscript_expression "param_3[6]" (identifier "param_3") ([ "[") (number_literal "6") (] "]"))) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "uVar3 = param_3[0xd];" (assignment_expression "uVar3 = param_3[0xd]" (identifier "uVar3") (= "=") (subscript_expression "param_3[0xd]" (identifier "param_3") ([ "[") (number_literal "0xd") (] "]"))) (; ";")) (expression_statement "puVar11[0xc] = param_3[0xc];" (assignment_expression "puVar11[0xc] = param_3[0xc]" (subscript_expression "puVar11[0xc]" (identifier "puVar11") ([ "[") (number_literal "0xc") (] "]")) (= "=") (subscript_expression "param_3[0xc]" (identifier "param_3") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "uVar4 = param_3[0xe];" (assignment_expression "uVar4 = param_3[0xe]" (identifier "uVar4") (= "=") (subscript_expression "param_3[0xe]" (identifier "param_3") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "puVar11[0xd] = uVar3;" (assignment_expression "puVar11[0xd] = uVar3" (subscript_expression "puVar11[0xd]" (identifier "puVar11") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar3 = param_3[0xf];" (assignment_expression "uVar3 = param_3[0xf]" (identifier "uVar3") (= "=") (subscript_expression "param_3[0xf]" (identifier "param_3") ([ "[") (number_literal "0xf") (] "]"))) (; ";")) (expression_statement "puVar11[0xe] = uVar4;" (assignment_expression "puVar11[0xe] = uVar4" (subscript_expression "puVar11[0xe]" (identifier "puVar11") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "puVar11[0xf] = uVar3;" (assignment_expression "puVar11[0xf] = uVar3" (subscript_expression "puVar11[0xf]" (identifier "puVar11") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar11 = local_30;" (assignment_expression "puVar11 = local_30" (identifier "puVar11") (= "=") (identifier "local_30")) (; ";")) (if_statement "if (param_2 != iVar1) {\n    iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;\n    puVar11 = (undefined4 *)(iVar1 + 0x20);\n    puVar8 = local_30;\n    do {\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    } while (puVar7 != local_30 + iVar6 * 0x10);\n    puVar11 = local_30 + iVar6 * 0x10;\n  }" (if "if") (parenthesized_expression "(param_2 != iVar1)" (( "(") (binary_expression "param_2 != iVar1" (identifier "param_2") (!= "!=") (identifier "iVar1")) () ")")) (compound_statement "{\n    iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;\n    puVar11 = (undefined4 *)(iVar1 + 0x20);\n    puVar8 = local_30;\n    do {\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    } while (puVar7 != local_30 + iVar6 * 0x10);\n    puVar11 = local_30 + iVar6 * 0x10;\n  }" ({ "{") (expression_statement "iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;" (assignment_expression "iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1" (identifier "iVar6") (= "=") (binary_expression "((uint)((param_2 + -0x40) - iVar1) >> 6) + 1" (parenthesized_expression "((uint)((param_2 + -0x40) - iVar1) >> 6)" (( "(") (binary_expression "(uint)((param_2 + -0x40) - iVar1) >> 6" (call_expression "(uint)((param_2 + -0x40) - iVar1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((param_2 + -0x40) - iVar1)" (( "(") (binary_expression "(param_2 + -0x40) - iVar1" (parenthesized_expression "(param_2 + -0x40)" (( "(") (binary_expression "param_2 + -0x40" (identifier "param_2") (+ "+") (number_literal "-0x40")) () ")")) (- "-") (identifier "iVar1")) () ")"))) (>> ">>") (number_literal "6")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar11 = (undefined4 *)(iVar1 + 0x20);" (assignment_expression "puVar11 = (undefined4 *)(iVar1 + 0x20)" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)(iVar1 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x20)" (( "(") (binary_expression "iVar1 + 0x20" (identifier "iVar1") (+ "+") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "puVar8 = local_30;" (assignment_expression "puVar8 = local_30" (identifier "puVar8") (= "=") (identifier "local_30")) (; ";")) (do_statement "do {\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    } while (puVar7 != local_30 + iVar6 * 0x10);" (do "do") (compound_statement "{\n      *puVar8 = puVar11[-8];\n      puVar8[1] = puVar11[-7];\n      puVar8[2] = puVar11[-6];\n      puVar8[3] = puVar11[-5];\n      puVar8[4] = puVar11[-4];\n      uVar3 = puVar11[-3];\n      puVar8[6] = puVar8 + 8;\n      puVar8[5] = uVar3;\n      if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }\n      uVar3 = puVar11[5];\n      puVar7 = puVar8 + 0x10;\n      puVar8[7] = puVar11[-1];\n      puVar11[-2] = puVar11;\n      puVar11[-1] = 0;\n      *(undefined1 *)puVar11 = 0;\n      puVar8[0xc] = puVar11[4];\n      puVar8[0xd] = uVar3;\n      uVar3 = puVar11[7];\n      puVar8[0xe] = puVar11[6];\n      puVar8[0xf] = uVar3;\n      puVar11 = puVar11 + 0x10;\n      puVar8 = puVar7;\n    }" ({ "{") (expression_statement "*puVar8 = puVar11[-8];" (assignment_expression "*puVar8 = puVar11[-8]" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (subscript_expression "puVar11[-8]" (identifier "puVar11") ([ "[") (number_literal "-8") (] "]"))) (; ";")) (expression_statement "puVar8[1] = puVar11[-7];" (assignment_expression "puVar8[1] = puVar11[-7]" (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "puVar11[-7]" (identifier "puVar11") ([ "[") (number_literal "-7") (] "]"))) (; ";")) (expression_statement "puVar8[2] = puVar11[-6];" (assignment_expression "puVar8[2] = puVar11[-6]" (subscript_expression "puVar8[2]" (identifier "puVar8") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar11[-6]" (identifier "puVar11") ([ "[") (number_literal "-6") (] "]"))) (; ";")) (expression_statement "puVar8[3] = puVar11[-5];" (assignment_expression "puVar8[3] = puVar11[-5]" (subscript_expression "puVar8[3]" (identifier "puVar8") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "puVar11[-5]" (identifier "puVar11") ([ "[") (number_literal "-5") (] "]"))) (; ";")) (expression_statement "puVar8[4] = puVar11[-4];" (assignment_expression "puVar8[4] = puVar11[-4]" (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "puVar11[-4]" (identifier "puVar11") ([ "[") (number_literal "-4") (] "]"))) (; ";")) (expression_statement "uVar3 = puVar11[-3];" (assignment_expression "uVar3 = puVar11[-3]" (identifier "uVar3") (= "=") (subscript_expression "puVar11[-3]" (identifier "puVar11") ([ "[") (number_literal "-3") (] "]"))) (; ";")) (expression_statement "puVar8[6] = puVar8 + 8;" (assignment_expression "puVar8[6] = puVar8 + 8" (subscript_expression "puVar8[6]" (identifier "puVar8") ([ "[") (number_literal "6") (] "]")) (= "=") (binary_expression "puVar8 + 8" (identifier "puVar8") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "puVar8[5] = uVar3;" (assignment_expression "puVar8[5] = uVar3" (subscript_expression "puVar8[5]" (identifier "puVar8") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (if_statement "if ((undefined4 *)puVar11[-2] == puVar11) {\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }\n      else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }" (if "if") (parenthesized_expression "((undefined4 *)puVar11[-2] == puVar11)" (( "(") (binary_expression "(undefined4 *)puVar11[-2] == puVar11" (cast_expression "(undefined4 *)puVar11[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar11[-2]" (identifier "puVar11") ([ "[") (number_literal "-2") (] "]"))) (== "==") (identifier "puVar11")) () ")")) (compound_statement "{\n        puVar8[8] = *puVar11;\n        puVar8[9] = puVar11[1];\n        puVar8[10] = puVar11[2];\n        puVar8[0xb] = puVar11[3];\n      }" ({ "{") (expression_statement "puVar8[8] = *puVar11;" (assignment_expression "puVar8[8] = *puVar11" (subscript_expression "puVar8[8]" (identifier "puVar8") ([ "[") (number_literal "8") (] "]")) (= "=") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (; ";")) (expression_statement "puVar8[9] = puVar11[1];" (assignment_expression "puVar8[9] = puVar11[1]" (subscript_expression "puVar8[9]" (identifier "puVar8") ([ "[") (number_literal "9") (] "]")) (= "=") (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar8[10] = puVar11[2];" (assignment_expression "puVar8[10] = puVar11[2]" (subscript_expression "puVar8[10]" (identifier "puVar8") ([ "[") (number_literal "10") (] "]")) (= "=") (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar8[0xb] = puVar11[3];" (assignment_expression "puVar8[0xb] = puVar11[3]" (subscript_expression "puVar8[0xb]" (identifier "puVar8") ([ "[") (number_literal "0xb") (] "]")) (= "=") (subscript_expression "puVar11[3]" (identifier "puVar11") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }" (else "else") (compound_statement "{\n        puVar8[6] = (undefined4 *)puVar11[-2];\n        puVar8[8] = *puVar11;\n      }" ({ "{") (expression_statement "puVar8[6] = (undefined4 *)puVar11[-2];" (assignment_expression "puVar8[6] = (undefined4 *)puVar11[-2]" (subscript_expression "puVar8[6]" (identifier "puVar8") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(undefined4 *)puVar11[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar11[-2]" (identifier "puVar11") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "puVar8[8] = *puVar11;" (assignment_expression "puVar8[8] = *puVar11" (subscript_expression "puVar8[8]" (identifier "puVar8") ([ "[") (number_literal "8") (] "]")) (= "=") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (; ";")) (} "}")))) (expression_statement "uVar3 = puVar11[5];" (assignment_expression "uVar3 = puVar11[5]" (identifier "uVar3") (= "=") (subscript_expression "puVar11[5]" (identifier "puVar11") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar7 = puVar8 + 0x10;" (assignment_expression "puVar7 = puVar8 + 0x10" (identifier "puVar7") (= "=") (binary_expression "puVar8 + 0x10" (identifier "puVar8") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "puVar8[7] = puVar11[-1];" (assignment_expression "puVar8[7] = puVar11[-1]" (subscript_expression "puVar8[7]" (identifier "puVar8") ([ "[") (number_literal "7") (] "]")) (= "=") (subscript_expression "puVar11[-1]" (identifier "puVar11") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar11[-2] = puVar11;" (assignment_expression "puVar11[-2] = puVar11" (subscript_expression "puVar11[-2]" (identifier "puVar11") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar11")) (; ";")) (expression_statement "puVar11[-1] = 0;" (assignment_expression "puVar11[-1] = 0" (subscript_expression "puVar11[-1]" (identifier "puVar11") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)puVar11 = 0;" (assignment_expression "*(undefined1 *)puVar11 = 0" (pointer_expression "*(undefined1 *)puVar11" (* "*") (cast_expression "(undefined1 *)puVar11" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar11"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[0xc] = puVar11[4];" (assignment_expression "puVar8[0xc] = puVar11[4]" (subscript_expression "puVar8[0xc]" (identifier "puVar8") ([ "[") (number_literal "0xc") (] "]")) (= "=") (subscript_expression "puVar11[4]" (identifier "puVar11") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "puVar8[0xd] = uVar3;" (assignment_expression "puVar8[0xd] = uVar3" (subscript_expression "puVar8[0xd]" (identifier "puVar8") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar3 = puVar11[7];" (assignment_expression "uVar3 = puVar11[7]" (identifier "uVar3") (= "=") (subscript_expression "puVar11[7]" (identifier "puVar11") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "puVar8[0xe] = puVar11[6];" (assignment_expression "puVar8[0xe] = puVar11[6]" (subscript_expression "puVar8[0xe]" (identifier "puVar8") ([ "[") (number_literal "0xe") (] "]")) (= "=") (subscript_expression "puVar11[6]" (identifier "puVar11") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "puVar8[0xf] = uVar3;" (assignment_expression "puVar8[0xf] = uVar3" (subscript_expression "puVar8[0xf]" (identifier "puVar8") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar11 = puVar11 + 0x10;" (assignment_expression "puVar11 = puVar11 + 0x10" (identifier "puVar11") (= "=") (binary_expression "puVar11 + 0x10" (identifier "puVar11") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "puVar8 = puVar7;" (assignment_expression "puVar8 = puVar7" (identifier "puVar8") (= "=") (identifier "puVar7")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar7 != local_30 + iVar6 * 0x10)" (( "(") (binary_expression "puVar7 != local_30 + iVar6 * 0x10" (identifier "puVar7") (!= "!=") (binary_expression "local_30 + iVar6 * 0x10" (identifier "local_30") (+ "+") (binary_expression "iVar6 * 0x10" (identifier "iVar6") (* "*") (number_literal "0x10")))) () ")")) (; ";")) (expression_statement "puVar11 = local_30 + iVar6 * 0x10;" (assignment_expression "puVar11 = local_30 + iVar6 * 0x10" (identifier "puVar11") (= "=") (binary_expression "local_30 + iVar6 * 0x10" (identifier "local_30") (+ "+") (binary_expression "iVar6 * 0x10" (identifier "iVar6") (* "*") (number_literal "0x10")))) (; ";")) (} "}"))) (expression_statement "puVar8 = puVar11 + 0x10;" (assignment_expression "puVar8 = puVar11 + 0x10" (identifier "puVar8") (= "=") (binary_expression "puVar11 + 0x10" (identifier "puVar11") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "iVar6 = iVar1;" (assignment_expression "iVar6 = iVar1" (identifier "iVar6") (= "=") (identifier "iVar1")) (; ";")) (if_statement "if (param_2 != iVar2) {\n    uVar5 = (iVar2 - param_2) - 0x40U >> 6;\n    puVar7 = (undefined4 *)(param_2 + 0x20);\n    puVar10 = puVar8;\n    do {\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);\n    puVar8 = puVar8 + (uVar5 + 1) * 0x10;\n  }" (if "if") (parenthesized_expression "(param_2 != iVar2)" (( "(") (binary_expression "param_2 != iVar2" (identifier "param_2") (!= "!=") (identifier "iVar2")) () ")")) (compound_statement "{\n    uVar5 = (iVar2 - param_2) - 0x40U >> 6;\n    puVar7 = (undefined4 *)(param_2 + 0x20);\n    puVar10 = puVar8;\n    do {\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);\n    puVar8 = puVar8 + (uVar5 + 1) * 0x10;\n  }" ({ "{") (expression_statement "uVar5 = (iVar2 - param_2) - 0x40U >> 6;" (assignment_expression "uVar5 = (iVar2 - param_2) - 0x40U >> 6" (identifier "uVar5") (= "=") (binary_expression "(iVar2 - param_2) - 0x40U >> 6" (binary_expression "(iVar2 - param_2) - 0x40U" (parenthesized_expression "(iVar2 - param_2)" (( "(") (binary_expression "iVar2 - param_2" (identifier "iVar2") (- "-") (identifier "param_2")) () ")")) (- "-") (number_literal "0x40U")) (>> ">>") (number_literal "6"))) (; ";")) (expression_statement "puVar7 = (undefined4 *)(param_2 + 0x20);" (assignment_expression "puVar7 = (undefined4 *)(param_2 + 0x20)" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)(param_2 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "puVar10 = puVar8;" (assignment_expression "puVar10 = puVar8" (identifier "puVar10") (= "=") (identifier "puVar8")) (; ";")) (do_statement "do {\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);" (do "do") (compound_statement "{\n      uVar3 = puVar7[-8];\n      puVar10[6] = puVar10 + 8;\n      *puVar10 = uVar3;\n      puVar10[1] = puVar7[-7];\n      puVar10[2] = puVar7[-6];\n      puVar10[3] = puVar7[-5];\n      puVar10[4] = puVar7[-4];\n      puVar10[5] = puVar7[-3];\n      if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }\n      uVar3 = puVar7[-1];\n      uVar4 = puVar7[5];\n      puVar7[-2] = puVar7;\n      puVar9 = puVar10 + 0x10;\n      puVar7[-1] = 0;\n      puVar10[7] = uVar3;\n      uVar3 = puVar7[4];\n      puVar10[0xd] = uVar4;\n      uVar4 = puVar7[7];\n      puVar10[0xc] = uVar3;\n      *(undefined1 *)puVar7 = 0;\n      puVar10[0xe] = puVar7[6];\n      puVar10[0xf] = uVar4;\n      puVar7 = puVar7 + 0x10;\n      puVar10 = puVar9;\n    }" ({ "{") (expression_statement "uVar3 = puVar7[-8];" (assignment_expression "uVar3 = puVar7[-8]" (identifier "uVar3") (= "=") (subscript_expression "puVar7[-8]" (identifier "puVar7") ([ "[") (number_literal "-8") (] "]"))) (; ";")) (expression_statement "puVar10[6] = puVar10 + 8;" (assignment_expression "puVar10[6] = puVar10 + 8" (subscript_expression "puVar10[6]" (identifier "puVar10") ([ "[") (number_literal "6") (] "]")) (= "=") (binary_expression "puVar10 + 8" (identifier "puVar10") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "*puVar10 = uVar3;" (assignment_expression "*puVar10 = uVar3" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar10[1] = puVar7[-7];" (assignment_expression "puVar10[1] = puVar7[-7]" (subscript_expression "puVar10[1]" (identifier "puVar10") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "puVar7[-7]" (identifier "puVar7") ([ "[") (number_literal "-7") (] "]"))) (; ";")) (expression_statement "puVar10[2] = puVar7[-6];" (assignment_expression "puVar10[2] = puVar7[-6]" (subscript_expression "puVar10[2]" (identifier "puVar10") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar7[-6]" (identifier "puVar7") ([ "[") (number_literal "-6") (] "]"))) (; ";")) (expression_statement "puVar10[3] = puVar7[-5];" (assignment_expression "puVar10[3] = puVar7[-5]" (subscript_expression "puVar10[3]" (identifier "puVar10") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "puVar7[-5]" (identifier "puVar7") ([ "[") (number_literal "-5") (] "]"))) (; ";")) (expression_statement "puVar10[4] = puVar7[-4];" (assignment_expression "puVar10[4] = puVar7[-4]" (subscript_expression "puVar10[4]" (identifier "puVar10") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "puVar7[-4]" (identifier "puVar7") ([ "[") (number_literal "-4") (] "]"))) (; ";")) (expression_statement "puVar10[5] = puVar7[-3];" (assignment_expression "puVar10[5] = puVar7[-3]" (subscript_expression "puVar10[5]" (identifier "puVar10") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "puVar7[-3]" (identifier "puVar7") ([ "[") (number_literal "-3") (] "]"))) (; ";")) (if_statement "if ((undefined4 *)puVar7[-2] == puVar7) {\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }\n      else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }" (if "if") (parenthesized_expression "((undefined4 *)puVar7[-2] == puVar7)" (( "(") (binary_expression "(undefined4 *)puVar7[-2] == puVar7" (cast_expression "(undefined4 *)puVar7[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar7[-2]" (identifier "puVar7") ([ "[") (number_literal "-2") (] "]"))) (== "==") (identifier "puVar7")) () ")")) (compound_statement "{\n        puVar10[8] = *puVar7;\n        puVar10[9] = puVar7[1];\n        puVar10[10] = puVar7[2];\n        puVar10[0xb] = puVar7[3];\n      }" ({ "{") (expression_statement "puVar10[8] = *puVar7;" (assignment_expression "puVar10[8] = *puVar7" (subscript_expression "puVar10[8]" (identifier "puVar10") ([ "[") (number_literal "8") (] "]")) (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (expression_statement "puVar10[9] = puVar7[1];" (assignment_expression "puVar10[9] = puVar7[1]" (subscript_expression "puVar10[9]" (identifier "puVar10") ([ "[") (number_literal "9") (] "]")) (= "=") (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar10[10] = puVar7[2];" (assignment_expression "puVar10[10] = puVar7[2]" (subscript_expression "puVar10[10]" (identifier "puVar10") ([ "[") (number_literal "10") (] "]")) (= "=") (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar10[0xb] = puVar7[3];" (assignment_expression "puVar10[0xb] = puVar7[3]" (subscript_expression "puVar10[0xb]" (identifier "puVar10") ([ "[") (number_literal "0xb") (] "]")) (= "=") (subscript_expression "puVar7[3]" (identifier "puVar7") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }" (else "else") (compound_statement "{\n        puVar10[6] = (undefined4 *)puVar7[-2];\n        puVar10[8] = *puVar7;\n      }" ({ "{") (expression_statement "puVar10[6] = (undefined4 *)puVar7[-2];" (assignment_expression "puVar10[6] = (undefined4 *)puVar7[-2]" (subscript_expression "puVar10[6]" (identifier "puVar10") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(undefined4 *)puVar7[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar7[-2]" (identifier "puVar7") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "puVar10[8] = *puVar7;" (assignment_expression "puVar10[8] = *puVar7" (subscript_expression "puVar10[8]" (identifier "puVar10") ([ "[") (number_literal "8") (] "]")) (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (} "}")))) (expression_statement "uVar3 = puVar7[-1];" (assignment_expression "uVar3 = puVar7[-1]" (identifier "uVar3") (= "=") (subscript_expression "puVar7[-1]" (identifier "puVar7") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "uVar4 = puVar7[5];" (assignment_expression "uVar4 = puVar7[5]" (identifier "uVar4") (= "=") (subscript_expression "puVar7[5]" (identifier "puVar7") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar7[-2] = puVar7;" (assignment_expression "puVar7[-2] = puVar7" (subscript_expression "puVar7[-2]" (identifier "puVar7") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar7")) (; ";")) (expression_statement "puVar9 = puVar10 + 0x10;" (assignment_expression "puVar9 = puVar10 + 0x10" (identifier "puVar9") (= "=") (binary_expression "puVar10 + 0x10" (identifier "puVar10") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "puVar7[-1] = 0;" (assignment_expression "puVar7[-1] = 0" (subscript_expression "puVar7[-1]" (identifier "puVar7") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar10[7] = uVar3;" (assignment_expression "puVar10[7] = uVar3" (subscript_expression "puVar10[7]" (identifier "puVar10") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar3 = puVar7[4];" (assignment_expression "uVar3 = puVar7[4]" (identifier "uVar3") (= "=") (subscript_expression "puVar7[4]" (identifier "puVar7") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "puVar10[0xd] = uVar4;" (assignment_expression "puVar10[0xd] = uVar4" (subscript_expression "puVar10[0xd]" (identifier "puVar10") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "uVar4 = puVar7[7];" (assignment_expression "uVar4 = puVar7[7]" (identifier "uVar4") (= "=") (subscript_expression "puVar7[7]" (identifier "puVar7") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "puVar10[0xc] = uVar3;" (assignment_expression "puVar10[0xc] = uVar3" (subscript_expression "puVar10[0xc]" (identifier "puVar10") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*(undefined1 *)puVar7 = 0;" (assignment_expression "*(undefined1 *)puVar7 = 0" (pointer_expression "*(undefined1 *)puVar7" (* "*") (cast_expression "(undefined1 *)puVar7" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar7"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar10[0xe] = puVar7[6];" (assignment_expression "puVar10[0xe] = puVar7[6]" (subscript_expression "puVar10[0xe]" (identifier "puVar10") ([ "[") (number_literal "0xe") (] "]")) (= "=") (subscript_expression "puVar7[6]" (identifier "puVar7") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "puVar10[0xf] = uVar4;" (assignment_expression "puVar10[0xf] = uVar4" (subscript_expression "puVar10[0xf]" (identifier "puVar10") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "puVar7 = puVar7 + 0x10;" (assignment_expression "puVar7 = puVar7 + 0x10" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 0x10" (identifier "puVar7") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" (identifier "puVar10") (= "=") (identifier "puVar9")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar9 != puVar11 + (uVar5 + 2) * 0x10)" (( "(") (binary_expression "puVar9 != puVar11 + (uVar5 + 2) * 0x10" (identifier "puVar9") (!= "!=") (binary_expression "puVar11 + (uVar5 + 2) * 0x10" (identifier "puVar11") (+ "+") (binary_expression "(uVar5 + 2) * 0x10" (parenthesized_expression "(uVar5 + 2)" (( "(") (binary_expression "uVar5 + 2" (identifier "uVar5") (+ "+") (number_literal "2")) () ")")) (* "*") (number_literal "0x10")))) () ")")) (; ";")) (expression_statement "puVar8 = puVar8 + (uVar5 + 1) * 0x10;" (assignment_expression "puVar8 = puVar8 + (uVar5 + 1) * 0x10" (identifier "puVar8") (= "=") (binary_expression "puVar8 + (uVar5 + 1) * 0x10" (identifier "puVar8") (+ "+") (binary_expression "(uVar5 + 1) * 0x10" (parenthesized_expression "(uVar5 + 1)" (( "(") (binary_expression "uVar5 + 1" (identifier "uVar5") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "0x10")))) (; ";")) (} "}"))) (for_statement "for (; iVar6 != iVar2; iVar6 = iVar6 + 0x40) {\n    if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }\n  }" (for "for") (( "(") (; ";") (binary_expression "iVar6 != iVar2" (identifier "iVar6") (!= "!=") (identifier "iVar2")) (; ";") (assignment_expression "iVar6 = iVar6 + 0x40" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 0x40" (identifier "iVar6") (+ "+") (number_literal "0x40"))) () ")") (compound_statement "{\n    if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }\n  }" ({ "{") (if_statement "if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar6 + 0x18) != iVar6 + 0x20)" (( "(") (binary_expression "*(int *)(iVar6 + 0x18) != iVar6 + 0x20" (pointer_expression "*(int *)(iVar6 + 0x18)" (* "*") (cast_expression "(int *)(iVar6 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x18)" (( "(") (binary_expression "iVar6 + 0x18" (identifier "iVar6") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (binary_expression "iVar6 + 0x20" (identifier "iVar6") (+ "+") (number_literal "0x20"))) () ")")) (compound_statement "{\n      FUN_001ac470(*(int *)(iVar6 + 0x18));\n    }" ({ "{") (expression_statement "FUN_001ac470(*(int *)(iVar6 + 0x18));" (call_expression "FUN_001ac470(*(int *)(iVar6 + 0x18))" (identifier "FUN_001ac470") (argument_list "(*(int *)(iVar6 + 0x18))" (( "(") (pointer_expression "*(int *)(iVar6 + 0x18)" (* "*") (cast_expression "(int *)(iVar6 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x18)" (( "(") (binary_expression "iVar6 + 0x18" (identifier "iVar6") (+ "+") (number_literal "0x18")) () ")")))) () ")"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (iVar1 != 0) {\n    FUN_001ac470(iVar1);\n  }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_001ac470(iVar1);\n  }" ({ "{") (expression_statement "FUN_001ac470(iVar1);" (call_expression "FUN_001ac470(iVar1)" (identifier "FUN_001ac470") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";")) (} "}"))) (expression_statement "param_1[1] = (int)puVar8;" (assignment_expression "param_1[1] = (int)puVar8" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) (; ";")) (expression_statement "*param_1 = (int)local_30;" (assignment_expression "*param_1 = (int)local_30" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)local_30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_30"))) (; ";")) (expression_statement "param_1[2] = (int)(local_30 + local_34 * 0x10);" (assignment_expression "param_1[2] = (int)(local_30 + local_34 * 0x10)" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)(local_30 + local_34 * 0x10)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(local_30 + local_34 * 0x10)" (( "(") (binary_expression "local_30 + local_34 * 0x10" (identifier "local_30") (+ "+") (binary_expression "local_34 * 0x10" (identifier "local_34") (* "*") (number_literal "0x10"))) () ")")))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original name: _M_realloc_insert<const gold::Input_section_info&>
   DWARF original prototype: void
   _M_realloc_insert<const_gold::Input_section_info&>(vector<gold::Input_section_info,_std::allocator<gold::Input_section_info>_>
   * this, iterator __position, Input_section_info * __args#0) */

void __thiscall
std::vector<gold::var_6,_std::var_1<gold::var_6>var_3>::
_M_realloc_insert<const_gold::var_6&>
          (vector<gold::var_6,_std::var_1<gold::var_6>var_3> *this,
          iterator __position,var_6 *__args_0)

{
  int var_18;
  type_1 var_14;
  type_1 var_19;
  type_1 var_13;
  type_2 uVar5;
  type_2 uVar6;
  type_3 sVar7;
  type_3 sVar8;
  type_3 *var_20;
  type_1 var_23;
  uint64_t uVar11;
  type_4 var_8;
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
  *var_5;
  type_1 var_15;
  type_1 var_22;
  type_1 var_21;
  type_4 *var_11;
  type_1 var_16;
  type_4 var_9;
  type_1 var_17;
  
  var_14 = (this->
           super__Vector_base<gold::var_6,_std::var_1<gold::var_6>var_3>var_7).
           _M_impl._M_start;
  var_19 = (this->
           super__Vector_base<gold::var_6,_std::var_1<gold::var_6>var_3>var_7).
           _M_impl._M_finish;
  var_8 = (int)var_19 - (int)var_14 >> 6;
  if (var_8 == 0) {
    var_9 = 1;
LAB_0013b3d7:
    var_8 = var_9 << 6;
  }
  else {
    var_9 = var_8 * 2;
    if ((var_8 <= var_9) && (var_9 < 0x4000000)) {
      var_17 = (type_1)0x0;
      if (var_9 == 0) goto LAB_0013b145;
      goto LAB_0013b3d7;
    }
    var_9 = 0x3ffffff;
    var_8 = 0xffffffc0;
  }
  var_17 = (type_1)var_10(var_8);
LAB_0013b145:
  var_11 = (type_4 *)(((int)__position._M_current - (int)var_14) + (int)var_17);
  *var_11 = (__args_0->input_section_).shndx_;
  var_11[1] = (__args_0->input_section_).p2align_;
  var_11[2] = *(type_4 *)&(__args_0->input_section_).u1_;
  var_11[3] = *(type_4 *)((int)&(__args_0->input_section_).u1_ + 4);
  *(type_5 *)(var_11 + 4) = (__args_0->input_section_).u2_;
  var_11[5] = (__args_0->input_section_).section_order_index_;
  var_11[6] = (type_4)(var_11 + 8);
  var_13 = (__args_0->section_name_)._M_dataplus._M_p;
                    /* try { // try from 0013b185 to 0013b189 has its CatchHandler @ 0013b3f0 */
  __cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::var_12<var_2*>
            ((basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *var_7)(var_11 + 6),
             var_13,var_13 + (__args_0->section_name_)._M_string_length,0);
  var_8 = *(type_4 *)((int)&__args_0->size_ + 4);
  var_11[0xc] = (type_4)__args_0->size_;
  uVar11 = __args_0->addralign_;
  var_11[0xd] = var_8;
  var_8 = *(type_4 *)((int)&__args_0->addralign_ + 4);
  var_11[0xe] = (type_4)uVar11;
  var_11[0xf] = var_8;
  var_15 = var_17;
  if (__position._M_current != var_14) {
    var_18 = ((type_4)((int)__position._M_current + (-0x40 - (int)var_14)) >> 6) + 1;
    var_5 = &(var_14->section_name_).field_2;
    do {
      (var_15->input_section_).shndx_ = var_5[-2]._M_allocated_capacity;
      (var_15->input_section_).p2align_ = *(type_4 *)((int)var_5 + -0x1c);
      *(type_2 *)&(var_15->input_section_).u1_ = *(type_2 *)((int)var_5 + -0x18);
      *(type_2 *)((int)&(var_15->input_section_).u1_ + 4) =
           *(type_2 *)((int)var_5 + -0x14);
      (var_15->input_section_).u2_ = *(type_5 *)(var_5 + -1);
      var_8 = *(type_4 *)((int)var_5 + -0xc);
      (var_15->section_name_)._M_dataplus._M_p = (type_1)&(var_15->section_name_).field_2;
      (var_15->input_section_).section_order_index_ = var_8;
      var_13 = (((type_6 *)((int)var_5 + -8))->_M_dataplus)._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
           *)var_13 == var_5) {
        (var_15->section_name_).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
        *(type_2 *)((int)&(var_15->section_name_).field_2 + 4) =
             *(type_2 *)((int)var_5 + 4);
        *(type_2 *)((int)&(var_15->section_name_).field_2 + 8) =
             *(type_2 *)((int)var_5 + 8);
        *(type_2 *)((int)&(var_15->section_name_).field_2 + 0xc) =
             *(type_2 *)((int)var_5 + 0xc);
      }
      else {
        (var_15->section_name_)._M_dataplus._M_p = var_13;
        (var_15->section_name_).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
      }
      uVar5 = *(type_2 *)((int)var_5 + 0x14);
      var_16 = var_15 + 1;
      (var_15->section_name_)._M_string_length = *(type_3 *)((int)var_5 + -4);
      uVar6 = var_5[1]._M_allocated_capacity;
      (((type_6 *)((int)var_5 + -8))->_M_dataplus)._M_p = (type_1)var_5;
      *(type_3 *)((int)var_5 + -4) = 0;
      var_5->_M_local_buf[0] = '\0';
      *(type_2 *)&var_15->size_ = uVar6;
      *(type_2 *)((int)&var_15->size_ + 4) = uVar5;
      uVar5 = *(type_2 *)((int)var_5 + 0x1c);
      *(type_2 *)&var_15->addralign_ = *(type_2 *)((int)var_5 + 0x18);
      *(type_2 *)((int)&var_15->addralign_ + 4) = uVar5;
      var_5 = var_5 + 4;
      var_15 = var_16;
    } while (var_16 != var_17 + var_18);
    var_15 = var_17 + var_18;
  }
  var_16 = var_15 + 1;
  var_23 = var_14;
  if (__position._M_current != var_19) {
    var_8 = (type_4)((int)var_19 + (-0x40 - (int)__position._M_current)) >> 6;
    var_5 = &((__position._M_current)->section_name_).field_2;
    var_21 = var_16;
    do {
      sVar8 = var_5[-2]._M_allocated_capacity;
      (var_21->section_name_)._M_dataplus._M_p = (type_1)&(var_21->section_name_).field_2;
      (var_21->input_section_).shndx_ = sVar8;
      (var_21->input_section_).p2align_ = *(type_3 *)((int)var_5 + -0x1c);
      *(type_3 *)&(var_21->input_section_).u1_ = *(type_3 *)((int)var_5 + -0x18);
      *(type_3 *)((int)&(var_21->input_section_).u1_ + 4) = *(type_3 *)((int)var_5 + -0x14)
      ;
      (var_21->input_section_).u2_ = *(type_5 *)(var_5 + -1);
      (var_21->input_section_).section_order_index_ = *(type_3 *)((int)var_5 + -0xc);
      var_20 = (type_3 *)(((type_6 *)((int)var_5 + -8))->_M_dataplus)._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
           *)var_20 == var_5) {
        (var_21->section_name_).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
        *(type_3 *)((int)&(var_21->section_name_).field_2 + 4) =
             *(type_3 *)((int)var_5 + 4);
        *(type_3 *)((int)&(var_21->section_name_).field_2 + 8) =
             *(type_3 *)((int)var_5 + 8);
        *(type_3 *)((int)&(var_21->section_name_).field_2 + 0xc) =
             *(type_3 *)((int)var_5 + 0xc);
      }
      else {
        (var_21->section_name_)._M_dataplus._M_p = (type_1)var_20;
        (var_21->section_name_).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
      }
      sVar8 = *(type_3 *)((int)var_5 + -4);
      sVar7 = *(type_3 *)((int)var_5 + 0x14);
      (((type_6 *)((int)var_5 + -8))->_M_dataplus)._M_p = (type_1)var_5;
      var_22 = var_21 + 1;
      *(type_3 *)((int)var_5 + -4) = 0;
      (var_21->section_name_)._M_string_length = sVar8;
      sVar8 = var_5[1]._M_allocated_capacity;
      *(type_3 *)((int)&var_21->size_ + 4) = sVar7;
      sVar7 = *(type_3 *)((int)var_5 + 0x1c);
      *(type_3 *)&var_21->size_ = sVar8;
      var_5->_M_local_buf[0] = '\0';
      *(type_3 *)&var_21->addralign_ = *(type_3 *)((int)var_5 + 0x18);
      *(type_3 *)((int)&var_21->addralign_ + 4) = sVar7;
      var_5 = var_5 + 4;
      var_21 = var_22;
    } while (var_22 != var_15 + var_8 + 2);
    var_16 = var_16 + var_8 + 1;
  }
  for (; var_23 != var_19; var_23 = var_23 + 1) {
    var_13 = (var_23->section_name_)._M_dataplus._M_p;
    if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
         *)var_13 != &(var_23->section_name_).field_2) {
      var_24(var_13);
    }
  }
  if (var_14 != (type_1)0x0) {
    var_24(var_14);
  }
  (this->super__Vector_base<gold::var_6,_std::var_1<gold::var_6>var_3>var_7).
  _M_impl._M_finish = var_16;
  (this->super__Vector_base<gold::var_6,_std::var_1<gold::var_6>var_3>var_7).
  _M_impl._M_start = var_17;
  (this->super__Vector_base<gold::var_6,_std::var_1<gold::var_6>var_3>var_7).
  _M_impl._M_end_of_storage = var_17 + var_9;
  return;
}


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

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

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

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  uint uVar5;
  int iVar6;
  undefined4 *puVar7;
  undefined4 *puVar8;
  undefined4 *puVar9;
  undefined4 *puVar10;
  undefined4 *puVar11;
  uint local_34;
  undefined4 *local_30;
  
  iVar1 = *param_1;
  iVar2 = param_1[1];
  uVar5 = iVar2 - iVar1 >> 6;
  if (uVar5 == 0) {
    local_34 = 1;
LAB_0013b3d7:
    iVar6 = local_34 << 6;
  }
  else {
    local_34 = uVar5 * 2;
    if ((uVar5 <= local_34) && (local_34 < 0x4000000)) {
      local_30 = (undefined4 *)0x0;
      if (local_34 == 0) goto LAB_0013b145;
      goto LAB_0013b3d7;
    }
    local_34 = 0x3ffffff;
    iVar6 = -0x40;
  }
  local_30 = (undefined4 *)FUN_001aa8c0(iVar6);
LAB_0013b145:
  puVar11 = (undefined4 *)((param_2 - iVar1) + (int)local_30);
  *puVar11 = *param_3;
  puVar11[1] = param_3[1];
  puVar11[2] = param_3[2];
  puVar11[3] = param_3[3];
  puVar11[4] = param_3[4];
  puVar11[5] = param_3[5];
  puVar11[6] = puVar11 + 8;
                    /* try { // try from 0013b185 to 0013b189 has its CatchHandler @ 0013b3f0 */
  FUN_0007c4c0(puVar11 + 6,param_3[6],param_3[7] + param_3[6],0);
  uVar3 = param_3[0xd];
  puVar11[0xc] = param_3[0xc];
  uVar4 = param_3[0xe];
  puVar11[0xd] = uVar3;
  uVar3 = param_3[0xf];
  puVar11[0xe] = uVar4;
  puVar11[0xf] = uVar3;
  puVar11 = local_30;
  if (param_2 != iVar1) {
    iVar6 = ((uint)((param_2 + -0x40) - iVar1) >> 6) + 1;
    puVar11 = (undefined4 *)(iVar1 + 0x20);
    puVar8 = local_30;
    do {
      *puVar8 = puVar11[-8];
      puVar8[1] = puVar11[-7];
      puVar8[2] = puVar11[-6];
      puVar8[3] = puVar11[-5];
      puVar8[4] = puVar11[-4];
      uVar3 = puVar11[-3];
      puVar8[6] = puVar8 + 8;
      puVar8[5] = uVar3;
      if ((undefined4 *)puVar11[-2] == puVar11) {
        puVar8[8] = *puVar11;
        puVar8[9] = puVar11[1];
        puVar8[10] = puVar11[2];
        puVar8[0xb] = puVar11[3];
      }
      else {
        puVar8[6] = (undefined4 *)puVar11[-2];
        puVar8[8] = *puVar11;
      }
      uVar3 = puVar11[5];
      puVar7 = puVar8 + 0x10;
      puVar8[7] = puVar11[-1];
      puVar11[-2] = puVar11;
      puVar11[-1] = 0;
      *(undefined1 *)puVar11 = 0;
      puVar8[0xc] = puVar11[4];
      puVar8[0xd] = uVar3;
      uVar3 = puVar11[7];
      puVar8[0xe] = puVar11[6];
      puVar8[0xf] = uVar3;
      puVar11 = puVar11 + 0x10;
      puVar8 = puVar7;
    } while (puVar7 != local_30 + iVar6 * 0x10);
    puVar11 = local_30 + iVar6 * 0x10;
  }
  puVar8 = puVar11 + 0x10;
  iVar6 = iVar1;
  if (param_2 != iVar2) {
    uVar5 = (iVar2 - param_2) - 0x40U >> 6;
    puVar7 = (undefined4 *)(param_2 + 0x20);
    puVar10 = puVar8;
    do {
      uVar3 = puVar7[-8];
      puVar10[6] = puVar10 + 8;
      *puVar10 = uVar3;
      puVar10[1] = puVar7[-7];
      puVar10[2] = puVar7[-6];
      puVar10[3] = puVar7[-5];
      puVar10[4] = puVar7[-4];
      puVar10[5] = puVar7[-3];
      if ((undefined4 *)puVar7[-2] == puVar7) {
        puVar10[8] = *puVar7;
        puVar10[9] = puVar7[1];
        puVar10[10] = puVar7[2];
        puVar10[0xb] = puVar7[3];
      }
      else {
        puVar10[6] = (undefined4 *)puVar7[-2];
        puVar10[8] = *puVar7;
      }
      uVar3 = puVar7[-1];
      uVar4 = puVar7[5];
      puVar7[-2] = puVar7;
      puVar9 = puVar10 + 0x10;
      puVar7[-1] = 0;
      puVar10[7] = uVar3;
      uVar3 = puVar7[4];
      puVar10[0xd] = uVar4;
      uVar4 = puVar7[7];
      puVar10[0xc] = uVar3;
      *(undefined1 *)puVar7 = 0;
      puVar10[0xe] = puVar7[6];
      puVar10[0xf] = uVar4;
      puVar7 = puVar7 + 0x10;
      puVar10 = puVar9;
    } while (puVar9 != puVar11 + (uVar5 + 2) * 0x10);
    puVar8 = puVar8 + (uVar5 + 1) * 0x10;
  }
  for (; iVar6 != iVar2; iVar6 = iVar6 + 0x40) {
    if (*(int *)(iVar6 + 0x18) != iVar6 + 0x20) {
      FUN_001ac470(*(int *)(iVar6 + 0x18));
    }
  }
  if (iVar1 != 0) {
    FUN_001ac470(iVar1);
  }
  param_1[1] = (int)puVar8;
  *param_1 = (int)local_30;
  param_1[2] = (int)(local_30 + local_34 * 0x10);
  return;
}

