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

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

{
  uint *puVar1;
  pointer pIVar2;
  pointer pIVar3;
  pointer pcVar4;
  size_type sVar5;
  size_type *psVar6;
  pointer pIVar7;
  int iVar8;
  pointer pIVar9;
  pointer pIVar10;
  pointer pIVar11;
  uint uVar12;
  uint uVar13;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar14;
  pointer pIVar15;
  pointer local_24;
  pointer local_20;
  
  pIVar2 = (this->
           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>
           )._M_impl._M_finish;
  pIVar3 = (this->
           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>
           )._M_impl._M_start;
  iVar8 = (int)pIVar2 - (int)pIVar3 >> 2;
  if (iVar8 * -0x3b13b13b == 0) {
    uVar12 = 1;
LAB_00178a05:
    uVar13 = uVar12 * 0x34;
  }
  else {
    uVar12 = iVar8 * -0x76276276;
    uVar13 = 0xffffffd0;
    if (((uint)(iVar8 * -0x3b13b13b) < uVar12 || iVar8 * 0x3b13b13b == 0) && (uVar12 < 0x4ec4ec5)) {
      if (uVar12 == 0) {
        pIVar11 = (pointer)0x34;
        local_20 = (pointer)0x0;
        local_24 = (pointer)0x0;
        goto LAB_00178795;
      }
      goto LAB_00178a05;
    }
  }
  local_24 = (pointer)operator_new(uVar13);
  local_20 = (pointer)((int)&(local_24->input_section_).shndx_ + uVar13);
  pIVar11 = local_24 + 1;
LAB_00178795:
  puVar1 = (uint *)((int)local_24 + ((int)__position._M_current - (int)pIVar3));
  pcVar4 = (__args_0->section_name_)._M_dataplus._M_p;
  *puVar1 = (__args_0->input_section_).shndx_;
  uVar12 = (__args_0->input_section_).p2align_;
  puVar1[7] = (uint)(puVar1 + 9);
  puVar1[1] = uVar12;
  puVar1[2] = *(uint *)&(__args_0->input_section_).u1_;
  puVar1[3] = *(uint *)((int)&(__args_0->input_section_).u1_ + 4);
  *(anon_union_4_4_139239c7_for_u2_ *)(puVar1 + 4) = (__args_0->input_section_).u2_;
  puVar1[5] = (__args_0->input_section_).section_order_index_;
  puVar1[6] = __args_0->index_;
  paVar14 = &(__args_0->section_name_).field_2;
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)pcVar4 == paVar14) {
    puVar1[9] = (__args_0->section_name_).field_2._M_allocated_capacity;
    puVar1[10] = *(uint *)((int)&(__args_0->section_name_).field_2 + 4);
    puVar1[0xb] = *(uint *)((int)&(__args_0->section_name_).field_2 + 8);
    puVar1[0xc] = *(uint *)((int)&(__args_0->section_name_).field_2 + 0xc);
  }
  else {
    puVar1[7] = (uint)pcVar4;
    puVar1[9] = (__args_0->section_name_).field_2._M_allocated_capacity;
  }
  uVar12 = (__args_0->section_name_)._M_string_length;
  (__args_0->section_name_)._M_dataplus._M_p = (pointer)paVar14;
  (__args_0->section_name_)._M_string_length = 0;
  (__args_0->section_name_).field_2._M_local_buf[0] = '\0';
  puVar1[8] = uVar12;
  if (__position._M_current != pIVar3) {
    pIVar7 = local_24;
    paVar14 = &(pIVar3->section_name_).field_2;
    do {
      pIVar11 = pIVar7;
      (pIVar11->input_section_).shndx_ = *(uint *)((int)paVar14 + -0x24);
      (pIVar11->input_section_).p2align_ = paVar14[-2]._M_allocated_capacity;
      *(undefined4 *)&(pIVar11->input_section_).u1_ = *(undefined4 *)((int)paVar14 + -0x1c);
      *(undefined4 *)((int)&(pIVar11->input_section_).u1_ + 4) =
           *(undefined4 *)((int)paVar14 + -0x18);
      (pIVar11->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14);
      (pIVar11->input_section_).section_order_index_ = paVar14[-1]._M_allocated_capacity;
      uVar12 = *(uint *)((int)paVar14 + -0xc);
      (pIVar11->section_name_)._M_dataplus._M_p = (pointer)&(pIVar11->section_name_).field_2;
      pIVar11->index_ = uVar12;
      pcVar4 = (((string *)((int)paVar14 + -8))->_M_dataplus)._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)pcVar4 == paVar14) {
        (pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;
        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 4) =
             *(undefined4 *)((int)paVar14 + 4);
        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 8) =
             *(undefined4 *)((int)paVar14 + 8);
        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 0xc) =
             *(undefined4 *)((int)paVar14 + 0xc);
      }
      else {
        (pIVar11->section_name_)._M_dataplus._M_p = pcVar4;
        (pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;
      }
      (pIVar11->section_name_)._M_string_length = *(size_type *)((int)paVar14 + -4);
      (((string *)((int)paVar14 + -8))->_M_dataplus)._M_p = (pointer)paVar14;
      *(size_type *)((int)paVar14 + -4) = 0;
      paVar14->_M_local_buf[0] = '\0';
      pIVar7 = pIVar11 + 1;
      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                 *)((int)paVar14 + 0x34);
    } while (pIVar11 + 1 !=
             local_24 +
             (((uint)((int)__position._M_current + (-0x34 - (int)pIVar3)) >> 2) * 0x4ec4ec5 &
             0x3fffffff) + 1);
    pIVar11 = pIVar11 + 2;
  }
  pIVar7 = pIVar3;
  if (__position._M_current != pIVar2) {
    pIVar15 = pIVar11 + (((uint)((int)pIVar2 + (-0x34 - (int)__position._M_current)) >> 2) *
                         0x4ec4ec5 & 0x3fffffff) + 1;
    pIVar10 = pIVar11;
    paVar14 = &((__position._M_current)->section_name_).field_2;
    do {
      sVar5 = *(size_type *)((int)paVar14 + -0x24);
      (pIVar10->section_name_)._M_dataplus._M_p = (pointer)&(pIVar10->section_name_).field_2;
      (pIVar10->input_section_).shndx_ = sVar5;
      (pIVar10->input_section_).p2align_ = paVar14[-2]._M_allocated_capacity;
      *(size_type *)&(pIVar10->input_section_).u1_ = *(size_type *)((int)paVar14 + -0x1c);
      *(size_type *)((int)&(pIVar10->input_section_).u1_ + 4) = *(size_type *)((int)paVar14 + -0x18)
      ;
      (pIVar10->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14);
      (pIVar10->input_section_).section_order_index_ = paVar14[-1]._M_allocated_capacity;
      pIVar10->index_ = *(size_type *)((int)paVar14 + -0xc);
      psVar6 = (size_type *)(((string *)((int)paVar14 + -8))->_M_dataplus)._M_p;
      if (paVar14 ==
          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)psVar6) {
        (pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;
        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 4) =
             *(size_type *)((int)paVar14 + 4);
        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 8) =
             *(size_type *)((int)paVar14 + 8);
        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 0xc) =
             *(size_type *)((int)paVar14 + 0xc);
      }
      else {
        (pIVar10->section_name_)._M_dataplus._M_p = (pointer)psVar6;
        (pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;
      }
      sVar5 = *(size_type *)((int)paVar14 + -4);
      pIVar9 = pIVar10 + 1;
      (((string *)((int)paVar14 + -8))->_M_dataplus)._M_p = (pointer)paVar14;
      *(size_type *)((int)paVar14 + -4) = 0;
      (pIVar10->section_name_)._M_string_length = sVar5;
      paVar14->_M_local_buf[0] = '\0';
      pIVar10 = pIVar9;
      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                 *)((int)paVar14 + 0x34);
      pIVar11 = pIVar15;
    } while (pIVar9 != pIVar15);
  }
  for (; pIVar7 != pIVar2; pIVar7 = pIVar7 + 1) {
    pcVar4 = (pIVar7->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 != &(pIVar7->section_name_).field_2) {
      operator_delete(pcVar4);
    }
  }
  if (pIVar3 != (pointer)0x0) {
    operator_delete(pIVar3);
  }
  (this->
  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>
  )._M_impl._M_start = local_24;
  (this->
  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>
  )._M_impl._M_finish = pIVar11;
  (this->
  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>
  )._M_impl._M_end_of_storage = local_20;
  return;
}



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

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

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  uint uVar8;
  undefined4 *puVar9;
  undefined4 *puVar10;
  undefined4 *local_24;
  int local_20;
  
  iVar1 = param_1[1];
  iVar2 = *param_1;
  iVar4 = iVar1 - iVar2 >> 2;
  if (iVar4 * -0x3b13b13b == 0) {
    uVar8 = 1;
LAB_00178a05:
    local_20 = uVar8 * 0x34;
  }
  else {
    uVar8 = iVar4 * -0x76276276;
    local_20 = -0x30;
    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {
      if (uVar8 == 0) {
        puVar7 = (undefined4 *)0x34;
        local_20 = 0;
        local_24 = (undefined4 *)0x0;
        goto LAB_00178795;
      }
      goto LAB_00178a05;
    }
  }
  local_24 = (undefined4 *)FUN_00246670(local_20);
  local_20 = local_20 + (int)local_24;
  puVar7 = local_24 + 0xd;
LAB_00178795:
  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));
  puVar9 = (undefined4 *)param_3[7];
  *puVar6 = *param_3;
  uVar3 = param_3[1];
  puVar6[7] = puVar6 + 9;
  puVar6[1] = uVar3;
  puVar6[2] = param_3[2];
  puVar6[3] = param_3[3];
  puVar6[4] = param_3[4];
  puVar6[5] = param_3[5];
  puVar6[6] = param_3[6];
  if (puVar9 == param_3 + 9) {
    puVar6[9] = param_3[9];
    puVar6[10] = param_3[10];
    puVar6[0xb] = param_3[0xb];
    puVar6[0xc] = param_3[0xc];
  }
  else {
    puVar6[7] = puVar9;
    puVar6[9] = param_3[9];
  }
  uVar3 = param_3[8];
  param_3[7] = param_3 + 9;
  param_3[8] = 0;
  *(undefined1 *)(param_3 + 9) = 0;
  puVar6[8] = uVar3;
  if (param_2 != iVar2) {
    puVar6 = local_24;
    puVar9 = (undefined4 *)(iVar2 + 0x24);
    do {
      puVar7 = puVar6;
      *puVar7 = puVar9[-9];
      puVar7[1] = puVar9[-8];
      puVar7[2] = puVar9[-7];
      puVar7[3] = puVar9[-6];
      puVar7[4] = puVar9[-5];
      puVar7[5] = puVar9[-4];
      uVar3 = puVar9[-3];
      puVar7[7] = puVar7 + 9;
      puVar7[6] = uVar3;
      if ((undefined4 *)puVar9[-2] == puVar9) {
        puVar7[9] = *puVar9;
        puVar7[10] = puVar9[1];
        puVar7[0xb] = puVar9[2];
        puVar7[0xc] = puVar9[3];
      }
      else {
        puVar7[7] = (undefined4 *)puVar9[-2];
        puVar7[9] = *puVar9;
      }
      puVar7[8] = puVar9[-1];
      puVar9[-2] = puVar9;
      puVar9[-1] = 0;
      *(undefined1 *)puVar9 = 0;
      puVar6 = puVar7 + 0xd;
      puVar9 = puVar9 + 0xd;
    } while (puVar7 + 0xd !=
             local_24 +
             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);
    puVar7 = puVar7 + 0x1a;
  }
  iVar4 = iVar2;
  if (param_2 != iVar1) {
    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;
    puVar6 = puVar7;
    puVar9 = (undefined4 *)(param_2 + 0x24);
    do {
      uVar3 = puVar9[-9];
      puVar6[7] = puVar6 + 9;
      *puVar6 = uVar3;
      puVar6[1] = puVar9[-8];
      puVar6[2] = puVar9[-7];
      puVar6[3] = puVar9[-6];
      puVar6[4] = puVar9[-5];
      puVar6[5] = puVar9[-4];
      puVar6[6] = puVar9[-3];
      if (puVar9 == (undefined4 *)puVar9[-2]) {
        puVar6[9] = *puVar9;
        puVar6[10] = puVar9[1];
        puVar6[0xb] = puVar9[2];
        puVar6[0xc] = puVar9[3];
      }
      else {
        puVar6[7] = (undefined4 *)puVar9[-2];
        puVar6[9] = *puVar9;
      }
      uVar3 = puVar9[-1];
      puVar5 = puVar6 + 0xd;
      puVar9[-2] = puVar9;
      puVar9[-1] = 0;
      puVar6[8] = uVar3;
      *(undefined1 *)puVar9 = 0;
      puVar6 = puVar5;
      puVar9 = puVar9 + 0xd;
      puVar7 = puVar10;
    } while (puVar5 != puVar10);
  }
  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x34) {
    if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {
      FUN_00248220(*(int *)(iVar4 + 0x1c));
    }
  }
  if (iVar2 != 0) {
    FUN_00248220(iVar2);
  }
  *param_1 = (int)local_24;
  param_1[1] = (int)puVar7;
  param_1[2] = local_20;
  return;
}


CALL 0x000b4846
ADD EAX,0x29b8db
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOV EBP,dword ptr [ESP + 0x34]
MOV ESI,dword ptr [ESP + 0x38]
MOV dword ptr [ESP],EAX
MOV EAX,dword ptr [ESP + 0x30]
MOV EDI,dword ptr [EAX + 0x4]
MOV EBX,dword ptr [EAX]
MOV EAX,EDI
MOV dword ptr [ESP + 0x4],EBX
SUB EBP,EBX
SUB EAX,EBX
SAR EAX,0x2
IMUL EAX,EAX,-0x3b13b13b
TEST EAX,EAX
JZ 0x00178a00
LEA ECX,[EAX + EAX*0x1]
MOV EDX,0xffffffd0
CMP EAX,ECX
JBE 0x001789d0
SUB ESP,0xc
PUSH EDX
MOV EBX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x1c],EDX
CALL 0x00246670
MOV EDX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0x18],EAX
ADD EDX,EAX
ADD EAX,0x34
MOV dword ptr [ESP + 0x1c],EDX
ADD ESP,0x10
MOV EBX,dword ptr [ESP + 0x8]
MOV ECX,dword ptr [ESI]
LEA EDX,[EBX + EBP*0x1]
MOV EBX,dword ptr [ESI + 0x1c]
MOV dword ptr [EDX],ECX
MOV ECX,dword ptr [ESI + 0x4]
LEA EBP,[EDX + 0x24]
MOV dword ptr [EDX + 0x1c],EBP
MOV dword ptr [EDX + 0x4],ECX
MOV ECX,dword ptr [ESI + 0x8]
MOV dword ptr [EDX + 0x8],ECX
MOV ECX,dword ptr [ESI + 0xc]
MOV dword ptr [EDX + 0xc],ECX
MOV ECX,dword ptr [ESI + 0x10]
MOV dword ptr [EDX + 0x10],ECX
MOV ECX,dword ptr [ESI + 0x14]
MOV dword ptr [EDX + 0x14],ECX
MOV ECX,dword ptr [ESI + 0x18]
MOV dword ptr [EDX + 0x18],ECX
LEA ECX,[ESI + 0x24]
CMP EBX,ECX
JZ 0x00178a10
MOV dword ptr [EDX + 0x1c],EBX
MOV EBX,dword ptr [ESI + 0x24]
MOV dword ptr [EDX + 0x24],EBX
MOV EBX,dword ptr [ESI + 0x20]
MOV dword ptr [ESI + 0x1c],ECX
MOV dword ptr [ESI + 0x20],0x0
MOV byte ptr [ESI + 0x24],0x0
MOV ESI,dword ptr [ESP + 0x4]
MOV dword ptr [EDX + 0x20],EBX
CMP dword ptr [ESP + 0x34],ESI
JZ 0x001788ab
MOV EAX,ESI
LEA EDX,[ESI + 0x24]
MOV ESI,dword ptr [ESP + 0x34]
LEA EBX,[ESI + -0x34]
SUB EBX,EAX
MOV EAX,dword ptr [ESP + 0x8]
SHR EBX,0x2
IMUL EBX,EBX,0x4ec4ec5
AND EBX,0x3fffffff
ADD EBX,0x1
IMUL EBX,EBX,0x34
ADD EBX,EAX
JMP 0x00178856
MOV dword ptr [EAX + 0x1c],ECX
MOV ECX,dword ptr [EDX]
MOV dword ptr [EAX + 0x24],ECX
MOV ECX,dword ptr [EDX + -0x4]
ADD EAX,0x34
MOV dword ptr [EAX + -0x14],ECX
MOV dword ptr [EDX + -0x8],EDX
ADD EDX,0x34
MOV dword ptr [EDX + -0x38],0x0
MOV byte ptr [EDX + -0x34],0x0
CMP EAX,EBX
JZ 0x001788a8
MOV ECX,dword ptr [EDX + -0x24]
LEA ESI,[EAX + 0x24]
MOV dword ptr [EAX],ECX
MOV ECX,dword ptr [EDX + -0x20]
MOV dword ptr [EAX + 0x4],ECX
MOV ECX,dword ptr [EDX + -0x1c]
MOV dword ptr [EAX + 0x8],ECX
MOV ECX,dword ptr [EDX + -0x18]
MOV dword ptr [EAX + 0xc],ECX
MOV ECX,dword ptr [EDX + -0x14]
MOV dword ptr [EAX + 0x10],ECX
MOV ECX,dword ptr [EDX + -0x10]
MOV dword ptr [EAX + 0x14],ECX
MOV ECX,dword ptr [EDX + -0xc]
MOV dword ptr [EAX + 0x1c],ESI
MOV dword ptr [EAX + 0x18],ECX
MOV ECX,dword ptr [EDX + -0x8]
CMP ECX,EDX
JNZ 0x00178830
MOV ECX,dword ptr [EDX]
MOV dword ptr [EAX + 0x24],ECX
MOV ECX,dword ptr [EDX + 0x4]
MOV dword ptr [EAX + 0x28],ECX
MOV ECX,dword ptr [EDX + 0x8]
MOV dword ptr [EAX + 0x2c],ECX
MOV ECX,dword ptr [EDX + 0xc]
MOV dword ptr [EAX + 0x30],ECX
JMP 0x00178838
ADD EAX,0x34
CMP dword ptr [ESP + 0x34],EDI
JZ 0x00178958
MOV ESI,dword ptr [ESP + 0x34]
MOV ECX,EDI
SUB ECX,ESI
LEA EDX,[ESI + 0x24]
LEA ESI,[ECX + -0x34]
SHR ESI,0x2
IMUL ESI,ESI,0x4ec4ec5
AND ESI,0x3fffffff
ADD ESI,0x1
IMUL ESI,ESI,0x34
ADD ESI,EAX
JMP 0x00178906
MOV dword ptr [EAX + 0x1c],ECX
MOV ECX,dword ptr [EDX]
MOV dword ptr [EAX + 0x24],ECX
MOV ECX,dword ptr [EDX + -0x4]
ADD EAX,0x34
MOV dword ptr [EDX + -0x8],EDX
ADD EDX,0x34
MOV dword ptr [EDX + -0x38],0x0
MOV dword ptr [EAX + -0x14],ECX
MOV byte ptr [EDX + -0x34],0x0
CMP EAX,ESI
JZ 0x00178960
MOV ECX,dword ptr [EDX + -0x24]
LEA EBX,[EAX + 0x24]
MOV dword ptr [EAX + 0x1c],EBX
MOV dword ptr [EAX],ECX
MOV ECX,dword ptr [EDX + -0x20]
MOV dword ptr [EAX + 0x4],ECX
MOV ECX,dword ptr [EDX + -0x1c]
MOV dword ptr [EAX + 0x8],ECX
MOV ECX,dword ptr [EDX + -0x18]
MOV dword ptr [EAX + 0xc],ECX
MOV ECX,dword ptr [EDX + -0x14]
MOV dword ptr [EAX + 0x10],ECX
MOV ECX,dword ptr [EDX + -0x10]
MOV dword ptr [EAX + 0x14],ECX
MOV ECX,dword ptr [EDX + -0xc]
MOV dword ptr [EAX + 0x18],ECX
MOV ECX,dword ptr [EDX + -0x8]
CMP EDX,ECX
JNZ 0x001788e0
MOV ECX,dword ptr [EDX]
MOV dword ptr [EAX + 0x24],ECX
MOV ECX,dword ptr [EDX + 0x4]
MOV dword ptr [EAX + 0x28],ECX
MOV ECX,dword ptr [EDX + 0x8]
MOV dword ptr [EAX + 0x2c],ECX
MOV ECX,dword ptr [EDX + 0xc]
MOV dword ptr [EAX + 0x30],ECX
JMP 0x001788e8
MOV ESI,EAX
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x4]
MOV EBP,EAX
CMP EAX,EDI
JZ 0x00178991
LEA ESI,[ESI]
MOV EAX,dword ptr [EBP + 0x1c]
LEA EDX,[EBP + 0x24]
CMP EAX,EDX
JZ 0x0017898a
SUB ESP,0xc
PUSH EAX
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x00248220
ADD ESP,0x10
ADD EBP,0x34
CMP EBP,EDI
JNZ 0x00178970
MOV EAX,dword ptr [ESP + 0x4]
TEST EAX,EAX
JZ 0x001789ac
SUB ESP,0xc
PUSH dword ptr [ESP + 0x10]
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x00248220
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x30]
MOV EDI,dword ptr [ESP + 0x8]
MOV dword ptr [EAX],EDI
MOV EDI,dword ptr [ESP + 0xc]
MOV dword ptr [EAX + 0x4],ESI
MOV dword ptr [EAX + 0x8],EDI
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP ECX,0x4ec4ec4
JA 0x00178770
TEST ECX,ECX
JNZ 0x00178a05
MOV EAX,0x34
MOV dword ptr [ESP + 0xc],0x0
MOV dword ptr [ESP + 0x8],0x0
JMP 0x00178795
MOV ECX,0x1
IMUL EDX,ECX,0x34
JMP 0x00178770
MOV EBX,dword ptr [ESI + 0x24]
MOV dword ptr [EDX + 0x24],EBX
MOV EBX,dword ptr [ECX + 0x4]
MOV dword ptr [EDX + 0x28],EBX
MOV EBX,dword ptr [ECX + 0x8]
MOV dword ptr [EDX + 0x2c],EBX
MOV EBX,dword ptr [ECX + 0xc]
MOV dword ptr [EDX + 0x30],EBX
JMP 0x001787e1
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_00178720(int *param_1,int param_2,undefined4 *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *local_24;\n  int local_20;\n  \n  iVar1 = param_1[1];\n  iVar2 = *param_1;\n  iVar4 = iVar1 - iVar2 >> 2;\n  if (iVar4 * -0x3b13b13b == 0) {\n    uVar8 = 1;\nLAB_00178a05:\n    local_20 = uVar8 * 0x34;\n  }\n  else {\n    uVar8 = iVar4 * -0x76276276;\n    local_20 = -0x30;\n    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }\n  local_24 = (undefined4 *)FUN_00246670(local_20);\n  local_20 = local_20 + (int)local_24;\n  puVar7 = local_24 + 0xd;\nLAB_00178795:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));\n  puVar9 = (undefined4 *)param_3[7];\n  *puVar6 = *param_3;\n  uVar3 = param_3[1];\n  puVar6[7] = puVar6 + 9;\n  puVar6[1] = uVar3;\n  puVar6[2] = param_3[2];\n  puVar6[3] = param_3[3];\n  puVar6[4] = param_3[4];\n  puVar6[5] = param_3[5];\n  puVar6[6] = param_3[6];\n  if (puVar9 == param_3 + 9) {\n    puVar6[9] = param_3[9];\n    puVar6[10] = param_3[10];\n    puVar6[0xb] = param_3[0xb];\n    puVar6[0xc] = param_3[0xc];\n  }\n  else {\n    puVar6[7] = puVar9;\n    puVar6[9] = param_3[9];\n  }\n  uVar3 = param_3[8];\n  param_3[7] = param_3 + 9;\n  param_3[8] = 0;\n  *(undefined1 *)(param_3 + 9) = 0;\n  puVar6[8] = uVar3;\n  if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0x24);\n    do {\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    } while (puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);\n    puVar7 = puVar7 + 0x1a;\n  }\n  iVar4 = iVar2;\n  if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0x24);\n    do {\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }\n  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x34) {\n    if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }\n  }\n  if (iVar2 != 0) {\n    FUN_00248220(iVar2);\n  }\n  *param_1 = (int)local_24;\n  param_1[1] = (int)puVar7;\n  param_1[2] = local_20;\n  return;\n}\n\n" comment (function_definition "void FUN_00178720(int *param_1,int param_2,undefined4 *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *local_24;\n  int local_20;\n  \n  iVar1 = param_1[1];\n  iVar2 = *param_1;\n  iVar4 = iVar1 - iVar2 >> 2;\n  if (iVar4 * -0x3b13b13b == 0) {\n    uVar8 = 1;\nLAB_00178a05:\n    local_20 = uVar8 * 0x34;\n  }\n  else {\n    uVar8 = iVar4 * -0x76276276;\n    local_20 = -0x30;\n    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }\n  local_24 = (undefined4 *)FUN_00246670(local_20);\n  local_20 = local_20 + (int)local_24;\n  puVar7 = local_24 + 0xd;\nLAB_00178795:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));\n  puVar9 = (undefined4 *)param_3[7];\n  *puVar6 = *param_3;\n  uVar3 = param_3[1];\n  puVar6[7] = puVar6 + 9;\n  puVar6[1] = uVar3;\n  puVar6[2] = param_3[2];\n  puVar6[3] = param_3[3];\n  puVar6[4] = param_3[4];\n  puVar6[5] = param_3[5];\n  puVar6[6] = param_3[6];\n  if (puVar9 == param_3 + 9) {\n    puVar6[9] = param_3[9];\n    puVar6[10] = param_3[10];\n    puVar6[0xb] = param_3[0xb];\n    puVar6[0xc] = param_3[0xc];\n  }\n  else {\n    puVar6[7] = puVar9;\n    puVar6[9] = param_3[9];\n  }\n  uVar3 = param_3[8];\n  param_3[7] = param_3 + 9;\n  param_3[8] = 0;\n  *(undefined1 *)(param_3 + 9) = 0;\n  puVar6[8] = uVar3;\n  if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0x24);\n    do {\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    } while (puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);\n    puVar7 = puVar7 + 0x1a;\n  }\n  iVar4 = iVar2;\n  if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0x24);\n    do {\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }\n  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x34) {\n    if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }\n  }\n  if (iVar2 != 0) {\n    FUN_00248220(iVar2);\n  }\n  *param_1 = (int)local_24;\n  param_1[1] = (int)puVar7;\n  param_1[2] = local_20;\n  return;\n}" primitive_type (function_declarator "FUN_00178720(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  int iVar4;\n  undefined4 *puVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *local_24;\n  int local_20;\n  \n  iVar1 = param_1[1];\n  iVar2 = *param_1;\n  iVar4 = iVar1 - iVar2 >> 2;\n  if (iVar4 * -0x3b13b13b == 0) {\n    uVar8 = 1;\nLAB_00178a05:\n    local_20 = uVar8 * 0x34;\n  }\n  else {\n    uVar8 = iVar4 * -0x76276276;\n    local_20 = -0x30;\n    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }\n  local_24 = (undefined4 *)FUN_00246670(local_20);\n  local_20 = local_20 + (int)local_24;\n  puVar7 = local_24 + 0xd;\nLAB_00178795:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));\n  puVar9 = (undefined4 *)param_3[7];\n  *puVar6 = *param_3;\n  uVar3 = param_3[1];\n  puVar6[7] = puVar6 + 9;\n  puVar6[1] = uVar3;\n  puVar6[2] = param_3[2];\n  puVar6[3] = param_3[3];\n  puVar6[4] = param_3[4];\n  puVar6[5] = param_3[5];\n  puVar6[6] = param_3[6];\n  if (puVar9 == param_3 + 9) {\n    puVar6[9] = param_3[9];\n    puVar6[10] = param_3[10];\n    puVar6[0xb] = param_3[0xb];\n    puVar6[0xc] = param_3[0xc];\n  }\n  else {\n    puVar6[7] = puVar9;\n    puVar6[9] = param_3[9];\n  }\n  uVar3 = param_3[8];\n  param_3[7] = param_3 + 9;\n  param_3[8] = 0;\n  *(undefined1 *)(param_3 + 9) = 0;\n  puVar6[8] = uVar3;\n  if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0x24);\n    do {\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    } while (puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);\n    puVar7 = puVar7 + 0x1a;\n  }\n  iVar4 = iVar2;\n  if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0x24);\n    do {\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }\n  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x34) {\n    if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }\n  }\n  if (iVar2 != 0) {\n    FUN_00248220(iVar2);\n  }\n  *param_1 = (int)local_24;\n  param_1[1] = (int)puVar7;\n  param_1[2] = local_20;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined4 *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "iVar1 = param_1[1];" (assignment_expression "iVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = *param_1;" (assignment_expression "iVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar4 = iVar1 - iVar2 >> 2;" (assignment_expression "iVar4 = iVar1 - iVar2 >> 2" identifier = (binary_expression "iVar1 - iVar2 >> 2" (binary_expression "iVar1 - iVar2" identifier - identifier) >> number_literal)) ;) (if_statement "if (iVar4 * -0x3b13b13b == 0) {\n    uVar8 = 1;\nLAB_00178a05:\n    local_20 = uVar8 * 0x34;\n  }\n  else {\n    uVar8 = iVar4 * -0x76276276;\n    local_20 = -0x30;\n    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }" if (parenthesized_expression "(iVar4 * -0x3b13b13b == 0)" ( (binary_expression "iVar4 * -0x3b13b13b == 0" (binary_expression "iVar4 * -0x3b13b13b" identifier * number_literal) == number_literal) )) (compound_statement "{\n    uVar8 = 1;\nLAB_00178a05:\n    local_20 = uVar8 * 0x34;\n  }" { (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00178a05:\n    local_20 = uVar8 * 0x34;" statement_identifier : (expression_statement "local_20 = uVar8 * 0x34;" (assignment_expression "local_20 = uVar8 * 0x34" identifier = (binary_expression "uVar8 * 0x34" identifier * number_literal)) ;)) }) (else_clause "else {\n    uVar8 = iVar4 * -0x76276276;\n    local_20 = -0x30;\n    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }" else (compound_statement "{\n    uVar8 = iVar4 * -0x76276276;\n    local_20 = -0x30;\n    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }" { (expression_statement "uVar8 = iVar4 * -0x76276276;" (assignment_expression "uVar8 = iVar4 * -0x76276276" identifier = (binary_expression "iVar4 * -0x76276276" identifier * number_literal)) ;) (expression_statement "local_20 = -0x30;" (assignment_expression "local_20 = -0x30" identifier = number_literal) ;) (if_statement "if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }" if (parenthesized_expression "(((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5))" ( (binary_expression "((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)" (parenthesized_expression "((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0)" ( (binary_expression "(uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0" (binary_expression "(uint)(iVar4 * -0x3b13b13b) < uVar8" (call_expression "(uint)(iVar4 * -0x3b13b13b)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar4 * -0x3b13b13b)" ( (binary_expression "iVar4 * -0x3b13b13b" identifier * number_literal) ))) < identifier) || (binary_expression "iVar4 * 0x3b13b13b == 0" (binary_expression "iVar4 * 0x3b13b13b" identifier * number_literal) == number_literal)) )) && (parenthesized_expression "(uVar8 < 0x4ec4ec5)" ( (binary_expression "uVar8 < 0x4ec4ec5" identifier < number_literal) ))) )) (compound_statement "{\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }" { (if_statement "if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }" { (expression_statement "puVar7 = (undefined4 *)0x34;" (assignment_expression "puVar7 = (undefined4 *)0x34" identifier = (cast_expression "(undefined4 *)0x34" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_24 = (undefined4 *)0x0;" (assignment_expression "local_24 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00178795;" goto statement_identifier ;) })) (goto_statement "goto LAB_00178a05;" goto statement_identifier ;) })) }))) (expression_statement "local_24 = (undefined4 *)FUN_00246670(local_20);" (assignment_expression "local_24 = (undefined4 *)FUN_00246670(local_20)" identifier = (cast_expression "(undefined4 *)FUN_00246670(local_20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(local_20)" identifier (argument_list "(local_20)" ( identifier ))))) ;) (expression_statement "local_20 = local_20 + (int)local_24;" (assignment_expression "local_20 = local_20 + (int)local_24" identifier = (binary_expression "local_20 + (int)local_24" identifier + (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar7 = local_24 + 0xd;" (assignment_expression "puVar7 = local_24 + 0xd" identifier = (binary_expression "local_24 + 0xd" identifier + number_literal)) ;) (labeled_statement "LAB_00178795:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));" statement_identifier : (expression_statement "puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));" (assignment_expression "puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2))" identifier = (cast_expression "(undefined4 *)((int)local_24 + (param_2 - iVar2))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_24 + (param_2 - iVar2))" ( (binary_expression "(int)local_24 + (param_2 - iVar2)" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(param_2 - iVar2)" ( (binary_expression "param_2 - iVar2" identifier - identifier) ))) )))) ;)) (expression_statement "puVar9 = (undefined4 *)param_3[7];" (assignment_expression "puVar9 = (undefined4 *)param_3[7]" identifier = (cast_expression "(undefined4 *)param_3[7]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[7]" identifier [ number_literal ]))) ;) (expression_statement "*puVar6 = *param_3;" (assignment_expression "*puVar6 = *param_3" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar3 = param_3[1];" (assignment_expression "uVar3 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "puVar6[7] = puVar6 + 9;" (assignment_expression "puVar6[7] = puVar6 + 9" (subscript_expression "puVar6[7]" identifier [ number_literal ]) = (binary_expression "puVar6 + 9" identifier + number_literal)) ;) (expression_statement "puVar6[1] = uVar3;" (assignment_expression "puVar6[1] = uVar3" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[2] = param_3[2];" (assignment_expression "puVar6[2] = param_3[2]" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (expression_statement "puVar6[3] = param_3[3];" (assignment_expression "puVar6[3] = param_3[3]" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (expression_statement "puVar6[4] = param_3[4];" (assignment_expression "puVar6[4] = param_3[4]" (subscript_expression "puVar6[4]" identifier [ number_literal ]) = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (expression_statement "puVar6[5] = param_3[5];" (assignment_expression "puVar6[5] = param_3[5]" (subscript_expression "puVar6[5]" identifier [ number_literal ]) = (subscript_expression "param_3[5]" identifier [ number_literal ])) ;) (expression_statement "puVar6[6] = param_3[6];" (assignment_expression "puVar6[6] = param_3[6]" (subscript_expression "puVar6[6]" identifier [ number_literal ]) = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) (if_statement "if (puVar9 == param_3 + 9) {\n    puVar6[9] = param_3[9];\n    puVar6[10] = param_3[10];\n    puVar6[0xb] = param_3[0xb];\n    puVar6[0xc] = param_3[0xc];\n  }\n  else {\n    puVar6[7] = puVar9;\n    puVar6[9] = param_3[9];\n  }" if (parenthesized_expression "(puVar9 == param_3 + 9)" ( (binary_expression "puVar9 == param_3 + 9" identifier == (binary_expression "param_3 + 9" identifier + number_literal)) )) (compound_statement "{\n    puVar6[9] = param_3[9];\n    puVar6[10] = param_3[10];\n    puVar6[0xb] = param_3[0xb];\n    puVar6[0xc] = param_3[0xc];\n  }" { (expression_statement "puVar6[9] = param_3[9];" (assignment_expression "puVar6[9] = param_3[9]" (subscript_expression "puVar6[9]" identifier [ number_literal ]) = (subscript_expression "param_3[9]" identifier [ number_literal ])) ;) (expression_statement "puVar6[10] = param_3[10];" (assignment_expression "puVar6[10] = param_3[10]" (subscript_expression "puVar6[10]" identifier [ number_literal ]) = (subscript_expression "param_3[10]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0xb] = param_3[0xb];" (assignment_expression "puVar6[0xb] = param_3[0xb]" (subscript_expression "puVar6[0xb]" identifier [ number_literal ]) = (subscript_expression "param_3[0xb]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0xc] = param_3[0xc];" (assignment_expression "puVar6[0xc] = param_3[0xc]" (subscript_expression "puVar6[0xc]" identifier [ number_literal ]) = (subscript_expression "param_3[0xc]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    puVar6[7] = puVar9;\n    puVar6[9] = param_3[9];\n  }" else (compound_statement "{\n    puVar6[7] = puVar9;\n    puVar6[9] = param_3[9];\n  }" { (expression_statement "puVar6[7] = puVar9;" (assignment_expression "puVar6[7] = puVar9" (subscript_expression "puVar6[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[9] = param_3[9];" (assignment_expression "puVar6[9] = param_3[9]" (subscript_expression "puVar6[9]" identifier [ number_literal ]) = (subscript_expression "param_3[9]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar3 = param_3[8];" (assignment_expression "uVar3 = param_3[8]" identifier = (subscript_expression "param_3[8]" identifier [ number_literal ])) ;) (expression_statement "param_3[7] = param_3 + 9;" (assignment_expression "param_3[7] = param_3 + 9" (subscript_expression "param_3[7]" identifier [ number_literal ]) = (binary_expression "param_3 + 9" identifier + number_literal)) ;) (expression_statement "param_3[8] = 0;" (assignment_expression "param_3[8] = 0" (subscript_expression "param_3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(param_3 + 9) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 9) = 0" (pointer_expression "*(undefined1 *)(param_3 + 9)" * (cast_expression "(undefined1 *)(param_3 + 9)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 9)" ( (binary_expression "param_3 + 9" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar6[8] = uVar3;" (assignment_expression "puVar6[8] = uVar3" (subscript_expression "puVar6[8]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0x24);\n    do {\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    } while (puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);\n    puVar7 = puVar7 + 0x1a;\n  }" if (parenthesized_expression "(param_2 != iVar2)" ( (binary_expression "param_2 != iVar2" identifier != identifier) )) (compound_statement "{\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0x24);\n    do {\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    } while (puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);\n    puVar7 = puVar7 + 0x1a;\n  }" { (expression_statement "puVar6 = local_24;" (assignment_expression "puVar6 = local_24" identifier = identifier) ;) (expression_statement "puVar9 = (undefined4 *)(iVar2 + 0x24);" (assignment_expression "puVar9 = (undefined4 *)(iVar2 + 0x24)" identifier = (cast_expression "(undefined4 *)(iVar2 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x24)" ( (binary_expression "iVar2 + 0x24" identifier + number_literal) )))) ;) (do_statement "do {\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    } while (puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);" do (compound_statement "{\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    }" { (expression_statement "puVar7 = puVar6;" (assignment_expression "puVar7 = puVar6" identifier = identifier) ;) (expression_statement "*puVar7 = puVar9[-9];" (assignment_expression "*puVar7 = puVar9[-9]" (pointer_expression "*puVar7" * identifier) = (subscript_expression "puVar9[-9]" identifier [ number_literal ])) ;) (expression_statement "puVar7[1] = puVar9[-8];" (assignment_expression "puVar7[1] = puVar9[-8]" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (subscript_expression "puVar9[-8]" identifier [ number_literal ])) ;) (expression_statement "puVar7[2] = puVar9[-7];" (assignment_expression "puVar7[2] = puVar9[-7]" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = (subscript_expression "puVar9[-7]" identifier [ number_literal ])) ;) (expression_statement "puVar7[3] = puVar9[-6];" (assignment_expression "puVar7[3] = puVar9[-6]" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = (subscript_expression "puVar9[-6]" identifier [ number_literal ])) ;) (expression_statement "puVar7[4] = puVar9[-5];" (assignment_expression "puVar7[4] = puVar9[-5]" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = (subscript_expression "puVar9[-5]" identifier [ number_literal ])) ;) (expression_statement "puVar7[5] = puVar9[-4];" (assignment_expression "puVar7[5] = puVar9[-4]" (subscript_expression "puVar7[5]" identifier [ number_literal ]) = (subscript_expression "puVar9[-4]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = puVar9[-3];" (assignment_expression "uVar3 = puVar9[-3]" identifier = (subscript_expression "puVar9[-3]" identifier [ number_literal ])) ;) (expression_statement "puVar7[7] = puVar7 + 9;" (assignment_expression "puVar7[7] = puVar7 + 9" (subscript_expression "puVar7[7]" identifier [ number_literal ]) = (binary_expression "puVar7 + 9" identifier + number_literal)) ;) (expression_statement "puVar7[6] = uVar3;" (assignment_expression "puVar7[6] = uVar3" (subscript_expression "puVar7[6]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }" if (parenthesized_expression "((undefined4 *)puVar9[-2] == puVar9)" ( (binary_expression "(undefined4 *)puVar9[-2] == puVar9" (cast_expression "(undefined4 *)puVar9[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }" { (expression_statement "puVar7[9] = *puVar9;" (assignment_expression "puVar7[9] = *puVar9" (subscript_expression "puVar7[9]" identifier [ number_literal ]) = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar7[10] = puVar9[1];" (assignment_expression "puVar7[10] = puVar9[1]" (subscript_expression "puVar7[10]" identifier [ number_literal ]) = (subscript_expression "puVar9[1]" identifier [ number_literal ])) ;) (expression_statement "puVar7[0xb] = puVar9[2];" (assignment_expression "puVar7[0xb] = puVar9[2]" (subscript_expression "puVar7[0xb]" identifier [ number_literal ]) = (subscript_expression "puVar9[2]" identifier [ number_literal ])) ;) (expression_statement "puVar7[0xc] = puVar9[3];" (assignment_expression "puVar7[0xc] = puVar9[3]" (subscript_expression "puVar7[0xc]" identifier [ number_literal ]) = (subscript_expression "puVar9[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }" else (compound_statement "{\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }" { (expression_statement "puVar7[7] = (undefined4 *)puVar9[-2];" (assignment_expression "puVar7[7] = (undefined4 *)puVar9[-2]" (subscript_expression "puVar7[7]" identifier [ number_literal ]) = (cast_expression "(undefined4 *)puVar9[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar7[9] = *puVar9;" (assignment_expression "puVar7[9] = *puVar9" (subscript_expression "puVar7[9]" identifier [ number_literal ]) = (pointer_expression "*puVar9" * identifier)) ;) }))) (expression_statement "puVar7[8] = puVar9[-1];" (assignment_expression "puVar7[8] = puVar9[-1]" (subscript_expression "puVar7[8]" identifier [ number_literal ]) = (subscript_expression "puVar9[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar9[-2] = puVar9;" (assignment_expression "puVar9[-2] = puVar9" (subscript_expression "puVar9[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[-1] = 0;" (assignment_expression "puVar9[-1] = 0" (subscript_expression "puVar9[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar9 = 0;" (assignment_expression "*(undefined1 *)puVar9 = 0" (pointer_expression "*(undefined1 *)puVar9" * (cast_expression "(undefined1 *)puVar9" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar6 = puVar7 + 0xd;" (assignment_expression "puVar6 = puVar7 + 0xd" identifier = (binary_expression "puVar7 + 0xd" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar9 + 0xd;" (assignment_expression "puVar9 = puVar9 + 0xd" identifier = (binary_expression "puVar9 + 0xd" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd)" ( (binary_expression "puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd" (binary_expression "puVar7 + 0xd" identifier + number_literal) != (binary_expression "local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd" identifier + (binary_expression "((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd" (parenthesized_expression "((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1)" ( (binary_expression "(((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1" (parenthesized_expression "(((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff)" ( (binary_expression "((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff" (binary_expression "((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5" (parenthesized_expression "((uint)((param_2 + -0x34) - iVar2) >> 2)" ( (binary_expression "(uint)((param_2 + -0x34) - iVar2) >> 2" (call_expression "(uint)((param_2 + -0x34) - iVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((param_2 + -0x34) - iVar2)" ( (binary_expression "(param_2 + -0x34) - iVar2" (parenthesized_expression "(param_2 + -0x34)" ( (binary_expression "param_2 + -0x34" identifier + number_literal) )) - identifier) ))) >> number_literal) )) * number_literal) & number_literal) )) + number_literal) )) * number_literal))) )) ;) (expression_statement "puVar7 = puVar7 + 0x1a;" (assignment_expression "puVar7 = puVar7 + 0x1a" identifier = (binary_expression "puVar7 + 0x1a" identifier + number_literal)) ;) })) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" identifier = identifier) ;) (if_statement "if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0x24);\n    do {\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }" if (parenthesized_expression "(param_2 != iVar1)" ( (binary_expression "param_2 != iVar1" identifier != identifier) )) (compound_statement "{\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0x24);\n    do {\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }" { (expression_statement "puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;" (assignment_expression "puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd" identifier = (binary_expression "puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd" identifier + (binary_expression "((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd" (parenthesized_expression "((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1)" ( (binary_expression "(((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1" (parenthesized_expression "(((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff)" ( (binary_expression "((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff" (binary_expression "((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5" (parenthesized_expression "((iVar1 - param_2) - 0x34U >> 2)" ( (binary_expression "(iVar1 - param_2) - 0x34U >> 2" (binary_expression "(iVar1 - param_2) - 0x34U" (parenthesized_expression "(iVar1 - param_2)" ( (binary_expression "iVar1 - param_2" identifier - identifier) )) - number_literal) >> number_literal) )) * number_literal) & number_literal) )) + number_literal) )) * number_literal))) ;) (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" identifier = identifier) ;) (expression_statement "puVar9 = (undefined4 *)(param_2 + 0x24);" (assignment_expression "puVar9 = (undefined4 *)(param_2 + 0x24)" identifier = (cast_expression "(undefined4 *)(param_2 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) ;) (do_statement "do {\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);" do (compound_statement "{\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    }" { (expression_statement "uVar3 = puVar9[-9];" (assignment_expression "uVar3 = puVar9[-9]" identifier = (subscript_expression "puVar9[-9]" identifier [ number_literal ])) ;) (expression_statement "puVar6[7] = puVar6 + 9;" (assignment_expression "puVar6[7] = puVar6 + 9" (subscript_expression "puVar6[7]" identifier [ number_literal ]) = (binary_expression "puVar6 + 9" identifier + number_literal)) ;) (expression_statement "*puVar6 = uVar3;" (assignment_expression "*puVar6 = uVar3" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "puVar6[1] = puVar9[-8];" (assignment_expression "puVar6[1] = puVar9[-8]" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = (subscript_expression "puVar9[-8]" identifier [ number_literal ])) ;) (expression_statement "puVar6[2] = puVar9[-7];" (assignment_expression "puVar6[2] = puVar9[-7]" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = (subscript_expression "puVar9[-7]" identifier [ number_literal ])) ;) (expression_statement "puVar6[3] = puVar9[-6];" (assignment_expression "puVar6[3] = puVar9[-6]" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = (subscript_expression "puVar9[-6]" identifier [ number_literal ])) ;) (expression_statement "puVar6[4] = puVar9[-5];" (assignment_expression "puVar6[4] = puVar9[-5]" (subscript_expression "puVar6[4]" identifier [ number_literal ]) = (subscript_expression "puVar9[-5]" identifier [ number_literal ])) ;) (expression_statement "puVar6[5] = puVar9[-4];" (assignment_expression "puVar6[5] = puVar9[-4]" (subscript_expression "puVar6[5]" identifier [ number_literal ]) = (subscript_expression "puVar9[-4]" identifier [ number_literal ])) ;) (expression_statement "puVar6[6] = puVar9[-3];" (assignment_expression "puVar6[6] = puVar9[-3]" (subscript_expression "puVar6[6]" identifier [ number_literal ]) = (subscript_expression "puVar9[-3]" identifier [ number_literal ])) ;) (if_statement "if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }" if (parenthesized_expression "(puVar9 == (undefined4 *)puVar9[-2])" ( (binary_expression "puVar9 == (undefined4 *)puVar9[-2]" identifier == (cast_expression "(undefined4 *)puVar9[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[-2]" identifier [ number_literal ]))) )) (compound_statement "{\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }" { (expression_statement "puVar6[9] = *puVar9;" (assignment_expression "puVar6[9] = *puVar9" (subscript_expression "puVar6[9]" identifier [ number_literal ]) = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar6[10] = puVar9[1];" (assignment_expression "puVar6[10] = puVar9[1]" (subscript_expression "puVar6[10]" identifier [ number_literal ]) = (subscript_expression "puVar9[1]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0xb] = puVar9[2];" (assignment_expression "puVar6[0xb] = puVar9[2]" (subscript_expression "puVar6[0xb]" identifier [ number_literal ]) = (subscript_expression "puVar9[2]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0xc] = puVar9[3];" (assignment_expression "puVar6[0xc] = puVar9[3]" (subscript_expression "puVar6[0xc]" identifier [ number_literal ]) = (subscript_expression "puVar9[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }" else (compound_statement "{\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }" { (expression_statement "puVar6[7] = (undefined4 *)puVar9[-2];" (assignment_expression "puVar6[7] = (undefined4 *)puVar9[-2]" (subscript_expression "puVar6[7]" identifier [ number_literal ]) = (cast_expression "(undefined4 *)puVar9[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar6[9] = *puVar9;" (assignment_expression "puVar6[9] = *puVar9" (subscript_expression "puVar6[9]" identifier [ number_literal ]) = (pointer_expression "*puVar9" * identifier)) ;) }))) (expression_statement "uVar3 = puVar9[-1];" (assignment_expression "uVar3 = puVar9[-1]" identifier = (subscript_expression "puVar9[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = puVar6 + 0xd;" (assignment_expression "puVar5 = puVar6 + 0xd" identifier = (binary_expression "puVar6 + 0xd" identifier + number_literal)) ;) (expression_statement "puVar9[-2] = puVar9;" (assignment_expression "puVar9[-2] = puVar9" (subscript_expression "puVar9[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[-1] = 0;" (assignment_expression "puVar9[-1] = 0" (subscript_expression "puVar9[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[8] = uVar3;" (assignment_expression "puVar6[8] = uVar3" (subscript_expression "puVar6[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)puVar9 = 0;" (assignment_expression "*(undefined1 *)puVar9 = 0" (pointer_expression "*(undefined1 *)puVar9" * (cast_expression "(undefined1 *)puVar9" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" identifier = identifier) ;) (expression_statement "puVar9 = puVar9 + 0xd;" (assignment_expression "puVar9 = puVar9 + 0xd" identifier = (binary_expression "puVar9 + 0xd" identifier + number_literal)) ;) (expression_statement "puVar7 = puVar10;" (assignment_expression "puVar7 = puVar10" identifier = identifier) ;) }) while (parenthesized_expression "(puVar5 != puVar10)" ( (binary_expression "puVar5 != puVar10" identifier != identifier) )) ;) })) (for_statement "for (; iVar4 != iVar1; iVar4 = iVar4 + 0x34) {\n    if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }\n  }" for ( ; (binary_expression "iVar4 != iVar1" identifier != identifier) ; (assignment_expression "iVar4 = iVar4 + 0x34" identifier = (binary_expression "iVar4 + 0x34" identifier + number_literal)) ) (compound_statement "{\n    if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }\n  }" { (if_statement "if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }" if (parenthesized_expression "(*(int *)(iVar4 + 0x1c) != iVar4 + 0x24)" ( (binary_expression "*(int *)(iVar4 + 0x1c) != iVar4 + 0x24" (pointer_expression "*(int *)(iVar4 + 0x1c)" * (cast_expression "(int *)(iVar4 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1c)" ( (binary_expression "iVar4 + 0x1c" identifier + number_literal) )))) != (binary_expression "iVar4 + 0x24" identifier + number_literal)) )) (compound_statement "{\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }" { (expression_statement "FUN_00248220(*(int *)(iVar4 + 0x1c));" (call_expression "FUN_00248220(*(int *)(iVar4 + 0x1c))" identifier (argument_list "(*(int *)(iVar4 + 0x1c))" ( (pointer_expression "*(int *)(iVar4 + 0x1c)" * (cast_expression "(int *)(iVar4 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1c)" ( (binary_expression "iVar4 + 0x1c" identifier + number_literal) )))) ))) ;) })) })) (if_statement "if (iVar2 != 0) {\n    FUN_00248220(iVar2);\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_00248220(iVar2);\n  }" { (expression_statement "FUN_00248220(iVar2);" (call_expression "FUN_00248220(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) })) (expression_statement "*param_1 = (int)local_24;" (assignment_expression "*param_1 = (int)local_24" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[1] = (int)puVar7;" (assignment_expression "param_1[1] = (int)puVar7" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[2] = local_20;" (assignment_expression "param_1[2] = local_20" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (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 prototype: void\n   _M_realloc_insert<gold::Output_section::Input_section_sort_entry>(vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n   * this, iterator __position, Input_section_sort_entry * __args#0) */\n\nvoid __thiscall\nstd::\nvector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n::_M_realloc_insert<gold::Output_section::Input_section_sort_entry>\n          (vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n           *this,iterator __position,Input_section_sort_entry *__args_0)\n\n{\n  uint *puVar1;\n  pointer pIVar2;\n  pointer pIVar3;\n  pointer pcVar4;\n  size_type sVar5;\n  size_type *psVar6;\n  pointer pIVar7;\n  int iVar8;\n  pointer pIVar9;\n  pointer pIVar10;\n  pointer pIVar11;\n  uint uVar12;\n  uint uVar13;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar14;\n  pointer pIVar15;\n  pointer local_24;\n  pointer local_20;\n  \n  pIVar2 = (this->\n           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n           )._M_impl._M_finish;\n  pIVar3 = (this->\n           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n           )._M_impl._M_start;\n  iVar8 = (int)pIVar2 - (int)pIVar3 >> 2;\n  if (iVar8 * -0x3b13b13b == 0) {\n    uVar12 = 1;\nLAB_00178a05:\n    uVar13 = uVar12 * 0x34;\n  }\n  else {\n    uVar12 = iVar8 * -0x76276276;\n    uVar13 = 0xffffffd0;\n    if (((uint)(iVar8 * -0x3b13b13b) < uVar12 || iVar8 * 0x3b13b13b == 0) && (uVar12 < 0x4ec4ec5)) {\n      if (uVar12 == 0) {\n        pIVar11 = (pointer)0x34;\n        local_20 = (pointer)0x0;\n        local_24 = (pointer)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }\n  local_24 = (pointer)operator_new(uVar13);\n  local_20 = (pointer)((int)&(local_24->input_section_).shndx_ + uVar13);\n  pIVar11 = local_24 + 1;\nLAB_00178795:\n  puVar1 = (uint *)((int)local_24 + ((int)__position._M_current - (int)pIVar3));\n  pcVar4 = (__args_0->section_name_)._M_dataplus._M_p;\n  *puVar1 = (__args_0->input_section_).shndx_;\n  uVar12 = (__args_0->input_section_).p2align_;\n  puVar1[7] = (uint)(puVar1 + 9);\n  puVar1[1] = uVar12;\n  puVar1[2] = *(uint *)&(__args_0->input_section_).u1_;\n  puVar1[3] = *(uint *)((int)&(__args_0->input_section_).u1_ + 4);\n  *(anon_union_4_4_139239c7_for_u2_ *)(puVar1 + 4) = (__args_0->input_section_).u2_;\n  puVar1[5] = (__args_0->input_section_).section_order_index_;\n  puVar1[6] = __args_0->index_;\n  paVar14 = &(__args_0->section_name_).field_2;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar4 == paVar14) {\n    puVar1[9] = (__args_0->section_name_).field_2._M_allocated_capacity;\n    puVar1[10] = *(uint *)((int)&(__args_0->section_name_).field_2 + 4);\n    puVar1[0xb] = *(uint *)((int)&(__args_0->section_name_).field_2 + 8);\n    puVar1[0xc] = *(uint *)((int)&(__args_0->section_name_).field_2 + 0xc);\n  }\n  else {\n    puVar1[7] = (uint)pcVar4;\n    puVar1[9] = (__args_0->section_name_).field_2._M_allocated_capacity;\n  }\n  uVar12 = (__args_0->section_name_)._M_string_length;\n  (__args_0->section_name_)._M_dataplus._M_p = (pointer)paVar14;\n  (__args_0->section_name_)._M_string_length = 0;\n  (__args_0->section_name_).field_2._M_local_buf[0] = '\0';\n  puVar1[8] = uVar12;\n  if (__position._M_current != pIVar3) {\n    pIVar7 = local_24;\n    paVar14 = &(pIVar3->section_name_).field_2;\n    do {\n      pIVar11 = pIVar7;\n      (pIVar11->input_section_).shndx_ = *(uint *)((int)paVar14 + -0x24);\n      (pIVar11->input_section_).p2align_ = paVar14[-2]._M_allocated_capacity;\n      *(undefined4 *)&(pIVar11->input_section_).u1_ = *(undefined4 *)((int)paVar14 + -0x1c);\n      *(undefined4 *)((int)&(pIVar11->input_section_).u1_ + 4) =\n           *(undefined4 *)((int)paVar14 + -0x18);\n      (pIVar11->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14);\n      (pIVar11->input_section_).section_order_index_ = paVar14[-1]._M_allocated_capacity;\n      uVar12 = *(uint *)((int)paVar14 + -0xc);\n      (pIVar11->section_name_)._M_dataplus._M_p = (pointer)&(pIVar11->section_name_).field_2;\n      pIVar11->index_ = uVar12;\n      pcVar4 = (((string *)((int)paVar14 + -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 == paVar14) {\n        (pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 4) =\n             *(undefined4 *)((int)paVar14 + 4);\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 8) =\n             *(undefined4 *)((int)paVar14 + 8);\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 0xc) =\n             *(undefined4 *)((int)paVar14 + 0xc);\n      }\n      else {\n        (pIVar11->section_name_)._M_dataplus._M_p = pcVar4;\n        (pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      (pIVar11->section_name_)._M_string_length = *(size_type *)((int)paVar14 + -4);\n      (((string *)((int)paVar14 + -8))->_M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      paVar14->_M_local_buf[0] = '\0';\n      pIVar7 = pIVar11 + 1;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x34);\n    } while (pIVar11 + 1 !=\n             local_24 +\n             (((uint)((int)__position._M_current + (-0x34 - (int)pIVar3)) >> 2) * 0x4ec4ec5 &\n             0x3fffffff) + 1);\n    pIVar11 = pIVar11 + 2;\n  }\n  pIVar7 = pIVar3;\n  if (__position._M_current != pIVar2) {\n    pIVar15 = pIVar11 + (((uint)((int)pIVar2 + (-0x34 - (int)__position._M_current)) >> 2) *\n                         0x4ec4ec5 & 0x3fffffff) + 1;\n    pIVar10 = pIVar11;\n    paVar14 = &((__position._M_current)->section_name_).field_2;\n    do {\n      sVar5 = *(size_type *)((int)paVar14 + -0x24);\n      (pIVar10->section_name_)._M_dataplus._M_p = (pointer)&(pIVar10->section_name_).field_2;\n      (pIVar10->input_section_).shndx_ = sVar5;\n      (pIVar10->input_section_).p2align_ = paVar14[-2]._M_allocated_capacity;\n      *(size_type *)&(pIVar10->input_section_).u1_ = *(size_type *)((int)paVar14 + -0x1c);\n      *(size_type *)((int)&(pIVar10->input_section_).u1_ + 4) = *(size_type *)((int)paVar14 + -0x18)\n      ;\n      (pIVar10->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14);\n      (pIVar10->input_section_).section_order_index_ = paVar14[-1]._M_allocated_capacity;\n      pIVar10->index_ = *(size_type *)((int)paVar14 + -0xc);\n      psVar6 = (size_type *)(((string *)((int)paVar14 + -8))->_M_dataplus)._M_p;\n      if (paVar14 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar6) {\n        (pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 4) =\n             *(size_type *)((int)paVar14 + 4);\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 8) =\n             *(size_type *)((int)paVar14 + 8);\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 0xc) =\n             *(size_type *)((int)paVar14 + 0xc);\n      }\n      else {\n        (pIVar10->section_name_)._M_dataplus._M_p = (pointer)psVar6;\n        (pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      sVar5 = *(size_type *)((int)paVar14 + -4);\n      pIVar9 = pIVar10 + 1;\n      (((string *)((int)paVar14 + -8))->_M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      (pIVar10->section_name_)._M_string_length = sVar5;\n      paVar14->_M_local_buf[0] = '\0';\n      pIVar10 = pIVar9;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x34);\n      pIVar11 = pIVar15;\n    } while (pIVar9 != pIVar15);\n  }\n  for (; pIVar7 != pIVar2; pIVar7 = pIVar7 + 1) {\n    pcVar4 = (pIVar7->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 != &(pIVar7->section_name_).field_2) {\n      operator_delete(pcVar4);\n    }\n  }\n  if (pIVar3 != (pointer)0x0) {\n    operator_delete(pIVar3);\n  }\n  (this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n  )._M_impl._M_start = local_24;\n  (this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n  )._M_impl._M_finish = pIVar11;\n  (this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n  )._M_impl._M_end_of_storage = local_20;\n  return;\n}\n\n" comment comment comment (declaration "void __thiscall\nstd::\nvector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n::_M_realloc_insert<gold::Output_section::Input_section_sort_entry>\n          (vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n           *this,iterator __position,Input_section_sort_entry *__args_0)\n\n{\n  uint *puVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::\nvector<gold::Output_section::" identifier : : identifier < identifier : : identifier : :) identifier , (ERROR "_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n::_M_realloc_insert<gold::Output_section::Input_section_sort_entry>\n          (vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n           *this,iterator __position,Input_section_sort_entry *__args_0)\n\n{\n  uint" identifier : : identifier < identifier : : identifier : : identifier > identifier > : : identifier < identifier : : identifier : : (function_declarator "Input_section_sort_entry>\n          (vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n           *this,iterator __position,Input_section_sort_entry *__args_0)" identifier (ERROR ">" >) (parameter_list "(vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n           *this,iterator __position,Input_section_sort_entry *__args_0)" ( (parameter_declaration "vector<gold::Output_section::Input_section_sort_entry" type_identifier (ERROR "<gold::Output_section::" < identifier : : identifier : :) identifier) , (parameter_declaration "_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n           *this" type_identifier (ERROR "::allocator<gold::Output_section::Input_section_sort_entry>_>" : : identifier < identifier : : identifier : : identifier > identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "iterator __position" type_identifier identifier) , (parameter_declaration "Input_section_sort_entry *__args_0" type_identifier (pointer_declarator "*__args_0" * identifier)) ))) { identifier) (pointer_declarator "*puVar1" * identifier) ;) (declaration "pointer pIVar2;" type_identifier identifier ;) (declaration "pointer pIVar3;" type_identifier identifier ;) (declaration "pointer pcVar4;" type_identifier identifier ;) (declaration "size_type sVar5;" type_identifier identifier ;) (declaration "size_type *psVar6;" type_identifier (pointer_declarator "*psVar6" * identifier) ;) (declaration "pointer pIVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "pointer pIVar9;" type_identifier identifier ;) (declaration "pointer pIVar10;" type_identifier identifier ;) (declaration "pointer pIVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" 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  *paVar14;" 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  *paVar14;" (binary_expression "allocator<char>_>_9\n  *paVar14" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar14" identifier * identifier)) ;)) (declaration "pointer pIVar15;" type_identifier identifier ;) (declaration "pointer local_24;" type_identifier identifier ;) (declaration "pointer local_20;" type_identifier identifier ;) (expression_statement "pIVar2 = (this->\n           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n           )._M_impl._M_finish;" (assignment_expression "pIVar2 = (this->\n           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n           )._M_impl._M_finish" identifier = (field_expression "(this->\n           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n           )._M_impl._M_finish" (field_expression "(this->\n           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n           )._M_impl" (parenthesized_expression "(this->\n           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n           )" ( (ERROR "this->\n           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::" (comma_expression "this->\n           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std" (binary_expression "this->\n           super__Vector_base<gold" (field_expression "this->\n           super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section::Input_section_sort_entry" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Input_section_sort_entry>_>" (binary_expression "Input_section_sort_entry>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "pIVar3 = (this->\n           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n           )._M_impl._M_start;" (assignment_expression "pIVar3 = (this->\n           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n           )._M_impl._M_start" identifier = (field_expression "(this->\n           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n           )._M_impl._M_start" (field_expression "(this->\n           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n           )._M_impl" (parenthesized_expression "(this->\n           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n           )" ( (ERROR "this->\n           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::" (comma_expression "this->\n           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std" (binary_expression "this->\n           super__Vector_base<gold" (field_expression "this->\n           super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section::Input_section_sort_entry" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Input_section_sort_entry>_>" (binary_expression "Input_section_sort_entry>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "iVar8 = (int)pIVar2 - (int)pIVar3 >> 2;" (assignment_expression "iVar8 = (int)pIVar2 - (int)pIVar3 >> 2" identifier = (binary_expression "(int)pIVar2 - (int)pIVar3 >> 2" (binary_expression "(int)pIVar2 - (int)pIVar3" (cast_expression "(int)pIVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pIVar3" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (if_statement "if (iVar8 * -0x3b13b13b == 0) {\n    uVar12 = 1;\nLAB_00178a05:\n    uVar13 = uVar12 * 0x34;\n  }\n  else {\n    uVar12 = iVar8 * -0x76276276;\n    uVar13 = 0xffffffd0;\n    if (((uint)(iVar8 * -0x3b13b13b) < uVar12 || iVar8 * 0x3b13b13b == 0) && (uVar12 < 0x4ec4ec5)) {\n      if (uVar12 == 0) {\n        pIVar11 = (pointer)0x34;\n        local_20 = (pointer)0x0;\n        local_24 = (pointer)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }" if (parenthesized_expression "(iVar8 * -0x3b13b13b == 0)" ( (binary_expression "iVar8 * -0x3b13b13b == 0" (binary_expression "iVar8 * -0x3b13b13b" identifier * number_literal) == number_literal) )) (compound_statement "{\n    uVar12 = 1;\nLAB_00178a05:\n    uVar13 = uVar12 * 0x34;\n  }" { (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00178a05:\n    uVar13 = uVar12 * 0x34;" statement_identifier : (expression_statement "uVar13 = uVar12 * 0x34;" (assignment_expression "uVar13 = uVar12 * 0x34" identifier = (binary_expression "uVar12 * 0x34" identifier * number_literal)) ;)) }) (else_clause "else {\n    uVar12 = iVar8 * -0x76276276;\n    uVar13 = 0xffffffd0;\n    if (((uint)(iVar8 * -0x3b13b13b) < uVar12 || iVar8 * 0x3b13b13b == 0) && (uVar12 < 0x4ec4ec5)) {\n      if (uVar12 == 0) {\n        pIVar11 = (pointer)0x34;\n        local_20 = (pointer)0x0;\n        local_24 = (pointer)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }" else (compound_statement "{\n    uVar12 = iVar8 * -0x76276276;\n    uVar13 = 0xffffffd0;\n    if (((uint)(iVar8 * -0x3b13b13b) < uVar12 || iVar8 * 0x3b13b13b == 0) && (uVar12 < 0x4ec4ec5)) {\n      if (uVar12 == 0) {\n        pIVar11 = (pointer)0x34;\n        local_20 = (pointer)0x0;\n        local_24 = (pointer)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }" { (expression_statement "uVar12 = iVar8 * -0x76276276;" (assignment_expression "uVar12 = iVar8 * -0x76276276" identifier = (binary_expression "iVar8 * -0x76276276" identifier * number_literal)) ;) (expression_statement "uVar13 = 0xffffffd0;" (assignment_expression "uVar13 = 0xffffffd0" identifier = number_literal) ;) (if_statement "if (((uint)(iVar8 * -0x3b13b13b) < uVar12 || iVar8 * 0x3b13b13b == 0) && (uVar12 < 0x4ec4ec5)) {\n      if (uVar12 == 0) {\n        pIVar11 = (pointer)0x34;\n        local_20 = (pointer)0x0;\n        local_24 = (pointer)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }" if (parenthesized_expression "(((uint)(iVar8 * -0x3b13b13b) < uVar12 || iVar8 * 0x3b13b13b == 0) && (uVar12 < 0x4ec4ec5))" ( (binary_expression "((uint)(iVar8 * -0x3b13b13b) < uVar12 || iVar8 * 0x3b13b13b == 0) && (uVar12 < 0x4ec4ec5)" (parenthesized_expression "((uint)(iVar8 * -0x3b13b13b) < uVar12 || iVar8 * 0x3b13b13b == 0)" ( (binary_expression "(uint)(iVar8 * -0x3b13b13b) < uVar12 || iVar8 * 0x3b13b13b == 0" (binary_expression "(uint)(iVar8 * -0x3b13b13b) < uVar12" (call_expression "(uint)(iVar8 * -0x3b13b13b)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar8 * -0x3b13b13b)" ( (binary_expression "iVar8 * -0x3b13b13b" identifier * number_literal) ))) < identifier) || (binary_expression "iVar8 * 0x3b13b13b == 0" (binary_expression "iVar8 * 0x3b13b13b" identifier * number_literal) == number_literal)) )) && (parenthesized_expression "(uVar12 < 0x4ec4ec5)" ( (binary_expression "uVar12 < 0x4ec4ec5" identifier < number_literal) ))) )) (compound_statement "{\n      if (uVar12 == 0) {\n        pIVar11 = (pointer)0x34;\n        local_20 = (pointer)0x0;\n        local_24 = (pointer)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }" { (if_statement "if (uVar12 == 0) {\n        pIVar11 = (pointer)0x34;\n        local_20 = (pointer)0x0;\n        local_24 = (pointer)0x0;\n        goto LAB_00178795;\n      }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n        pIVar11 = (pointer)0x34;\n        local_20 = (pointer)0x0;\n        local_24 = (pointer)0x0;\n        goto LAB_00178795;\n      }" { (expression_statement "pIVar11 = (pointer)0x34;" (assignment_expression "pIVar11 = (pointer)0x34" identifier = (cast_expression "(pointer)0x34" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "local_20 = (pointer)0x0;" (assignment_expression "local_20 = (pointer)0x0" identifier = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "local_24 = (pointer)0x0;" (assignment_expression "local_24 = (pointer)0x0" identifier = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (goto_statement "goto LAB_00178795;" goto statement_identifier ;) })) (goto_statement "goto LAB_00178a05;" goto statement_identifier ;) })) }))) (expression_statement "local_24 = (pointer)operator_new(uVar13);" (assignment_expression "local_24 = (pointer)operator_new(uVar13)" identifier = (cast_expression "(pointer)operator_new(uVar13)" ( (type_descriptor "pointer" type_identifier) ) (call_expression "operator_new(uVar13)" identifier (argument_list "(uVar13)" ( identifier ))))) ;) (expression_statement "local_20 = (pointer)((int)&(local_24->input_section_).shndx_ + uVar13);" (assignment_expression "local_20 = (pointer)((int)&(local_24->input_section_).shndx_ + uVar13)" identifier = (call_expression "(pointer)((int)&(local_24->input_section_).shndx_ + uVar13)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((int)&(local_24->input_section_).shndx_ + uVar13)" ( (binary_expression "(int)&(local_24->input_section_).shndx_ + uVar13" (cast_expression "(int)&(local_24->input_section_).shndx_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(local_24->input_section_).shndx_" & (field_expression "(local_24->input_section_).shndx_" (parenthesized_expression "(local_24->input_section_)" ( (field_expression "local_24->input_section_" identifier -> field_identifier) )) . field_identifier))) + identifier) )))) ;) (expression_statement "pIVar11 = local_24 + 1;" (assignment_expression "pIVar11 = local_24 + 1" identifier = (binary_expression "local_24 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_00178795:\n  puVar1 = (uint *)((int)local_24 + ((int)__position._M_current - (int)pIVar3));" statement_identifier : (expression_statement "puVar1 = (uint *)((int)local_24 + ((int)__position._M_current - (int)pIVar3));" (assignment_expression "puVar1 = (uint *)((int)local_24 + ((int)__position._M_current - (int)pIVar3))" identifier = (cast_expression "(uint *)((int)local_24 + ((int)__position._M_current - (int)pIVar3))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_24 + ((int)__position._M_current - (int)pIVar3))" ( (binary_expression "(int)local_24 + ((int)__position._M_current - (int)pIVar3)" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((int)__position._M_current - (int)pIVar3)" ( (binary_expression "(int)__position._M_current - (int)pIVar3" (cast_expression "(int)__position._M_current" ( (type_descriptor "int" primitive_type) ) (field_expression "__position._M_current" identifier . field_identifier)) - (cast_expression "(int)pIVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;)) (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)) ;) (expression_statement "*puVar1 = (__args_0->input_section_).shndx_;" (assignment_expression "*puVar1 = (__args_0->input_section_).shndx_" (pointer_expression "*puVar1" * 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 "uVar12 = (__args_0->input_section_).p2align_;" (assignment_expression "uVar12 = (__args_0->input_section_).p2align_" identifier = (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 "puVar1[7] = (uint)(puVar1 + 9);" (assignment_expression "puVar1[7] = (uint)(puVar1 + 9)" (subscript_expression "puVar1[7]" identifier [ number_literal ]) = (call_expression "(uint)(puVar1 + 9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar1 + 9)" ( (binary_expression "puVar1 + 9" identifier + number_literal) )))) ;) (expression_statement "puVar1[1] = uVar12;" (assignment_expression "puVar1[1] = uVar12" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[2] = *(uint *)&(__args_0->input_section_).u1_;" (assignment_expression "puVar1[2] = *(uint *)&(__args_0->input_section_).u1_" (subscript_expression "puVar1[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 "puVar1[3] = *(uint *)((int)&(__args_0->input_section_).u1_ + 4);" (assignment_expression "puVar1[3] = *(uint *)((int)&(__args_0->input_section_).u1_ + 4)" (subscript_expression "puVar1[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_ *)(puVar1 + 4) = (__args_0->input_section_).u2_;" (assignment_expression "*(anon_union_4_4_139239c7_for_u2_ *)(puVar1 + 4) = (__args_0->input_section_).u2_" (pointer_expression "*(anon_union_4_4_139239c7_for_u2_ *)(puVar1 + 4)" * (cast_expression "(anon_union_4_4_139239c7_for_u2_ *)(puVar1 + 4)" ( (type_descriptor "anon_union_4_4_139239c7_for_u2_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 4)" ( (binary_expression "puVar1 + 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 "puVar1[5] = (__args_0->input_section_).section_order_index_;" (assignment_expression "puVar1[5] = (__args_0->input_section_).section_order_index_" (subscript_expression "puVar1[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 "puVar1[6] = __args_0->index_;" (assignment_expression "puVar1[6] = __args_0->index_" (subscript_expression "puVar1[6]" identifier [ number_literal ]) = (field_expression "__args_0->index_" identifier -> field_identifier)) ;) (expression_statement "paVar14 = &(__args_0->section_name_).field_2;" (assignment_expression "paVar14 = &(__args_0->section_name_).field_2" identifier = (pointer_expression "&(__args_0->section_name_).field_2" & (field_expression "(__args_0->section_name_).field_2" (parenthesized_expression "(__args_0->section_name_)" ( (field_expression "__args_0->section_name_" 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 == paVar14) {\n    puVar1[9] = (__args_0->section_name_).field_2._M_allocated_capacity;\n    puVar1[10] = *(uint *)((int)&(__args_0->section_name_).field_2 + 4);\n    puVar1[0xb] = *(uint *)((int)&(__args_0->section_name_).field_2 + 8);\n    puVar1[0xc] = *(uint *)((int)&(__args_0->section_name_).field_2 + 0xc);\n  }\n  else {\n    puVar1[7] = (uint)pcVar4;\n    puVar1[9] = (__args_0->section_name_).field_2._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 == paVar14)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar4 == paVar14)" ( (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 == paVar14" (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    puVar1[9] = (__args_0->section_name_).field_2._M_allocated_capacity;\n    puVar1[10] = *(uint *)((int)&(__args_0->section_name_).field_2 + 4);\n    puVar1[0xb] = *(uint *)((int)&(__args_0->section_name_).field_2 + 8);\n    puVar1[0xc] = *(uint *)((int)&(__args_0->section_name_).field_2 + 0xc);\n  }" { (expression_statement "puVar1[9] = (__args_0->section_name_).field_2._M_allocated_capacity;" (assignment_expression "puVar1[9] = (__args_0->section_name_).field_2._M_allocated_capacity" (subscript_expression "puVar1[9]" identifier [ number_literal ]) = (field_expression "(__args_0->section_name_).field_2._M_allocated_capacity" (field_expression "(__args_0->section_name_).field_2" (parenthesized_expression "(__args_0->section_name_)" ( (field_expression "__args_0->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "puVar1[10] = *(uint *)((int)&(__args_0->section_name_).field_2 + 4);" (assignment_expression "puVar1[10] = *(uint *)((int)&(__args_0->section_name_).field_2 + 4)" (subscript_expression "puVar1[10]" identifier [ number_literal ]) = (pointer_expression "*(uint *)((int)&(__args_0->section_name_).field_2 + 4)" * (cast_expression "(uint *)((int)&(__args_0->section_name_).field_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(__args_0->section_name_).field_2 + 4)" ( (binary_expression "(int)&(__args_0->section_name_).field_2 + 4" (cast_expression "(int)&(__args_0->section_name_).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(__args_0->section_name_).field_2" & (field_expression "(__args_0->section_name_).field_2" (parenthesized_expression "(__args_0->section_name_)" ( (field_expression "__args_0->section_name_" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "puVar1[0xb] = *(uint *)((int)&(__args_0->section_name_).field_2 + 8);" (assignment_expression "puVar1[0xb] = *(uint *)((int)&(__args_0->section_name_).field_2 + 8)" (subscript_expression "puVar1[0xb]" identifier [ number_literal ]) = (pointer_expression "*(uint *)((int)&(__args_0->section_name_).field_2 + 8)" * (cast_expression "(uint *)((int)&(__args_0->section_name_).field_2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(__args_0->section_name_).field_2 + 8)" ( (binary_expression "(int)&(__args_0->section_name_).field_2 + 8" (cast_expression "(int)&(__args_0->section_name_).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(__args_0->section_name_).field_2" & (field_expression "(__args_0->section_name_).field_2" (parenthesized_expression "(__args_0->section_name_)" ( (field_expression "__args_0->section_name_" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "puVar1[0xc] = *(uint *)((int)&(__args_0->section_name_).field_2 + 0xc);" (assignment_expression "puVar1[0xc] = *(uint *)((int)&(__args_0->section_name_).field_2 + 0xc)" (subscript_expression "puVar1[0xc]" identifier [ number_literal ]) = (pointer_expression "*(uint *)((int)&(__args_0->section_name_).field_2 + 0xc)" * (cast_expression "(uint *)((int)&(__args_0->section_name_).field_2 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(__args_0->section_name_).field_2 + 0xc)" ( (binary_expression "(int)&(__args_0->section_name_).field_2 + 0xc" (cast_expression "(int)&(__args_0->section_name_).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(__args_0->section_name_).field_2" & (field_expression "(__args_0->section_name_).field_2" (parenthesized_expression "(__args_0->section_name_)" ( (field_expression "__args_0->section_name_" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) }) (else_clause "else {\n    puVar1[7] = (uint)pcVar4;\n    puVar1[9] = (__args_0->section_name_).field_2._M_allocated_capacity;\n  }" else (compound_statement "{\n    puVar1[7] = (uint)pcVar4;\n    puVar1[9] = (__args_0->section_name_).field_2._M_allocated_capacity;\n  }" { (expression_statement "puVar1[7] = (uint)pcVar4;" (assignment_expression "puVar1[7] = (uint)pcVar4" (subscript_expression "puVar1[7]" identifier [ number_literal ]) = (cast_expression "(uint)pcVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar1[9] = (__args_0->section_name_).field_2._M_allocated_capacity;" (assignment_expression "puVar1[9] = (__args_0->section_name_).field_2._M_allocated_capacity" (subscript_expression "puVar1[9]" identifier [ number_literal ]) = (field_expression "(__args_0->section_name_).field_2._M_allocated_capacity" (field_expression "(__args_0->section_name_).field_2" (parenthesized_expression "(__args_0->section_name_)" ( (field_expression "__args_0->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) }))) (expression_statement "uVar12 = (__args_0->section_name_)._M_string_length;" (assignment_expression "uVar12 = (__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)) ;) (expression_statement "(__args_0->section_name_)._M_dataplus._M_p = (pointer)paVar14;" (assignment_expression "(__args_0->section_name_)._M_dataplus._M_p = (pointer)paVar14" (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) = (cast_expression "(pointer)paVar14" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "(__args_0->section_name_)._M_string_length = 0;" (assignment_expression "(__args_0->section_name_)._M_string_length = 0" (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 "(__args_0->section_name_).field_2._M_local_buf[0] = '\0';" (assignment_expression "(__args_0->section_name_).field_2._M_local_buf[0] = '\0'" (subscript_expression "(__args_0->section_name_).field_2._M_local_buf[0]" (field_expression "(__args_0->section_name_).field_2._M_local_buf" (field_expression "(__args_0->section_name_).field_2" (parenthesized_expression "(__args_0->section_name_)" ( (field_expression "__args_0->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar1[8] = uVar12;" (assignment_expression "puVar1[8] = uVar12" (subscript_expression "puVar1[8]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (__position._M_current != pIVar3) {\n    pIVar7 = local_24;\n    paVar14 = &(pIVar3->section_name_).field_2;\n    do {\n      pIVar11 = pIVar7;\n      (pIVar11->input_section_).shndx_ = *(uint *)((int)paVar14 + -0x24);\n      (pIVar11->input_section_).p2align_ = paVar14[-2]._M_allocated_capacity;\n      *(undefined4 *)&(pIVar11->input_section_).u1_ = *(undefined4 *)((int)paVar14 + -0x1c);\n      *(undefined4 *)((int)&(pIVar11->input_section_).u1_ + 4) =\n           *(undefined4 *)((int)paVar14 + -0x18);\n      (pIVar11->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14);\n      (pIVar11->input_section_).section_order_index_ = paVar14[-1]._M_allocated_capacity;\n      uVar12 = *(uint *)((int)paVar14 + -0xc);\n      (pIVar11->section_name_)._M_dataplus._M_p = (pointer)&(pIVar11->section_name_).field_2;\n      pIVar11->index_ = uVar12;\n      pcVar4 = (((string *)((int)paVar14 + -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 == paVar14) {\n        (pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 4) =\n             *(undefined4 *)((int)paVar14 + 4);\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 8) =\n             *(undefined4 *)((int)paVar14 + 8);\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 0xc) =\n             *(undefined4 *)((int)paVar14 + 0xc);\n      }\n      else {\n        (pIVar11->section_name_)._M_dataplus._M_p = pcVar4;\n        (pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      (pIVar11->section_name_)._M_string_length = *(size_type *)((int)paVar14 + -4);\n      (((string *)((int)paVar14 + -8))->_M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      paVar14->_M_local_buf[0] = '\0';\n      pIVar7 = pIVar11 + 1;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x34);\n    } while (pIVar11 + 1 !=\n             local_24 +\n             (((uint)((int)__position._M_current + (-0x34 - (int)pIVar3)) >> 2) * 0x4ec4ec5 &\n             0x3fffffff) + 1);\n    pIVar11 = pIVar11 + 2;\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    pIVar7 = local_24;\n    paVar14 = &(pIVar3->section_name_).field_2;\n    do {\n      pIVar11 = pIVar7;\n      (pIVar11->input_section_).shndx_ = *(uint *)((int)paVar14 + -0x24);\n      (pIVar11->input_section_).p2align_ = paVar14[-2]._M_allocated_capacity;\n      *(undefined4 *)&(pIVar11->input_section_).u1_ = *(undefined4 *)((int)paVar14 + -0x1c);\n      *(undefined4 *)((int)&(pIVar11->input_section_).u1_ + 4) =\n           *(undefined4 *)((int)paVar14 + -0x18);\n      (pIVar11->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14);\n      (pIVar11->input_section_).section_order_index_ = paVar14[-1]._M_allocated_capacity;\n      uVar12 = *(uint *)((int)paVar14 + -0xc);\n      (pIVar11->section_name_)._M_dataplus._M_p = (pointer)&(pIVar11->section_name_).field_2;\n      pIVar11->index_ = uVar12;\n      pcVar4 = (((string *)((int)paVar14 + -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 == paVar14) {\n        (pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 4) =\n             *(undefined4 *)((int)paVar14 + 4);\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 8) =\n             *(undefined4 *)((int)paVar14 + 8);\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 0xc) =\n             *(undefined4 *)((int)paVar14 + 0xc);\n      }\n      else {\n        (pIVar11->section_name_)._M_dataplus._M_p = pcVar4;\n        (pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      (pIVar11->section_name_)._M_string_length = *(size_type *)((int)paVar14 + -4);\n      (((string *)((int)paVar14 + -8))->_M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      paVar14->_M_local_buf[0] = '\0';\n      pIVar7 = pIVar11 + 1;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x34);\n    } while (pIVar11 + 1 !=\n             local_24 +\n             (((uint)((int)__position._M_current + (-0x34 - (int)pIVar3)) >> 2) * 0x4ec4ec5 &\n             0x3fffffff) + 1);\n    pIVar11 = pIVar11 + 2;\n  }" { (expression_statement "pIVar7 = local_24;" (assignment_expression "pIVar7 = local_24" identifier = identifier) ;) (expression_statement "paVar14 = &(pIVar3->section_name_).field_2;" (assignment_expression "paVar14 = &(pIVar3->section_name_).field_2" identifier = (pointer_expression "&(pIVar3->section_name_).field_2" & (field_expression "(pIVar3->section_name_).field_2" (parenthesized_expression "(pIVar3->section_name_)" ( (field_expression "pIVar3->section_name_" identifier -> field_identifier) )) . field_identifier))) ;) (do_statement "do {\n      pIVar11 = pIVar7;\n      (pIVar11->input_section_).shndx_ = *(uint *)((int)paVar14 + -0x24);\n      (pIVar11->input_section_).p2align_ = paVar14[-2]._M_allocated_capacity;\n      *(undefined4 *)&(pIVar11->input_section_).u1_ = *(undefined4 *)((int)paVar14 + -0x1c);\n      *(undefined4 *)((int)&(pIVar11->input_section_).u1_ + 4) =\n           *(undefined4 *)((int)paVar14 + -0x18);\n      (pIVar11->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14);\n      (pIVar11->input_section_).section_order_index_ = paVar14[-1]._M_allocated_capacity;\n      uVar12 = *(uint *)((int)paVar14 + -0xc);\n      (pIVar11->section_name_)._M_dataplus._M_p = (pointer)&(pIVar11->section_name_).field_2;\n      pIVar11->index_ = uVar12;\n      pcVar4 = (((string *)((int)paVar14 + -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 == paVar14) {\n        (pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 4) =\n             *(undefined4 *)((int)paVar14 + 4);\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 8) =\n             *(undefined4 *)((int)paVar14 + 8);\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 0xc) =\n             *(undefined4 *)((int)paVar14 + 0xc);\n      }\n      else {\n        (pIVar11->section_name_)._M_dataplus._M_p = pcVar4;\n        (pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      (pIVar11->section_name_)._M_string_length = *(size_type *)((int)paVar14 + -4);\n      (((string *)((int)paVar14 + -8))->_M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      paVar14->_M_local_buf[0] = '\0';\n      pIVar7 = pIVar11 + 1;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x34);\n    } while (pIVar11 + 1 !=\n             local_24 +\n             (((uint)((int)__position._M_current + (-0x34 - (int)pIVar3)) >> 2) * 0x4ec4ec5 &\n             0x3fffffff) + 1);" do (compound_statement "{\n      pIVar11 = pIVar7;\n      (pIVar11->input_section_).shndx_ = *(uint *)((int)paVar14 + -0x24);\n      (pIVar11->input_section_).p2align_ = paVar14[-2]._M_allocated_capacity;\n      *(undefined4 *)&(pIVar11->input_section_).u1_ = *(undefined4 *)((int)paVar14 + -0x1c);\n      *(undefined4 *)((int)&(pIVar11->input_section_).u1_ + 4) =\n           *(undefined4 *)((int)paVar14 + -0x18);\n      (pIVar11->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14);\n      (pIVar11->input_section_).section_order_index_ = paVar14[-1]._M_allocated_capacity;\n      uVar12 = *(uint *)((int)paVar14 + -0xc);\n      (pIVar11->section_name_)._M_dataplus._M_p = (pointer)&(pIVar11->section_name_).field_2;\n      pIVar11->index_ = uVar12;\n      pcVar4 = (((string *)((int)paVar14 + -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 == paVar14) {\n        (pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 4) =\n             *(undefined4 *)((int)paVar14 + 4);\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 8) =\n             *(undefined4 *)((int)paVar14 + 8);\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 0xc) =\n             *(undefined4 *)((int)paVar14 + 0xc);\n      }\n      else {\n        (pIVar11->section_name_)._M_dataplus._M_p = pcVar4;\n        (pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      (pIVar11->section_name_)._M_string_length = *(size_type *)((int)paVar14 + -4);\n      (((string *)((int)paVar14 + -8))->_M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      paVar14->_M_local_buf[0] = '\0';\n      pIVar7 = pIVar11 + 1;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x34);\n    }" { (expression_statement "pIVar11 = pIVar7;" (assignment_expression "pIVar11 = pIVar7" identifier = identifier) ;) (expression_statement "(pIVar11->input_section_).shndx_ = *(uint *)((int)paVar14 + -0x24);" (assignment_expression "(pIVar11->input_section_).shndx_ = *(uint *)((int)paVar14 + -0x24)" (field_expression "(pIVar11->input_section_).shndx_" (parenthesized_expression "(pIVar11->input_section_)" ( (field_expression "pIVar11->input_section_" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(uint *)((int)paVar14 + -0x24)" * (cast_expression "(uint *)((int)paVar14 + -0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -0x24)" ( (binary_expression "(int)paVar14 + -0x24" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "(pIVar11->input_section_).p2align_ = paVar14[-2]._M_allocated_capacity;" (assignment_expression "(pIVar11->input_section_).p2align_ = paVar14[-2]._M_allocated_capacity" (field_expression "(pIVar11->input_section_).p2align_" (parenthesized_expression "(pIVar11->input_section_)" ( (field_expression "pIVar11->input_section_" identifier -> field_identifier) )) . field_identifier) = (field_expression "paVar14[-2]._M_allocated_capacity" (subscript_expression "paVar14[-2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "*(undefined4 *)&(pIVar11->input_section_).u1_ = *(undefined4 *)((int)paVar14 + -0x1c);" (assignment_expression "*(undefined4 *)&(pIVar11->input_section_).u1_ = *(undefined4 *)((int)paVar14 + -0x1c)" (pointer_expression "*(undefined4 *)&(pIVar11->input_section_).u1_" * (cast_expression "(undefined4 *)&(pIVar11->input_section_).u1_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pIVar11->input_section_).u1_" & (field_expression "(pIVar11->input_section_).u1_" (parenthesized_expression "(pIVar11->input_section_)" ( (field_expression "pIVar11->input_section_" identifier -> field_identifier) )) . field_identifier)))) = (pointer_expression "*(undefined4 *)((int)paVar14 + -0x1c)" * (cast_expression "(undefined4 *)((int)paVar14 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -0x1c)" ( (binary_expression "(int)paVar14 + -0x1c" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)&(pIVar11->input_section_).u1_ + 4) =\n           *(undefined4 *)((int)paVar14 + -0x18);" (assignment_expression "*(undefined4 *)((int)&(pIVar11->input_section_).u1_ + 4) =\n           *(undefined4 *)((int)paVar14 + -0x18)" (pointer_expression "*(undefined4 *)((int)&(pIVar11->input_section_).u1_ + 4)" * (cast_expression "(undefined4 *)((int)&(pIVar11->input_section_).u1_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pIVar11->input_section_).u1_ + 4)" ( (binary_expression "(int)&(pIVar11->input_section_).u1_ + 4" (cast_expression "(int)&(pIVar11->input_section_).u1_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pIVar11->input_section_).u1_" & (field_expression "(pIVar11->input_section_).u1_" (parenthesized_expression "(pIVar11->input_section_)" ( (field_expression "pIVar11->input_section_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)paVar14 + -0x18)" * (cast_expression "(undefined4 *)((int)paVar14 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -0x18)" ( (binary_expression "(int)paVar14 + -0x18" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "(pIVar11->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14);" (assignment_expression "(pIVar11->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14)" (field_expression "(pIVar11->input_section_).u2_" (parenthesized_expression "(pIVar11->input_section_)" ( (field_expression "pIVar11->input_section_" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14)" * (cast_expression "(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14)" ( (type_descriptor "anon_union_4_4_139239c7_for_u2_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -0x14)" ( (binary_expression "(int)paVar14 + -0x14" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "(pIVar11->input_section_).section_order_index_ = paVar14[-1]._M_allocated_capacity;" (assignment_expression "(pIVar11->input_section_).section_order_index_ = paVar14[-1]._M_allocated_capacity" (field_expression "(pIVar11->input_section_).section_order_index_" (parenthesized_expression "(pIVar11->input_section_)" ( (field_expression "pIVar11->input_section_" identifier -> field_identifier) )) . field_identifier) = (field_expression "paVar14[-1]._M_allocated_capacity" (subscript_expression "paVar14[-1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "uVar12 = *(uint *)((int)paVar14 + -0xc);" (assignment_expression "uVar12 = *(uint *)((int)paVar14 + -0xc)" identifier = (pointer_expression "*(uint *)((int)paVar14 + -0xc)" * (cast_expression "(uint *)((int)paVar14 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -0xc)" ( (binary_expression "(int)paVar14 + -0xc" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "(pIVar11->section_name_)._M_dataplus._M_p = (pointer)&(pIVar11->section_name_).field_2;" (assignment_expression "(pIVar11->section_name_)._M_dataplus._M_p = (pointer)&(pIVar11->section_name_).field_2" (field_expression "(pIVar11->section_name_)._M_dataplus._M_p" (field_expression "(pIVar11->section_name_)._M_dataplus" (parenthesized_expression "(pIVar11->section_name_)" ( (field_expression "pIVar11->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(pIVar11->section_name_).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(pIVar11->section_name_).field_2" (parenthesized_expression "(pIVar11->section_name_)" ( (field_expression "pIVar11->section_name_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pIVar11->index_ = uVar12;" (assignment_expression "pIVar11->index_ = uVar12" (field_expression "pIVar11->index_" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar4 = (((string *)((int)paVar14 + -8))->_M_dataplus)._M_p;" (assignment_expression "pcVar4 = (((string *)((int)paVar14 + -8))->_M_dataplus)._M_p" identifier = (field_expression "(((string *)((int)paVar14 + -8))->_M_dataplus)._M_p" (parenthesized_expression "(((string *)((int)paVar14 + -8))->_M_dataplus)" ( (field_expression "((string *)((int)paVar14 + -8))->_M_dataplus" (parenthesized_expression "((string *)((int)paVar14 + -8))" ( (cast_expression "(string *)((int)paVar14 + -8)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -8)" ( (binary_expression "(int)paVar14 + -8" (cast_expression "(int)paVar14" ( (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 == paVar14) {\n        (pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 4) =\n             *(undefined4 *)((int)paVar14 + 4);\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 8) =\n             *(undefined4 *)((int)paVar14 + 8);\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 0xc) =\n             *(undefined4 *)((int)paVar14 + 0xc);\n      }\n      else {\n        (pIVar11->section_name_)._M_dataplus._M_p = pcVar4;\n        (pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_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 == paVar14)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar14)" ( (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 == paVar14" (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        (pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 4) =\n             *(undefined4 *)((int)paVar14 + 4);\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 8) =\n             *(undefined4 *)((int)paVar14 + 8);\n        *(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 0xc) =\n             *(undefined4 *)((int)paVar14 + 0xc);\n      }" { (expression_statement "(pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;" (assignment_expression "(pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity" (field_expression "(pIVar11->section_name_).field_2._M_allocated_capacity" (field_expression "(pIVar11->section_name_).field_2" (parenthesized_expression "(pIVar11->section_name_)" ( (field_expression "pIVar11->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar14->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 4) =\n             *(undefined4 *)((int)paVar14 + 4);" (assignment_expression "*(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 4) =\n             *(undefined4 *)((int)paVar14 + 4)" (pointer_expression "*(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 4)" * (cast_expression "(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pIVar11->section_name_).field_2 + 4)" ( (binary_expression "(int)&(pIVar11->section_name_).field_2 + 4" (cast_expression "(int)&(pIVar11->section_name_).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pIVar11->section_name_).field_2" & (field_expression "(pIVar11->section_name_).field_2" (parenthesized_expression "(pIVar11->section_name_)" ( (field_expression "pIVar11->section_name_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)paVar14 + 4)" * (cast_expression "(undefined4 *)((int)paVar14 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + 4)" ( (binary_expression "(int)paVar14 + 4" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 8) =\n             *(undefined4 *)((int)paVar14 + 8);" (assignment_expression "*(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 8) =\n             *(undefined4 *)((int)paVar14 + 8)" (pointer_expression "*(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 8)" * (cast_expression "(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pIVar11->section_name_).field_2 + 8)" ( (binary_expression "(int)&(pIVar11->section_name_).field_2 + 8" (cast_expression "(int)&(pIVar11->section_name_).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pIVar11->section_name_).field_2" & (field_expression "(pIVar11->section_name_).field_2" (parenthesized_expression "(pIVar11->section_name_)" ( (field_expression "pIVar11->section_name_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)paVar14 + 8)" * (cast_expression "(undefined4 *)((int)paVar14 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + 8)" ( (binary_expression "(int)paVar14 + 8" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 0xc) =\n             *(undefined4 *)((int)paVar14 + 0xc);" (assignment_expression "*(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 0xc) =\n             *(undefined4 *)((int)paVar14 + 0xc)" (pointer_expression "*(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 0xc)" * (cast_expression "(undefined4 *)((int)&(pIVar11->section_name_).field_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pIVar11->section_name_).field_2 + 0xc)" ( (binary_expression "(int)&(pIVar11->section_name_).field_2 + 0xc" (cast_expression "(int)&(pIVar11->section_name_).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pIVar11->section_name_).field_2" & (field_expression "(pIVar11->section_name_).field_2" (parenthesized_expression "(pIVar11->section_name_)" ( (field_expression "pIVar11->section_name_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)paVar14 + 0xc)" * (cast_expression "(undefined4 *)((int)paVar14 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + 0xc)" ( (binary_expression "(int)paVar14 + 0xc" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n        (pIVar11->section_name_)._M_dataplus._M_p = pcVar4;\n        (pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }" else (compound_statement "{\n        (pIVar11->section_name_)._M_dataplus._M_p = pcVar4;\n        (pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }" { (expression_statement "(pIVar11->section_name_)._M_dataplus._M_p = pcVar4;" (assignment_expression "(pIVar11->section_name_)._M_dataplus._M_p = pcVar4" (field_expression "(pIVar11->section_name_)._M_dataplus._M_p" (field_expression "(pIVar11->section_name_)._M_dataplus" (parenthesized_expression "(pIVar11->section_name_)" ( (field_expression "pIVar11->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;" (assignment_expression "(pIVar11->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity" (field_expression "(pIVar11->section_name_).field_2._M_allocated_capacity" (field_expression "(pIVar11->section_name_).field_2" (parenthesized_expression "(pIVar11->section_name_)" ( (field_expression "pIVar11->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar14->_M_allocated_capacity" identifier -> field_identifier)) ;) }))) (expression_statement "(pIVar11->section_name_)._M_string_length = *(size_type *)((int)paVar14 + -4);" (assignment_expression "(pIVar11->section_name_)._M_string_length = *(size_type *)((int)paVar14 + -4)" (field_expression "(pIVar11->section_name_)._M_string_length" (parenthesized_expression "(pIVar11->section_name_)" ( (field_expression "pIVar11->section_name_" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(size_type *)((int)paVar14 + -4)" * (cast_expression "(size_type *)((int)paVar14 + -4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -4)" ( (binary_expression "(int)paVar14 + -4" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "(((string *)((int)paVar14 + -8))->_M_dataplus)._M_p = (pointer)paVar14;" (assignment_expression "(((string *)((int)paVar14 + -8))->_M_dataplus)._M_p = (pointer)paVar14" (field_expression "(((string *)((int)paVar14 + -8))->_M_dataplus)._M_p" (parenthesized_expression "(((string *)((int)paVar14 + -8))->_M_dataplus)" ( (field_expression "((string *)((int)paVar14 + -8))->_M_dataplus" (parenthesized_expression "((string *)((int)paVar14 + -8))" ( (cast_expression "(string *)((int)paVar14 + -8)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -8)" ( (binary_expression "(int)paVar14 + -8" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )) -> field_identifier) )) . field_identifier) = (cast_expression "(pointer)paVar14" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "*(size_type *)((int)paVar14 + -4) = 0;" (assignment_expression "*(size_type *)((int)paVar14 + -4) = 0" (pointer_expression "*(size_type *)((int)paVar14 + -4)" * (cast_expression "(size_type *)((int)paVar14 + -4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -4)" ( (binary_expression "(int)paVar14 + -4" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "paVar14->_M_local_buf[0] = '\0';" (assignment_expression "paVar14->_M_local_buf[0] = '\0'" (subscript_expression "paVar14->_M_local_buf[0]" (field_expression "paVar14->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pIVar7 = pIVar11 + 1;" (assignment_expression "pIVar7 = pIVar11 + 1" identifier = (binary_expression "pIVar11 + 1" identifier + number_literal)) ;) (expression_statement "paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x34);" (assignment_expression "paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x34)" identifier = (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x34)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)" ( (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" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) (ERROR "*" *) )) (argument_list "((int)paVar14 + 0x34)" ( (binary_expression "(int)paVar14 + 0x34" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(pIVar11 + 1 !=\n             local_24 +\n             (((uint)((int)__position._M_current + (-0x34 - (int)pIVar3)) >> 2) * 0x4ec4ec5 &\n             0x3fffffff) + 1)" ( (binary_expression "pIVar11 + 1 !=\n             local_24 +\n             (((uint)((int)__position._M_current + (-0x34 - (int)pIVar3)) >> 2) * 0x4ec4ec5 &\n             0x3fffffff) + 1" (binary_expression "pIVar11 + 1" identifier + number_literal) != (binary_expression "local_24 +\n             (((uint)((int)__position._M_current + (-0x34 - (int)pIVar3)) >> 2) * 0x4ec4ec5 &\n             0x3fffffff) + 1" (binary_expression "local_24 +\n             (((uint)((int)__position._M_current + (-0x34 - (int)pIVar3)) >> 2) * 0x4ec4ec5 &\n             0x3fffffff)" identifier + (parenthesized_expression "(((uint)((int)__position._M_current + (-0x34 - (int)pIVar3)) >> 2) * 0x4ec4ec5 &\n             0x3fffffff)" ( (binary_expression "((uint)((int)__position._M_current + (-0x34 - (int)pIVar3)) >> 2) * 0x4ec4ec5 &\n             0x3fffffff" (binary_expression "((uint)((int)__position._M_current + (-0x34 - (int)pIVar3)) >> 2) * 0x4ec4ec5" (parenthesized_expression "((uint)((int)__position._M_current + (-0x34 - (int)pIVar3)) >> 2)" ( (binary_expression "(uint)((int)__position._M_current + (-0x34 - (int)pIVar3)) >> 2" (call_expression "(uint)((int)__position._M_current + (-0x34 - (int)pIVar3))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)__position._M_current + (-0x34 - (int)pIVar3))" ( (binary_expression "(int)__position._M_current + (-0x34 - (int)pIVar3)" (cast_expression "(int)__position._M_current" ( (type_descriptor "int" primitive_type) ) (field_expression "__position._M_current" identifier . field_identifier)) + (parenthesized_expression "(-0x34 - (int)pIVar3)" ( (binary_expression "-0x34 - (int)pIVar3" number_literal - (cast_expression "(int)pIVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) >> number_literal) )) * number_literal) & number_literal) ))) + number_literal)) )) ;) (expression_statement "pIVar11 = pIVar11 + 2;" (assignment_expression "pIVar11 = pIVar11 + 2" identifier = (binary_expression "pIVar11 + 2" identifier + number_literal)) ;) })) (expression_statement "pIVar7 = pIVar3;" (assignment_expression "pIVar7 = pIVar3" identifier = identifier) ;) (if_statement "if (__position._M_current != pIVar2) {\n    pIVar15 = pIVar11 + (((uint)((int)pIVar2 + (-0x34 - (int)__position._M_current)) >> 2) *\n                         0x4ec4ec5 & 0x3fffffff) + 1;\n    pIVar10 = pIVar11;\n    paVar14 = &((__position._M_current)->section_name_).field_2;\n    do {\n      sVar5 = *(size_type *)((int)paVar14 + -0x24);\n      (pIVar10->section_name_)._M_dataplus._M_p = (pointer)&(pIVar10->section_name_).field_2;\n      (pIVar10->input_section_).shndx_ = sVar5;\n      (pIVar10->input_section_).p2align_ = paVar14[-2]._M_allocated_capacity;\n      *(size_type *)&(pIVar10->input_section_).u1_ = *(size_type *)((int)paVar14 + -0x1c);\n      *(size_type *)((int)&(pIVar10->input_section_).u1_ + 4) = *(size_type *)((int)paVar14 + -0x18)\n      ;\n      (pIVar10->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14);\n      (pIVar10->input_section_).section_order_index_ = paVar14[-1]._M_allocated_capacity;\n      pIVar10->index_ = *(size_type *)((int)paVar14 + -0xc);\n      psVar6 = (size_type *)(((string *)((int)paVar14 + -8))->_M_dataplus)._M_p;\n      if (paVar14 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar6) {\n        (pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 4) =\n             *(size_type *)((int)paVar14 + 4);\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 8) =\n             *(size_type *)((int)paVar14 + 8);\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 0xc) =\n             *(size_type *)((int)paVar14 + 0xc);\n      }\n      else {\n        (pIVar10->section_name_)._M_dataplus._M_p = (pointer)psVar6;\n        (pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      sVar5 = *(size_type *)((int)paVar14 + -4);\n      pIVar9 = pIVar10 + 1;\n      (((string *)((int)paVar14 + -8))->_M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      (pIVar10->section_name_)._M_string_length = sVar5;\n      paVar14->_M_local_buf[0] = '\0';\n      pIVar10 = pIVar9;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x34);\n      pIVar11 = pIVar15;\n    } while (pIVar9 != pIVar15);\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    pIVar15 = pIVar11 + (((uint)((int)pIVar2 + (-0x34 - (int)__position._M_current)) >> 2) *\n                         0x4ec4ec5 & 0x3fffffff) + 1;\n    pIVar10 = pIVar11;\n    paVar14 = &((__position._M_current)->section_name_).field_2;\n    do {\n      sVar5 = *(size_type *)((int)paVar14 + -0x24);\n      (pIVar10->section_name_)._M_dataplus._M_p = (pointer)&(pIVar10->section_name_).field_2;\n      (pIVar10->input_section_).shndx_ = sVar5;\n      (pIVar10->input_section_).p2align_ = paVar14[-2]._M_allocated_capacity;\n      *(size_type *)&(pIVar10->input_section_).u1_ = *(size_type *)((int)paVar14 + -0x1c);\n      *(size_type *)((int)&(pIVar10->input_section_).u1_ + 4) = *(size_type *)((int)paVar14 + -0x18)\n      ;\n      (pIVar10->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14);\n      (pIVar10->input_section_).section_order_index_ = paVar14[-1]._M_allocated_capacity;\n      pIVar10->index_ = *(size_type *)((int)paVar14 + -0xc);\n      psVar6 = (size_type *)(((string *)((int)paVar14 + -8))->_M_dataplus)._M_p;\n      if (paVar14 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar6) {\n        (pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 4) =\n             *(size_type *)((int)paVar14 + 4);\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 8) =\n             *(size_type *)((int)paVar14 + 8);\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 0xc) =\n             *(size_type *)((int)paVar14 + 0xc);\n      }\n      else {\n        (pIVar10->section_name_)._M_dataplus._M_p = (pointer)psVar6;\n        (pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      sVar5 = *(size_type *)((int)paVar14 + -4);\n      pIVar9 = pIVar10 + 1;\n      (((string *)((int)paVar14 + -8))->_M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      (pIVar10->section_name_)._M_string_length = sVar5;\n      paVar14->_M_local_buf[0] = '\0';\n      pIVar10 = pIVar9;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x34);\n      pIVar11 = pIVar15;\n    } while (pIVar9 != pIVar15);\n  }" { (expression_statement "pIVar15 = pIVar11 + (((uint)((int)pIVar2 + (-0x34 - (int)__position._M_current)) >> 2) *\n                         0x4ec4ec5 & 0x3fffffff) + 1;" (assignment_expression "pIVar15 = pIVar11 + (((uint)((int)pIVar2 + (-0x34 - (int)__position._M_current)) >> 2) *\n                         0x4ec4ec5 & 0x3fffffff) + 1" identifier = (binary_expression "pIVar11 + (((uint)((int)pIVar2 + (-0x34 - (int)__position._M_current)) >> 2) *\n                         0x4ec4ec5 & 0x3fffffff) + 1" (binary_expression "pIVar11 + (((uint)((int)pIVar2 + (-0x34 - (int)__position._M_current)) >> 2) *\n                         0x4ec4ec5 & 0x3fffffff)" identifier + (parenthesized_expression "(((uint)((int)pIVar2 + (-0x34 - (int)__position._M_current)) >> 2) *\n                         0x4ec4ec5 & 0x3fffffff)" ( (binary_expression "((uint)((int)pIVar2 + (-0x34 - (int)__position._M_current)) >> 2) *\n                         0x4ec4ec5 & 0x3fffffff" (binary_expression "((uint)((int)pIVar2 + (-0x34 - (int)__position._M_current)) >> 2) *\n                         0x4ec4ec5" (parenthesized_expression "((uint)((int)pIVar2 + (-0x34 - (int)__position._M_current)) >> 2)" ( (binary_expression "(uint)((int)pIVar2 + (-0x34 - (int)__position._M_current)) >> 2" (call_expression "(uint)((int)pIVar2 + (-0x34 - (int)__position._M_current))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pIVar2 + (-0x34 - (int)__position._M_current))" ( (binary_expression "(int)pIVar2 + (-0x34 - (int)__position._M_current)" (cast_expression "(int)pIVar2" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-0x34 - (int)__position._M_current)" ( (binary_expression "-0x34 - (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) )) * number_literal) & number_literal) ))) + number_literal)) ;) (expression_statement "pIVar10 = pIVar11;" (assignment_expression "pIVar10 = pIVar11" identifier = identifier) ;) (expression_statement "paVar14 = &((__position._M_current)->section_name_).field_2;" (assignment_expression "paVar14 = &((__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))) ;) (do_statement "do {\n      sVar5 = *(size_type *)((int)paVar14 + -0x24);\n      (pIVar10->section_name_)._M_dataplus._M_p = (pointer)&(pIVar10->section_name_).field_2;\n      (pIVar10->input_section_).shndx_ = sVar5;\n      (pIVar10->input_section_).p2align_ = paVar14[-2]._M_allocated_capacity;\n      *(size_type *)&(pIVar10->input_section_).u1_ = *(size_type *)((int)paVar14 + -0x1c);\n      *(size_type *)((int)&(pIVar10->input_section_).u1_ + 4) = *(size_type *)((int)paVar14 + -0x18)\n      ;\n      (pIVar10->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14);\n      (pIVar10->input_section_).section_order_index_ = paVar14[-1]._M_allocated_capacity;\n      pIVar10->index_ = *(size_type *)((int)paVar14 + -0xc);\n      psVar6 = (size_type *)(((string *)((int)paVar14 + -8))->_M_dataplus)._M_p;\n      if (paVar14 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar6) {\n        (pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 4) =\n             *(size_type *)((int)paVar14 + 4);\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 8) =\n             *(size_type *)((int)paVar14 + 8);\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 0xc) =\n             *(size_type *)((int)paVar14 + 0xc);\n      }\n      else {\n        (pIVar10->section_name_)._M_dataplus._M_p = (pointer)psVar6;\n        (pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      sVar5 = *(size_type *)((int)paVar14 + -4);\n      pIVar9 = pIVar10 + 1;\n      (((string *)((int)paVar14 + -8))->_M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      (pIVar10->section_name_)._M_string_length = sVar5;\n      paVar14->_M_local_buf[0] = '\0';\n      pIVar10 = pIVar9;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x34);\n      pIVar11 = pIVar15;\n    } while (pIVar9 != pIVar15);" do (compound_statement "{\n      sVar5 = *(size_type *)((int)paVar14 + -0x24);\n      (pIVar10->section_name_)._M_dataplus._M_p = (pointer)&(pIVar10->section_name_).field_2;\n      (pIVar10->input_section_).shndx_ = sVar5;\n      (pIVar10->input_section_).p2align_ = paVar14[-2]._M_allocated_capacity;\n      *(size_type *)&(pIVar10->input_section_).u1_ = *(size_type *)((int)paVar14 + -0x1c);\n      *(size_type *)((int)&(pIVar10->input_section_).u1_ + 4) = *(size_type *)((int)paVar14 + -0x18)\n      ;\n      (pIVar10->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14);\n      (pIVar10->input_section_).section_order_index_ = paVar14[-1]._M_allocated_capacity;\n      pIVar10->index_ = *(size_type *)((int)paVar14 + -0xc);\n      psVar6 = (size_type *)(((string *)((int)paVar14 + -8))->_M_dataplus)._M_p;\n      if (paVar14 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar6) {\n        (pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 4) =\n             *(size_type *)((int)paVar14 + 4);\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 8) =\n             *(size_type *)((int)paVar14 + 8);\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 0xc) =\n             *(size_type *)((int)paVar14 + 0xc);\n      }\n      else {\n        (pIVar10->section_name_)._M_dataplus._M_p = (pointer)psVar6;\n        (pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      sVar5 = *(size_type *)((int)paVar14 + -4);\n      pIVar9 = pIVar10 + 1;\n      (((string *)((int)paVar14 + -8))->_M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      (pIVar10->section_name_)._M_string_length = sVar5;\n      paVar14->_M_local_buf[0] = '\0';\n      pIVar10 = pIVar9;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x34);\n      pIVar11 = pIVar15;\n    }" { (expression_statement "sVar5 = *(size_type *)((int)paVar14 + -0x24);" (assignment_expression "sVar5 = *(size_type *)((int)paVar14 + -0x24)" identifier = (pointer_expression "*(size_type *)((int)paVar14 + -0x24)" * (cast_expression "(size_type *)((int)paVar14 + -0x24)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -0x24)" ( (binary_expression "(int)paVar14 + -0x24" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "(pIVar10->section_name_)._M_dataplus._M_p = (pointer)&(pIVar10->section_name_).field_2;" (assignment_expression "(pIVar10->section_name_)._M_dataplus._M_p = (pointer)&(pIVar10->section_name_).field_2" (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) = (binary_expression "(pointer)&(pIVar10->section_name_).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(pIVar10->section_name_).field_2" (parenthesized_expression "(pIVar10->section_name_)" ( (field_expression "pIVar10->section_name_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "(pIVar10->input_section_).shndx_ = sVar5;" (assignment_expression "(pIVar10->input_section_).shndx_ = sVar5" (field_expression "(pIVar10->input_section_).shndx_" (parenthesized_expression "(pIVar10->input_section_)" ( (field_expression "pIVar10->input_section_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(pIVar10->input_section_).p2align_ = paVar14[-2]._M_allocated_capacity;" (assignment_expression "(pIVar10->input_section_).p2align_ = paVar14[-2]._M_allocated_capacity" (field_expression "(pIVar10->input_section_).p2align_" (parenthesized_expression "(pIVar10->input_section_)" ( (field_expression "pIVar10->input_section_" identifier -> field_identifier) )) . field_identifier) = (field_expression "paVar14[-2]._M_allocated_capacity" (subscript_expression "paVar14[-2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "*(size_type *)&(pIVar10->input_section_).u1_ = *(size_type *)((int)paVar14 + -0x1c);" (assignment_expression "*(size_type *)&(pIVar10->input_section_).u1_ = *(size_type *)((int)paVar14 + -0x1c)" (pointer_expression "*(size_type *)&(pIVar10->input_section_).u1_" * (cast_expression "(size_type *)&(pIVar10->input_section_).u1_" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pIVar10->input_section_).u1_" & (field_expression "(pIVar10->input_section_).u1_" (parenthesized_expression "(pIVar10->input_section_)" ( (field_expression "pIVar10->input_section_" identifier -> field_identifier) )) . field_identifier)))) = (pointer_expression "*(size_type *)((int)paVar14 + -0x1c)" * (cast_expression "(size_type *)((int)paVar14 + -0x1c)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -0x1c)" ( (binary_expression "(int)paVar14 + -0x1c" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(size_type *)((int)&(pIVar10->input_section_).u1_ + 4) = *(size_type *)((int)paVar14 + -0x18)\n      ;" (assignment_expression "*(size_type *)((int)&(pIVar10->input_section_).u1_ + 4) = *(size_type *)((int)paVar14 + -0x18)" (pointer_expression "*(size_type *)((int)&(pIVar10->input_section_).u1_ + 4)" * (cast_expression "(size_type *)((int)&(pIVar10->input_section_).u1_ + 4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pIVar10->input_section_).u1_ + 4)" ( (binary_expression "(int)&(pIVar10->input_section_).u1_ + 4" (cast_expression "(int)&(pIVar10->input_section_).u1_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pIVar10->input_section_).u1_" & (field_expression "(pIVar10->input_section_).u1_" (parenthesized_expression "(pIVar10->input_section_)" ( (field_expression "pIVar10->input_section_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(size_type *)((int)paVar14 + -0x18)" * (cast_expression "(size_type *)((int)paVar14 + -0x18)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -0x18)" ( (binary_expression "(int)paVar14 + -0x18" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "(pIVar10->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14);" (assignment_expression "(pIVar10->input_section_).u2_ = *(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14)" (field_expression "(pIVar10->input_section_).u2_" (parenthesized_expression "(pIVar10->input_section_)" ( (field_expression "pIVar10->input_section_" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14)" * (cast_expression "(anon_union_4_4_139239c7_for_u2_ *)((int)paVar14 + -0x14)" ( (type_descriptor "anon_union_4_4_139239c7_for_u2_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -0x14)" ( (binary_expression "(int)paVar14 + -0x14" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "(pIVar10->input_section_).section_order_index_ = paVar14[-1]._M_allocated_capacity;" (assignment_expression "(pIVar10->input_section_).section_order_index_ = paVar14[-1]._M_allocated_capacity" (field_expression "(pIVar10->input_section_).section_order_index_" (parenthesized_expression "(pIVar10->input_section_)" ( (field_expression "pIVar10->input_section_" identifier -> field_identifier) )) . field_identifier) = (field_expression "paVar14[-1]._M_allocated_capacity" (subscript_expression "paVar14[-1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pIVar10->index_ = *(size_type *)((int)paVar14 + -0xc);" (assignment_expression "pIVar10->index_ = *(size_type *)((int)paVar14 + -0xc)" (field_expression "pIVar10->index_" identifier -> field_identifier) = (pointer_expression "*(size_type *)((int)paVar14 + -0xc)" * (cast_expression "(size_type *)((int)paVar14 + -0xc)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -0xc)" ( (binary_expression "(int)paVar14 + -0xc" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "psVar6 = (size_type *)(((string *)((int)paVar14 + -8))->_M_dataplus)._M_p;" (assignment_expression "psVar6 = (size_type *)(((string *)((int)paVar14 + -8))->_M_dataplus)._M_p" identifier = (cast_expression "(size_type *)(((string *)((int)paVar14 + -8))->_M_dataplus)._M_p" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(((string *)((int)paVar14 + -8))->_M_dataplus)._M_p" (parenthesized_expression "(((string *)((int)paVar14 + -8))->_M_dataplus)" ( (field_expression "((string *)((int)paVar14 + -8))->_M_dataplus" (parenthesized_expression "((string *)((int)paVar14 + -8))" ( (cast_expression "(string *)((int)paVar14 + -8)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -8)" ( (binary_expression "(int)paVar14 + -8" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )) -> field_identifier) )) . field_identifier))) ;) (if_statement "if (paVar14 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar6) {\n        (pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 4) =\n             *(size_type *)((int)paVar14 + 4);\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 8) =\n             *(size_type *)((int)paVar14 + 8);\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 0xc) =\n             *(size_type *)((int)paVar14 + 0xc);\n      }\n      else {\n        (pIVar10->section_name_)._M_dataplus._M_p = (pointer)psVar6;\n        (pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }" if (parenthesized_expression "(paVar14 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar6)" ( (binary_expression "paVar14 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar6)" identifier == (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar6)" ( (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           *)psVar6" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)psVar6" identifier * (ERROR ")" )) identifier)) ))) )) (compound_statement "{\n        (pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 4) =\n             *(size_type *)((int)paVar14 + 4);\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 8) =\n             *(size_type *)((int)paVar14 + 8);\n        *(size_type *)((int)&(pIVar10->section_name_).field_2 + 0xc) =\n             *(size_type *)((int)paVar14 + 0xc);\n      }" { (expression_statement "(pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;" (assignment_expression "(pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity" (field_expression "(pIVar10->section_name_).field_2._M_allocated_capacity" (field_expression "(pIVar10->section_name_).field_2" (parenthesized_expression "(pIVar10->section_name_)" ( (field_expression "pIVar10->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar14->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "*(size_type *)((int)&(pIVar10->section_name_).field_2 + 4) =\n             *(size_type *)((int)paVar14 + 4);" (assignment_expression "*(size_type *)((int)&(pIVar10->section_name_).field_2 + 4) =\n             *(size_type *)((int)paVar14 + 4)" (pointer_expression "*(size_type *)((int)&(pIVar10->section_name_).field_2 + 4)" * (cast_expression "(size_type *)((int)&(pIVar10->section_name_).field_2 + 4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pIVar10->section_name_).field_2 + 4)" ( (binary_expression "(int)&(pIVar10->section_name_).field_2 + 4" (cast_expression "(int)&(pIVar10->section_name_).field_2" ( (type_descriptor "int" primitive_type) ) (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))) + number_literal) )))) = (pointer_expression "*(size_type *)((int)paVar14 + 4)" * (cast_expression "(size_type *)((int)paVar14 + 4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + 4)" ( (binary_expression "(int)paVar14 + 4" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(size_type *)((int)&(pIVar10->section_name_).field_2 + 8) =\n             *(size_type *)((int)paVar14 + 8);" (assignment_expression "*(size_type *)((int)&(pIVar10->section_name_).field_2 + 8) =\n             *(size_type *)((int)paVar14 + 8)" (pointer_expression "*(size_type *)((int)&(pIVar10->section_name_).field_2 + 8)" * (cast_expression "(size_type *)((int)&(pIVar10->section_name_).field_2 + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pIVar10->section_name_).field_2 + 8)" ( (binary_expression "(int)&(pIVar10->section_name_).field_2 + 8" (cast_expression "(int)&(pIVar10->section_name_).field_2" ( (type_descriptor "int" primitive_type) ) (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))) + number_literal) )))) = (pointer_expression "*(size_type *)((int)paVar14 + 8)" * (cast_expression "(size_type *)((int)paVar14 + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + 8)" ( (binary_expression "(int)paVar14 + 8" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(size_type *)((int)&(pIVar10->section_name_).field_2 + 0xc) =\n             *(size_type *)((int)paVar14 + 0xc);" (assignment_expression "*(size_type *)((int)&(pIVar10->section_name_).field_2 + 0xc) =\n             *(size_type *)((int)paVar14 + 0xc)" (pointer_expression "*(size_type *)((int)&(pIVar10->section_name_).field_2 + 0xc)" * (cast_expression "(size_type *)((int)&(pIVar10->section_name_).field_2 + 0xc)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pIVar10->section_name_).field_2 + 0xc)" ( (binary_expression "(int)&(pIVar10->section_name_).field_2 + 0xc" (cast_expression "(int)&(pIVar10->section_name_).field_2" ( (type_descriptor "int" primitive_type) ) (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))) + number_literal) )))) = (pointer_expression "*(size_type *)((int)paVar14 + 0xc)" * (cast_expression "(size_type *)((int)paVar14 + 0xc)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + 0xc)" ( (binary_expression "(int)paVar14 + 0xc" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n        (pIVar10->section_name_)._M_dataplus._M_p = (pointer)psVar6;\n        (pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }" else (compound_statement "{\n        (pIVar10->section_name_)._M_dataplus._M_p = (pointer)psVar6;\n        (pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }" { (expression_statement "(pIVar10->section_name_)._M_dataplus._M_p = (pointer)psVar6;" (assignment_expression "(pIVar10->section_name_)._M_dataplus._M_p = (pointer)psVar6" (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) = (cast_expression "(pointer)psVar6" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "(pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;" (assignment_expression "(pIVar10->section_name_).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity" (field_expression "(pIVar10->section_name_).field_2._M_allocated_capacity" (field_expression "(pIVar10->section_name_).field_2" (parenthesized_expression "(pIVar10->section_name_)" ( (field_expression "pIVar10->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar14->_M_allocated_capacity" identifier -> field_identifier)) ;) }))) (expression_statement "sVar5 = *(size_type *)((int)paVar14 + -4);" (assignment_expression "sVar5 = *(size_type *)((int)paVar14 + -4)" identifier = (pointer_expression "*(size_type *)((int)paVar14 + -4)" * (cast_expression "(size_type *)((int)paVar14 + -4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -4)" ( (binary_expression "(int)paVar14 + -4" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pIVar9 = pIVar10 + 1;" (assignment_expression "pIVar9 = pIVar10 + 1" identifier = (binary_expression "pIVar10 + 1" identifier + number_literal)) ;) (expression_statement "(((string *)((int)paVar14 + -8))->_M_dataplus)._M_p = (pointer)paVar14;" (assignment_expression "(((string *)((int)paVar14 + -8))->_M_dataplus)._M_p = (pointer)paVar14" (field_expression "(((string *)((int)paVar14 + -8))->_M_dataplus)._M_p" (parenthesized_expression "(((string *)((int)paVar14 + -8))->_M_dataplus)" ( (field_expression "((string *)((int)paVar14 + -8))->_M_dataplus" (parenthesized_expression "((string *)((int)paVar14 + -8))" ( (cast_expression "(string *)((int)paVar14 + -8)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -8)" ( (binary_expression "(int)paVar14 + -8" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )) -> field_identifier) )) . field_identifier) = (cast_expression "(pointer)paVar14" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "*(size_type *)((int)paVar14 + -4) = 0;" (assignment_expression "*(size_type *)((int)paVar14 + -4) = 0" (pointer_expression "*(size_type *)((int)paVar14 + -4)" * (cast_expression "(size_type *)((int)paVar14 + -4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -4)" ( (binary_expression "(int)paVar14 + -4" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "(pIVar10->section_name_)._M_string_length = sVar5;" (assignment_expression "(pIVar10->section_name_)._M_string_length = sVar5" (field_expression "(pIVar10->section_name_)._M_string_length" (parenthesized_expression "(pIVar10->section_name_)" ( (field_expression "pIVar10->section_name_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "paVar14->_M_local_buf[0] = '\0';" (assignment_expression "paVar14->_M_local_buf[0] = '\0'" (subscript_expression "paVar14->_M_local_buf[0]" (field_expression "paVar14->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pIVar10 = pIVar9;" (assignment_expression "pIVar10 = pIVar9" identifier = identifier) ;) (expression_statement "paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x34);" (assignment_expression "paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x34)" identifier = (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x34)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)" ( (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" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) (ERROR "*" *) )) (argument_list "((int)paVar14 + 0x34)" ( (binary_expression "(int)paVar14 + 0x34" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pIVar11 = pIVar15;" (assignment_expression "pIVar11 = pIVar15" identifier = identifier) ;) }) while (parenthesized_expression "(pIVar9 != pIVar15)" ( (binary_expression "pIVar9 != pIVar15" identifier != identifier) )) ;) })) (for_statement "for (; pIVar7 != pIVar2; pIVar7 = pIVar7 + 1) {\n    pcVar4 = (pIVar7->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 != &(pIVar7->section_name_).field_2) {\n      operator_delete(pcVar4);\n    }\n  }" for ( ; (binary_expression "pIVar7 != pIVar2" identifier != identifier) ; (assignment_expression "pIVar7 = pIVar7 + 1" identifier = (binary_expression "pIVar7 + 1" identifier + number_literal)) ) (compound_statement "{\n    pcVar4 = (pIVar7->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 != &(pIVar7->section_name_).field_2) {\n      operator_delete(pcVar4);\n    }\n  }" { (expression_statement "pcVar4 = (pIVar7->section_name_)._M_dataplus._M_p;" (assignment_expression "pcVar4 = (pIVar7->section_name_)._M_dataplus._M_p" identifier = (field_expression "(pIVar7->section_name_)._M_dataplus._M_p" (field_expression "(pIVar7->section_name_)._M_dataplus" (parenthesized_expression "(pIVar7->section_name_)" ( (field_expression "pIVar7->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 != &(pIVar7->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 != &(pIVar7->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 != &(pIVar7->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 != &(pIVar7->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 "&(pIVar7->section_name_).field_2" & (field_expression "(pIVar7->section_name_).field_2" (parenthesized_expression "(pIVar7->section_name_)" ( (field_expression "pIVar7->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 (pIVar3 != (pointer)0x0) {\n    operator_delete(pIVar3);\n  }" if (parenthesized_expression "(pIVar3 != (pointer)0x0)" ( (binary_expression "pIVar3 != (pointer)0x0" identifier != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) )) (compound_statement "{\n    operator_delete(pIVar3);\n  }" { (expression_statement "operator_delete(pIVar3);" (call_expression "operator_delete(pIVar3)" identifier (argument_list "(pIVar3)" ( identifier ))) ;) })) (expression_statement "(this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n  )._M_impl._M_start = local_24;" (assignment_expression "(this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n  )._M_impl._M_start = local_24" (field_expression "(this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n  )._M_impl._M_start" (field_expression "(this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n  )._M_impl" (parenthesized_expression "(this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n  )" ( (ERROR "this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::" (comma_expression "this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std" (binary_expression "this->\n  super__Vector_base<gold" (field_expression "this->\n  super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section::Input_section_sort_entry" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Input_section_sort_entry>_>" (binary_expression "Input_section_sort_entry>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n  )._M_impl._M_finish = pIVar11;" (assignment_expression "(this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n  )._M_impl._M_finish = pIVar11" (field_expression "(this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n  )._M_impl._M_finish" (field_expression "(this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n  )._M_impl" (parenthesized_expression "(this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n  )" ( (ERROR "this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::" (comma_expression "this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std" (binary_expression "this->\n  super__Vector_base<gold" (field_expression "this->\n  super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section::Input_section_sort_entry" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Input_section_sort_entry>_>" (binary_expression "Input_section_sort_entry>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n  )._M_impl._M_end_of_storage = local_20;" (assignment_expression "(this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n  )._M_impl._M_end_of_storage = local_20" (field_expression "(this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n  )._M_impl._M_end_of_storage" (field_expression "(this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n  )._M_impl" (parenthesized_expression "(this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>\n  )" ( (ERROR "this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::" (comma_expression "this->\n  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std" (binary_expression "this->\n  super__Vector_base<gold" (field_expression "this->\n  super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section::Input_section_sort_entry" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Input_section_sort_entry>_>" (binary_expression "Input_section_sort_entry>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_00178720(int *param_1,int param_2,undefined4 *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *local_24;\n  int local_20;\n  \n  iVar1 = param_1[1];\n  iVar2 = *param_1;\n  iVar4 = iVar1 - iVar2 >> 2;\n  if (iVar4 * -0x3b13b13b == 0) {\n    uVar8 = 1;\nLAB_00178a05:\n    local_20 = uVar8 * 0x34;\n  }\n  else {\n    uVar8 = iVar4 * -0x76276276;\n    local_20 = -0x30;\n    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }\n  local_24 = (undefined4 *)FUN_00246670(local_20);\n  local_20 = local_20 + (int)local_24;\n  puVar7 = local_24 + 0xd;\nLAB_00178795:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));\n  puVar9 = (undefined4 *)param_3[7];\n  *puVar6 = *param_3;\n  uVar3 = param_3[1];\n  puVar6[7] = puVar6 + 9;\n  puVar6[1] = uVar3;\n  puVar6[2] = param_3[2];\n  puVar6[3] = param_3[3];\n  puVar6[4] = param_3[4];\n  puVar6[5] = param_3[5];\n  puVar6[6] = param_3[6];\n  if (puVar9 == param_3 + 9) {\n    puVar6[9] = param_3[9];\n    puVar6[10] = param_3[10];\n    puVar6[0xb] = param_3[0xb];\n    puVar6[0xc] = param_3[0xc];\n  }\n  else {\n    puVar6[7] = puVar9;\n    puVar6[9] = param_3[9];\n  }\n  uVar3 = param_3[8];\n  param_3[7] = param_3 + 9;\n  param_3[8] = 0;\n  *(undefined1 *)(param_3 + 9) = 0;\n  puVar6[8] = uVar3;\n  if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0x24);\n    do {\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    } while (puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);\n    puVar7 = puVar7 + 0x1a;\n  }\n  iVar4 = iVar2;\n  if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0x24);\n    do {\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }\n  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x34) {\n    if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }\n  }\n  if (iVar2 != 0) {\n    FUN_00248220(iVar2);\n  }\n  *param_1 = (int)local_24;\n  param_1[1] = (int)puVar7;\n  param_1[2] = local_20;\n  return;\n}\n\n" (function_definition "void FUN_00178720(int *param_1,int param_2,undefined4 *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *local_24;\n  int local_20;\n  \n  iVar1 = param_1[1];\n  iVar2 = *param_1;\n  iVar4 = iVar1 - iVar2 >> 2;\n  if (iVar4 * -0x3b13b13b == 0) {\n    uVar8 = 1;\nLAB_00178a05:\n    local_20 = uVar8 * 0x34;\n  }\n  else {\n    uVar8 = iVar4 * -0x76276276;\n    local_20 = -0x30;\n    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }\n  local_24 = (undefined4 *)FUN_00246670(local_20);\n  local_20 = local_20 + (int)local_24;\n  puVar7 = local_24 + 0xd;\nLAB_00178795:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));\n  puVar9 = (undefined4 *)param_3[7];\n  *puVar6 = *param_3;\n  uVar3 = param_3[1];\n  puVar6[7] = puVar6 + 9;\n  puVar6[1] = uVar3;\n  puVar6[2] = param_3[2];\n  puVar6[3] = param_3[3];\n  puVar6[4] = param_3[4];\n  puVar6[5] = param_3[5];\n  puVar6[6] = param_3[6];\n  if (puVar9 == param_3 + 9) {\n    puVar6[9] = param_3[9];\n    puVar6[10] = param_3[10];\n    puVar6[0xb] = param_3[0xb];\n    puVar6[0xc] = param_3[0xc];\n  }\n  else {\n    puVar6[7] = puVar9;\n    puVar6[9] = param_3[9];\n  }\n  uVar3 = param_3[8];\n  param_3[7] = param_3 + 9;\n  param_3[8] = 0;\n  *(undefined1 *)(param_3 + 9) = 0;\n  puVar6[8] = uVar3;\n  if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0x24);\n    do {\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    } while (puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);\n    puVar7 = puVar7 + 0x1a;\n  }\n  iVar4 = iVar2;\n  if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0x24);\n    do {\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }\n  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x34) {\n    if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }\n  }\n  if (iVar2 != 0) {\n    FUN_00248220(iVar2);\n  }\n  *param_1 = (int)local_24;\n  param_1[1] = (int)puVar7;\n  param_1[2] = local_20;\n  return;\n}" primitive_type (function_declarator "FUN_00178720(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  int iVar4;\n  undefined4 *puVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *local_24;\n  int local_20;\n  \n  iVar1 = param_1[1];\n  iVar2 = *param_1;\n  iVar4 = iVar1 - iVar2 >> 2;\n  if (iVar4 * -0x3b13b13b == 0) {\n    uVar8 = 1;\nLAB_00178a05:\n    local_20 = uVar8 * 0x34;\n  }\n  else {\n    uVar8 = iVar4 * -0x76276276;\n    local_20 = -0x30;\n    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }\n  local_24 = (undefined4 *)FUN_00246670(local_20);\n  local_20 = local_20 + (int)local_24;\n  puVar7 = local_24 + 0xd;\nLAB_00178795:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));\n  puVar9 = (undefined4 *)param_3[7];\n  *puVar6 = *param_3;\n  uVar3 = param_3[1];\n  puVar6[7] = puVar6 + 9;\n  puVar6[1] = uVar3;\n  puVar6[2] = param_3[2];\n  puVar6[3] = param_3[3];\n  puVar6[4] = param_3[4];\n  puVar6[5] = param_3[5];\n  puVar6[6] = param_3[6];\n  if (puVar9 == param_3 + 9) {\n    puVar6[9] = param_3[9];\n    puVar6[10] = param_3[10];\n    puVar6[0xb] = param_3[0xb];\n    puVar6[0xc] = param_3[0xc];\n  }\n  else {\n    puVar6[7] = puVar9;\n    puVar6[9] = param_3[9];\n  }\n  uVar3 = param_3[8];\n  param_3[7] = param_3 + 9;\n  param_3[8] = 0;\n  *(undefined1 *)(param_3 + 9) = 0;\n  puVar6[8] = uVar3;\n  if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0x24);\n    do {\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    } while (puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);\n    puVar7 = puVar7 + 0x1a;\n  }\n  iVar4 = iVar2;\n  if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0x24);\n    do {\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }\n  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x34) {\n    if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }\n  }\n  if (iVar2 != 0) {\n    FUN_00248220(iVar2);\n  }\n  *param_1 = (int)local_24;\n  param_1[1] = (int)puVar7;\n  param_1[2] = local_20;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined4 *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "iVar1 = param_1[1];" (assignment_expression "iVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = *param_1;" (assignment_expression "iVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar4 = iVar1 - iVar2 >> 2;" (assignment_expression "iVar4 = iVar1 - iVar2 >> 2" identifier = (binary_expression "iVar1 - iVar2 >> 2" (binary_expression "iVar1 - iVar2" identifier - identifier) >> number_literal)) ;) (if_statement "if (iVar4 * -0x3b13b13b == 0) {\n    uVar8 = 1;\nLAB_00178a05:\n    local_20 = uVar8 * 0x34;\n  }\n  else {\n    uVar8 = iVar4 * -0x76276276;\n    local_20 = -0x30;\n    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }" if (parenthesized_expression "(iVar4 * -0x3b13b13b == 0)" ( (binary_expression "iVar4 * -0x3b13b13b == 0" (binary_expression "iVar4 * -0x3b13b13b" identifier * number_literal) == number_literal) )) (compound_statement "{\n    uVar8 = 1;\nLAB_00178a05:\n    local_20 = uVar8 * 0x34;\n  }" { (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00178a05:\n    local_20 = uVar8 * 0x34;" statement_identifier : (expression_statement "local_20 = uVar8 * 0x34;" (assignment_expression "local_20 = uVar8 * 0x34" identifier = (binary_expression "uVar8 * 0x34" identifier * number_literal)) ;)) }) (else_clause "else {\n    uVar8 = iVar4 * -0x76276276;\n    local_20 = -0x30;\n    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }" else (compound_statement "{\n    uVar8 = iVar4 * -0x76276276;\n    local_20 = -0x30;\n    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }" { (expression_statement "uVar8 = iVar4 * -0x76276276;" (assignment_expression "uVar8 = iVar4 * -0x76276276" identifier = (binary_expression "iVar4 * -0x76276276" identifier * number_literal)) ;) (expression_statement "local_20 = -0x30;" (assignment_expression "local_20 = -0x30" identifier = number_literal) ;) (if_statement "if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }" if (parenthesized_expression "(((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5))" ( (binary_expression "((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)" (parenthesized_expression "((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0)" ( (binary_expression "(uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0" (binary_expression "(uint)(iVar4 * -0x3b13b13b) < uVar8" (call_expression "(uint)(iVar4 * -0x3b13b13b)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar4 * -0x3b13b13b)" ( (binary_expression "iVar4 * -0x3b13b13b" identifier * number_literal) ))) < identifier) || (binary_expression "iVar4 * 0x3b13b13b == 0" (binary_expression "iVar4 * 0x3b13b13b" identifier * number_literal) == number_literal)) )) && (parenthesized_expression "(uVar8 < 0x4ec4ec5)" ( (binary_expression "uVar8 < 0x4ec4ec5" identifier < number_literal) ))) )) (compound_statement "{\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }" { (if_statement "if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }" { (expression_statement "puVar7 = (undefined4 *)0x34;" (assignment_expression "puVar7 = (undefined4 *)0x34" identifier = (cast_expression "(undefined4 *)0x34" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_24 = (undefined4 *)0x0;" (assignment_expression "local_24 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00178795;" goto statement_identifier ;) })) (goto_statement "goto LAB_00178a05;" goto statement_identifier ;) })) }))) (expression_statement "local_24 = (undefined4 *)FUN_00246670(local_20);" (assignment_expression "local_24 = (undefined4 *)FUN_00246670(local_20)" identifier = (cast_expression "(undefined4 *)FUN_00246670(local_20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(local_20)" identifier (argument_list "(local_20)" ( identifier ))))) ;) (expression_statement "local_20 = local_20 + (int)local_24;" (assignment_expression "local_20 = local_20 + (int)local_24" identifier = (binary_expression "local_20 + (int)local_24" identifier + (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar7 = local_24 + 0xd;" (assignment_expression "puVar7 = local_24 + 0xd" identifier = (binary_expression "local_24 + 0xd" identifier + number_literal)) ;) (labeled_statement "LAB_00178795:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));" statement_identifier : (expression_statement "puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));" (assignment_expression "puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2))" identifier = (cast_expression "(undefined4 *)((int)local_24 + (param_2 - iVar2))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_24 + (param_2 - iVar2))" ( (binary_expression "(int)local_24 + (param_2 - iVar2)" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(param_2 - iVar2)" ( (binary_expression "param_2 - iVar2" identifier - identifier) ))) )))) ;)) (expression_statement "puVar9 = (undefined4 *)param_3[7];" (assignment_expression "puVar9 = (undefined4 *)param_3[7]" identifier = (cast_expression "(undefined4 *)param_3[7]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[7]" identifier [ number_literal ]))) ;) (expression_statement "*puVar6 = *param_3;" (assignment_expression "*puVar6 = *param_3" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar3 = param_3[1];" (assignment_expression "uVar3 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "puVar6[7] = puVar6 + 9;" (assignment_expression "puVar6[7] = puVar6 + 9" (subscript_expression "puVar6[7]" identifier [ number_literal ]) = (binary_expression "puVar6 + 9" identifier + number_literal)) ;) (expression_statement "puVar6[1] = uVar3;" (assignment_expression "puVar6[1] = uVar3" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[2] = param_3[2];" (assignment_expression "puVar6[2] = param_3[2]" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (expression_statement "puVar6[3] = param_3[3];" (assignment_expression "puVar6[3] = param_3[3]" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (expression_statement "puVar6[4] = param_3[4];" (assignment_expression "puVar6[4] = param_3[4]" (subscript_expression "puVar6[4]" identifier [ number_literal ]) = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (expression_statement "puVar6[5] = param_3[5];" (assignment_expression "puVar6[5] = param_3[5]" (subscript_expression "puVar6[5]" identifier [ number_literal ]) = (subscript_expression "param_3[5]" identifier [ number_literal ])) ;) (expression_statement "puVar6[6] = param_3[6];" (assignment_expression "puVar6[6] = param_3[6]" (subscript_expression "puVar6[6]" identifier [ number_literal ]) = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) (if_statement "if (puVar9 == param_3 + 9) {\n    puVar6[9] = param_3[9];\n    puVar6[10] = param_3[10];\n    puVar6[0xb] = param_3[0xb];\n    puVar6[0xc] = param_3[0xc];\n  }\n  else {\n    puVar6[7] = puVar9;\n    puVar6[9] = param_3[9];\n  }" if (parenthesized_expression "(puVar9 == param_3 + 9)" ( (binary_expression "puVar9 == param_3 + 9" identifier == (binary_expression "param_3 + 9" identifier + number_literal)) )) (compound_statement "{\n    puVar6[9] = param_3[9];\n    puVar6[10] = param_3[10];\n    puVar6[0xb] = param_3[0xb];\n    puVar6[0xc] = param_3[0xc];\n  }" { (expression_statement "puVar6[9] = param_3[9];" (assignment_expression "puVar6[9] = param_3[9]" (subscript_expression "puVar6[9]" identifier [ number_literal ]) = (subscript_expression "param_3[9]" identifier [ number_literal ])) ;) (expression_statement "puVar6[10] = param_3[10];" (assignment_expression "puVar6[10] = param_3[10]" (subscript_expression "puVar6[10]" identifier [ number_literal ]) = (subscript_expression "param_3[10]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0xb] = param_3[0xb];" (assignment_expression "puVar6[0xb] = param_3[0xb]" (subscript_expression "puVar6[0xb]" identifier [ number_literal ]) = (subscript_expression "param_3[0xb]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0xc] = param_3[0xc];" (assignment_expression "puVar6[0xc] = param_3[0xc]" (subscript_expression "puVar6[0xc]" identifier [ number_literal ]) = (subscript_expression "param_3[0xc]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    puVar6[7] = puVar9;\n    puVar6[9] = param_3[9];\n  }" else (compound_statement "{\n    puVar6[7] = puVar9;\n    puVar6[9] = param_3[9];\n  }" { (expression_statement "puVar6[7] = puVar9;" (assignment_expression "puVar6[7] = puVar9" (subscript_expression "puVar6[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[9] = param_3[9];" (assignment_expression "puVar6[9] = param_3[9]" (subscript_expression "puVar6[9]" identifier [ number_literal ]) = (subscript_expression "param_3[9]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar3 = param_3[8];" (assignment_expression "uVar3 = param_3[8]" identifier = (subscript_expression "param_3[8]" identifier [ number_literal ])) ;) (expression_statement "param_3[7] = param_3 + 9;" (assignment_expression "param_3[7] = param_3 + 9" (subscript_expression "param_3[7]" identifier [ number_literal ]) = (binary_expression "param_3 + 9" identifier + number_literal)) ;) (expression_statement "param_3[8] = 0;" (assignment_expression "param_3[8] = 0" (subscript_expression "param_3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(param_3 + 9) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 9) = 0" (pointer_expression "*(undefined1 *)(param_3 + 9)" * (cast_expression "(undefined1 *)(param_3 + 9)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 9)" ( (binary_expression "param_3 + 9" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar6[8] = uVar3;" (assignment_expression "puVar6[8] = uVar3" (subscript_expression "puVar6[8]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0x24);\n    do {\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    } while (puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);\n    puVar7 = puVar7 + 0x1a;\n  }" if (parenthesized_expression "(param_2 != iVar2)" ( (binary_expression "param_2 != iVar2" identifier != identifier) )) (compound_statement "{\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0x24);\n    do {\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    } while (puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);\n    puVar7 = puVar7 + 0x1a;\n  }" { (expression_statement "puVar6 = local_24;" (assignment_expression "puVar6 = local_24" identifier = identifier) ;) (expression_statement "puVar9 = (undefined4 *)(iVar2 + 0x24);" (assignment_expression "puVar9 = (undefined4 *)(iVar2 + 0x24)" identifier = (cast_expression "(undefined4 *)(iVar2 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x24)" ( (binary_expression "iVar2 + 0x24" identifier + number_literal) )))) ;) (do_statement "do {\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    } while (puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);" do (compound_statement "{\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    }" { (expression_statement "puVar7 = puVar6;" (assignment_expression "puVar7 = puVar6" identifier = identifier) ;) (expression_statement "*puVar7 = puVar9[-9];" (assignment_expression "*puVar7 = puVar9[-9]" (pointer_expression "*puVar7" * identifier) = (subscript_expression "puVar9[-9]" identifier [ number_literal ])) ;) (expression_statement "puVar7[1] = puVar9[-8];" (assignment_expression "puVar7[1] = puVar9[-8]" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (subscript_expression "puVar9[-8]" identifier [ number_literal ])) ;) (expression_statement "puVar7[2] = puVar9[-7];" (assignment_expression "puVar7[2] = puVar9[-7]" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = (subscript_expression "puVar9[-7]" identifier [ number_literal ])) ;) (expression_statement "puVar7[3] = puVar9[-6];" (assignment_expression "puVar7[3] = puVar9[-6]" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = (subscript_expression "puVar9[-6]" identifier [ number_literal ])) ;) (expression_statement "puVar7[4] = puVar9[-5];" (assignment_expression "puVar7[4] = puVar9[-5]" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = (subscript_expression "puVar9[-5]" identifier [ number_literal ])) ;) (expression_statement "puVar7[5] = puVar9[-4];" (assignment_expression "puVar7[5] = puVar9[-4]" (subscript_expression "puVar7[5]" identifier [ number_literal ]) = (subscript_expression "puVar9[-4]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = puVar9[-3];" (assignment_expression "uVar3 = puVar9[-3]" identifier = (subscript_expression "puVar9[-3]" identifier [ number_literal ])) ;) (expression_statement "puVar7[7] = puVar7 + 9;" (assignment_expression "puVar7[7] = puVar7 + 9" (subscript_expression "puVar7[7]" identifier [ number_literal ]) = (binary_expression "puVar7 + 9" identifier + number_literal)) ;) (expression_statement "puVar7[6] = uVar3;" (assignment_expression "puVar7[6] = uVar3" (subscript_expression "puVar7[6]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }" if (parenthesized_expression "((undefined4 *)puVar9[-2] == puVar9)" ( (binary_expression "(undefined4 *)puVar9[-2] == puVar9" (cast_expression "(undefined4 *)puVar9[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }" { (expression_statement "puVar7[9] = *puVar9;" (assignment_expression "puVar7[9] = *puVar9" (subscript_expression "puVar7[9]" identifier [ number_literal ]) = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar7[10] = puVar9[1];" (assignment_expression "puVar7[10] = puVar9[1]" (subscript_expression "puVar7[10]" identifier [ number_literal ]) = (subscript_expression "puVar9[1]" identifier [ number_literal ])) ;) (expression_statement "puVar7[0xb] = puVar9[2];" (assignment_expression "puVar7[0xb] = puVar9[2]" (subscript_expression "puVar7[0xb]" identifier [ number_literal ]) = (subscript_expression "puVar9[2]" identifier [ number_literal ])) ;) (expression_statement "puVar7[0xc] = puVar9[3];" (assignment_expression "puVar7[0xc] = puVar9[3]" (subscript_expression "puVar7[0xc]" identifier [ number_literal ]) = (subscript_expression "puVar9[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }" else (compound_statement "{\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }" { (expression_statement "puVar7[7] = (undefined4 *)puVar9[-2];" (assignment_expression "puVar7[7] = (undefined4 *)puVar9[-2]" (subscript_expression "puVar7[7]" identifier [ number_literal ]) = (cast_expression "(undefined4 *)puVar9[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar7[9] = *puVar9;" (assignment_expression "puVar7[9] = *puVar9" (subscript_expression "puVar7[9]" identifier [ number_literal ]) = (pointer_expression "*puVar9" * identifier)) ;) }))) (expression_statement "puVar7[8] = puVar9[-1];" (assignment_expression "puVar7[8] = puVar9[-1]" (subscript_expression "puVar7[8]" identifier [ number_literal ]) = (subscript_expression "puVar9[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar9[-2] = puVar9;" (assignment_expression "puVar9[-2] = puVar9" (subscript_expression "puVar9[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[-1] = 0;" (assignment_expression "puVar9[-1] = 0" (subscript_expression "puVar9[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar9 = 0;" (assignment_expression "*(undefined1 *)puVar9 = 0" (pointer_expression "*(undefined1 *)puVar9" * (cast_expression "(undefined1 *)puVar9" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar6 = puVar7 + 0xd;" (assignment_expression "puVar6 = puVar7 + 0xd" identifier = (binary_expression "puVar7 + 0xd" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar9 + 0xd;" (assignment_expression "puVar9 = puVar9 + 0xd" identifier = (binary_expression "puVar9 + 0xd" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd)" ( (binary_expression "puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd" (binary_expression "puVar7 + 0xd" identifier + number_literal) != (binary_expression "local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd" identifier + (binary_expression "((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd" (parenthesized_expression "((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1)" ( (binary_expression "(((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1" (parenthesized_expression "(((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff)" ( (binary_expression "((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff" (binary_expression "((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5" (parenthesized_expression "((uint)((param_2 + -0x34) - iVar2) >> 2)" ( (binary_expression "(uint)((param_2 + -0x34) - iVar2) >> 2" (call_expression "(uint)((param_2 + -0x34) - iVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((param_2 + -0x34) - iVar2)" ( (binary_expression "(param_2 + -0x34) - iVar2" (parenthesized_expression "(param_2 + -0x34)" ( (binary_expression "param_2 + -0x34" identifier + number_literal) )) - identifier) ))) >> number_literal) )) * number_literal) & number_literal) )) + number_literal) )) * number_literal))) )) ;) (expression_statement "puVar7 = puVar7 + 0x1a;" (assignment_expression "puVar7 = puVar7 + 0x1a" identifier = (binary_expression "puVar7 + 0x1a" identifier + number_literal)) ;) })) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" identifier = identifier) ;) (if_statement "if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0x24);\n    do {\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }" if (parenthesized_expression "(param_2 != iVar1)" ( (binary_expression "param_2 != iVar1" identifier != identifier) )) (compound_statement "{\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0x24);\n    do {\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }" { (expression_statement "puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;" (assignment_expression "puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd" identifier = (binary_expression "puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd" identifier + (binary_expression "((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd" (parenthesized_expression "((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1)" ( (binary_expression "(((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1" (parenthesized_expression "(((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff)" ( (binary_expression "((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff" (binary_expression "((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5" (parenthesized_expression "((iVar1 - param_2) - 0x34U >> 2)" ( (binary_expression "(iVar1 - param_2) - 0x34U >> 2" (binary_expression "(iVar1 - param_2) - 0x34U" (parenthesized_expression "(iVar1 - param_2)" ( (binary_expression "iVar1 - param_2" identifier - identifier) )) - number_literal) >> number_literal) )) * number_literal) & number_literal) )) + number_literal) )) * number_literal))) ;) (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" identifier = identifier) ;) (expression_statement "puVar9 = (undefined4 *)(param_2 + 0x24);" (assignment_expression "puVar9 = (undefined4 *)(param_2 + 0x24)" identifier = (cast_expression "(undefined4 *)(param_2 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) ;) (do_statement "do {\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);" do (compound_statement "{\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    }" { (expression_statement "uVar3 = puVar9[-9];" (assignment_expression "uVar3 = puVar9[-9]" identifier = (subscript_expression "puVar9[-9]" identifier [ number_literal ])) ;) (expression_statement "puVar6[7] = puVar6 + 9;" (assignment_expression "puVar6[7] = puVar6 + 9" (subscript_expression "puVar6[7]" identifier [ number_literal ]) = (binary_expression "puVar6 + 9" identifier + number_literal)) ;) (expression_statement "*puVar6 = uVar3;" (assignment_expression "*puVar6 = uVar3" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "puVar6[1] = puVar9[-8];" (assignment_expression "puVar6[1] = puVar9[-8]" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = (subscript_expression "puVar9[-8]" identifier [ number_literal ])) ;) (expression_statement "puVar6[2] = puVar9[-7];" (assignment_expression "puVar6[2] = puVar9[-7]" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = (subscript_expression "puVar9[-7]" identifier [ number_literal ])) ;) (expression_statement "puVar6[3] = puVar9[-6];" (assignment_expression "puVar6[3] = puVar9[-6]" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = (subscript_expression "puVar9[-6]" identifier [ number_literal ])) ;) (expression_statement "puVar6[4] = puVar9[-5];" (assignment_expression "puVar6[4] = puVar9[-5]" (subscript_expression "puVar6[4]" identifier [ number_literal ]) = (subscript_expression "puVar9[-5]" identifier [ number_literal ])) ;) (expression_statement "puVar6[5] = puVar9[-4];" (assignment_expression "puVar6[5] = puVar9[-4]" (subscript_expression "puVar6[5]" identifier [ number_literal ]) = (subscript_expression "puVar9[-4]" identifier [ number_literal ])) ;) (expression_statement "puVar6[6] = puVar9[-3];" (assignment_expression "puVar6[6] = puVar9[-3]" (subscript_expression "puVar6[6]" identifier [ number_literal ]) = (subscript_expression "puVar9[-3]" identifier [ number_literal ])) ;) (if_statement "if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }" if (parenthesized_expression "(puVar9 == (undefined4 *)puVar9[-2])" ( (binary_expression "puVar9 == (undefined4 *)puVar9[-2]" identifier == (cast_expression "(undefined4 *)puVar9[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[-2]" identifier [ number_literal ]))) )) (compound_statement "{\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }" { (expression_statement "puVar6[9] = *puVar9;" (assignment_expression "puVar6[9] = *puVar9" (subscript_expression "puVar6[9]" identifier [ number_literal ]) = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar6[10] = puVar9[1];" (assignment_expression "puVar6[10] = puVar9[1]" (subscript_expression "puVar6[10]" identifier [ number_literal ]) = (subscript_expression "puVar9[1]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0xb] = puVar9[2];" (assignment_expression "puVar6[0xb] = puVar9[2]" (subscript_expression "puVar6[0xb]" identifier [ number_literal ]) = (subscript_expression "puVar9[2]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0xc] = puVar9[3];" (assignment_expression "puVar6[0xc] = puVar9[3]" (subscript_expression "puVar6[0xc]" identifier [ number_literal ]) = (subscript_expression "puVar9[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }" else (compound_statement "{\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }" { (expression_statement "puVar6[7] = (undefined4 *)puVar9[-2];" (assignment_expression "puVar6[7] = (undefined4 *)puVar9[-2]" (subscript_expression "puVar6[7]" identifier [ number_literal ]) = (cast_expression "(undefined4 *)puVar9[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar6[9] = *puVar9;" (assignment_expression "puVar6[9] = *puVar9" (subscript_expression "puVar6[9]" identifier [ number_literal ]) = (pointer_expression "*puVar9" * identifier)) ;) }))) (expression_statement "uVar3 = puVar9[-1];" (assignment_expression "uVar3 = puVar9[-1]" identifier = (subscript_expression "puVar9[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = puVar6 + 0xd;" (assignment_expression "puVar5 = puVar6 + 0xd" identifier = (binary_expression "puVar6 + 0xd" identifier + number_literal)) ;) (expression_statement "puVar9[-2] = puVar9;" (assignment_expression "puVar9[-2] = puVar9" (subscript_expression "puVar9[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[-1] = 0;" (assignment_expression "puVar9[-1] = 0" (subscript_expression "puVar9[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[8] = uVar3;" (assignment_expression "puVar6[8] = uVar3" (subscript_expression "puVar6[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)puVar9 = 0;" (assignment_expression "*(undefined1 *)puVar9 = 0" (pointer_expression "*(undefined1 *)puVar9" * (cast_expression "(undefined1 *)puVar9" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" identifier = identifier) ;) (expression_statement "puVar9 = puVar9 + 0xd;" (assignment_expression "puVar9 = puVar9 + 0xd" identifier = (binary_expression "puVar9 + 0xd" identifier + number_literal)) ;) (expression_statement "puVar7 = puVar10;" (assignment_expression "puVar7 = puVar10" identifier = identifier) ;) }) while (parenthesized_expression "(puVar5 != puVar10)" ( (binary_expression "puVar5 != puVar10" identifier != identifier) )) ;) })) (for_statement "for (; iVar4 != iVar1; iVar4 = iVar4 + 0x34) {\n    if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }\n  }" for ( ; (binary_expression "iVar4 != iVar1" identifier != identifier) ; (assignment_expression "iVar4 = iVar4 + 0x34" identifier = (binary_expression "iVar4 + 0x34" identifier + number_literal)) ) (compound_statement "{\n    if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }\n  }" { (if_statement "if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }" if (parenthesized_expression "(*(int *)(iVar4 + 0x1c) != iVar4 + 0x24)" ( (binary_expression "*(int *)(iVar4 + 0x1c) != iVar4 + 0x24" (pointer_expression "*(int *)(iVar4 + 0x1c)" * (cast_expression "(int *)(iVar4 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1c)" ( (binary_expression "iVar4 + 0x1c" identifier + number_literal) )))) != (binary_expression "iVar4 + 0x24" identifier + number_literal)) )) (compound_statement "{\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }" { (expression_statement "FUN_00248220(*(int *)(iVar4 + 0x1c));" (call_expression "FUN_00248220(*(int *)(iVar4 + 0x1c))" identifier (argument_list "(*(int *)(iVar4 + 0x1c))" ( (pointer_expression "*(int *)(iVar4 + 0x1c)" * (cast_expression "(int *)(iVar4 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1c)" ( (binary_expression "iVar4 + 0x1c" identifier + number_literal) )))) ))) ;) })) })) (if_statement "if (iVar2 != 0) {\n    FUN_00248220(iVar2);\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_00248220(iVar2);\n  }" { (expression_statement "FUN_00248220(iVar2);" (call_expression "FUN_00248220(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) })) (expression_statement "*param_1 = (int)local_24;" (assignment_expression "*param_1 = (int)local_24" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[1] = (int)puVar7;" (assignment_expression "param_1[1] = (int)puVar7" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[2] = local_20;" (assignment_expression "param_1[2] = local_20" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) == 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)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) ))) < IDENT) || (binary_expression (binary_expression IDENT * LIT) == LIT)) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) )))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (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) ;) (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 IDENT == (binary_expression IDENT + LIT)) )) (compound_statement { (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 ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (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 (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 (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 IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT) ))) >> LIT) )) * LIT) & LIT) )) + LIT) )) * 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 IDENT + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - LIT) >> LIT) )) * LIT) & LIT) )) + LIT) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (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 ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression (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 ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (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 (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_00178720(int *param_1,int param_2,undefined4 *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *local_24;\n  int local_20;\n  \n  iVar1 = param_1[1];\n  iVar2 = *param_1;\n  iVar4 = iVar1 - iVar2 >> 2;\n  if (iVar4 * -0x3b13b13b == 0) {\n    uVar8 = 1;\nLAB_00178a05:\n    local_20 = uVar8 * 0x34;\n  }\n  else {\n    uVar8 = iVar4 * -0x76276276;\n    local_20 = -0x30;\n    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }\n  local_24 = (undefined4 *)FUN_00246670(local_20);\n  local_20 = local_20 + (int)local_24;\n  puVar7 = local_24 + 0xd;\nLAB_00178795:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));\n  puVar9 = (undefined4 *)param_3[7];\n  *puVar6 = *param_3;\n  uVar3 = param_3[1];\n  puVar6[7] = puVar6 + 9;\n  puVar6[1] = uVar3;\n  puVar6[2] = param_3[2];\n  puVar6[3] = param_3[3];\n  puVar6[4] = param_3[4];\n  puVar6[5] = param_3[5];\n  puVar6[6] = param_3[6];\n  if (puVar9 == param_3 + 9) {\n    puVar6[9] = param_3[9];\n    puVar6[10] = param_3[10];\n    puVar6[0xb] = param_3[0xb];\n    puVar6[0xc] = param_3[0xc];\n  }\n  else {\n    puVar6[7] = puVar9;\n    puVar6[9] = param_3[9];\n  }\n  uVar3 = param_3[8];\n  param_3[7] = param_3 + 9;\n  param_3[8] = 0;\n  *(undefined1 *)(param_3 + 9) = 0;\n  puVar6[8] = uVar3;\n  if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0x24);\n    do {\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    } while (puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);\n    puVar7 = puVar7 + 0x1a;\n  }\n  iVar4 = iVar2;\n  if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0x24);\n    do {\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }\n  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x34) {\n    if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }\n  }\n  if (iVar2 != 0) {\n    FUN_00248220(iVar2);\n  }\n  *param_1 = (int)local_24;\n  param_1[1] = (int)puVar7;\n  param_1[2] = local_20;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00178720(int *param_1,int param_2,undefined4 *param_3)" (identifier "FUN_00178720") (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  int iVar4;\n  undefined4 *puVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *local_24;\n  int local_20;\n  \n  iVar1 = param_1[1];\n  iVar2 = *param_1;\n  iVar4 = iVar1 - iVar2 >> 2;\n  if (iVar4 * -0x3b13b13b == 0) {\n    uVar8 = 1;\nLAB_00178a05:\n    local_20 = uVar8 * 0x34;\n  }\n  else {\n    uVar8 = iVar4 * -0x76276276;\n    local_20 = -0x30;\n    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }\n  local_24 = (undefined4 *)FUN_00246670(local_20);\n  local_20 = local_20 + (int)local_24;\n  puVar7 = local_24 + 0xd;\nLAB_00178795:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));\n  puVar9 = (undefined4 *)param_3[7];\n  *puVar6 = *param_3;\n  uVar3 = param_3[1];\n  puVar6[7] = puVar6 + 9;\n  puVar6[1] = uVar3;\n  puVar6[2] = param_3[2];\n  puVar6[3] = param_3[3];\n  puVar6[4] = param_3[4];\n  puVar6[5] = param_3[5];\n  puVar6[6] = param_3[6];\n  if (puVar9 == param_3 + 9) {\n    puVar6[9] = param_3[9];\n    puVar6[10] = param_3[10];\n    puVar6[0xb] = param_3[0xb];\n    puVar6[0xc] = param_3[0xc];\n  }\n  else {\n    puVar6[7] = puVar9;\n    puVar6[9] = param_3[9];\n  }\n  uVar3 = param_3[8];\n  param_3[7] = param_3 + 9;\n  param_3[8] = 0;\n  *(undefined1 *)(param_3 + 9) = 0;\n  puVar6[8] = uVar3;\n  if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0x24);\n    do {\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    } while (puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);\n    puVar7 = puVar7 + 0x1a;\n  }\n  iVar4 = iVar2;\n  if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0x24);\n    do {\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }\n  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x34) {\n    if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }\n  }\n  if (iVar2 != 0) {\n    FUN_00248220(iVar2);\n  }\n  *param_1 = (int)local_24;\n  param_1[1] = (int)puVar7;\n  param_1[2] = local_20;\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 "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "undefined4 *puVar9;" (type_identifier "undefined4") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined4 *puVar10;" (type_identifier "undefined4") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "undefined4 *local_24;" (type_identifier "undefined4") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "iVar1 = param_1[1];" (assignment_expression "iVar1 = param_1[1]" (identifier "iVar1") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar2 = *param_1;" (assignment_expression "iVar2 = *param_1" (identifier "iVar2") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "iVar4 = iVar1 - iVar2 >> 2;" (assignment_expression "iVar4 = iVar1 - iVar2 >> 2" (identifier "iVar4") (= "=") (binary_expression "iVar1 - iVar2 >> 2" (binary_expression "iVar1 - iVar2" (identifier "iVar1") (- "-") (identifier "iVar2")) (>> ">>") (number_literal "2"))) (; ";")) (if_statement "if (iVar4 * -0x3b13b13b == 0) {\n    uVar8 = 1;\nLAB_00178a05:\n    local_20 = uVar8 * 0x34;\n  }\n  else {\n    uVar8 = iVar4 * -0x76276276;\n    local_20 = -0x30;\n    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }" (if "if") (parenthesized_expression "(iVar4 * -0x3b13b13b == 0)" (( "(") (binary_expression "iVar4 * -0x3b13b13b == 0" (binary_expression "iVar4 * -0x3b13b13b" (identifier "iVar4") (* "*") (number_literal "-0x3b13b13b")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar8 = 1;\nLAB_00178a05:\n    local_20 = uVar8 * 0x34;\n  }" ({ "{") (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" (identifier "uVar8") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_00178a05:\n    local_20 = uVar8 * 0x34;" (statement_identifier "LAB_00178a05") (: ":") (expression_statement "local_20 = uVar8 * 0x34;" (assignment_expression "local_20 = uVar8 * 0x34" (identifier "local_20") (= "=") (binary_expression "uVar8 * 0x34" (identifier "uVar8") (* "*") (number_literal "0x34"))) (; ";"))) (} "}")) (else_clause "else {\n    uVar8 = iVar4 * -0x76276276;\n    local_20 = -0x30;\n    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }" (else "else") (compound_statement "{\n    uVar8 = iVar4 * -0x76276276;\n    local_20 = -0x30;\n    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }\n  }" ({ "{") (expression_statement "uVar8 = iVar4 * -0x76276276;" (assignment_expression "uVar8 = iVar4 * -0x76276276" (identifier "uVar8") (= "=") (binary_expression "iVar4 * -0x76276276" (identifier "iVar4") (* "*") (number_literal "-0x76276276"))) (; ";")) (expression_statement "local_20 = -0x30;" (assignment_expression "local_20 = -0x30" (identifier "local_20") (= "=") (number_literal "-0x30")) (; ";")) (if_statement "if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }" (if "if") (parenthesized_expression "(((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5))" (( "(") (binary_expression "((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)" (parenthesized_expression "((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0)" (( "(") (binary_expression "(uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0" (binary_expression "(uint)(iVar4 * -0x3b13b13b) < uVar8" (call_expression "(uint)(iVar4 * -0x3b13b13b)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar4 * -0x3b13b13b)" (( "(") (binary_expression "iVar4 * -0x3b13b13b" (identifier "iVar4") (* "*") (number_literal "-0x3b13b13b")) () ")"))) (< "<") (identifier "uVar8")) (|| "||") (binary_expression "iVar4 * 0x3b13b13b == 0" (binary_expression "iVar4 * 0x3b13b13b" (identifier "iVar4") (* "*") (number_literal "0x3b13b13b")) (== "==") (number_literal "0"))) () ")")) (&& "&&") (parenthesized_expression "(uVar8 < 0x4ec4ec5)" (( "(") (binary_expression "uVar8 < 0x4ec4ec5" (identifier "uVar8") (< "<") (number_literal "0x4ec4ec5")) () ")"))) () ")")) (compound_statement "{\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }\n      goto LAB_00178a05;\n    }" ({ "{") (if_statement "if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        puVar7 = (undefined4 *)0x34;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00178795;\n      }" ({ "{") (expression_statement "puVar7 = (undefined4 *)0x34;" (assignment_expression "puVar7 = (undefined4 *)0x34" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)0x34" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x34"))) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_24 = (undefined4 *)0x0;" (assignment_expression "local_24 = (undefined4 *)0x0" (identifier "local_24") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_00178795;" (goto "goto") (statement_identifier "LAB_00178795") (; ";")) (} "}"))) (goto_statement "goto LAB_00178a05;" (goto "goto") (statement_identifier "LAB_00178a05") (; ";")) (} "}"))) (} "}")))) (expression_statement "local_24 = (undefined4 *)FUN_00246670(local_20);" (assignment_expression "local_24 = (undefined4 *)FUN_00246670(local_20)" (identifier "local_24") (= "=") (cast_expression "(undefined4 *)FUN_00246670(local_20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(local_20)" (identifier "FUN_00246670") (argument_list "(local_20)" (( "(") (identifier "local_20") () ")"))))) (; ";")) (expression_statement "local_20 = local_20 + (int)local_24;" (assignment_expression "local_20 = local_20 + (int)local_24" (identifier "local_20") (= "=") (binary_expression "local_20 + (int)local_24" (identifier "local_20") (+ "+") (cast_expression "(int)local_24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_24")))) (; ";")) (expression_statement "puVar7 = local_24 + 0xd;" (assignment_expression "puVar7 = local_24 + 0xd" (identifier "puVar7") (= "=") (binary_expression "local_24 + 0xd" (identifier "local_24") (+ "+") (number_literal "0xd"))) (; ";")) (labeled_statement "LAB_00178795:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));" (statement_identifier "LAB_00178795") (: ":") (expression_statement "puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));" (assignment_expression "puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2))" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)((int)local_24 + (param_2 - iVar2))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_24 + (param_2 - iVar2))" (( "(") (binary_expression "(int)local_24 + (param_2 - iVar2)" (cast_expression "(int)local_24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_24")) (+ "+") (parenthesized_expression "(param_2 - iVar2)" (( "(") (binary_expression "param_2 - iVar2" (identifier "param_2") (- "-") (identifier "iVar2")) () ")"))) () ")")))) (; ";"))) (expression_statement "puVar9 = (undefined4 *)param_3[7];" (assignment_expression "puVar9 = (undefined4 *)param_3[7]" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)param_3[7]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[7]" (identifier "param_3") ([ "[") (number_literal "7") (] "]")))) (; ";")) (expression_statement "*puVar6 = *param_3;" (assignment_expression "*puVar6 = *param_3" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "uVar3 = param_3[1];" (assignment_expression "uVar3 = param_3[1]" (identifier "uVar3") (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar6[7] = puVar6 + 9;" (assignment_expression "puVar6[7] = puVar6 + 9" (subscript_expression "puVar6[7]" (identifier "puVar6") ([ "[") (number_literal "7") (] "]")) (= "=") (binary_expression "puVar6 + 9" (identifier "puVar6") (+ "+") (number_literal "9"))) (; ";")) (expression_statement "puVar6[1] = uVar3;" (assignment_expression "puVar6[1] = uVar3" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar6[2] = param_3[2];" (assignment_expression "puVar6[2] = param_3[2]" (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar6[3] = param_3[3];" (assignment_expression "puVar6[3] = param_3[3]" (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar6[4] = param_3[4];" (assignment_expression "puVar6[4] = param_3[4]" (subscript_expression "puVar6[4]" (identifier "puVar6") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "puVar6[5] = param_3[5];" (assignment_expression "puVar6[5] = param_3[5]" (subscript_expression "puVar6[5]" (identifier "puVar6") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "param_3[5]" (identifier "param_3") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar6[6] = param_3[6];" (assignment_expression "puVar6[6] = param_3[6]" (subscript_expression "puVar6[6]" (identifier "puVar6") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "param_3[6]" (identifier "param_3") ([ "[") (number_literal "6") (] "]"))) (; ";")) (if_statement "if (puVar9 == param_3 + 9) {\n    puVar6[9] = param_3[9];\n    puVar6[10] = param_3[10];\n    puVar6[0xb] = param_3[0xb];\n    puVar6[0xc] = param_3[0xc];\n  }\n  else {\n    puVar6[7] = puVar9;\n    puVar6[9] = param_3[9];\n  }" (if "if") (parenthesized_expression "(puVar9 == param_3 + 9)" (( "(") (binary_expression "puVar9 == param_3 + 9" (identifier "puVar9") (== "==") (binary_expression "param_3 + 9" (identifier "param_3") (+ "+") (number_literal "9"))) () ")")) (compound_statement "{\n    puVar6[9] = param_3[9];\n    puVar6[10] = param_3[10];\n    puVar6[0xb] = param_3[0xb];\n    puVar6[0xc] = param_3[0xc];\n  }" ({ "{") (expression_statement "puVar6[9] = param_3[9];" (assignment_expression "puVar6[9] = param_3[9]" (subscript_expression "puVar6[9]" (identifier "puVar6") ([ "[") (number_literal "9") (] "]")) (= "=") (subscript_expression "param_3[9]" (identifier "param_3") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "puVar6[10] = param_3[10];" (assignment_expression "puVar6[10] = param_3[10]" (subscript_expression "puVar6[10]" (identifier "puVar6") ([ "[") (number_literal "10") (] "]")) (= "=") (subscript_expression "param_3[10]" (identifier "param_3") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "puVar6[0xb] = param_3[0xb];" (assignment_expression "puVar6[0xb] = param_3[0xb]" (subscript_expression "puVar6[0xb]" (identifier "puVar6") ([ "[") (number_literal "0xb") (] "]")) (= "=") (subscript_expression "param_3[0xb]" (identifier "param_3") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "puVar6[0xc] = param_3[0xc];" (assignment_expression "puVar6[0xc] = param_3[0xc]" (subscript_expression "puVar6[0xc]" (identifier "puVar6") ([ "[") (number_literal "0xc") (] "]")) (= "=") (subscript_expression "param_3[0xc]" (identifier "param_3") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    puVar6[7] = puVar9;\n    puVar6[9] = param_3[9];\n  }" (else "else") (compound_statement "{\n    puVar6[7] = puVar9;\n    puVar6[9] = param_3[9];\n  }" ({ "{") (expression_statement "puVar6[7] = puVar9;" (assignment_expression "puVar6[7] = puVar9" (subscript_expression "puVar6[7]" (identifier "puVar6") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "puVar9")) (; ";")) (expression_statement "puVar6[9] = param_3[9];" (assignment_expression "puVar6[9] = param_3[9]" (subscript_expression "puVar6[9]" (identifier "puVar6") ([ "[") (number_literal "9") (] "]")) (= "=") (subscript_expression "param_3[9]" (identifier "param_3") ([ "[") (number_literal "9") (] "]"))) (; ";")) (} "}")))) (expression_statement "uVar3 = param_3[8];" (assignment_expression "uVar3 = param_3[8]" (identifier "uVar3") (= "=") (subscript_expression "param_3[8]" (identifier "param_3") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "param_3[7] = param_3 + 9;" (assignment_expression "param_3[7] = param_3 + 9" (subscript_expression "param_3[7]" (identifier "param_3") ([ "[") (number_literal "7") (] "]")) (= "=") (binary_expression "param_3 + 9" (identifier "param_3") (+ "+") (number_literal "9"))) (; ";")) (expression_statement "param_3[8] = 0;" (assignment_expression "param_3[8] = 0" (subscript_expression "param_3[8]" (identifier "param_3") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(param_3 + 9) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 9) = 0" (pointer_expression "*(undefined1 *)(param_3 + 9)" (* "*") (cast_expression "(undefined1 *)(param_3 + 9)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 9)" (( "(") (binary_expression "param_3 + 9" (identifier "param_3") (+ "+") (number_literal "9")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6[8] = uVar3;" (assignment_expression "puVar6[8] = uVar3" (subscript_expression "puVar6[8]" (identifier "puVar6") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (if_statement "if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0x24);\n    do {\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    } while (puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);\n    puVar7 = puVar7 + 0x1a;\n  }" (if "if") (parenthesized_expression "(param_2 != iVar2)" (( "(") (binary_expression "param_2 != iVar2" (identifier "param_2") (!= "!=") (identifier "iVar2")) () ")")) (compound_statement "{\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0x24);\n    do {\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    } while (puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);\n    puVar7 = puVar7 + 0x1a;\n  }" ({ "{") (expression_statement "puVar6 = local_24;" (assignment_expression "puVar6 = local_24" (identifier "puVar6") (= "=") (identifier "local_24")) (; ";")) (expression_statement "puVar9 = (undefined4 *)(iVar2 + 0x24);" (assignment_expression "puVar9 = (undefined4 *)(iVar2 + 0x24)" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)(iVar2 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x24)" (( "(") (binary_expression "iVar2 + 0x24" (identifier "iVar2") (+ "+") (number_literal "0x24")) () ")")))) (; ";")) (do_statement "do {\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    } while (puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);" (do "do") (compound_statement "{\n      puVar7 = puVar6;\n      *puVar7 = puVar9[-9];\n      puVar7[1] = puVar9[-8];\n      puVar7[2] = puVar9[-7];\n      puVar7[3] = puVar9[-6];\n      puVar7[4] = puVar9[-5];\n      puVar7[5] = puVar9[-4];\n      uVar3 = puVar9[-3];\n      puVar7[7] = puVar7 + 9;\n      puVar7[6] = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }\n      puVar7[8] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 0xd;\n      puVar9 = puVar9 + 0xd;\n    }" ({ "{") (expression_statement "puVar7 = puVar6;" (assignment_expression "puVar7 = puVar6" (identifier "puVar7") (= "=") (identifier "puVar6")) (; ";")) (expression_statement "*puVar7 = puVar9[-9];" (assignment_expression "*puVar7 = puVar9[-9]" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (subscript_expression "puVar9[-9]" (identifier "puVar9") ([ "[") (number_literal "-9") (] "]"))) (; ";")) (expression_statement "puVar7[1] = puVar9[-8];" (assignment_expression "puVar7[1] = puVar9[-8]" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "puVar9[-8]" (identifier "puVar9") ([ "[") (number_literal "-8") (] "]"))) (; ";")) (expression_statement "puVar7[2] = puVar9[-7];" (assignment_expression "puVar7[2] = puVar9[-7]" (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar9[-7]" (identifier "puVar9") ([ "[") (number_literal "-7") (] "]"))) (; ";")) (expression_statement "puVar7[3] = puVar9[-6];" (assignment_expression "puVar7[3] = puVar9[-6]" (subscript_expression "puVar7[3]" (identifier "puVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "puVar9[-6]" (identifier "puVar9") ([ "[") (number_literal "-6") (] "]"))) (; ";")) (expression_statement "puVar7[4] = puVar9[-5];" (assignment_expression "puVar7[4] = puVar9[-5]" (subscript_expression "puVar7[4]" (identifier "puVar7") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "puVar9[-5]" (identifier "puVar9") ([ "[") (number_literal "-5") (] "]"))) (; ";")) (expression_statement "puVar7[5] = puVar9[-4];" (assignment_expression "puVar7[5] = puVar9[-4]" (subscript_expression "puVar7[5]" (identifier "puVar7") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "puVar9[-4]" (identifier "puVar9") ([ "[") (number_literal "-4") (] "]"))) (; ";")) (expression_statement "uVar3 = puVar9[-3];" (assignment_expression "uVar3 = puVar9[-3]" (identifier "uVar3") (= "=") (subscript_expression "puVar9[-3]" (identifier "puVar9") ([ "[") (number_literal "-3") (] "]"))) (; ";")) (expression_statement "puVar7[7] = puVar7 + 9;" (assignment_expression "puVar7[7] = puVar7 + 9" (subscript_expression "puVar7[7]" (identifier "puVar7") ([ "[") (number_literal "7") (] "]")) (= "=") (binary_expression "puVar7 + 9" (identifier "puVar7") (+ "+") (number_literal "9"))) (; ";")) (expression_statement "puVar7[6] = uVar3;" (assignment_expression "puVar7[6] = uVar3" (subscript_expression "puVar7[6]" (identifier "puVar7") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (if_statement "if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }\n      else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }" (if "if") (parenthesized_expression "((undefined4 *)puVar9[-2] == puVar9)" (( "(") (binary_expression "(undefined4 *)puVar9[-2] == puVar9" (cast_expression "(undefined4 *)puVar9[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[-2]" (identifier "puVar9") ([ "[") (number_literal "-2") (] "]"))) (== "==") (identifier "puVar9")) () ")")) (compound_statement "{\n        puVar7[9] = *puVar9;\n        puVar7[10] = puVar9[1];\n        puVar7[0xb] = puVar9[2];\n        puVar7[0xc] = puVar9[3];\n      }" ({ "{") (expression_statement "puVar7[9] = *puVar9;" (assignment_expression "puVar7[9] = *puVar9" (subscript_expression "puVar7[9]" (identifier "puVar7") ([ "[") (number_literal "9") (] "]")) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (expression_statement "puVar7[10] = puVar9[1];" (assignment_expression "puVar7[10] = puVar9[1]" (subscript_expression "puVar7[10]" (identifier "puVar7") ([ "[") (number_literal "10") (] "]")) (= "=") (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar7[0xb] = puVar9[2];" (assignment_expression "puVar7[0xb] = puVar9[2]" (subscript_expression "puVar7[0xb]" (identifier "puVar7") ([ "[") (number_literal "0xb") (] "]")) (= "=") (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar7[0xc] = puVar9[3];" (assignment_expression "puVar7[0xc] = puVar9[3]" (subscript_expression "puVar7[0xc]" (identifier "puVar7") ([ "[") (number_literal "0xc") (] "]")) (= "=") (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }" (else "else") (compound_statement "{\n        puVar7[7] = (undefined4 *)puVar9[-2];\n        puVar7[9] = *puVar9;\n      }" ({ "{") (expression_statement "puVar7[7] = (undefined4 *)puVar9[-2];" (assignment_expression "puVar7[7] = (undefined4 *)puVar9[-2]" (subscript_expression "puVar7[7]" (identifier "puVar7") ([ "[") (number_literal "7") (] "]")) (= "=") (cast_expression "(undefined4 *)puVar9[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[-2]" (identifier "puVar9") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "puVar7[9] = *puVar9;" (assignment_expression "puVar7[9] = *puVar9" (subscript_expression "puVar7[9]" (identifier "puVar7") ([ "[") (number_literal "9") (] "]")) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (} "}")))) (expression_statement "puVar7[8] = puVar9[-1];" (assignment_expression "puVar7[8] = puVar9[-1]" (subscript_expression "puVar7[8]" (identifier "puVar7") ([ "[") (number_literal "8") (] "]")) (= "=") (subscript_expression "puVar9[-1]" (identifier "puVar9") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar9[-2] = puVar9;" (assignment_expression "puVar9[-2] = puVar9" (subscript_expression "puVar9[-2]" (identifier "puVar9") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar9")) (; ";")) (expression_statement "puVar9[-1] = 0;" (assignment_expression "puVar9[-1] = 0" (subscript_expression "puVar9[-1]" (identifier "puVar9") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)puVar9 = 0;" (assignment_expression "*(undefined1 *)puVar9 = 0" (pointer_expression "*(undefined1 *)puVar9" (* "*") (cast_expression "(undefined1 *)puVar9" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar9"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6 = puVar7 + 0xd;" (assignment_expression "puVar6 = puVar7 + 0xd" (identifier "puVar6") (= "=") (binary_expression "puVar7 + 0xd" (identifier "puVar7") (+ "+") (number_literal "0xd"))) (; ";")) (expression_statement "puVar9 = puVar9 + 0xd;" (assignment_expression "puVar9 = puVar9 + 0xd" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 0xd" (identifier "puVar9") (+ "+") (number_literal "0xd"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd)" (( "(") (binary_expression "puVar7 + 0xd !=\n             local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd" (binary_expression "puVar7 + 0xd" (identifier "puVar7") (+ "+") (number_literal "0xd")) (!= "!=") (binary_expression "local_24 +\n             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd" (identifier "local_24") (+ "+") (binary_expression "((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd" (parenthesized_expression "((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1)" (( "(") (binary_expression "(((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1" (parenthesized_expression "(((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff)" (( "(") (binary_expression "((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff" (binary_expression "((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5" (parenthesized_expression "((uint)((param_2 + -0x34) - iVar2) >> 2)" (( "(") (binary_expression "(uint)((param_2 + -0x34) - iVar2) >> 2" (call_expression "(uint)((param_2 + -0x34) - iVar2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((param_2 + -0x34) - iVar2)" (( "(") (binary_expression "(param_2 + -0x34) - iVar2" (parenthesized_expression "(param_2 + -0x34)" (( "(") (binary_expression "param_2 + -0x34" (identifier "param_2") (+ "+") (number_literal "-0x34")) () ")")) (- "-") (identifier "iVar2")) () ")"))) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "0x4ec4ec5")) (& "&") (number_literal "0x3fffffff")) () ")")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "0xd")))) () ")")) (; ";")) (expression_statement "puVar7 = puVar7 + 0x1a;" (assignment_expression "puVar7 = puVar7 + 0x1a" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 0x1a" (identifier "puVar7") (+ "+") (number_literal "0x1a"))) (; ";")) (} "}"))) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" (identifier "iVar4") (= "=") (identifier "iVar2")) (; ";")) (if_statement "if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0x24);\n    do {\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }" (if "if") (parenthesized_expression "(param_2 != iVar1)" (( "(") (binary_expression "param_2 != iVar1" (identifier "param_2") (!= "!=") (identifier "iVar1")) () ")")) (compound_statement "{\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0x24);\n    do {\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }" ({ "{") (expression_statement "puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;" (assignment_expression "puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd" (identifier "puVar10") (= "=") (binary_expression "puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd" (identifier "puVar7") (+ "+") (binary_expression "((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd" (parenthesized_expression "((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1)" (( "(") (binary_expression "(((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1" (parenthesized_expression "(((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff)" (( "(") (binary_expression "((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff" (binary_expression "((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5" (parenthesized_expression "((iVar1 - param_2) - 0x34U >> 2)" (( "(") (binary_expression "(iVar1 - param_2) - 0x34U >> 2" (binary_expression "(iVar1 - param_2) - 0x34U" (parenthesized_expression "(iVar1 - param_2)" (( "(") (binary_expression "iVar1 - param_2" (identifier "iVar1") (- "-") (identifier "param_2")) () ")")) (- "-") (number_literal "0x34U")) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "0x4ec4ec5")) (& "&") (number_literal "0x3fffffff")) () ")")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "0xd")))) (; ";")) (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" (identifier "puVar6") (= "=") (identifier "puVar7")) (; ";")) (expression_statement "puVar9 = (undefined4 *)(param_2 + 0x24);" (assignment_expression "puVar9 = (undefined4 *)(param_2 + 0x24)" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)(param_2 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x24)" (( "(") (binary_expression "param_2 + 0x24" (identifier "param_2") (+ "+") (number_literal "0x24")) () ")")))) (; ";")) (do_statement "do {\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);" (do "do") (compound_statement "{\n      uVar3 = puVar9[-9];\n      puVar6[7] = puVar6 + 9;\n      *puVar6 = uVar3;\n      puVar6[1] = puVar9[-8];\n      puVar6[2] = puVar9[-7];\n      puVar6[3] = puVar9[-6];\n      puVar6[4] = puVar9[-5];\n      puVar6[5] = puVar9[-4];\n      puVar6[6] = puVar9[-3];\n      if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 0xd;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[8] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 0xd;\n      puVar7 = puVar10;\n    }" ({ "{") (expression_statement "uVar3 = puVar9[-9];" (assignment_expression "uVar3 = puVar9[-9]" (identifier "uVar3") (= "=") (subscript_expression "puVar9[-9]" (identifier "puVar9") ([ "[") (number_literal "-9") (] "]"))) (; ";")) (expression_statement "puVar6[7] = puVar6 + 9;" (assignment_expression "puVar6[7] = puVar6 + 9" (subscript_expression "puVar6[7]" (identifier "puVar6") ([ "[") (number_literal "7") (] "]")) (= "=") (binary_expression "puVar6 + 9" (identifier "puVar6") (+ "+") (number_literal "9"))) (; ";")) (expression_statement "*puVar6 = uVar3;" (assignment_expression "*puVar6 = uVar3" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar6[1] = puVar9[-8];" (assignment_expression "puVar6[1] = puVar9[-8]" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "puVar9[-8]" (identifier "puVar9") ([ "[") (number_literal "-8") (] "]"))) (; ";")) (expression_statement "puVar6[2] = puVar9[-7];" (assignment_expression "puVar6[2] = puVar9[-7]" (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar9[-7]" (identifier "puVar9") ([ "[") (number_literal "-7") (] "]"))) (; ";")) (expression_statement "puVar6[3] = puVar9[-6];" (assignment_expression "puVar6[3] = puVar9[-6]" (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "puVar9[-6]" (identifier "puVar9") ([ "[") (number_literal "-6") (] "]"))) (; ";")) (expression_statement "puVar6[4] = puVar9[-5];" (assignment_expression "puVar6[4] = puVar9[-5]" (subscript_expression "puVar6[4]" (identifier "puVar6") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "puVar9[-5]" (identifier "puVar9") ([ "[") (number_literal "-5") (] "]"))) (; ";")) (expression_statement "puVar6[5] = puVar9[-4];" (assignment_expression "puVar6[5] = puVar9[-4]" (subscript_expression "puVar6[5]" (identifier "puVar6") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "puVar9[-4]" (identifier "puVar9") ([ "[") (number_literal "-4") (] "]"))) (; ";")) (expression_statement "puVar6[6] = puVar9[-3];" (assignment_expression "puVar6[6] = puVar9[-3]" (subscript_expression "puVar6[6]" (identifier "puVar6") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "puVar9[-3]" (identifier "puVar9") ([ "[") (number_literal "-3") (] "]"))) (; ";")) (if_statement "if (puVar9 == (undefined4 *)puVar9[-2]) {\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }\n      else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }" (if "if") (parenthesized_expression "(puVar9 == (undefined4 *)puVar9[-2])" (( "(") (binary_expression "puVar9 == (undefined4 *)puVar9[-2]" (identifier "puVar9") (== "==") (cast_expression "(undefined4 *)puVar9[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[-2]" (identifier "puVar9") ([ "[") (number_literal "-2") (] "]")))) () ")")) (compound_statement "{\n        puVar6[9] = *puVar9;\n        puVar6[10] = puVar9[1];\n        puVar6[0xb] = puVar9[2];\n        puVar6[0xc] = puVar9[3];\n      }" ({ "{") (expression_statement "puVar6[9] = *puVar9;" (assignment_expression "puVar6[9] = *puVar9" (subscript_expression "puVar6[9]" (identifier "puVar6") ([ "[") (number_literal "9") (] "]")) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (expression_statement "puVar6[10] = puVar9[1];" (assignment_expression "puVar6[10] = puVar9[1]" (subscript_expression "puVar6[10]" (identifier "puVar6") ([ "[") (number_literal "10") (] "]")) (= "=") (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar6[0xb] = puVar9[2];" (assignment_expression "puVar6[0xb] = puVar9[2]" (subscript_expression "puVar6[0xb]" (identifier "puVar6") ([ "[") (number_literal "0xb") (] "]")) (= "=") (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar6[0xc] = puVar9[3];" (assignment_expression "puVar6[0xc] = puVar9[3]" (subscript_expression "puVar6[0xc]" (identifier "puVar6") ([ "[") (number_literal "0xc") (] "]")) (= "=") (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }" (else "else") (compound_statement "{\n        puVar6[7] = (undefined4 *)puVar9[-2];\n        puVar6[9] = *puVar9;\n      }" ({ "{") (expression_statement "puVar6[7] = (undefined4 *)puVar9[-2];" (assignment_expression "puVar6[7] = (undefined4 *)puVar9[-2]" (subscript_expression "puVar6[7]" (identifier "puVar6") ([ "[") (number_literal "7") (] "]")) (= "=") (cast_expression "(undefined4 *)puVar9[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[-2]" (identifier "puVar9") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "puVar6[9] = *puVar9;" (assignment_expression "puVar6[9] = *puVar9" (subscript_expression "puVar6[9]" (identifier "puVar6") ([ "[") (number_literal "9") (] "]")) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (} "}")))) (expression_statement "uVar3 = puVar9[-1];" (assignment_expression "uVar3 = puVar9[-1]" (identifier "uVar3") (= "=") (subscript_expression "puVar9[-1]" (identifier "puVar9") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar5 = puVar6 + 0xd;" (assignment_expression "puVar5 = puVar6 + 0xd" (identifier "puVar5") (= "=") (binary_expression "puVar6 + 0xd" (identifier "puVar6") (+ "+") (number_literal "0xd"))) (; ";")) (expression_statement "puVar9[-2] = puVar9;" (assignment_expression "puVar9[-2] = puVar9" (subscript_expression "puVar9[-2]" (identifier "puVar9") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar9")) (; ";")) (expression_statement "puVar9[-1] = 0;" (assignment_expression "puVar9[-1] = 0" (subscript_expression "puVar9[-1]" (identifier "puVar9") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6[8] = uVar3;" (assignment_expression "puVar6[8] = uVar3" (subscript_expression "puVar6[8]" (identifier "puVar6") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*(undefined1 *)puVar9 = 0;" (assignment_expression "*(undefined1 *)puVar9 = 0" (pointer_expression "*(undefined1 *)puVar9" (* "*") (cast_expression "(undefined1 *)puVar9" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar9"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" (identifier "puVar6") (= "=") (identifier "puVar5")) (; ";")) (expression_statement "puVar9 = puVar9 + 0xd;" (assignment_expression "puVar9 = puVar9 + 0xd" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 0xd" (identifier "puVar9") (+ "+") (number_literal "0xd"))) (; ";")) (expression_statement "puVar7 = puVar10;" (assignment_expression "puVar7 = puVar10" (identifier "puVar7") (= "=") (identifier "puVar10")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar5 != puVar10)" (( "(") (binary_expression "puVar5 != puVar10" (identifier "puVar5") (!= "!=") (identifier "puVar10")) () ")")) (; ";")) (} "}"))) (for_statement "for (; iVar4 != iVar1; iVar4 = iVar4 + 0x34) {\n    if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }\n  }" (for "for") (( "(") (; ";") (binary_expression "iVar4 != iVar1" (identifier "iVar4") (!= "!=") (identifier "iVar1")) (; ";") (assignment_expression "iVar4 = iVar4 + 0x34" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 0x34" (identifier "iVar4") (+ "+") (number_literal "0x34"))) () ")") (compound_statement "{\n    if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }\n  }" ({ "{") (if_statement "if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar4 + 0x1c) != iVar4 + 0x24)" (( "(") (binary_expression "*(int *)(iVar4 + 0x1c) != iVar4 + 0x24" (pointer_expression "*(int *)(iVar4 + 0x1c)" (* "*") (cast_expression "(int *)(iVar4 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x1c)" (( "(") (binary_expression "iVar4 + 0x1c" (identifier "iVar4") (+ "+") (number_literal "0x1c")) () ")")))) (!= "!=") (binary_expression "iVar4 + 0x24" (identifier "iVar4") (+ "+") (number_literal "0x24"))) () ")")) (compound_statement "{\n      FUN_00248220(*(int *)(iVar4 + 0x1c));\n    }" ({ "{") (expression_statement "FUN_00248220(*(int *)(iVar4 + 0x1c));" (call_expression "FUN_00248220(*(int *)(iVar4 + 0x1c))" (identifier "FUN_00248220") (argument_list "(*(int *)(iVar4 + 0x1c))" (( "(") (pointer_expression "*(int *)(iVar4 + 0x1c)" (* "*") (cast_expression "(int *)(iVar4 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x1c)" (( "(") (binary_expression "iVar4 + 0x1c" (identifier "iVar4") (+ "+") (number_literal "0x1c")) () ")")))) () ")"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (iVar2 != 0) {\n    FUN_00248220(iVar2);\n  }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_00248220(iVar2);\n  }" ({ "{") (expression_statement "FUN_00248220(iVar2);" (call_expression "FUN_00248220(iVar2)" (identifier "FUN_00248220") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (} "}"))) (expression_statement "*param_1 = (int)local_24;" (assignment_expression "*param_1 = (int)local_24" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)local_24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_24"))) (; ";")) (expression_statement "param_1[1] = (int)puVar7;" (assignment_expression "param_1[1] = (int)puVar7" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7"))) (; ";")) (expression_statement "param_1[2] = local_20;" (assignment_expression "param_1[2] = local_20" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_20")) (; ";")) (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 prototype: void
   _M_realloc_insert<gold::Output_section::Input_section_sort_entry>(vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>
   * this, iterator __position, Input_section_sort_entry * __args#0) */

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

{
  type_3 *var_13;
  type_1 var_17;
  type_1 var_15;
  type_1 var_14;
  type_2 sVar5;
  type_2 *var_18;
  type_1 var_22;
  int var_8;
  type_1 var_20;
  type_1 var_19;
  type_1 var_16;
  type_3 var_9;
  type_3 var_11;
  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_21;
  type_1 var_12;
  type_1 local_20;
  
  var_17 = (this->
           super__Vector_base<gold::Output_section::var_6,_std::var_1<gold::Output_section::var_6>var_3>var_7
           )._M_impl._M_finish;
  var_15 = (this->
           super__Vector_base<gold::Output_section::var_6,_std::var_1<gold::Output_section::var_6>var_3>var_7
           )._M_impl._M_start;
  var_8 = (int)var_17 - (int)var_15 >> 2;
  if (var_8 * -0x3b13b13b == 0) {
    var_9 = 1;
LAB_00178a05:
    var_11 = var_9 * 0x34;
  }
  else {
    var_9 = var_8 * -0x76276276;
    var_11 = 0xffffffd0;
    if (((type_3)(var_8 * -0x3b13b13b) < var_9 || var_8 * 0x3b13b13b == 0) && (var_9 < 0x4ec4ec5)) {
      if (var_9 == 0) {
        var_16 = (type_1)0x34;
        local_20 = (type_1)0x0;
        var_12 = (type_1)0x0;
        goto LAB_00178795;
      }
      goto LAB_00178a05;
    }
  }
  var_12 = (type_1)var_10(var_11);
  local_20 = (type_1)((int)&(var_12->input_section_).shndx_ + var_11);
  var_16 = var_12 + 1;
LAB_00178795:
  var_13 = (type_3 *)((int)var_12 + ((int)__position._M_current - (int)var_15));
  var_14 = (__args_0->section_name_)._M_dataplus._M_p;
  *var_13 = (__args_0->input_section_).shndx_;
  var_9 = (__args_0->input_section_).p2align_;
  var_13[7] = (type_3)(var_13 + 9);
  var_13[1] = var_9;
  var_13[2] = *(type_3 *)&(__args_0->input_section_).u1_;
  var_13[3] = *(type_3 *)((int)&(__args_0->input_section_).u1_ + 4);
  *(type_4 *)(var_13 + 4) = (__args_0->input_section_).u2_;
  var_13[5] = (__args_0->input_section_).section_order_index_;
  var_13[6] = __args_0->index_;
  var_5 = &(__args_0->section_name_).field_2;
  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_14 == var_5) {
    var_13[9] = (__args_0->section_name_).field_2._M_allocated_capacity;
    var_13[10] = *(type_3 *)((int)&(__args_0->section_name_).field_2 + 4);
    var_13[0xb] = *(type_3 *)((int)&(__args_0->section_name_).field_2 + 8);
    var_13[0xc] = *(type_3 *)((int)&(__args_0->section_name_).field_2 + 0xc);
  }
  else {
    var_13[7] = (type_3)var_14;
    var_13[9] = (__args_0->section_name_).field_2._M_allocated_capacity;
  }
  var_9 = (__args_0->section_name_)._M_string_length;
  (__args_0->section_name_)._M_dataplus._M_p = (type_1)var_5;
  (__args_0->section_name_)._M_string_length = 0;
  (__args_0->section_name_).field_2._M_local_buf[0] = '\0';
  var_13[8] = var_9;
  if (__position._M_current != var_15) {
    var_22 = var_12;
    var_5 = &(var_15->section_name_).field_2;
    do {
      var_16 = var_22;
      (var_16->input_section_).shndx_ = *(type_3 *)((int)var_5 + -0x24);
      (var_16->input_section_).p2align_ = var_5[-2]._M_allocated_capacity;
      *(type_5 *)&(var_16->input_section_).u1_ = *(type_5 *)((int)var_5 + -0x1c);
      *(type_5 *)((int)&(var_16->input_section_).u1_ + 4) =
           *(type_5 *)((int)var_5 + -0x18);
      (var_16->input_section_).u2_ = *(type_4 *)((int)var_5 + -0x14);
      (var_16->input_section_).section_order_index_ = var_5[-1]._M_allocated_capacity;
      var_9 = *(type_3 *)((int)var_5 + -0xc);
      (var_16->section_name_)._M_dataplus._M_p = (type_1)&(var_16->section_name_).field_2;
      var_16->index_ = var_9;
      var_14 = (((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_14 == var_5) {
        (var_16->section_name_).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
        *(type_5 *)((int)&(var_16->section_name_).field_2 + 4) =
             *(type_5 *)((int)var_5 + 4);
        *(type_5 *)((int)&(var_16->section_name_).field_2 + 8) =
             *(type_5 *)((int)var_5 + 8);
        *(type_5 *)((int)&(var_16->section_name_).field_2 + 0xc) =
             *(type_5 *)((int)var_5 + 0xc);
      }
      else {
        (var_16->section_name_)._M_dataplus._M_p = var_14;
        (var_16->section_name_).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
      }
      (var_16->section_name_)._M_string_length = *(type_2 *)((int)var_5 + -4);
      (((type_6 *)((int)var_5 + -8))->_M_dataplus)._M_p = (type_1)var_5;
      *(type_2 *)((int)var_5 + -4) = 0;
      var_5->_M_local_buf[0] = '\0';
      var_22 = var_16 + 1;
      var_5 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                 *)((int)var_5 + 0x34);
    } while (var_16 + 1 !=
             var_12 +
             (((type_3)((int)__position._M_current + (-0x34 - (int)var_15)) >> 2) * 0x4ec4ec5 &
             0x3fffffff) + 1);
    var_16 = var_16 + 2;
  }
  var_22 = var_15;
  if (__position._M_current != var_17) {
    var_21 = var_16 + (((type_3)((int)var_17 + (-0x34 - (int)__position._M_current)) >> 2) *
                         0x4ec4ec5 & 0x3fffffff) + 1;
    var_19 = var_16;
    var_5 = &((__position._M_current)->section_name_).field_2;
    do {
      sVar5 = *(type_2 *)((int)var_5 + -0x24);
      (var_19->section_name_)._M_dataplus._M_p = (type_1)&(var_19->section_name_).field_2;
      (var_19->input_section_).shndx_ = sVar5;
      (var_19->input_section_).p2align_ = var_5[-2]._M_allocated_capacity;
      *(type_2 *)&(var_19->input_section_).u1_ = *(type_2 *)((int)var_5 + -0x1c);
      *(type_2 *)((int)&(var_19->input_section_).u1_ + 4) = *(type_2 *)((int)var_5 + -0x18)
      ;
      (var_19->input_section_).u2_ = *(type_4 *)((int)var_5 + -0x14);
      (var_19->input_section_).section_order_index_ = var_5[-1]._M_allocated_capacity;
      var_19->index_ = *(type_2 *)((int)var_5 + -0xc);
      var_18 = (type_2 *)(((type_6 *)((int)var_5 + -8))->_M_dataplus)._M_p;
      if (var_5 ==
          (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_18) {
        (var_19->section_name_).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
        *(type_2 *)((int)&(var_19->section_name_).field_2 + 4) =
             *(type_2 *)((int)var_5 + 4);
        *(type_2 *)((int)&(var_19->section_name_).field_2 + 8) =
             *(type_2 *)((int)var_5 + 8);
        *(type_2 *)((int)&(var_19->section_name_).field_2 + 0xc) =
             *(type_2 *)((int)var_5 + 0xc);
      }
      else {
        (var_19->section_name_)._M_dataplus._M_p = (type_1)var_18;
        (var_19->section_name_).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
      }
      sVar5 = *(type_2 *)((int)var_5 + -4);
      var_20 = var_19 + 1;
      (((type_6 *)((int)var_5 + -8))->_M_dataplus)._M_p = (type_1)var_5;
      *(type_2 *)((int)var_5 + -4) = 0;
      (var_19->section_name_)._M_string_length = sVar5;
      var_5->_M_local_buf[0] = '\0';
      var_19 = var_20;
      var_5 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                 *)((int)var_5 + 0x34);
      var_16 = var_21;
    } while (var_20 != var_21);
  }
  for (; var_22 != var_17; var_22 = var_22 + 1) {
    var_14 = (var_22->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_14 != &(var_22->section_name_).field_2) {
      var_23(var_14);
    }
  }
  if (var_15 != (type_1)0x0) {
    var_23(var_15);
  }
  (this->
  super__Vector_base<gold::Output_section::var_6,_std::var_1<gold::Output_section::var_6>var_3>var_7
  )._M_impl._M_start = var_12;
  (this->
  super__Vector_base<gold::Output_section::var_6,_std::var_1<gold::Output_section::var_6>var_3>var_7
  )._M_impl._M_finish = var_16;
  (this->
  super__Vector_base<gold::Output_section::var_6,_std::var_1<gold::Output_section::var_6>var_3>var_7
  )._M_impl._M_end_of_storage = local_20;
  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: (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: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (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: (binary_expression left: (identifier) right: (number_literal)) 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)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (identifier)) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (if_statement condition: (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)))) (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: (number_literal)))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (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))) (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: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (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))))) alternative: (else_clause (compound_statement (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: (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: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (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: (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: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (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)) right: (number_literal))) right: (number_literal))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal)) right: (number_literal))) right: (number_literal)) right: (number_literal))) right: (number_literal))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (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)))) (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: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (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: (identifier))) (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: (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: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (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: (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: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (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;
  int iVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  uint uVar8;
  undefined4 *puVar9;
  undefined4 *puVar10;
  undefined4 *local_24;
  int local_20;
  
  iVar1 = param_1[1];
  iVar2 = *param_1;
  iVar4 = iVar1 - iVar2 >> 2;
  if (iVar4 * -0x3b13b13b == 0) {
    uVar8 = 1;
LAB_00178a05:
    local_20 = uVar8 * 0x34;
  }
  else {
    uVar8 = iVar4 * -0x76276276;
    local_20 = -0x30;
    if (((uint)(iVar4 * -0x3b13b13b) < uVar8 || iVar4 * 0x3b13b13b == 0) && (uVar8 < 0x4ec4ec5)) {
      if (uVar8 == 0) {
        puVar7 = (undefined4 *)0x34;
        local_20 = 0;
        local_24 = (undefined4 *)0x0;
        goto LAB_00178795;
      }
      goto LAB_00178a05;
    }
  }
  local_24 = (undefined4 *)FUN_00246670(local_20);
  local_20 = local_20 + (int)local_24;
  puVar7 = local_24 + 0xd;
LAB_00178795:
  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));
  puVar9 = (undefined4 *)param_3[7];
  *puVar6 = *param_3;
  uVar3 = param_3[1];
  puVar6[7] = puVar6 + 9;
  puVar6[1] = uVar3;
  puVar6[2] = param_3[2];
  puVar6[3] = param_3[3];
  puVar6[4] = param_3[4];
  puVar6[5] = param_3[5];
  puVar6[6] = param_3[6];
  if (puVar9 == param_3 + 9) {
    puVar6[9] = param_3[9];
    puVar6[10] = param_3[10];
    puVar6[0xb] = param_3[0xb];
    puVar6[0xc] = param_3[0xc];
  }
  else {
    puVar6[7] = puVar9;
    puVar6[9] = param_3[9];
  }
  uVar3 = param_3[8];
  param_3[7] = param_3 + 9;
  param_3[8] = 0;
  *(undefined1 *)(param_3 + 9) = 0;
  puVar6[8] = uVar3;
  if (param_2 != iVar2) {
    puVar6 = local_24;
    puVar9 = (undefined4 *)(iVar2 + 0x24);
    do {
      puVar7 = puVar6;
      *puVar7 = puVar9[-9];
      puVar7[1] = puVar9[-8];
      puVar7[2] = puVar9[-7];
      puVar7[3] = puVar9[-6];
      puVar7[4] = puVar9[-5];
      puVar7[5] = puVar9[-4];
      uVar3 = puVar9[-3];
      puVar7[7] = puVar7 + 9;
      puVar7[6] = uVar3;
      if ((undefined4 *)puVar9[-2] == puVar9) {
        puVar7[9] = *puVar9;
        puVar7[10] = puVar9[1];
        puVar7[0xb] = puVar9[2];
        puVar7[0xc] = puVar9[3];
      }
      else {
        puVar7[7] = (undefined4 *)puVar9[-2];
        puVar7[9] = *puVar9;
      }
      puVar7[8] = puVar9[-1];
      puVar9[-2] = puVar9;
      puVar9[-1] = 0;
      *(undefined1 *)puVar9 = 0;
      puVar6 = puVar7 + 0xd;
      puVar9 = puVar9 + 0xd;
    } while (puVar7 + 0xd !=
             local_24 +
             ((((uint)((param_2 + -0x34) - iVar2) >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd);
    puVar7 = puVar7 + 0x1a;
  }
  iVar4 = iVar2;
  if (param_2 != iVar1) {
    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x34U >> 2) * 0x4ec4ec5 & 0x3fffffff) + 1) * 0xd;
    puVar6 = puVar7;
    puVar9 = (undefined4 *)(param_2 + 0x24);
    do {
      uVar3 = puVar9[-9];
      puVar6[7] = puVar6 + 9;
      *puVar6 = uVar3;
      puVar6[1] = puVar9[-8];
      puVar6[2] = puVar9[-7];
      puVar6[3] = puVar9[-6];
      puVar6[4] = puVar9[-5];
      puVar6[5] = puVar9[-4];
      puVar6[6] = puVar9[-3];
      if (puVar9 == (undefined4 *)puVar9[-2]) {
        puVar6[9] = *puVar9;
        puVar6[10] = puVar9[1];
        puVar6[0xb] = puVar9[2];
        puVar6[0xc] = puVar9[3];
      }
      else {
        puVar6[7] = (undefined4 *)puVar9[-2];
        puVar6[9] = *puVar9;
      }
      uVar3 = puVar9[-1];
      puVar5 = puVar6 + 0xd;
      puVar9[-2] = puVar9;
      puVar9[-1] = 0;
      puVar6[8] = uVar3;
      *(undefined1 *)puVar9 = 0;
      puVar6 = puVar5;
      puVar9 = puVar9 + 0xd;
      puVar7 = puVar10;
    } while (puVar5 != puVar10);
  }
  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x34) {
    if (*(int *)(iVar4 + 0x1c) != iVar4 + 0x24) {
      FUN_00248220(*(int *)(iVar4 + 0x1c));
    }
  }
  if (iVar2 != 0) {
    FUN_00248220(iVar2);
  }
  *param_1 = (int)local_24;
  param_1[1] = (int)puVar7;
  param_1[2] = local_20;
  return;
}

