
/* 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)

{
  Input_section_sort_entry *pIVar1;
  Input_section_sort_entry *pIVar2;
  pointer pcVar3;
  size_type sVar4;
  undefined8 uVar5;
  anon_union_8_2_227b06d7_for_u1_ aVar6;
  anon_union_8_4_139239c7_for_u2_ aVar7;
  undefined8 uVar8;
  Input_section_sort_entry *pIVar9;
  pointer pIVar10;
  long lVar11;
  pointer pIVar12;
  pointer pIVar13;
  pointer pIVar14;
  pointer pIVar15;
  ulong uVar16;
  undefined8 *puVar17;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar18;
  ulong uVar19;
  pointer local_48;
  
  pIVar1 = (this->
           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>
           )._M_impl._M_finish;
  pIVar2 = (this->
           super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>
           )._M_impl._M_start;
  lVar11 = (long)pIVar1 - (long)pIVar2 >> 3;
  if (lVar11 * -0x71c71c71c71c71c7 == 0) {
    uVar16 = 1;
LAB_0020de25:
    uVar19 = uVar16 * 0x48;
  }
  else {
    uVar16 = lVar11 * 0x1c71c71c71c71c72;
    uVar19 = 0xfffffffffffffff0;
    if (((ulong)(lVar11 * -0x71c71c71c71c71c7) < uVar16 || lVar11 * 0x71c71c71c71c71c7 == 0) &&
       (uVar16 < 0x38e38e38e38e38f)) {
      if (uVar16 == 0) {
        pIVar15 = (pointer)0x48;
        local_48 = (pointer)0x0;
        pIVar12 = (pointer)0x0;
        goto LAB_0020dc12;
      }
      goto LAB_0020de25;
    }
  }
  pIVar12 = (pointer)operator_new(uVar19);
  local_48 = (pointer)((long)&(pIVar12->input_section_).shndx_ + uVar19);
  pIVar15 = pIVar12 + 1;
LAB_0020dc12:
  puVar17 = (undefined8 *)(((long)__position._M_current - (long)pIVar2) + (long)pIVar12);
  uVar5 = *(undefined8 *)&__args_0->input_section_;
  aVar6 = (__args_0->input_section_).u1_;
  aVar7 = (__args_0->input_section_).u2_;
  uVar8 = *(undefined8 *)&(__args_0->input_section_).section_order_index_;
  pcVar3 = (__args_0->section_name_)._M_dataplus._M_p;
  *(uint *)(puVar17 + 4) = __args_0->index_;
  puVar17[5] = puVar17 + 7;
  paVar18 = &(__args_0->section_name_).field_2;
  *puVar17 = uVar5;
  *(anon_union_8_2_227b06d7_for_u1_ *)(puVar17 + 1) = aVar6;
  *(anon_union_8_4_139239c7_for_u2_ *)(puVar17 + 2) = aVar7;
  puVar17[3] = uVar8;
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)pcVar3 == paVar18) {
    uVar5 = *(undefined8 *)((long)&(__args_0->section_name_).field_2 + 8);
    puVar17[7] = (__args_0->section_name_).field_2._M_allocated_capacity;
    puVar17[8] = uVar5;
  }
  else {
    puVar17[5] = pcVar3;
    puVar17[7] = (__args_0->section_name_).field_2._M_allocated_capacity;
  }
  sVar4 = (__args_0->section_name_)._M_string_length;
  (__args_0->section_name_)._M_dataplus._M_p = (pointer)paVar18;
  (__args_0->section_name_)._M_string_length = 0;
  puVar17[6] = sVar4;
  (__args_0->section_name_).field_2._M_local_buf[0] = '\0';
  if (__position._M_current != pIVar2) {
    pIVar10 = pIVar12;
    paVar18 = &(pIVar2->section_name_).field_2;
    do {
      pIVar15 = pIVar10;
      uVar5 = *(undefined8 *)((long)paVar18 + -0x38);
      aVar6 = *(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3);
      (pIVar15->input_section_).shndx_ = (int)uVar5;
      (pIVar15->input_section_).p2align_ = (int)((ulong)uVar5 >> 0x20);
      (pIVar15->input_section_).u1_ = aVar6;
      uVar5 = paVar18[-2]._M_allocated_capacity;
      (pIVar15->input_section_).u2_ = *(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28);
      *(undefined8 *)&(pIVar15->input_section_).section_order_index_ = uVar5;
      pIVar15->index_ = *(uint *)((long)paVar18 + -0x18);
      (pIVar15->section_name_)._M_dataplus._M_p = (pointer)&(pIVar15->section_name_).field_2;
      pcVar3 = (((string *)(paVar18 + -1))->_M_dataplus)._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)pcVar3 == paVar18) {
        uVar5 = *(undefined8 *)((long)paVar18 + 8);
        (pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;
        *(undefined8 *)((long)&(pIVar15->section_name_).field_2 + 8) = uVar5;
      }
      else {
        (pIVar15->section_name_)._M_dataplus._M_p = pcVar3;
        (pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;
      }
      (pIVar15->section_name_)._M_string_length = *(size_type *)((long)paVar18 + -8);
      (((string *)(paVar18 + -1))->_M_dataplus)._M_p = (pointer)paVar18;
      *(size_type *)((long)paVar18 + -8) = 0;
      paVar18->_M_local_buf[0] = '\0';
      pIVar10 = pIVar15 + 1;
      paVar18 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                 *)((long)paVar18 + 0x48);
    } while (pIVar15 + 1 !=
             (pointer)((long)&pIVar12[1].input_section_.shndx_ +
                      ((long)__position._M_current + (-0x48 - (long)pIVar2) & 0xfffffffffffffff8U)))
    ;
    pIVar15 = pIVar15 + 2;
  }
  pIVar9 = pIVar2;
  if (__position._M_current != pIVar1) {
    pIVar10 = (pointer)((long)&pIVar15[1].input_section_.shndx_ +
                       ((long)pIVar1 + (-0x48 - (long)__position._M_current) & 0xfffffffffffffff8U))
    ;
    pIVar14 = pIVar15;
    paVar18 = &((__position._M_current)->section_name_).field_2;
    do {
      uVar5 = *(undefined8 *)((long)paVar18 + -0x38);
      aVar6 = *(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3);
      aVar7 = *(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28);
      uVar8 = paVar18[-2]._M_allocated_capacity;
      pIVar14->index_ = *(uint *)((long)paVar18 + -0x18);
      (pIVar14->section_name_)._M_dataplus._M_p = (pointer)&(pIVar14->section_name_).field_2;
      pcVar3 = (((string *)(paVar18 + -1))->_M_dataplus)._M_p;
      (pIVar14->input_section_).shndx_ = (int)uVar5;
      (pIVar14->input_section_).p2align_ = (int)((ulong)uVar5 >> 0x20);
      (pIVar14->input_section_).u1_ = aVar6;
      (pIVar14->input_section_).u2_ = aVar7;
      *(undefined8 *)&(pIVar14->input_section_).section_order_index_ = uVar8;
      if (paVar18 ==
          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)pcVar3) {
        uVar5 = *(undefined8 *)((long)paVar18 + 8);
        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;
        *(undefined8 *)((long)&(pIVar14->section_name_).field_2 + 8) = uVar5;
      }
      else {
        (pIVar14->section_name_)._M_dataplus._M_p = pcVar3;
        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;
      }
      sVar4 = *(size_type *)((long)paVar18 + -8);
      pIVar13 = pIVar14 + 1;
      (((string *)(paVar18 + -1))->_M_dataplus)._M_p = (pointer)paVar18;
      *(size_type *)((long)paVar18 + -8) = 0;
      (pIVar14->section_name_)._M_string_length = sVar4;
      paVar18->_M_local_buf[0] = '\0';
      pIVar14 = pIVar13;
      paVar18 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                 *)((long)paVar18 + 0x48);
      pIVar15 = pIVar10;
    } while (pIVar13 != pIVar10);
  }
  for (; pIVar9 != pIVar1; pIVar9 = pIVar9 + 1) {
    pcVar3 = (pIVar9->section_name_)._M_dataplus._M_p;
    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
         *)pcVar3 != &(pIVar9->section_name_).field_2) {
      operator_delete(pcVar3);
    }
  }
  if (pIVar2 != (Input_section_sort_entry *)0x0) {
    operator_delete(pIVar2);
  }
  (this->
  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>
  )._M_impl._M_start = pIVar12;
  (this->
  super__Vector_base<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>
  )._M_impl._M_finish = pIVar15;
  (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_48;
  return;
}



void FUN_0020db90(long *param_1,long param_2,undefined8 *param_3)

{
  long lVar1;
  long lVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  long lVar8;
  undefined8 *puVar9;
  undefined8 *puVar10;
  undefined8 *puVar11;
  ulong uVar12;
  undefined8 *puVar13;
  undefined8 *puVar14;
  long local_48;
  
  lVar1 = param_1[1];
  lVar2 = *param_1;
  lVar8 = lVar1 - lVar2 >> 3;
  if (lVar8 * -0x71c71c71c71c71c7 == 0) {
    uVar12 = 1;
LAB_0020de25:
    local_48 = uVar12 * 0x48;
  }
  else {
    uVar12 = lVar8 * 0x1c71c71c71c71c72;
    local_48 = -0x10;
    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&
       (uVar12 < 0x38e38e38e38e38f)) {
      if (uVar12 == 0) {
        puVar11 = (undefined8 *)0x48;
        local_48 = 0;
        puVar9 = (undefined8 *)0x0;
        goto LAB_0020dc12;
      }
      goto LAB_0020de25;
    }
  }
  puVar9 = (undefined8 *)FUN_002d94a0(local_48);
  local_48 = (long)puVar9 + local_48;
  puVar11 = puVar9 + 9;
LAB_0020dc12:
  puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9);
  uVar4 = *param_3;
  uVar5 = param_3[1];
  uVar6 = param_3[2];
  uVar7 = param_3[3];
  puVar3 = (undefined8 *)param_3[5];
  *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(param_3 + 4);
  puVar13[5] = puVar13 + 7;
  *puVar13 = uVar4;
  puVar13[1] = uVar5;
  puVar13[2] = uVar6;
  puVar13[3] = uVar7;
  if (puVar3 == param_3 + 7) {
    uVar4 = param_3[8];
    puVar13[7] = param_3[7];
    puVar13[8] = uVar4;
  }
  else {
    puVar13[5] = puVar3;
    puVar13[7] = param_3[7];
  }
  uVar4 = param_3[6];
  param_3[5] = param_3 + 7;
  param_3[6] = 0;
  puVar13[6] = uVar4;
  *(undefined1 *)(param_3 + 7) = 0;
  if (param_2 != lVar2) {
    puVar3 = puVar9;
    puVar13 = (undefined8 *)(lVar2 + 0x38);
    do {
      puVar11 = puVar3;
      uVar4 = puVar13[-6];
      *puVar11 = puVar13[-7];
      puVar11[1] = uVar4;
      uVar4 = puVar13[-4];
      puVar11[2] = puVar13[-5];
      puVar11[3] = uVar4;
      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);
      puVar11[5] = puVar11 + 7;
      if ((undefined8 *)puVar13[-2] == puVar13) {
        uVar4 = puVar13[1];
        puVar11[7] = *puVar13;
        puVar11[8] = uVar4;
      }
      else {
        puVar11[5] = (undefined8 *)puVar13[-2];
        puVar11[7] = *puVar13;
      }
      puVar11[6] = puVar13[-1];
      puVar13[-2] = puVar13;
      puVar13[-1] = 0;
      *(undefined1 *)puVar13 = 0;
      puVar3 = puVar11 + 9;
      puVar13 = puVar13 + 9;
    } while (puVar11 + 9 !=
             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)
            );
    puVar11 = puVar11 + 0x12;
  }
  lVar8 = lVar2;
  if (param_2 != lVar1) {
    puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)
    ;
    puVar13 = puVar11;
    puVar14 = (undefined8 *)(param_2 + 0x38);
    do {
      uVar4 = puVar14[-7];
      uVar5 = puVar14[-6];
      uVar6 = puVar14[-5];
      uVar7 = puVar14[-4];
      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);
      puVar13[5] = puVar13 + 7;
      puVar11 = (undefined8 *)puVar14[-2];
      *puVar13 = uVar4;
      puVar13[1] = uVar5;
      puVar13[2] = uVar6;
      puVar13[3] = uVar7;
      if (puVar14 == puVar11) {
        uVar4 = puVar14[1];
        puVar13[7] = *puVar14;
        puVar13[8] = uVar4;
      }
      else {
        puVar13[5] = puVar11;
        puVar13[7] = *puVar14;
      }
      uVar4 = puVar14[-1];
      puVar10 = puVar13 + 9;
      puVar14[-2] = puVar14;
      puVar14[-1] = 0;
      puVar13[6] = uVar4;
      *(undefined1 *)puVar14 = 0;
      puVar13 = puVar10;
      puVar14 = puVar14 + 9;
      puVar11 = puVar3;
    } while (puVar10 != puVar3);
  }
  for (; lVar8 != lVar1; lVar8 = lVar8 + 0x48) {
    if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {
      FUN_002dac70();
    }
  }
  if (lVar2 != 0) {
    FUN_002dac70(lVar2);
  }
  *param_1 = (long)puVar9;
  param_1[1] = (long)puVar11;
  param_1[2] = local_48;
  return;
}


PUSH R15
MOV R15,RDX
MOV RDX,-0x71c71c71c71c71c7
PUSH R14
PUSH R13
PUSH R12
MOV R12,RDI
PUSH RBP
PUSH RBX
MOV RBX,RSI
SUB RSP,0x18
MOV R14,qword ptr [RDI + 0x8]
MOV RBP,qword ptr [RDI]
MOV RAX,R14
SUB RAX,RBP
SAR RAX,0x3
IMUL RAX,RDX
MOV RDX,RSI
SUB RDX,RBP
TEST RAX,RAX
JZ 0x0020de20
LEA RCX,[RAX + RAX*0x1]
MOV RSI,-0x10
CMP RAX,RCX
JBE 0x0020ddf0
MOV RDI,RSI
MOV qword ptr [RSP + 0x8],RDX
MOV qword ptr [RSP],RSI
CALL 0x002d94a0
MOV RSI,qword ptr [RSP]
MOV RDX,qword ptr [RSP + 0x8]
MOV R13,RAX
LEA RAX,[RAX + RSI*0x1]
MOV qword ptr [RSP],RAX
LEA RAX,[R13 + 0x48]
MOV ECX,dword ptr [R15 + 0x20]
ADD RDX,R13
MOVDQU XMM6,xmmword ptr [R15]
MOVDQU XMM7,xmmword ptr [R15 + 0x10]
MOV RSI,qword ptr [R15 + 0x28]
MOV dword ptr [RDX + 0x20],ECX
LEA RCX,[RDX + 0x38]
MOV qword ptr [RDX + 0x28],RCX
LEA RCX,[R15 + 0x38]
MOVUPS xmmword ptr [RDX],XMM6
MOVUPS xmmword ptr [RDX + 0x10],XMM7
CMP RSI,RCX
JZ 0x0020de40
MOV qword ptr [RDX + 0x28],RSI
MOV RSI,qword ptr [R15 + 0x38]
MOV qword ptr [RDX + 0x38],RSI
MOV RSI,qword ptr [R15 + 0x30]
MOV qword ptr [R15 + 0x28],RCX
MOV qword ptr [R15 + 0x30],0x0
MOV qword ptr [RDX + 0x30],RSI
MOV byte ptr [R15 + 0x38],0x0
CMP RBX,RBP
JZ 0x0020dcfc
LEA RAX,[RBX + -0x48]
LEA RDX,[RBP + 0x38]
SUB RAX,RBP
SHR RAX,0x3
LEA RSI,[R13 + RAX*0x8 + 0x48]
MOV RAX,R13
JMP 0x0020dcc0
MOV qword ptr [RAX + 0x28],RCX
MOV RCX,qword ptr [RDX]
MOV qword ptr [RAX + 0x38],RCX
MOV RCX,qword ptr [RDX + -0x8]
ADD RAX,0x48
MOV qword ptr [RAX + -0x18],RCX
MOV qword ptr [RDX + -0x10],RDX
ADD RDX,0x48
MOV qword ptr [RDX + -0x50],0x0
MOV byte ptr [RDX + -0x48],0x0
CMP RAX,RSI
JZ 0x0020dcf8
MOVDQU XMM0,xmmword ptr [RDX + -0x38]
MOVUPS xmmword ptr [RAX],XMM0
MOVDQU XMM1,xmmword ptr [RDX + -0x28]
MOVUPS xmmword ptr [RAX + 0x10],XMM1
MOV ECX,dword ptr [RDX + -0x18]
MOV dword ptr [RAX + 0x20],ECX
LEA RCX,[RAX + 0x38]
MOV qword ptr [RAX + 0x28],RCX
MOV RCX,qword ptr [RDX + -0x10]
CMP RCX,RDX
JNZ 0x0020dc90
MOVDQU XMM4,xmmword ptr [RDX]
MOVUPS xmmword ptr [RAX + 0x38],XMM4
JMP 0x0020dc9b
ADD RAX,0x48
CMP RBX,R14
JZ 0x0020dd88
MOV RCX,R14
LEA RDX,[RBX + 0x38]
SUB RCX,RBX
SUB RCX,0x48
SHR RCX,0x3
LEA RBX,[RAX + RCX*0x8 + 0x48]
JMP 0x0020dd50
MOV qword ptr [RAX + 0x28],RCX
MOV RCX,qword ptr [RDX]
MOV qword ptr [RAX + 0x38],RCX
MOV RCX,qword ptr [RDX + -0x8]
ADD RAX,0x48
MOV qword ptr [RDX + -0x10],RDX
ADD RDX,0x48
MOV qword ptr [RDX + -0x50],0x0
MOV qword ptr [RAX + -0x18],RCX
MOV byte ptr [RDX + -0x48],0x0
CMP RAX,RBX
JZ 0x0020dd90
MOV ECX,dword ptr [RDX + -0x18]
MOVDQU XMM2,xmmword ptr [RDX + -0x38]
MOVDQU XMM3,xmmword ptr [RDX + -0x28]
MOV dword ptr [RAX + 0x20],ECX
LEA RCX,[RAX + 0x38]
MOV qword ptr [RAX + 0x28],RCX
MOV RCX,qword ptr [RDX + -0x10]
MOVUPS xmmword ptr [RAX],XMM2
MOVUPS xmmword ptr [RAX + 0x10],XMM3
CMP RDX,RCX
JNZ 0x0020dd20
MOVDQU XMM5,xmmword ptr [RDX]
MOVUPS xmmword ptr [RAX + 0x38],XMM5
JMP 0x0020dd2b
MOV RBX,RAX
NOP dword ptr [RAX + RAX*0x1]
MOV R15,RBP
CMP RBP,R14
JZ 0x0020ddbb
NOP dword ptr [RAX + RAX*0x1]
MOV RDI,qword ptr [R15 + 0x28]
LEA RAX,[R15 + 0x38]
CMP RDI,RAX
JZ 0x0020ddb2
CALL 0x002dac70
ADD R15,0x48
CMP R15,R14
JNZ 0x0020dda0
TEST RBP,RBP
JZ 0x0020ddc8
MOV RDI,RBP
CALL 0x002dac70
MOV RAX,qword ptr [RSP]
MOV qword ptr [R12],R13
MOV qword ptr [R12 + 0x8],RBX
MOV qword ptr [R12 + 0x10],RAX
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RAX,0x38e38e38e38e38e
CMP RCX,RAX
JA 0x0020dbe9
TEST RCX,RCX
JNZ 0x0020de25
MOV EAX,0x48
MOV qword ptr [RSP],0x0
XOR R13D,R13D
JMP 0x0020dc12
MOV ECX,0x1
LEA RAX,[RCX + RCX*0x8]
LEA RSI,[RAX*0x8]
JMP 0x0020dbe9
MOVDQU XMM6,xmmword ptr [R15 + 0x38]
MOVUPS xmmword ptr [RDX + 0x38],XMM6
JMP 0x0020dc53
(translation_unit "void FUN_0020db90(long *param_1,long param_2,undefined8 *param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  undefined8 *puVar11;\n  ulong uVar12;\n  undefined8 *puVar13;\n  undefined8 *puVar14;\n  long local_48;\n  \n  lVar1 = param_1[1];\n  lVar2 = *param_1;\n  lVar8 = lVar1 - lVar2 >> 3;\n  if (lVar8 * -0x71c71c71c71c71c7 == 0) {\n    uVar12 = 1;\nLAB_0020de25:\n    local_48 = uVar12 * 0x48;\n  }\n  else {\n    uVar12 = lVar8 * 0x1c71c71c71c71c72;\n    local_48 = -0x10;\n    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }\n  puVar9 = (undefined8 *)FUN_002d94a0(local_48);\n  local_48 = (long)puVar9 + local_48;\n  puVar11 = puVar9 + 9;\nLAB_0020dc12:\n  puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9);\n  uVar4 = *param_3;\n  uVar5 = param_3[1];\n  uVar6 = param_3[2];\n  uVar7 = param_3[3];\n  puVar3 = (undefined8 *)param_3[5];\n  *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(param_3 + 4);\n  puVar13[5] = puVar13 + 7;\n  *puVar13 = uVar4;\n  puVar13[1] = uVar5;\n  puVar13[2] = uVar6;\n  puVar13[3] = uVar7;\n  if (puVar3 == param_3 + 7) {\n    uVar4 = param_3[8];\n    puVar13[7] = param_3[7];\n    puVar13[8] = uVar4;\n  }\n  else {\n    puVar13[5] = puVar3;\n    puVar13[7] = param_3[7];\n  }\n  uVar4 = param_3[6];\n  param_3[5] = param_3 + 7;\n  param_3[6] = 0;\n  puVar13[6] = uVar4;\n  *(undefined1 *)(param_3 + 7) = 0;\n  if (param_2 != lVar2) {\n    puVar3 = puVar9;\n    puVar13 = (undefined8 *)(lVar2 + 0x38);\n    do {\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    } while (puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            );\n    puVar11 = puVar11 + 0x12;\n  }\n  lVar8 = lVar2;\n  if (param_2 != lVar1) {\n    puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)\n    ;\n    puVar13 = puVar11;\n    puVar14 = (undefined8 *)(param_2 + 0x38);\n    do {\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    } while (puVar10 != puVar3);\n  }\n  for (; lVar8 != lVar1; lVar8 = lVar8 + 0x48) {\n    if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {\n      FUN_002dac70();\n    }\n  }\n  if (lVar2 != 0) {\n    FUN_002dac70(lVar2);\n  }\n  *param_1 = (long)puVar9;\n  param_1[1] = (long)puVar11;\n  param_1[2] = local_48;\n  return;\n}\n\n" (function_definition "void FUN_0020db90(long *param_1,long param_2,undefined8 *param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  undefined8 *puVar11;\n  ulong uVar12;\n  undefined8 *puVar13;\n  undefined8 *puVar14;\n  long local_48;\n  \n  lVar1 = param_1[1];\n  lVar2 = *param_1;\n  lVar8 = lVar1 - lVar2 >> 3;\n  if (lVar8 * -0x71c71c71c71c71c7 == 0) {\n    uVar12 = 1;\nLAB_0020de25:\n    local_48 = uVar12 * 0x48;\n  }\n  else {\n    uVar12 = lVar8 * 0x1c71c71c71c71c72;\n    local_48 = -0x10;\n    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }\n  puVar9 = (undefined8 *)FUN_002d94a0(local_48);\n  local_48 = (long)puVar9 + local_48;\n  puVar11 = puVar9 + 9;\nLAB_0020dc12:\n  puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9);\n  uVar4 = *param_3;\n  uVar5 = param_3[1];\n  uVar6 = param_3[2];\n  uVar7 = param_3[3];\n  puVar3 = (undefined8 *)param_3[5];\n  *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(param_3 + 4);\n  puVar13[5] = puVar13 + 7;\n  *puVar13 = uVar4;\n  puVar13[1] = uVar5;\n  puVar13[2] = uVar6;\n  puVar13[3] = uVar7;\n  if (puVar3 == param_3 + 7) {\n    uVar4 = param_3[8];\n    puVar13[7] = param_3[7];\n    puVar13[8] = uVar4;\n  }\n  else {\n    puVar13[5] = puVar3;\n    puVar13[7] = param_3[7];\n  }\n  uVar4 = param_3[6];\n  param_3[5] = param_3 + 7;\n  param_3[6] = 0;\n  puVar13[6] = uVar4;\n  *(undefined1 *)(param_3 + 7) = 0;\n  if (param_2 != lVar2) {\n    puVar3 = puVar9;\n    puVar13 = (undefined8 *)(lVar2 + 0x38);\n    do {\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    } while (puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            );\n    puVar11 = puVar11 + 0x12;\n  }\n  lVar8 = lVar2;\n  if (param_2 != lVar1) {\n    puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)\n    ;\n    puVar13 = puVar11;\n    puVar14 = (undefined8 *)(param_2 + 0x38);\n    do {\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    } while (puVar10 != puVar3);\n  }\n  for (; lVar8 != lVar1; lVar8 = lVar8 + 0x48) {\n    if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {\n      FUN_002dac70();\n    }\n  }\n  if (lVar2 != 0) {\n    FUN_002dac70(lVar2);\n  }\n  *param_1 = (long)puVar9;\n  param_1[1] = (long)puVar11;\n  param_1[2] = local_48;\n  return;\n}" primitive_type (function_declarator "FUN_0020db90(long *param_1,long param_2,undefined8 *param_3)" identifier (parameter_list "(long *param_1,long param_2,undefined8 *param_3)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  undefined8 *puVar11;\n  ulong uVar12;\n  undefined8 *puVar13;\n  undefined8 *puVar14;\n  long local_48;\n  \n  lVar1 = param_1[1];\n  lVar2 = *param_1;\n  lVar8 = lVar1 - lVar2 >> 3;\n  if (lVar8 * -0x71c71c71c71c71c7 == 0) {\n    uVar12 = 1;\nLAB_0020de25:\n    local_48 = uVar12 * 0x48;\n  }\n  else {\n    uVar12 = lVar8 * 0x1c71c71c71c71c72;\n    local_48 = -0x10;\n    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }\n  puVar9 = (undefined8 *)FUN_002d94a0(local_48);\n  local_48 = (long)puVar9 + local_48;\n  puVar11 = puVar9 + 9;\nLAB_0020dc12:\n  puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9);\n  uVar4 = *param_3;\n  uVar5 = param_3[1];\n  uVar6 = param_3[2];\n  uVar7 = param_3[3];\n  puVar3 = (undefined8 *)param_3[5];\n  *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(param_3 + 4);\n  puVar13[5] = puVar13 + 7;\n  *puVar13 = uVar4;\n  puVar13[1] = uVar5;\n  puVar13[2] = uVar6;\n  puVar13[3] = uVar7;\n  if (puVar3 == param_3 + 7) {\n    uVar4 = param_3[8];\n    puVar13[7] = param_3[7];\n    puVar13[8] = uVar4;\n  }\n  else {\n    puVar13[5] = puVar3;\n    puVar13[7] = param_3[7];\n  }\n  uVar4 = param_3[6];\n  param_3[5] = param_3 + 7;\n  param_3[6] = 0;\n  puVar13[6] = uVar4;\n  *(undefined1 *)(param_3 + 7) = 0;\n  if (param_2 != lVar2) {\n    puVar3 = puVar9;\n    puVar13 = (undefined8 *)(lVar2 + 0x38);\n    do {\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    } while (puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            );\n    puVar11 = puVar11 + 0x12;\n  }\n  lVar8 = lVar2;\n  if (param_2 != lVar1) {\n    puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)\n    ;\n    puVar13 = puVar11;\n    puVar14 = (undefined8 *)(param_2 + 0x38);\n    do {\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    } while (puVar10 != puVar3);\n  }\n  for (; lVar8 != lVar1; lVar8 = lVar8 + 0x48) {\n    if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {\n      FUN_002dac70();\n    }\n  }\n  if (lVar2 != 0) {\n    FUN_002dac70(lVar2);\n  }\n  *param_1 = (long)puVar9;\n  param_1[1] = (long)puVar11;\n  param_1[2] = local_48;\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined8 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined8 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "undefined8 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined8 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "long local_48;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar1 = param_1[1];" (assignment_expression "lVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "lVar2 = *param_1;" (assignment_expression "lVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "lVar8 = lVar1 - lVar2 >> 3;" (assignment_expression "lVar8 = lVar1 - lVar2 >> 3" identifier = (binary_expression "lVar1 - lVar2 >> 3" (binary_expression "lVar1 - lVar2" identifier - identifier) >> number_literal)) ;) (if_statement "if (lVar8 * -0x71c71c71c71c71c7 == 0) {\n    uVar12 = 1;\nLAB_0020de25:\n    local_48 = uVar12 * 0x48;\n  }\n  else {\n    uVar12 = lVar8 * 0x1c71c71c71c71c72;\n    local_48 = -0x10;\n    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }" if (parenthesized_expression "(lVar8 * -0x71c71c71c71c71c7 == 0)" ( (binary_expression "lVar8 * -0x71c71c71c71c71c7 == 0" (binary_expression "lVar8 * -0x71c71c71c71c71c7" identifier * number_literal) == number_literal) )) (compound_statement "{\n    uVar12 = 1;\nLAB_0020de25:\n    local_48 = uVar12 * 0x48;\n  }" { (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) (labeled_statement "LAB_0020de25:\n    local_48 = uVar12 * 0x48;" statement_identifier : (expression_statement "local_48 = uVar12 * 0x48;" (assignment_expression "local_48 = uVar12 * 0x48" identifier = (binary_expression "uVar12 * 0x48" identifier * number_literal)) ;)) }) (else_clause "else {\n    uVar12 = lVar8 * 0x1c71c71c71c71c72;\n    local_48 = -0x10;\n    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }" else (compound_statement "{\n    uVar12 = lVar8 * 0x1c71c71c71c71c72;\n    local_48 = -0x10;\n    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }" { (expression_statement "uVar12 = lVar8 * 0x1c71c71c71c71c72;" (assignment_expression "uVar12 = lVar8 * 0x1c71c71c71c71c72" identifier = (binary_expression "lVar8 * 0x1c71c71c71c71c72" identifier * number_literal)) ;) (expression_statement "local_48 = -0x10;" (assignment_expression "local_48 = -0x10" identifier = number_literal) ;) (if_statement "if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }" if (parenthesized_expression "(((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f))" ( (binary_expression "((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)" (parenthesized_expression "((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0)" ( (binary_expression "(ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0" (binary_expression "(ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12" (call_expression "(ulong)(lVar8 * -0x71c71c71c71c71c7)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(lVar8 * -0x71c71c71c71c71c7)" ( (binary_expression "lVar8 * -0x71c71c71c71c71c7" identifier * number_literal) ))) < identifier) || (binary_expression "lVar8 * 0x71c71c71c71c71c7 == 0" (binary_expression "lVar8 * 0x71c71c71c71c71c7" identifier * number_literal) == number_literal)) )) && (parenthesized_expression "(uVar12 < 0x38e38e38e38e38f)" ( (binary_expression "uVar12 < 0x38e38e38e38e38f" identifier < number_literal) ))) )) (compound_statement "{\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }" { (if_statement "if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }" { (expression_statement "puVar11 = (undefined8 *)0x48;" (assignment_expression "puVar11 = (undefined8 *)0x48" identifier = (cast_expression "(undefined8 *)0x48" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = (undefined8 *)0x0;" (assignment_expression "puVar9 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0020dc12;" goto statement_identifier ;) })) (goto_statement "goto LAB_0020de25;" goto statement_identifier ;) })) }))) (expression_statement "puVar9 = (undefined8 *)FUN_002d94a0(local_48);" (assignment_expression "puVar9 = (undefined8 *)FUN_002d94a0(local_48)" identifier = (cast_expression "(undefined8 *)FUN_002d94a0(local_48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d94a0(local_48)" identifier (argument_list "(local_48)" ( identifier ))))) ;) (expression_statement "local_48 = (long)puVar9 + local_48;" (assignment_expression "local_48 = (long)puVar9 + local_48" identifier = (binary_expression "(long)puVar9 + local_48" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "puVar11 = puVar9 + 9;" (assignment_expression "puVar11 = puVar9 + 9" identifier = (binary_expression "puVar9 + 9" identifier + number_literal)) ;) (labeled_statement "LAB_0020dc12:\n  puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9);" statement_identifier : (expression_statement "puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9);" (assignment_expression "puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9)" identifier = (cast_expression "(undefined8 *)((param_2 - lVar2) + (long)puVar9)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((param_2 - lVar2) + (long)puVar9)" ( (binary_expression "(param_2 - lVar2) + (long)puVar9" (parenthesized_expression "(param_2 - lVar2)" ( (binary_expression "param_2 - lVar2" identifier - identifier) )) + (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;)) (expression_statement "uVar4 = *param_3;" (assignment_expression "uVar4 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar5 = param_3[1];" (assignment_expression "uVar5 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = param_3[2];" (assignment_expression "uVar6 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = param_3[3];" (assignment_expression "uVar7 = param_3[3]" identifier = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (expression_statement "puVar3 = (undefined8 *)param_3[5];" (assignment_expression "puVar3 = (undefined8 *)param_3[5]" identifier = (cast_expression "(undefined8 *)param_3[5]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[5]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined4 *)(puVar13 + 4) = *(undefined4 *)(param_3 + 4);" (assignment_expression "*(undefined4 *)(puVar13 + 4) = *(undefined4 *)(param_3 + 4)" (pointer_expression "*(undefined4 *)(puVar13 + 4)" * (cast_expression "(undefined4 *)(puVar13 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 4)" ( (binary_expression "puVar13 + 4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_3 + 4)" * (cast_expression "(undefined4 *)(param_3 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (expression_statement "puVar13[5] = puVar13 + 7;" (assignment_expression "puVar13[5] = puVar13 + 7" (subscript_expression "puVar13[5]" identifier [ number_literal ]) = (binary_expression "puVar13 + 7" identifier + number_literal)) ;) (expression_statement "*puVar13 = uVar4;" (assignment_expression "*puVar13 = uVar4" (pointer_expression "*puVar13" * identifier) = identifier) ;) (expression_statement "puVar13[1] = uVar5;" (assignment_expression "puVar13[1] = uVar5" (subscript_expression "puVar13[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[2] = uVar6;" (assignment_expression "puVar13[2] = uVar6" (subscript_expression "puVar13[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[3] = uVar7;" (assignment_expression "puVar13[3] = uVar7" (subscript_expression "puVar13[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar3 == param_3 + 7) {\n    uVar4 = param_3[8];\n    puVar13[7] = param_3[7];\n    puVar13[8] = uVar4;\n  }\n  else {\n    puVar13[5] = puVar3;\n    puVar13[7] = param_3[7];\n  }" if (parenthesized_expression "(puVar3 == param_3 + 7)" ( (binary_expression "puVar3 == param_3 + 7" identifier == (binary_expression "param_3 + 7" identifier + number_literal)) )) (compound_statement "{\n    uVar4 = param_3[8];\n    puVar13[7] = param_3[7];\n    puVar13[8] = uVar4;\n  }" { (expression_statement "uVar4 = param_3[8];" (assignment_expression "uVar4 = param_3[8]" identifier = (subscript_expression "param_3[8]" identifier [ number_literal ])) ;) (expression_statement "puVar13[7] = param_3[7];" (assignment_expression "puVar13[7] = param_3[7]" (subscript_expression "puVar13[7]" identifier [ number_literal ]) = (subscript_expression "param_3[7]" identifier [ number_literal ])) ;) (expression_statement "puVar13[8] = uVar4;" (assignment_expression "puVar13[8] = uVar4" (subscript_expression "puVar13[8]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n    puVar13[5] = puVar3;\n    puVar13[7] = param_3[7];\n  }" else (compound_statement "{\n    puVar13[5] = puVar3;\n    puVar13[7] = param_3[7];\n  }" { (expression_statement "puVar13[5] = puVar3;" (assignment_expression "puVar13[5] = puVar3" (subscript_expression "puVar13[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[7] = param_3[7];" (assignment_expression "puVar13[7] = param_3[7]" (subscript_expression "puVar13[7]" identifier [ number_literal ]) = (subscript_expression "param_3[7]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar4 = param_3[6];" (assignment_expression "uVar4 = param_3[6]" identifier = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) (expression_statement "param_3[5] = param_3 + 7;" (assignment_expression "param_3[5] = param_3 + 7" (subscript_expression "param_3[5]" identifier [ number_literal ]) = (binary_expression "param_3 + 7" identifier + number_literal)) ;) (expression_statement "param_3[6] = 0;" (assignment_expression "param_3[6] = 0" (subscript_expression "param_3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar13[6] = uVar4;" (assignment_expression "puVar13[6] = uVar4" (subscript_expression "puVar13[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(param_3 + 7) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 7) = 0" (pointer_expression "*(undefined1 *)(param_3 + 7)" * (cast_expression "(undefined1 *)(param_3 + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 7)" ( (binary_expression "param_3 + 7" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (param_2 != lVar2) {\n    puVar3 = puVar9;\n    puVar13 = (undefined8 *)(lVar2 + 0x38);\n    do {\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    } while (puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            );\n    puVar11 = puVar11 + 0x12;\n  }" if (parenthesized_expression "(param_2 != lVar2)" ( (binary_expression "param_2 != lVar2" identifier != identifier) )) (compound_statement "{\n    puVar3 = puVar9;\n    puVar13 = (undefined8 *)(lVar2 + 0x38);\n    do {\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    } while (puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            );\n    puVar11 = puVar11 + 0x12;\n  }" { (expression_statement "puVar3 = puVar9;" (assignment_expression "puVar3 = puVar9" identifier = identifier) ;) (expression_statement "puVar13 = (undefined8 *)(lVar2 + 0x38);" (assignment_expression "puVar13 = (undefined8 *)(lVar2 + 0x38)" identifier = (cast_expression "(undefined8 *)(lVar2 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x38)" ( (binary_expression "lVar2 + 0x38" identifier + number_literal) )))) ;) (do_statement "do {\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    } while (puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            );" do (compound_statement "{\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    }" { (expression_statement "puVar11 = puVar3;" (assignment_expression "puVar11 = puVar3" identifier = identifier) ;) (expression_statement "uVar4 = puVar13[-6];" (assignment_expression "uVar4 = puVar13[-6]" identifier = (subscript_expression "puVar13[-6]" identifier [ number_literal ])) ;) (expression_statement "*puVar11 = puVar13[-7];" (assignment_expression "*puVar11 = puVar13[-7]" (pointer_expression "*puVar11" * identifier) = (subscript_expression "puVar13[-7]" identifier [ number_literal ])) ;) (expression_statement "puVar11[1] = uVar4;" (assignment_expression "puVar11[1] = uVar4" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar4 = puVar13[-4];" (assignment_expression "uVar4 = puVar13[-4]" identifier = (subscript_expression "puVar13[-4]" identifier [ number_literal ])) ;) (expression_statement "puVar11[2] = puVar13[-5];" (assignment_expression "puVar11[2] = puVar13[-5]" (subscript_expression "puVar11[2]" identifier [ number_literal ]) = (subscript_expression "puVar13[-5]" identifier [ number_literal ])) ;) (expression_statement "puVar11[3] = uVar4;" (assignment_expression "puVar11[3] = uVar4" (subscript_expression "puVar11[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);" (assignment_expression "*(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3)" (pointer_expression "*(undefined4 *)(puVar11 + 4)" * (cast_expression "(undefined4 *)(puVar11 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 4)" ( (binary_expression "puVar11 + 4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar13 + -3)" * (cast_expression "(undefined4 *)(puVar13 + -3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + -3)" ( (binary_expression "puVar13 + -3" identifier + number_literal) ))))) ;) (expression_statement "puVar11[5] = puVar11 + 7;" (assignment_expression "puVar11[5] = puVar11 + 7" (subscript_expression "puVar11[5]" identifier [ number_literal ]) = (binary_expression "puVar11 + 7" identifier + number_literal)) ;) (if_statement "if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }" if (parenthesized_expression "((undefined8 *)puVar13[-2] == puVar13)" ( (binary_expression "(undefined8 *)puVar13[-2] == puVar13" (cast_expression "(undefined8 *)puVar13[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }" { (expression_statement "uVar4 = puVar13[1];" (assignment_expression "uVar4 = puVar13[1]" identifier = (subscript_expression "puVar13[1]" identifier [ number_literal ])) ;) (expression_statement "puVar11[7] = *puVar13;" (assignment_expression "puVar11[7] = *puVar13" (subscript_expression "puVar11[7]" identifier [ number_literal ]) = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar11[8] = uVar4;" (assignment_expression "puVar11[8] = uVar4" (subscript_expression "puVar11[8]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }" else (compound_statement "{\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }" { (expression_statement "puVar11[5] = (undefined8 *)puVar13[-2];" (assignment_expression "puVar11[5] = (undefined8 *)puVar13[-2]" (subscript_expression "puVar11[5]" identifier [ number_literal ]) = (cast_expression "(undefined8 *)puVar13[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar11[7] = *puVar13;" (assignment_expression "puVar11[7] = *puVar13" (subscript_expression "puVar11[7]" identifier [ number_literal ]) = (pointer_expression "*puVar13" * identifier)) ;) }))) (expression_statement "puVar11[6] = puVar13[-1];" (assignment_expression "puVar11[6] = puVar13[-1]" (subscript_expression "puVar11[6]" identifier [ number_literal ]) = (subscript_expression "puVar13[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar13[-2] = puVar13;" (assignment_expression "puVar13[-2] = puVar13" (subscript_expression "puVar13[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[-1] = 0;" (assignment_expression "puVar13[-1] = 0" (subscript_expression "puVar13[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar13 = 0;" (assignment_expression "*(undefined1 *)puVar13 = 0" (pointer_expression "*(undefined1 *)puVar13" * (cast_expression "(undefined1 *)puVar13" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar3 = puVar11 + 9;" (assignment_expression "puVar3 = puVar11 + 9" identifier = (binary_expression "puVar11 + 9" identifier + number_literal)) ;) (expression_statement "puVar13 = puVar13 + 9;" (assignment_expression "puVar13 = puVar13 + 9" identifier = (binary_expression "puVar13 + 9" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            )" ( (binary_expression "puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)" (binary_expression "puVar11 + 9" identifier + number_literal) != (cast_expression "(undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)" ( (binary_expression "(long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48" (binary_expression "(long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U)" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U)" ( (binary_expression "(param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U" (binary_expression "(param_2 + -0x48) - lVar2" (parenthesized_expression "(param_2 + -0x48)" ( (binary_expression "param_2 + -0x48" identifier + number_literal) )) - identifier) & number_literal) ))) + number_literal) )))) )) ;) (expression_statement "puVar11 = puVar11 + 0x12;" (assignment_expression "puVar11 = puVar11 + 0x12" identifier = (binary_expression "puVar11 + 0x12" identifier + number_literal)) ;) })) (expression_statement "lVar8 = lVar2;" (assignment_expression "lVar8 = lVar2" identifier = identifier) ;) (if_statement "if (param_2 != lVar1) {\n    puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)\n    ;\n    puVar13 = puVar11;\n    puVar14 = (undefined8 *)(param_2 + 0x38);\n    do {\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    } while (puVar10 != puVar3);\n  }" if (parenthesized_expression "(param_2 != lVar1)" ( (binary_expression "param_2 != lVar1" identifier != identifier) )) (compound_statement "{\n    puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)\n    ;\n    puVar13 = puVar11;\n    puVar14 = (undefined8 *)(param_2 + 0x38);\n    do {\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    } while (puVar10 != puVar3);\n  }" { (expression_statement "puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)\n    ;" (assignment_expression "puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)" identifier = (cast_expression "(undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)" ( (binary_expression "(long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48" (binary_expression "(long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8)" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8)" ( (binary_expression "(lVar1 - param_2) - 0x48U & 0xfffffffffffffff8" (binary_expression "(lVar1 - param_2) - 0x48U" (parenthesized_expression "(lVar1 - param_2)" ( (binary_expression "lVar1 - param_2" identifier - identifier) )) - number_literal) & number_literal) ))) + number_literal) )))) ;) (expression_statement "puVar13 = puVar11;" (assignment_expression "puVar13 = puVar11" identifier = identifier) ;) (expression_statement "puVar14 = (undefined8 *)(param_2 + 0x38);" (assignment_expression "puVar14 = (undefined8 *)(param_2 + 0x38)" identifier = (cast_expression "(undefined8 *)(param_2 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) ;) (do_statement "do {\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    } while (puVar10 != puVar3);" do (compound_statement "{\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    }" { (expression_statement "uVar4 = puVar14[-7];" (assignment_expression "uVar4 = puVar14[-7]" identifier = (subscript_expression "puVar14[-7]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = puVar14[-6];" (assignment_expression "uVar5 = puVar14[-6]" identifier = (subscript_expression "puVar14[-6]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar14[-5];" (assignment_expression "uVar6 = puVar14[-5]" identifier = (subscript_expression "puVar14[-5]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar14[-4];" (assignment_expression "uVar7 = puVar14[-4]" identifier = (subscript_expression "puVar14[-4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);" (assignment_expression "*(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3)" (pointer_expression "*(undefined4 *)(puVar13 + 4)" * (cast_expression "(undefined4 *)(puVar13 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 4)" ( (binary_expression "puVar13 + 4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar14 + -3)" * (cast_expression "(undefined4 *)(puVar14 + -3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -3)" ( (binary_expression "puVar14 + -3" identifier + number_literal) ))))) ;) (expression_statement "puVar13[5] = puVar13 + 7;" (assignment_expression "puVar13[5] = puVar13 + 7" (subscript_expression "puVar13[5]" identifier [ number_literal ]) = (binary_expression "puVar13 + 7" identifier + number_literal)) ;) (expression_statement "puVar11 = (undefined8 *)puVar14[-2];" (assignment_expression "puVar11 = (undefined8 *)puVar14[-2]" identifier = (cast_expression "(undefined8 *)puVar14[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar14[-2]" identifier [ number_literal ]))) ;) (expression_statement "*puVar13 = uVar4;" (assignment_expression "*puVar13 = uVar4" (pointer_expression "*puVar13" * identifier) = identifier) ;) (expression_statement "puVar13[1] = uVar5;" (assignment_expression "puVar13[1] = uVar5" (subscript_expression "puVar13[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[2] = uVar6;" (assignment_expression "puVar13[2] = uVar6" (subscript_expression "puVar13[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[3] = uVar7;" (assignment_expression "puVar13[3] = uVar7" (subscript_expression "puVar13[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }" if (parenthesized_expression "(puVar14 == puVar11)" ( (binary_expression "puVar14 == puVar11" identifier == identifier) )) (compound_statement "{\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }" { (expression_statement "uVar4 = puVar14[1];" (assignment_expression "uVar4 = puVar14[1]" identifier = (subscript_expression "puVar14[1]" identifier [ number_literal ])) ;) (expression_statement "puVar13[7] = *puVar14;" (assignment_expression "puVar13[7] = *puVar14" (subscript_expression "puVar13[7]" identifier [ number_literal ]) = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "puVar13[8] = uVar4;" (assignment_expression "puVar13[8] = uVar4" (subscript_expression "puVar13[8]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }" else (compound_statement "{\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }" { (expression_statement "puVar13[5] = puVar11;" (assignment_expression "puVar13[5] = puVar11" (subscript_expression "puVar13[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[7] = *puVar14;" (assignment_expression "puVar13[7] = *puVar14" (subscript_expression "puVar13[7]" identifier [ number_literal ]) = (pointer_expression "*puVar14" * identifier)) ;) }))) (expression_statement "uVar4 = puVar14[-1];" (assignment_expression "uVar4 = puVar14[-1]" identifier = (subscript_expression "puVar14[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar10 = puVar13 + 9;" (assignment_expression "puVar10 = puVar13 + 9" identifier = (binary_expression "puVar13 + 9" identifier + number_literal)) ;) (expression_statement "puVar14[-2] = puVar14;" (assignment_expression "puVar14[-2] = puVar14" (subscript_expression "puVar14[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar14[-1] = 0;" (assignment_expression "puVar14[-1] = 0" (subscript_expression "puVar14[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar13[6] = uVar4;" (assignment_expression "puVar13[6] = uVar4" (subscript_expression "puVar13[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)puVar14 = 0;" (assignment_expression "*(undefined1 *)puVar14 = 0" (pointer_expression "*(undefined1 *)puVar14" * (cast_expression "(undefined1 *)puVar14" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar13 = puVar10;" (assignment_expression "puVar13 = puVar10" identifier = identifier) ;) (expression_statement "puVar14 = puVar14 + 9;" (assignment_expression "puVar14 = puVar14 + 9" identifier = (binary_expression "puVar14 + 9" identifier + number_literal)) ;) (expression_statement "puVar11 = puVar3;" (assignment_expression "puVar11 = puVar3" identifier = identifier) ;) }) while (parenthesized_expression "(puVar10 != puVar3)" ( (binary_expression "puVar10 != puVar3" identifier != identifier) )) ;) })) (for_statement "for (; lVar8 != lVar1; lVar8 = lVar8 + 0x48) {\n    if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {\n      FUN_002dac70();\n    }\n  }" for ( ; (binary_expression "lVar8 != lVar1" identifier != identifier) ; (assignment_expression "lVar8 = lVar8 + 0x48" identifier = (binary_expression "lVar8 + 0x48" identifier + number_literal)) ) (compound_statement "{\n    if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {\n      FUN_002dac70();\n    }\n  }" { (if_statement "if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {\n      FUN_002dac70();\n    }" if (parenthesized_expression "(*(long *)(lVar8 + 0x28) != lVar8 + 0x38)" ( (binary_expression "*(long *)(lVar8 + 0x28) != lVar8 + 0x38" (pointer_expression "*(long *)(lVar8 + 0x28)" * (cast_expression "(long *)(lVar8 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x28)" ( (binary_expression "lVar8 + 0x28" identifier + number_literal) )))) != (binary_expression "lVar8 + 0x38" identifier + number_literal)) )) (compound_statement "{\n      FUN_002dac70();\n    }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) })) (if_statement "if (lVar2 != 0) {\n    FUN_002dac70(lVar2);\n  }" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_002dac70(lVar2);\n  }" { (expression_statement "FUN_002dac70(lVar2);" (call_expression "FUN_002dac70(lVar2)" identifier (argument_list "(lVar2)" ( identifier ))) ;) })) (expression_statement "*param_1 = (long)puVar9;" (assignment_expression "*param_1 = (long)puVar9" (pointer_expression "*param_1" * identifier) = (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "param_1[1] = (long)puVar11;" (assignment_expression "param_1[1] = (long)puVar11" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "param_1[2] = local_48;" (assignment_expression "param_1[2] = local_48" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* 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  Input_section_sort_entry *pIVar1;\n  Input_section_sort_entry *pIVar2;\n  pointer pcVar3;\n  size_type sVar4;\n  undefined8 uVar5;\n  anon_union_8_2_227b06d7_for_u1_ aVar6;\n  anon_union_8_4_139239c7_for_u2_ aVar7;\n  undefined8 uVar8;\n  Input_section_sort_entry *pIVar9;\n  pointer pIVar10;\n  long lVar11;\n  pointer pIVar12;\n  pointer pIVar13;\n  pointer pIVar14;\n  pointer pIVar15;\n  ulong uVar16;\n  undefined8 *puVar17;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar18;\n  ulong uVar19;\n  pointer local_48;\n  \n  pIVar1 = (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  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_start;\n  lVar11 = (long)pIVar1 - (long)pIVar2 >> 3;\n  if (lVar11 * -0x71c71c71c71c71c7 == 0) {\n    uVar16 = 1;\nLAB_0020de25:\n    uVar19 = uVar16 * 0x48;\n  }\n  else {\n    uVar16 = lVar11 * 0x1c71c71c71c71c72;\n    uVar19 = 0xfffffffffffffff0;\n    if (((ulong)(lVar11 * -0x71c71c71c71c71c7) < uVar16 || lVar11 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar16 < 0x38e38e38e38e38f)) {\n      if (uVar16 == 0) {\n        pIVar15 = (pointer)0x48;\n        local_48 = (pointer)0x0;\n        pIVar12 = (pointer)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }\n  pIVar12 = (pointer)operator_new(uVar19);\n  local_48 = (pointer)((long)&(pIVar12->input_section_).shndx_ + uVar19);\n  pIVar15 = pIVar12 + 1;\nLAB_0020dc12:\n  puVar17 = (undefined8 *)(((long)__position._M_current - (long)pIVar2) + (long)pIVar12);\n  uVar5 = *(undefined8 *)&__args_0->input_section_;\n  aVar6 = (__args_0->input_section_).u1_;\n  aVar7 = (__args_0->input_section_).u2_;\n  uVar8 = *(undefined8 *)&(__args_0->input_section_).section_order_index_;\n  pcVar3 = (__args_0->section_name_)._M_dataplus._M_p;\n  *(uint *)(puVar17 + 4) = __args_0->index_;\n  puVar17[5] = puVar17 + 7;\n  paVar18 = &(__args_0->section_name_).field_2;\n  *puVar17 = uVar5;\n  *(anon_union_8_2_227b06d7_for_u1_ *)(puVar17 + 1) = aVar6;\n  *(anon_union_8_4_139239c7_for_u2_ *)(puVar17 + 2) = aVar7;\n  puVar17[3] = uVar8;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar3 == paVar18) {\n    uVar5 = *(undefined8 *)((long)&(__args_0->section_name_).field_2 + 8);\n    puVar17[7] = (__args_0->section_name_).field_2._M_allocated_capacity;\n    puVar17[8] = uVar5;\n  }\n  else {\n    puVar17[5] = pcVar3;\n    puVar17[7] = (__args_0->section_name_).field_2._M_allocated_capacity;\n  }\n  sVar4 = (__args_0->section_name_)._M_string_length;\n  (__args_0->section_name_)._M_dataplus._M_p = (pointer)paVar18;\n  (__args_0->section_name_)._M_string_length = 0;\n  puVar17[6] = sVar4;\n  (__args_0->section_name_).field_2._M_local_buf[0] = '\0';\n  if (__position._M_current != pIVar2) {\n    pIVar10 = pIVar12;\n    paVar18 = &(pIVar2->section_name_).field_2;\n    do {\n      pIVar15 = pIVar10;\n      uVar5 = *(undefined8 *)((long)paVar18 + -0x38);\n      aVar6 = *(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3);\n      (pIVar15->input_section_).shndx_ = (int)uVar5;\n      (pIVar15->input_section_).p2align_ = (int)((ulong)uVar5 >> 0x20);\n      (pIVar15->input_section_).u1_ = aVar6;\n      uVar5 = paVar18[-2]._M_allocated_capacity;\n      (pIVar15->input_section_).u2_ = *(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28);\n      *(undefined8 *)&(pIVar15->input_section_).section_order_index_ = uVar5;\n      pIVar15->index_ = *(uint *)((long)paVar18 + -0x18);\n      (pIVar15->section_name_)._M_dataplus._M_p = (pointer)&(pIVar15->section_name_).field_2;\n      pcVar3 = (((string *)(paVar18 + -1))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar3 == paVar18) {\n        uVar5 = *(undefined8 *)((long)paVar18 + 8);\n        (pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n        *(undefined8 *)((long)&(pIVar15->section_name_).field_2 + 8) = uVar5;\n      }\n      else {\n        (pIVar15->section_name_)._M_dataplus._M_p = pcVar3;\n        (pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n      }\n      (pIVar15->section_name_)._M_string_length = *(size_type *)((long)paVar18 + -8);\n      (((string *)(paVar18 + -1))->_M_dataplus)._M_p = (pointer)paVar18;\n      *(size_type *)((long)paVar18 + -8) = 0;\n      paVar18->_M_local_buf[0] = '\0';\n      pIVar10 = pIVar15 + 1;\n      paVar18 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar18 + 0x48);\n    } while (pIVar15 + 1 !=\n             (pointer)((long)&pIVar12[1].input_section_.shndx_ +\n                      ((long)__position._M_current + (-0x48 - (long)pIVar2) & 0xfffffffffffffff8U)))\n    ;\n    pIVar15 = pIVar15 + 2;\n  }\n  pIVar9 = pIVar2;\n  if (__position._M_current != pIVar1) {\n    pIVar10 = (pointer)((long)&pIVar15[1].input_section_.shndx_ +\n                       ((long)pIVar1 + (-0x48 - (long)__position._M_current) & 0xfffffffffffffff8U))\n    ;\n    pIVar14 = pIVar15;\n    paVar18 = &((__position._M_current)->section_name_).field_2;\n    do {\n      uVar5 = *(undefined8 *)((long)paVar18 + -0x38);\n      aVar6 = *(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3);\n      aVar7 = *(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28);\n      uVar8 = paVar18[-2]._M_allocated_capacity;\n      pIVar14->index_ = *(uint *)((long)paVar18 + -0x18);\n      (pIVar14->section_name_)._M_dataplus._M_p = (pointer)&(pIVar14->section_name_).field_2;\n      pcVar3 = (((string *)(paVar18 + -1))->_M_dataplus)._M_p;\n      (pIVar14->input_section_).shndx_ = (int)uVar5;\n      (pIVar14->input_section_).p2align_ = (int)((ulong)uVar5 >> 0x20);\n      (pIVar14->input_section_).u1_ = aVar6;\n      (pIVar14->input_section_).u2_ = aVar7;\n      *(undefined8 *)&(pIVar14->input_section_).section_order_index_ = uVar8;\n      if (paVar18 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar3) {\n        uVar5 = *(undefined8 *)((long)paVar18 + 8);\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n        *(undefined8 *)((long)&(pIVar14->section_name_).field_2 + 8) = uVar5;\n      }\n      else {\n        (pIVar14->section_name_)._M_dataplus._M_p = pcVar3;\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n      }\n      sVar4 = *(size_type *)((long)paVar18 + -8);\n      pIVar13 = pIVar14 + 1;\n      (((string *)(paVar18 + -1))->_M_dataplus)._M_p = (pointer)paVar18;\n      *(size_type *)((long)paVar18 + -8) = 0;\n      (pIVar14->section_name_)._M_string_length = sVar4;\n      paVar18->_M_local_buf[0] = '\0';\n      pIVar14 = pIVar13;\n      paVar18 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar18 + 0x48);\n      pIVar15 = pIVar10;\n    } while (pIVar13 != pIVar10);\n  }\n  for (; pIVar9 != pIVar1; pIVar9 = pIVar9 + 1) {\n    pcVar3 = (pIVar9->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         *)pcVar3 != &(pIVar9->section_name_).field_2) {\n      operator_delete(pcVar3);\n    }\n  }\n  if (pIVar2 != (Input_section_sort_entry *)0x0) {\n    operator_delete(pIVar2);\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 = pIVar12;\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 = pIVar15;\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_48;\n  return;\n}\n\n" 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  Input_section_sort_entry *pIVar1;" 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  Input_section_sort_entry" 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 "*pIVar1" * identifier) ;) (declaration "Input_section_sort_entry *pIVar2;" type_identifier (pointer_declarator "*pIVar2" * identifier) ;) (declaration "pointer pcVar3;" type_identifier identifier ;) (declaration "size_type sVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "anon_union_8_2_227b06d7_for_u1_ aVar6;" type_identifier identifier ;) (declaration "anon_union_8_4_139239c7_for_u2_ aVar7;" type_identifier identifier ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "Input_section_sort_entry *pIVar9;" type_identifier (pointer_declarator "*pIVar9" * identifier) ;) (declaration "pointer pIVar10;" type_identifier identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "pointer pIVar12;" type_identifier identifier ;) (declaration "pointer pIVar13;" type_identifier identifier ;) (declaration "pointer pIVar14;" type_identifier identifier ;) (declaration "pointer pIVar15;" type_identifier identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "undefined8 *puVar17;" type_identifier (pointer_declarator "*puVar17" * 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  *paVar18;" 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  *paVar18;" (binary_expression "allocator<char>_>_9\n  *paVar18" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar18" identifier * identifier)) ;)) (declaration "ulong uVar19;" type_identifier identifier ;) (declaration "pointer local_48;" type_identifier identifier ;) (expression_statement "pIVar1 = (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 "pIVar1 = (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 "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_start;" (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_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 "lVar11 = (long)pIVar1 - (long)pIVar2 >> 3;" (assignment_expression "lVar11 = (long)pIVar1 - (long)pIVar2 >> 3" identifier = (binary_expression "(long)pIVar1 - (long)pIVar2 >> 3" (binary_expression "(long)pIVar1 - (long)pIVar2" (cast_expression "(long)pIVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)pIVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (lVar11 * -0x71c71c71c71c71c7 == 0) {\n    uVar16 = 1;\nLAB_0020de25:\n    uVar19 = uVar16 * 0x48;\n  }\n  else {\n    uVar16 = lVar11 * 0x1c71c71c71c71c72;\n    uVar19 = 0xfffffffffffffff0;\n    if (((ulong)(lVar11 * -0x71c71c71c71c71c7) < uVar16 || lVar11 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar16 < 0x38e38e38e38e38f)) {\n      if (uVar16 == 0) {\n        pIVar15 = (pointer)0x48;\n        local_48 = (pointer)0x0;\n        pIVar12 = (pointer)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }" if (parenthesized_expression "(lVar11 * -0x71c71c71c71c71c7 == 0)" ( (binary_expression "lVar11 * -0x71c71c71c71c71c7 == 0" (binary_expression "lVar11 * -0x71c71c71c71c71c7" identifier * number_literal) == number_literal) )) (compound_statement "{\n    uVar16 = 1;\nLAB_0020de25:\n    uVar19 = uVar16 * 0x48;\n  }" { (expression_statement "uVar16 = 1;" (assignment_expression "uVar16 = 1" identifier = number_literal) ;) (labeled_statement "LAB_0020de25:\n    uVar19 = uVar16 * 0x48;" statement_identifier : (expression_statement "uVar19 = uVar16 * 0x48;" (assignment_expression "uVar19 = uVar16 * 0x48" identifier = (binary_expression "uVar16 * 0x48" identifier * number_literal)) ;)) }) (else_clause "else {\n    uVar16 = lVar11 * 0x1c71c71c71c71c72;\n    uVar19 = 0xfffffffffffffff0;\n    if (((ulong)(lVar11 * -0x71c71c71c71c71c7) < uVar16 || lVar11 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar16 < 0x38e38e38e38e38f)) {\n      if (uVar16 == 0) {\n        pIVar15 = (pointer)0x48;\n        local_48 = (pointer)0x0;\n        pIVar12 = (pointer)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }" else (compound_statement "{\n    uVar16 = lVar11 * 0x1c71c71c71c71c72;\n    uVar19 = 0xfffffffffffffff0;\n    if (((ulong)(lVar11 * -0x71c71c71c71c71c7) < uVar16 || lVar11 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar16 < 0x38e38e38e38e38f)) {\n      if (uVar16 == 0) {\n        pIVar15 = (pointer)0x48;\n        local_48 = (pointer)0x0;\n        pIVar12 = (pointer)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }" { (expression_statement "uVar16 = lVar11 * 0x1c71c71c71c71c72;" (assignment_expression "uVar16 = lVar11 * 0x1c71c71c71c71c72" identifier = (binary_expression "lVar11 * 0x1c71c71c71c71c72" identifier * number_literal)) ;) (expression_statement "uVar19 = 0xfffffffffffffff0;" (assignment_expression "uVar19 = 0xfffffffffffffff0" identifier = number_literal) ;) (if_statement "if (((ulong)(lVar11 * -0x71c71c71c71c71c7) < uVar16 || lVar11 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar16 < 0x38e38e38e38e38f)) {\n      if (uVar16 == 0) {\n        pIVar15 = (pointer)0x48;\n        local_48 = (pointer)0x0;\n        pIVar12 = (pointer)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }" if (parenthesized_expression "(((ulong)(lVar11 * -0x71c71c71c71c71c7) < uVar16 || lVar11 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar16 < 0x38e38e38e38e38f))" ( (binary_expression "((ulong)(lVar11 * -0x71c71c71c71c71c7) < uVar16 || lVar11 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar16 < 0x38e38e38e38e38f)" (parenthesized_expression "((ulong)(lVar11 * -0x71c71c71c71c71c7) < uVar16 || lVar11 * 0x71c71c71c71c71c7 == 0)" ( (binary_expression "(ulong)(lVar11 * -0x71c71c71c71c71c7) < uVar16 || lVar11 * 0x71c71c71c71c71c7 == 0" (binary_expression "(ulong)(lVar11 * -0x71c71c71c71c71c7) < uVar16" (call_expression "(ulong)(lVar11 * -0x71c71c71c71c71c7)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(lVar11 * -0x71c71c71c71c71c7)" ( (binary_expression "lVar11 * -0x71c71c71c71c71c7" identifier * number_literal) ))) < identifier) || (binary_expression "lVar11 * 0x71c71c71c71c71c7 == 0" (binary_expression "lVar11 * 0x71c71c71c71c71c7" identifier * number_literal) == number_literal)) )) && (parenthesized_expression "(uVar16 < 0x38e38e38e38e38f)" ( (binary_expression "uVar16 < 0x38e38e38e38e38f" identifier < number_literal) ))) )) (compound_statement "{\n      if (uVar16 == 0) {\n        pIVar15 = (pointer)0x48;\n        local_48 = (pointer)0x0;\n        pIVar12 = (pointer)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }" { (if_statement "if (uVar16 == 0) {\n        pIVar15 = (pointer)0x48;\n        local_48 = (pointer)0x0;\n        pIVar12 = (pointer)0x0;\n        goto LAB_0020dc12;\n      }" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (compound_statement "{\n        pIVar15 = (pointer)0x48;\n        local_48 = (pointer)0x0;\n        pIVar12 = (pointer)0x0;\n        goto LAB_0020dc12;\n      }" { (expression_statement "pIVar15 = (pointer)0x48;" (assignment_expression "pIVar15 = (pointer)0x48" identifier = (cast_expression "(pointer)0x48" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "local_48 = (pointer)0x0;" (assignment_expression "local_48 = (pointer)0x0" identifier = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "pIVar12 = (pointer)0x0;" (assignment_expression "pIVar12 = (pointer)0x0" identifier = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (goto_statement "goto LAB_0020dc12;" goto statement_identifier ;) })) (goto_statement "goto LAB_0020de25;" goto statement_identifier ;) })) }))) (expression_statement "pIVar12 = (pointer)operator_new(uVar19);" (assignment_expression "pIVar12 = (pointer)operator_new(uVar19)" identifier = (cast_expression "(pointer)operator_new(uVar19)" ( (type_descriptor "pointer" type_identifier) ) (call_expression "operator_new(uVar19)" identifier (argument_list "(uVar19)" ( identifier ))))) ;) (expression_statement "local_48 = (pointer)((long)&(pIVar12->input_section_).shndx_ + uVar19);" (assignment_expression "local_48 = (pointer)((long)&(pIVar12->input_section_).shndx_ + uVar19)" identifier = (call_expression "(pointer)((long)&(pIVar12->input_section_).shndx_ + uVar19)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((long)&(pIVar12->input_section_).shndx_ + uVar19)" ( (binary_expression "(long)&(pIVar12->input_section_).shndx_ + uVar19" (cast_expression "(long)&(pIVar12->input_section_).shndx_" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&(pIVar12->input_section_).shndx_" & (field_expression "(pIVar12->input_section_).shndx_" (parenthesized_expression "(pIVar12->input_section_)" ( (field_expression "pIVar12->input_section_" identifier -> field_identifier) )) . field_identifier))) + identifier) )))) ;) (expression_statement "pIVar15 = pIVar12 + 1;" (assignment_expression "pIVar15 = pIVar12 + 1" identifier = (binary_expression "pIVar12 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_0020dc12:\n  puVar17 = (undefined8 *)(((long)__position._M_current - (long)pIVar2) + (long)pIVar12);" statement_identifier : (expression_statement "puVar17 = (undefined8 *)(((long)__position._M_current - (long)pIVar2) + (long)pIVar12);" (assignment_expression "puVar17 = (undefined8 *)(((long)__position._M_current - (long)pIVar2) + (long)pIVar12)" identifier = (cast_expression "(undefined8 *)(((long)__position._M_current - (long)pIVar2) + (long)pIVar12)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((long)__position._M_current - (long)pIVar2) + (long)pIVar12)" ( (binary_expression "((long)__position._M_current - (long)pIVar2) + (long)pIVar12" (parenthesized_expression "((long)__position._M_current - (long)pIVar2)" ( (binary_expression "(long)__position._M_current - (long)pIVar2" (cast_expression "(long)__position._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__position._M_current" identifier . field_identifier)) - (cast_expression "(long)pIVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) + (cast_expression "(long)pIVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;)) (expression_statement "uVar5 = *(undefined8 *)&__args_0->input_section_;" (assignment_expression "uVar5 = *(undefined8 *)&__args_0->input_section_" identifier = (pointer_expression "*(undefined8 *)&__args_0->input_section_" * (cast_expression "(undefined8 *)&__args_0->input_section_" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&__args_0->input_section_" & (field_expression "__args_0->input_section_" identifier -> field_identifier))))) ;) (expression_statement "aVar6 = (__args_0->input_section_).u1_;" (assignment_expression "aVar6 = (__args_0->input_section_).u1_" identifier = (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 "aVar7 = (__args_0->input_section_).u2_;" (assignment_expression "aVar7 = (__args_0->input_section_).u2_" identifier = (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 "uVar8 = *(undefined8 *)&(__args_0->input_section_).section_order_index_;" (assignment_expression "uVar8 = *(undefined8 *)&(__args_0->input_section_).section_order_index_" identifier = (pointer_expression "*(undefined8 *)&(__args_0->input_section_).section_order_index_" * (cast_expression "(undefined8 *)&(__args_0->input_section_).section_order_index_" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(__args_0->input_section_).section_order_index_" & (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 "pcVar3 = (__args_0->section_name_)._M_dataplus._M_p;" (assignment_expression "pcVar3 = (__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 "*(uint *)(puVar17 + 4) = __args_0->index_;" (assignment_expression "*(uint *)(puVar17 + 4) = __args_0->index_" (pointer_expression "*(uint *)(puVar17 + 4)" * (cast_expression "(uint *)(puVar17 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 4)" ( (binary_expression "puVar17 + 4" identifier + number_literal) )))) = (field_expression "__args_0->index_" identifier -> field_identifier)) ;) (expression_statement "puVar17[5] = puVar17 + 7;" (assignment_expression "puVar17[5] = puVar17 + 7" (subscript_expression "puVar17[5]" identifier [ number_literal ]) = (binary_expression "puVar17 + 7" identifier + number_literal)) ;) (expression_statement "paVar18 = &(__args_0->section_name_).field_2;" (assignment_expression "paVar18 = &(__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))) ;) (expression_statement "*puVar17 = uVar5;" (assignment_expression "*puVar17 = uVar5" (pointer_expression "*puVar17" * identifier) = identifier) ;) (expression_statement "*(anon_union_8_2_227b06d7_for_u1_ *)(puVar17 + 1) = aVar6;" (assignment_expression "*(anon_union_8_2_227b06d7_for_u1_ *)(puVar17 + 1) = aVar6" (pointer_expression "*(anon_union_8_2_227b06d7_for_u1_ *)(puVar17 + 1)" * (cast_expression "(anon_union_8_2_227b06d7_for_u1_ *)(puVar17 + 1)" ( (type_descriptor "anon_union_8_2_227b06d7_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 1)" ( (binary_expression "puVar17 + 1" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(anon_union_8_4_139239c7_for_u2_ *)(puVar17 + 2) = aVar7;" (assignment_expression "*(anon_union_8_4_139239c7_for_u2_ *)(puVar17 + 2) = aVar7" (pointer_expression "*(anon_union_8_4_139239c7_for_u2_ *)(puVar17 + 2)" * (cast_expression "(anon_union_8_4_139239c7_for_u2_ *)(puVar17 + 2)" ( (type_descriptor "anon_union_8_4_139239c7_for_u2_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 2)" ( (binary_expression "puVar17 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar17[3] = uVar8;" (assignment_expression "puVar17[3] = uVar8" (subscript_expression "puVar17[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar3 == paVar18) {\n    uVar5 = *(undefined8 *)((long)&(__args_0->section_name_).field_2 + 8);\n    puVar17[7] = (__args_0->section_name_).field_2._M_allocated_capacity;\n    puVar17[8] = uVar5;\n  }\n  else {\n    puVar17[5] = pcVar3;\n    puVar17[7] = (__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       *)pcVar3 == paVar18)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar3 == paVar18)" ( (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       *)pcVar3 == paVar18" (binary_expression "allocator<char>_>_9\n       *)pcVar3" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)pcVar3" identifier * (ERROR ")" )) identifier)) == identifier) )) )) (compound_statement "{\n    uVar5 = *(undefined8 *)((long)&(__args_0->section_name_).field_2 + 8);\n    puVar17[7] = (__args_0->section_name_).field_2._M_allocated_capacity;\n    puVar17[8] = uVar5;\n  }" { (expression_statement "uVar5 = *(undefined8 *)((long)&(__args_0->section_name_).field_2 + 8);" (assignment_expression "uVar5 = *(undefined8 *)((long)&(__args_0->section_name_).field_2 + 8)" identifier = (pointer_expression "*(undefined8 *)((long)&(__args_0->section_name_).field_2 + 8)" * (cast_expression "(undefined8 *)((long)&(__args_0->section_name_).field_2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&(__args_0->section_name_).field_2 + 8)" ( (binary_expression "(long)&(__args_0->section_name_).field_2 + 8" (cast_expression "(long)&(__args_0->section_name_).field_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (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 "puVar17[7] = (__args_0->section_name_).field_2._M_allocated_capacity;" (assignment_expression "puVar17[7] = (__args_0->section_name_).field_2._M_allocated_capacity" (subscript_expression "puVar17[7]" 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 "puVar17[8] = uVar5;" (assignment_expression "puVar17[8] = uVar5" (subscript_expression "puVar17[8]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n    puVar17[5] = pcVar3;\n    puVar17[7] = (__args_0->section_name_).field_2._M_allocated_capacity;\n  }" else (compound_statement "{\n    puVar17[5] = pcVar3;\n    puVar17[7] = (__args_0->section_name_).field_2._M_allocated_capacity;\n  }" { (expression_statement "puVar17[5] = pcVar3;" (assignment_expression "puVar17[5] = pcVar3" (subscript_expression "puVar17[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar17[7] = (__args_0->section_name_).field_2._M_allocated_capacity;" (assignment_expression "puVar17[7] = (__args_0->section_name_).field_2._M_allocated_capacity" (subscript_expression "puVar17[7]" 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 "sVar4 = (__args_0->section_name_)._M_string_length;" (assignment_expression "sVar4 = (__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)paVar18;" (assignment_expression "(__args_0->section_name_)._M_dataplus._M_p = (pointer)paVar18" (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)paVar18" ( (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 "puVar17[6] = sVar4;" (assignment_expression "puVar17[6] = sVar4" (subscript_expression "puVar17[6]" identifier [ number_literal ]) = identifier) ;) (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 ')) ;) (if_statement "if (__position._M_current != pIVar2) {\n    pIVar10 = pIVar12;\n    paVar18 = &(pIVar2->section_name_).field_2;\n    do {\n      pIVar15 = pIVar10;\n      uVar5 = *(undefined8 *)((long)paVar18 + -0x38);\n      aVar6 = *(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3);\n      (pIVar15->input_section_).shndx_ = (int)uVar5;\n      (pIVar15->input_section_).p2align_ = (int)((ulong)uVar5 >> 0x20);\n      (pIVar15->input_section_).u1_ = aVar6;\n      uVar5 = paVar18[-2]._M_allocated_capacity;\n      (pIVar15->input_section_).u2_ = *(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28);\n      *(undefined8 *)&(pIVar15->input_section_).section_order_index_ = uVar5;\n      pIVar15->index_ = *(uint *)((long)paVar18 + -0x18);\n      (pIVar15->section_name_)._M_dataplus._M_p = (pointer)&(pIVar15->section_name_).field_2;\n      pcVar3 = (((string *)(paVar18 + -1))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar3 == paVar18) {\n        uVar5 = *(undefined8 *)((long)paVar18 + 8);\n        (pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n        *(undefined8 *)((long)&(pIVar15->section_name_).field_2 + 8) = uVar5;\n      }\n      else {\n        (pIVar15->section_name_)._M_dataplus._M_p = pcVar3;\n        (pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n      }\n      (pIVar15->section_name_)._M_string_length = *(size_type *)((long)paVar18 + -8);\n      (((string *)(paVar18 + -1))->_M_dataplus)._M_p = (pointer)paVar18;\n      *(size_type *)((long)paVar18 + -8) = 0;\n      paVar18->_M_local_buf[0] = '\0';\n      pIVar10 = pIVar15 + 1;\n      paVar18 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar18 + 0x48);\n    } while (pIVar15 + 1 !=\n             (pointer)((long)&pIVar12[1].input_section_.shndx_ +\n                      ((long)__position._M_current + (-0x48 - (long)pIVar2) & 0xfffffffffffffff8U)))\n    ;\n    pIVar15 = pIVar15 + 2;\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    pIVar10 = pIVar12;\n    paVar18 = &(pIVar2->section_name_).field_2;\n    do {\n      pIVar15 = pIVar10;\n      uVar5 = *(undefined8 *)((long)paVar18 + -0x38);\n      aVar6 = *(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3);\n      (pIVar15->input_section_).shndx_ = (int)uVar5;\n      (pIVar15->input_section_).p2align_ = (int)((ulong)uVar5 >> 0x20);\n      (pIVar15->input_section_).u1_ = aVar6;\n      uVar5 = paVar18[-2]._M_allocated_capacity;\n      (pIVar15->input_section_).u2_ = *(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28);\n      *(undefined8 *)&(pIVar15->input_section_).section_order_index_ = uVar5;\n      pIVar15->index_ = *(uint *)((long)paVar18 + -0x18);\n      (pIVar15->section_name_)._M_dataplus._M_p = (pointer)&(pIVar15->section_name_).field_2;\n      pcVar3 = (((string *)(paVar18 + -1))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar3 == paVar18) {\n        uVar5 = *(undefined8 *)((long)paVar18 + 8);\n        (pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n        *(undefined8 *)((long)&(pIVar15->section_name_).field_2 + 8) = uVar5;\n      }\n      else {\n        (pIVar15->section_name_)._M_dataplus._M_p = pcVar3;\n        (pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n      }\n      (pIVar15->section_name_)._M_string_length = *(size_type *)((long)paVar18 + -8);\n      (((string *)(paVar18 + -1))->_M_dataplus)._M_p = (pointer)paVar18;\n      *(size_type *)((long)paVar18 + -8) = 0;\n      paVar18->_M_local_buf[0] = '\0';\n      pIVar10 = pIVar15 + 1;\n      paVar18 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar18 + 0x48);\n    } while (pIVar15 + 1 !=\n             (pointer)((long)&pIVar12[1].input_section_.shndx_ +\n                      ((long)__position._M_current + (-0x48 - (long)pIVar2) & 0xfffffffffffffff8U)))\n    ;\n    pIVar15 = pIVar15 + 2;\n  }" { (expression_statement "pIVar10 = pIVar12;" (assignment_expression "pIVar10 = pIVar12" identifier = identifier) ;) (expression_statement "paVar18 = &(pIVar2->section_name_).field_2;" (assignment_expression "paVar18 = &(pIVar2->section_name_).field_2" identifier = (pointer_expression "&(pIVar2->section_name_).field_2" & (field_expression "(pIVar2->section_name_).field_2" (parenthesized_expression "(pIVar2->section_name_)" ( (field_expression "pIVar2->section_name_" identifier -> field_identifier) )) . field_identifier))) ;) (do_statement "do {\n      pIVar15 = pIVar10;\n      uVar5 = *(undefined8 *)((long)paVar18 + -0x38);\n      aVar6 = *(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3);\n      (pIVar15->input_section_).shndx_ = (int)uVar5;\n      (pIVar15->input_section_).p2align_ = (int)((ulong)uVar5 >> 0x20);\n      (pIVar15->input_section_).u1_ = aVar6;\n      uVar5 = paVar18[-2]._M_allocated_capacity;\n      (pIVar15->input_section_).u2_ = *(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28);\n      *(undefined8 *)&(pIVar15->input_section_).section_order_index_ = uVar5;\n      pIVar15->index_ = *(uint *)((long)paVar18 + -0x18);\n      (pIVar15->section_name_)._M_dataplus._M_p = (pointer)&(pIVar15->section_name_).field_2;\n      pcVar3 = (((string *)(paVar18 + -1))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar3 == paVar18) {\n        uVar5 = *(undefined8 *)((long)paVar18 + 8);\n        (pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n        *(undefined8 *)((long)&(pIVar15->section_name_).field_2 + 8) = uVar5;\n      }\n      else {\n        (pIVar15->section_name_)._M_dataplus._M_p = pcVar3;\n        (pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n      }\n      (pIVar15->section_name_)._M_string_length = *(size_type *)((long)paVar18 + -8);\n      (((string *)(paVar18 + -1))->_M_dataplus)._M_p = (pointer)paVar18;\n      *(size_type *)((long)paVar18 + -8) = 0;\n      paVar18->_M_local_buf[0] = '\0';\n      pIVar10 = pIVar15 + 1;\n      paVar18 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar18 + 0x48);\n    } while (pIVar15 + 1 !=\n             (pointer)((long)&pIVar12[1].input_section_.shndx_ +\n                      ((long)__position._M_current + (-0x48 - (long)pIVar2) & 0xfffffffffffffff8U)))\n    ;" do (compound_statement "{\n      pIVar15 = pIVar10;\n      uVar5 = *(undefined8 *)((long)paVar18 + -0x38);\n      aVar6 = *(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3);\n      (pIVar15->input_section_).shndx_ = (int)uVar5;\n      (pIVar15->input_section_).p2align_ = (int)((ulong)uVar5 >> 0x20);\n      (pIVar15->input_section_).u1_ = aVar6;\n      uVar5 = paVar18[-2]._M_allocated_capacity;\n      (pIVar15->input_section_).u2_ = *(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28);\n      *(undefined8 *)&(pIVar15->input_section_).section_order_index_ = uVar5;\n      pIVar15->index_ = *(uint *)((long)paVar18 + -0x18);\n      (pIVar15->section_name_)._M_dataplus._M_p = (pointer)&(pIVar15->section_name_).field_2;\n      pcVar3 = (((string *)(paVar18 + -1))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar3 == paVar18) {\n        uVar5 = *(undefined8 *)((long)paVar18 + 8);\n        (pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n        *(undefined8 *)((long)&(pIVar15->section_name_).field_2 + 8) = uVar5;\n      }\n      else {\n        (pIVar15->section_name_)._M_dataplus._M_p = pcVar3;\n        (pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n      }\n      (pIVar15->section_name_)._M_string_length = *(size_type *)((long)paVar18 + -8);\n      (((string *)(paVar18 + -1))->_M_dataplus)._M_p = (pointer)paVar18;\n      *(size_type *)((long)paVar18 + -8) = 0;\n      paVar18->_M_local_buf[0] = '\0';\n      pIVar10 = pIVar15 + 1;\n      paVar18 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar18 + 0x48);\n    }" { (expression_statement "pIVar15 = pIVar10;" (assignment_expression "pIVar15 = pIVar10" identifier = identifier) ;) (expression_statement "uVar5 = *(undefined8 *)((long)paVar18 + -0x38);" (assignment_expression "uVar5 = *(undefined8 *)((long)paVar18 + -0x38)" identifier = (pointer_expression "*(undefined8 *)((long)paVar18 + -0x38)" * (cast_expression "(undefined8 *)((long)paVar18 + -0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar18 + -0x38)" ( (binary_expression "(long)paVar18 + -0x38" (cast_expression "(long)paVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "aVar6 = *(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3);" (assignment_expression "aVar6 = *(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3)" identifier = (pointer_expression "*(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3)" * (cast_expression "(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3)" ( (type_descriptor "anon_union_8_2_227b06d7_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar18 + -3)" ( (binary_expression "paVar18 + -3" identifier + number_literal) ))))) ;) (expression_statement "(pIVar15->input_section_).shndx_ = (int)uVar5;" (assignment_expression "(pIVar15->input_section_).shndx_ = (int)uVar5" (field_expression "(pIVar15->input_section_).shndx_" (parenthesized_expression "(pIVar15->input_section_)" ( (field_expression "pIVar15->input_section_" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "(pIVar15->input_section_).p2align_ = (int)((ulong)uVar5 >> 0x20);" (assignment_expression "(pIVar15->input_section_).p2align_ = (int)((ulong)uVar5 >> 0x20)" (field_expression "(pIVar15->input_section_).p2align_" (parenthesized_expression "(pIVar15->input_section_)" ( (field_expression "pIVar15->input_section_" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(int)((ulong)uVar5 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulong)uVar5 >> 0x20)" ( (binary_expression "(ulong)uVar5 >> 0x20" (cast_expression "(ulong)uVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "(pIVar15->input_section_).u1_ = aVar6;" (assignment_expression "(pIVar15->input_section_).u1_ = aVar6" (field_expression "(pIVar15->input_section_).u1_" (parenthesized_expression "(pIVar15->input_section_)" ( (field_expression "pIVar15->input_section_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "uVar5 = paVar18[-2]._M_allocated_capacity;" (assignment_expression "uVar5 = paVar18[-2]._M_allocated_capacity" identifier = (field_expression "paVar18[-2]._M_allocated_capacity" (subscript_expression "paVar18[-2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "(pIVar15->input_section_).u2_ = *(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28);" (assignment_expression "(pIVar15->input_section_).u2_ = *(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28)" (field_expression "(pIVar15->input_section_).u2_" (parenthesized_expression "(pIVar15->input_section_)" ( (field_expression "pIVar15->input_section_" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28)" * (cast_expression "(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28)" ( (type_descriptor "anon_union_8_4_139239c7_for_u2_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar18 + -0x28)" ( (binary_expression "(long)paVar18 + -0x28" (cast_expression "(long)paVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)&(pIVar15->input_section_).section_order_index_ = uVar5;" (assignment_expression "*(undefined8 *)&(pIVar15->input_section_).section_order_index_ = uVar5" (pointer_expression "*(undefined8 *)&(pIVar15->input_section_).section_order_index_" * (cast_expression "(undefined8 *)&(pIVar15->input_section_).section_order_index_" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pIVar15->input_section_).section_order_index_" & (field_expression "(pIVar15->input_section_).section_order_index_" (parenthesized_expression "(pIVar15->input_section_)" ( (field_expression "pIVar15->input_section_" identifier -> field_identifier) )) . field_identifier)))) = identifier) ;) (expression_statement "pIVar15->index_ = *(uint *)((long)paVar18 + -0x18);" (assignment_expression "pIVar15->index_ = *(uint *)((long)paVar18 + -0x18)" (field_expression "pIVar15->index_" identifier -> field_identifier) = (pointer_expression "*(uint *)((long)paVar18 + -0x18)" * (cast_expression "(uint *)((long)paVar18 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar18 + -0x18)" ( (binary_expression "(long)paVar18 + -0x18" (cast_expression "(long)paVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "(pIVar15->section_name_)._M_dataplus._M_p = (pointer)&(pIVar15->section_name_).field_2;" (assignment_expression "(pIVar15->section_name_)._M_dataplus._M_p = (pointer)&(pIVar15->section_name_).field_2" (field_expression "(pIVar15->section_name_)._M_dataplus._M_p" (field_expression "(pIVar15->section_name_)._M_dataplus" (parenthesized_expression "(pIVar15->section_name_)" ( (field_expression "pIVar15->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(pIVar15->section_name_).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(pIVar15->section_name_).field_2" (parenthesized_expression "(pIVar15->section_name_)" ( (field_expression "pIVar15->section_name_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pcVar3 = (((string *)(paVar18 + -1))->_M_dataplus)._M_p;" (assignment_expression "pcVar3 = (((string *)(paVar18 + -1))->_M_dataplus)._M_p" identifier = (field_expression "(((string *)(paVar18 + -1))->_M_dataplus)._M_p" (parenthesized_expression "(((string *)(paVar18 + -1))->_M_dataplus)" ( (field_expression "((string *)(paVar18 + -1))->_M_dataplus" (parenthesized_expression "((string *)(paVar18 + -1))" ( (cast_expression "(string *)(paVar18 + -1)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar18 + -1)" ( (binary_expression "paVar18 + -1" 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           *)pcVar3 == paVar18) {\n        uVar5 = *(undefined8 *)((long)paVar18 + 8);\n        (pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n        *(undefined8 *)((long)&(pIVar15->section_name_).field_2 + 8) = uVar5;\n      }\n      else {\n        (pIVar15->section_name_)._M_dataplus._M_p = pcVar3;\n        (pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_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           *)pcVar3 == paVar18)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar3 == paVar18)" ( (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           *)pcVar3 == paVar18" (binary_expression "allocator<char>_>_9\n           *)pcVar3" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)pcVar3" identifier * (ERROR ")" )) identifier)) == identifier) )) )) (compound_statement "{\n        uVar5 = *(undefined8 *)((long)paVar18 + 8);\n        (pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n        *(undefined8 *)((long)&(pIVar15->section_name_).field_2 + 8) = uVar5;\n      }" { (expression_statement "uVar5 = *(undefined8 *)((long)paVar18 + 8);" (assignment_expression "uVar5 = *(undefined8 *)((long)paVar18 + 8)" identifier = (pointer_expression "*(undefined8 *)((long)paVar18 + 8)" * (cast_expression "(undefined8 *)((long)paVar18 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar18 + 8)" ( (binary_expression "(long)paVar18 + 8" (cast_expression "(long)paVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "(pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;" (assignment_expression "(pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity" (field_expression "(pIVar15->section_name_).field_2._M_allocated_capacity" (field_expression "(pIVar15->section_name_).field_2" (parenthesized_expression "(pIVar15->section_name_)" ( (field_expression "pIVar15->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar18->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "*(undefined8 *)((long)&(pIVar15->section_name_).field_2 + 8) = uVar5;" (assignment_expression "*(undefined8 *)((long)&(pIVar15->section_name_).field_2 + 8) = uVar5" (pointer_expression "*(undefined8 *)((long)&(pIVar15->section_name_).field_2 + 8)" * (cast_expression "(undefined8 *)((long)&(pIVar15->section_name_).field_2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&(pIVar15->section_name_).field_2 + 8)" ( (binary_expression "(long)&(pIVar15->section_name_).field_2 + 8" (cast_expression "(long)&(pIVar15->section_name_).field_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&(pIVar15->section_name_).field_2" & (field_expression "(pIVar15->section_name_).field_2" (parenthesized_expression "(pIVar15->section_name_)" ( (field_expression "pIVar15->section_name_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = identifier) ;) }) (else_clause "else {\n        (pIVar15->section_name_)._M_dataplus._M_p = pcVar3;\n        (pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n      }" else (compound_statement "{\n        (pIVar15->section_name_)._M_dataplus._M_p = pcVar3;\n        (pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n      }" { (expression_statement "(pIVar15->section_name_)._M_dataplus._M_p = pcVar3;" (assignment_expression "(pIVar15->section_name_)._M_dataplus._M_p = pcVar3" (field_expression "(pIVar15->section_name_)._M_dataplus._M_p" (field_expression "(pIVar15->section_name_)._M_dataplus" (parenthesized_expression "(pIVar15->section_name_)" ( (field_expression "pIVar15->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;" (assignment_expression "(pIVar15->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity" (field_expression "(pIVar15->section_name_).field_2._M_allocated_capacity" (field_expression "(pIVar15->section_name_).field_2" (parenthesized_expression "(pIVar15->section_name_)" ( (field_expression "pIVar15->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar18->_M_allocated_capacity" identifier -> field_identifier)) ;) }))) (expression_statement "(pIVar15->section_name_)._M_string_length = *(size_type *)((long)paVar18 + -8);" (assignment_expression "(pIVar15->section_name_)._M_string_length = *(size_type *)((long)paVar18 + -8)" (field_expression "(pIVar15->section_name_)._M_string_length" (parenthesized_expression "(pIVar15->section_name_)" ( (field_expression "pIVar15->section_name_" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(size_type *)((long)paVar18 + -8)" * (cast_expression "(size_type *)((long)paVar18 + -8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar18 + -8)" ( (binary_expression "(long)paVar18 + -8" (cast_expression "(long)paVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "(((string *)(paVar18 + -1))->_M_dataplus)._M_p = (pointer)paVar18;" (assignment_expression "(((string *)(paVar18 + -1))->_M_dataplus)._M_p = (pointer)paVar18" (field_expression "(((string *)(paVar18 + -1))->_M_dataplus)._M_p" (parenthesized_expression "(((string *)(paVar18 + -1))->_M_dataplus)" ( (field_expression "((string *)(paVar18 + -1))->_M_dataplus" (parenthesized_expression "((string *)(paVar18 + -1))" ( (cast_expression "(string *)(paVar18 + -1)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar18 + -1)" ( (binary_expression "paVar18 + -1" identifier + number_literal) ))) )) -> field_identifier) )) . field_identifier) = (cast_expression "(pointer)paVar18" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "*(size_type *)((long)paVar18 + -8) = 0;" (assignment_expression "*(size_type *)((long)paVar18 + -8) = 0" (pointer_expression "*(size_type *)((long)paVar18 + -8)" * (cast_expression "(size_type *)((long)paVar18 + -8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar18 + -8)" ( (binary_expression "(long)paVar18 + -8" (cast_expression "(long)paVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "paVar18->_M_local_buf[0] = '\0';" (assignment_expression "paVar18->_M_local_buf[0] = '\0'" (subscript_expression "paVar18->_M_local_buf[0]" (field_expression "paVar18->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pIVar10 = pIVar15 + 1;" (assignment_expression "pIVar10 = pIVar15 + 1" identifier = (binary_expression "pIVar15 + 1" identifier + number_literal)) ;) (expression_statement "paVar18 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar18 + 0x48);" (assignment_expression "paVar18 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar18 + 0x48)" identifier = (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar18 + 0x48)" (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 "((long)paVar18 + 0x48)" ( (binary_expression "(long)paVar18 + 0x48" (cast_expression "(long)paVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(pIVar15 + 1 !=\n             (pointer)((long)&pIVar12[1].input_section_.shndx_ +\n                      ((long)__position._M_current + (-0x48 - (long)pIVar2) & 0xfffffffffffffff8U)))" ( (binary_expression "pIVar15 + 1 !=\n             (pointer)((long)&pIVar12[1].input_section_.shndx_ +\n                      ((long)__position._M_current + (-0x48 - (long)pIVar2) & 0xfffffffffffffff8U))" (binary_expression "pIVar15 + 1" identifier + number_literal) != (call_expression "(pointer)((long)&pIVar12[1].input_section_.shndx_ +\n                      ((long)__position._M_current + (-0x48 - (long)pIVar2) & 0xfffffffffffffff8U))" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((long)&pIVar12[1].input_section_.shndx_ +\n                      ((long)__position._M_current + (-0x48 - (long)pIVar2) & 0xfffffffffffffff8U))" ( (binary_expression "(long)&pIVar12[1].input_section_.shndx_ +\n                      ((long)__position._M_current + (-0x48 - (long)pIVar2) & 0xfffffffffffffff8U)" (cast_expression "(long)&pIVar12[1].input_section_.shndx_" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pIVar12[1].input_section_.shndx_" & (field_expression "pIVar12[1].input_section_.shndx_" (field_expression "pIVar12[1].input_section_" (subscript_expression "pIVar12[1]" identifier [ number_literal ]) . field_identifier) . field_identifier))) + (parenthesized_expression "((long)__position._M_current + (-0x48 - (long)pIVar2) & 0xfffffffffffffff8U)" ( (binary_expression "(long)__position._M_current + (-0x48 - (long)pIVar2) & 0xfffffffffffffff8U" (binary_expression "(long)__position._M_current + (-0x48 - (long)pIVar2)" (cast_expression "(long)__position._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__position._M_current" identifier . field_identifier)) + (parenthesized_expression "(-0x48 - (long)pIVar2)" ( (binary_expression "-0x48 - (long)pIVar2" number_literal - (cast_expression "(long)pIVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) & number_literal) ))) )))) )) ;) (expression_statement "pIVar15 = pIVar15 + 2;" (assignment_expression "pIVar15 = pIVar15 + 2" identifier = (binary_expression "pIVar15 + 2" identifier + number_literal)) ;) })) (expression_statement "pIVar9 = pIVar2;" (assignment_expression "pIVar9 = pIVar2" identifier = identifier) ;) (if_statement "if (__position._M_current != pIVar1) {\n    pIVar10 = (pointer)((long)&pIVar15[1].input_section_.shndx_ +\n                       ((long)pIVar1 + (-0x48 - (long)__position._M_current) & 0xfffffffffffffff8U))\n    ;\n    pIVar14 = pIVar15;\n    paVar18 = &((__position._M_current)->section_name_).field_2;\n    do {\n      uVar5 = *(undefined8 *)((long)paVar18 + -0x38);\n      aVar6 = *(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3);\n      aVar7 = *(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28);\n      uVar8 = paVar18[-2]._M_allocated_capacity;\n      pIVar14->index_ = *(uint *)((long)paVar18 + -0x18);\n      (pIVar14->section_name_)._M_dataplus._M_p = (pointer)&(pIVar14->section_name_).field_2;\n      pcVar3 = (((string *)(paVar18 + -1))->_M_dataplus)._M_p;\n      (pIVar14->input_section_).shndx_ = (int)uVar5;\n      (pIVar14->input_section_).p2align_ = (int)((ulong)uVar5 >> 0x20);\n      (pIVar14->input_section_).u1_ = aVar6;\n      (pIVar14->input_section_).u2_ = aVar7;\n      *(undefined8 *)&(pIVar14->input_section_).section_order_index_ = uVar8;\n      if (paVar18 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar3) {\n        uVar5 = *(undefined8 *)((long)paVar18 + 8);\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n        *(undefined8 *)((long)&(pIVar14->section_name_).field_2 + 8) = uVar5;\n      }\n      else {\n        (pIVar14->section_name_)._M_dataplus._M_p = pcVar3;\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n      }\n      sVar4 = *(size_type *)((long)paVar18 + -8);\n      pIVar13 = pIVar14 + 1;\n      (((string *)(paVar18 + -1))->_M_dataplus)._M_p = (pointer)paVar18;\n      *(size_type *)((long)paVar18 + -8) = 0;\n      (pIVar14->section_name_)._M_string_length = sVar4;\n      paVar18->_M_local_buf[0] = '\0';\n      pIVar14 = pIVar13;\n      paVar18 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar18 + 0x48);\n      pIVar15 = pIVar10;\n    } while (pIVar13 != pIVar10);\n  }" if (parenthesized_expression "(__position._M_current != pIVar1)" ( (binary_expression "__position._M_current != pIVar1" (field_expression "__position._M_current" identifier . field_identifier) != identifier) )) (compound_statement "{\n    pIVar10 = (pointer)((long)&pIVar15[1].input_section_.shndx_ +\n                       ((long)pIVar1 + (-0x48 - (long)__position._M_current) & 0xfffffffffffffff8U))\n    ;\n    pIVar14 = pIVar15;\n    paVar18 = &((__position._M_current)->section_name_).field_2;\n    do {\n      uVar5 = *(undefined8 *)((long)paVar18 + -0x38);\n      aVar6 = *(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3);\n      aVar7 = *(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28);\n      uVar8 = paVar18[-2]._M_allocated_capacity;\n      pIVar14->index_ = *(uint *)((long)paVar18 + -0x18);\n      (pIVar14->section_name_)._M_dataplus._M_p = (pointer)&(pIVar14->section_name_).field_2;\n      pcVar3 = (((string *)(paVar18 + -1))->_M_dataplus)._M_p;\n      (pIVar14->input_section_).shndx_ = (int)uVar5;\n      (pIVar14->input_section_).p2align_ = (int)((ulong)uVar5 >> 0x20);\n      (pIVar14->input_section_).u1_ = aVar6;\n      (pIVar14->input_section_).u2_ = aVar7;\n      *(undefined8 *)&(pIVar14->input_section_).section_order_index_ = uVar8;\n      if (paVar18 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar3) {\n        uVar5 = *(undefined8 *)((long)paVar18 + 8);\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n        *(undefined8 *)((long)&(pIVar14->section_name_).field_2 + 8) = uVar5;\n      }\n      else {\n        (pIVar14->section_name_)._M_dataplus._M_p = pcVar3;\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n      }\n      sVar4 = *(size_type *)((long)paVar18 + -8);\n      pIVar13 = pIVar14 + 1;\n      (((string *)(paVar18 + -1))->_M_dataplus)._M_p = (pointer)paVar18;\n      *(size_type *)((long)paVar18 + -8) = 0;\n      (pIVar14->section_name_)._M_string_length = sVar4;\n      paVar18->_M_local_buf[0] = '\0';\n      pIVar14 = pIVar13;\n      paVar18 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar18 + 0x48);\n      pIVar15 = pIVar10;\n    } while (pIVar13 != pIVar10);\n  }" { (expression_statement "pIVar10 = (pointer)((long)&pIVar15[1].input_section_.shndx_ +\n                       ((long)pIVar1 + (-0x48 - (long)__position._M_current) & 0xfffffffffffffff8U))\n    ;" (assignment_expression "pIVar10 = (pointer)((long)&pIVar15[1].input_section_.shndx_ +\n                       ((long)pIVar1 + (-0x48 - (long)__position._M_current) & 0xfffffffffffffff8U))" identifier = (call_expression "(pointer)((long)&pIVar15[1].input_section_.shndx_ +\n                       ((long)pIVar1 + (-0x48 - (long)__position._M_current) & 0xfffffffffffffff8U))" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((long)&pIVar15[1].input_section_.shndx_ +\n                       ((long)pIVar1 + (-0x48 - (long)__position._M_current) & 0xfffffffffffffff8U))" ( (binary_expression "(long)&pIVar15[1].input_section_.shndx_ +\n                       ((long)pIVar1 + (-0x48 - (long)__position._M_current) & 0xfffffffffffffff8U)" (cast_expression "(long)&pIVar15[1].input_section_.shndx_" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pIVar15[1].input_section_.shndx_" & (field_expression "pIVar15[1].input_section_.shndx_" (field_expression "pIVar15[1].input_section_" (subscript_expression "pIVar15[1]" identifier [ number_literal ]) . field_identifier) . field_identifier))) + (parenthesized_expression "((long)pIVar1 + (-0x48 - (long)__position._M_current) & 0xfffffffffffffff8U)" ( (binary_expression "(long)pIVar1 + (-0x48 - (long)__position._M_current) & 0xfffffffffffffff8U" (binary_expression "(long)pIVar1 + (-0x48 - (long)__position._M_current)" (cast_expression "(long)pIVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x48 - (long)__position._M_current)" ( (binary_expression "-0x48 - (long)__position._M_current" number_literal - (cast_expression "(long)__position._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__position._M_current" identifier . field_identifier))) ))) & number_literal) ))) )))) ;) (expression_statement "pIVar14 = pIVar15;" (assignment_expression "pIVar14 = pIVar15" identifier = identifier) ;) (expression_statement "paVar18 = &((__position._M_current)->section_name_).field_2;" (assignment_expression "paVar18 = &((__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      uVar5 = *(undefined8 *)((long)paVar18 + -0x38);\n      aVar6 = *(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3);\n      aVar7 = *(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28);\n      uVar8 = paVar18[-2]._M_allocated_capacity;\n      pIVar14->index_ = *(uint *)((long)paVar18 + -0x18);\n      (pIVar14->section_name_)._M_dataplus._M_p = (pointer)&(pIVar14->section_name_).field_2;\n      pcVar3 = (((string *)(paVar18 + -1))->_M_dataplus)._M_p;\n      (pIVar14->input_section_).shndx_ = (int)uVar5;\n      (pIVar14->input_section_).p2align_ = (int)((ulong)uVar5 >> 0x20);\n      (pIVar14->input_section_).u1_ = aVar6;\n      (pIVar14->input_section_).u2_ = aVar7;\n      *(undefined8 *)&(pIVar14->input_section_).section_order_index_ = uVar8;\n      if (paVar18 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar3) {\n        uVar5 = *(undefined8 *)((long)paVar18 + 8);\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n        *(undefined8 *)((long)&(pIVar14->section_name_).field_2 + 8) = uVar5;\n      }\n      else {\n        (pIVar14->section_name_)._M_dataplus._M_p = pcVar3;\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n      }\n      sVar4 = *(size_type *)((long)paVar18 + -8);\n      pIVar13 = pIVar14 + 1;\n      (((string *)(paVar18 + -1))->_M_dataplus)._M_p = (pointer)paVar18;\n      *(size_type *)((long)paVar18 + -8) = 0;\n      (pIVar14->section_name_)._M_string_length = sVar4;\n      paVar18->_M_local_buf[0] = '\0';\n      pIVar14 = pIVar13;\n      paVar18 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar18 + 0x48);\n      pIVar15 = pIVar10;\n    } while (pIVar13 != pIVar10);" do (compound_statement "{\n      uVar5 = *(undefined8 *)((long)paVar18 + -0x38);\n      aVar6 = *(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3);\n      aVar7 = *(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28);\n      uVar8 = paVar18[-2]._M_allocated_capacity;\n      pIVar14->index_ = *(uint *)((long)paVar18 + -0x18);\n      (pIVar14->section_name_)._M_dataplus._M_p = (pointer)&(pIVar14->section_name_).field_2;\n      pcVar3 = (((string *)(paVar18 + -1))->_M_dataplus)._M_p;\n      (pIVar14->input_section_).shndx_ = (int)uVar5;\n      (pIVar14->input_section_).p2align_ = (int)((ulong)uVar5 >> 0x20);\n      (pIVar14->input_section_).u1_ = aVar6;\n      (pIVar14->input_section_).u2_ = aVar7;\n      *(undefined8 *)&(pIVar14->input_section_).section_order_index_ = uVar8;\n      if (paVar18 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar3) {\n        uVar5 = *(undefined8 *)((long)paVar18 + 8);\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n        *(undefined8 *)((long)&(pIVar14->section_name_).field_2 + 8) = uVar5;\n      }\n      else {\n        (pIVar14->section_name_)._M_dataplus._M_p = pcVar3;\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n      }\n      sVar4 = *(size_type *)((long)paVar18 + -8);\n      pIVar13 = pIVar14 + 1;\n      (((string *)(paVar18 + -1))->_M_dataplus)._M_p = (pointer)paVar18;\n      *(size_type *)((long)paVar18 + -8) = 0;\n      (pIVar14->section_name_)._M_string_length = sVar4;\n      paVar18->_M_local_buf[0] = '\0';\n      pIVar14 = pIVar13;\n      paVar18 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar18 + 0x48);\n      pIVar15 = pIVar10;\n    }" { (expression_statement "uVar5 = *(undefined8 *)((long)paVar18 + -0x38);" (assignment_expression "uVar5 = *(undefined8 *)((long)paVar18 + -0x38)" identifier = (pointer_expression "*(undefined8 *)((long)paVar18 + -0x38)" * (cast_expression "(undefined8 *)((long)paVar18 + -0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar18 + -0x38)" ( (binary_expression "(long)paVar18 + -0x38" (cast_expression "(long)paVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "aVar6 = *(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3);" (assignment_expression "aVar6 = *(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3)" identifier = (pointer_expression "*(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3)" * (cast_expression "(anon_union_8_2_227b06d7_for_u1_ *)(paVar18 + -3)" ( (type_descriptor "anon_union_8_2_227b06d7_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar18 + -3)" ( (binary_expression "paVar18 + -3" identifier + number_literal) ))))) ;) (expression_statement "aVar7 = *(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28);" (assignment_expression "aVar7 = *(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28)" identifier = (pointer_expression "*(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28)" * (cast_expression "(anon_union_8_4_139239c7_for_u2_ *)((long)paVar18 + -0x28)" ( (type_descriptor "anon_union_8_4_139239c7_for_u2_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar18 + -0x28)" ( (binary_expression "(long)paVar18 + -0x28" (cast_expression "(long)paVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar8 = paVar18[-2]._M_allocated_capacity;" (assignment_expression "uVar8 = paVar18[-2]._M_allocated_capacity" identifier = (field_expression "paVar18[-2]._M_allocated_capacity" (subscript_expression "paVar18[-2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pIVar14->index_ = *(uint *)((long)paVar18 + -0x18);" (assignment_expression "pIVar14->index_ = *(uint *)((long)paVar18 + -0x18)" (field_expression "pIVar14->index_" identifier -> field_identifier) = (pointer_expression "*(uint *)((long)paVar18 + -0x18)" * (cast_expression "(uint *)((long)paVar18 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar18 + -0x18)" ( (binary_expression "(long)paVar18 + -0x18" (cast_expression "(long)paVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "(pIVar14->section_name_)._M_dataplus._M_p = (pointer)&(pIVar14->section_name_).field_2;" (assignment_expression "(pIVar14->section_name_)._M_dataplus._M_p = (pointer)&(pIVar14->section_name_).field_2" (field_expression "(pIVar14->section_name_)._M_dataplus._M_p" (field_expression "(pIVar14->section_name_)._M_dataplus" (parenthesized_expression "(pIVar14->section_name_)" ( (field_expression "pIVar14->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(pIVar14->section_name_).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(pIVar14->section_name_).field_2" (parenthesized_expression "(pIVar14->section_name_)" ( (field_expression "pIVar14->section_name_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pcVar3 = (((string *)(paVar18 + -1))->_M_dataplus)._M_p;" (assignment_expression "pcVar3 = (((string *)(paVar18 + -1))->_M_dataplus)._M_p" identifier = (field_expression "(((string *)(paVar18 + -1))->_M_dataplus)._M_p" (parenthesized_expression "(((string *)(paVar18 + -1))->_M_dataplus)" ( (field_expression "((string *)(paVar18 + -1))->_M_dataplus" (parenthesized_expression "((string *)(paVar18 + -1))" ( (cast_expression "(string *)(paVar18 + -1)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar18 + -1)" ( (binary_expression "paVar18 + -1" identifier + number_literal) ))) )) -> field_identifier) )) . field_identifier)) ;) (expression_statement "(pIVar14->input_section_).shndx_ = (int)uVar5;" (assignment_expression "(pIVar14->input_section_).shndx_ = (int)uVar5" (field_expression "(pIVar14->input_section_).shndx_" (parenthesized_expression "(pIVar14->input_section_)" ( (field_expression "pIVar14->input_section_" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "(pIVar14->input_section_).p2align_ = (int)((ulong)uVar5 >> 0x20);" (assignment_expression "(pIVar14->input_section_).p2align_ = (int)((ulong)uVar5 >> 0x20)" (field_expression "(pIVar14->input_section_).p2align_" (parenthesized_expression "(pIVar14->input_section_)" ( (field_expression "pIVar14->input_section_" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(int)((ulong)uVar5 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulong)uVar5 >> 0x20)" ( (binary_expression "(ulong)uVar5 >> 0x20" (cast_expression "(ulong)uVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "(pIVar14->input_section_).u1_ = aVar6;" (assignment_expression "(pIVar14->input_section_).u1_ = aVar6" (field_expression "(pIVar14->input_section_).u1_" (parenthesized_expression "(pIVar14->input_section_)" ( (field_expression "pIVar14->input_section_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(pIVar14->input_section_).u2_ = aVar7;" (assignment_expression "(pIVar14->input_section_).u2_ = aVar7" (field_expression "(pIVar14->input_section_).u2_" (parenthesized_expression "(pIVar14->input_section_)" ( (field_expression "pIVar14->input_section_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "*(undefined8 *)&(pIVar14->input_section_).section_order_index_ = uVar8;" (assignment_expression "*(undefined8 *)&(pIVar14->input_section_).section_order_index_ = uVar8" (pointer_expression "*(undefined8 *)&(pIVar14->input_section_).section_order_index_" * (cast_expression "(undefined8 *)&(pIVar14->input_section_).section_order_index_" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pIVar14->input_section_).section_order_index_" & (field_expression "(pIVar14->input_section_).section_order_index_" (parenthesized_expression "(pIVar14->input_section_)" ( (field_expression "pIVar14->input_section_" identifier -> field_identifier) )) . field_identifier)))) = identifier) ;) (if_statement "if (paVar18 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar3) {\n        uVar5 = *(undefined8 *)((long)paVar18 + 8);\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n        *(undefined8 *)((long)&(pIVar14->section_name_).field_2 + 8) = uVar5;\n      }\n      else {\n        (pIVar14->section_name_)._M_dataplus._M_p = pcVar3;\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n      }" if (parenthesized_expression "(paVar18 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar3)" ( (binary_expression "paVar18 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar3)" identifier == (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar3)" ( (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           *)pcVar3" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)pcVar3" identifier * (ERROR ")" )) identifier)) ))) )) (compound_statement "{\n        uVar5 = *(undefined8 *)((long)paVar18 + 8);\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n        *(undefined8 *)((long)&(pIVar14->section_name_).field_2 + 8) = uVar5;\n      }" { (expression_statement "uVar5 = *(undefined8 *)((long)paVar18 + 8);" (assignment_expression "uVar5 = *(undefined8 *)((long)paVar18 + 8)" identifier = (pointer_expression "*(undefined8 *)((long)paVar18 + 8)" * (cast_expression "(undefined8 *)((long)paVar18 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar18 + 8)" ( (binary_expression "(long)paVar18 + 8" (cast_expression "(long)paVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "(pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;" (assignment_expression "(pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity" (field_expression "(pIVar14->section_name_).field_2._M_allocated_capacity" (field_expression "(pIVar14->section_name_).field_2" (parenthesized_expression "(pIVar14->section_name_)" ( (field_expression "pIVar14->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar18->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "*(undefined8 *)((long)&(pIVar14->section_name_).field_2 + 8) = uVar5;" (assignment_expression "*(undefined8 *)((long)&(pIVar14->section_name_).field_2 + 8) = uVar5" (pointer_expression "*(undefined8 *)((long)&(pIVar14->section_name_).field_2 + 8)" * (cast_expression "(undefined8 *)((long)&(pIVar14->section_name_).field_2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&(pIVar14->section_name_).field_2 + 8)" ( (binary_expression "(long)&(pIVar14->section_name_).field_2 + 8" (cast_expression "(long)&(pIVar14->section_name_).field_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&(pIVar14->section_name_).field_2" & (field_expression "(pIVar14->section_name_).field_2" (parenthesized_expression "(pIVar14->section_name_)" ( (field_expression "pIVar14->section_name_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = identifier) ;) }) (else_clause "else {\n        (pIVar14->section_name_)._M_dataplus._M_p = pcVar3;\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n      }" else (compound_statement "{\n        (pIVar14->section_name_)._M_dataplus._M_p = pcVar3;\n        (pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;\n      }" { (expression_statement "(pIVar14->section_name_)._M_dataplus._M_p = pcVar3;" (assignment_expression "(pIVar14->section_name_)._M_dataplus._M_p = pcVar3" (field_expression "(pIVar14->section_name_)._M_dataplus._M_p" (field_expression "(pIVar14->section_name_)._M_dataplus" (parenthesized_expression "(pIVar14->section_name_)" ( (field_expression "pIVar14->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity;" (assignment_expression "(pIVar14->section_name_).field_2._M_allocated_capacity = paVar18->_M_allocated_capacity" (field_expression "(pIVar14->section_name_).field_2._M_allocated_capacity" (field_expression "(pIVar14->section_name_).field_2" (parenthesized_expression "(pIVar14->section_name_)" ( (field_expression "pIVar14->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar18->_M_allocated_capacity" identifier -> field_identifier)) ;) }))) (expression_statement "sVar4 = *(size_type *)((long)paVar18 + -8);" (assignment_expression "sVar4 = *(size_type *)((long)paVar18 + -8)" identifier = (pointer_expression "*(size_type *)((long)paVar18 + -8)" * (cast_expression "(size_type *)((long)paVar18 + -8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar18 + -8)" ( (binary_expression "(long)paVar18 + -8" (cast_expression "(long)paVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "pIVar13 = pIVar14 + 1;" (assignment_expression "pIVar13 = pIVar14 + 1" identifier = (binary_expression "pIVar14 + 1" identifier + number_literal)) ;) (expression_statement "(((string *)(paVar18 + -1))->_M_dataplus)._M_p = (pointer)paVar18;" (assignment_expression "(((string *)(paVar18 + -1))->_M_dataplus)._M_p = (pointer)paVar18" (field_expression "(((string *)(paVar18 + -1))->_M_dataplus)._M_p" (parenthesized_expression "(((string *)(paVar18 + -1))->_M_dataplus)" ( (field_expression "((string *)(paVar18 + -1))->_M_dataplus" (parenthesized_expression "((string *)(paVar18 + -1))" ( (cast_expression "(string *)(paVar18 + -1)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar18 + -1)" ( (binary_expression "paVar18 + -1" identifier + number_literal) ))) )) -> field_identifier) )) . field_identifier) = (cast_expression "(pointer)paVar18" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "*(size_type *)((long)paVar18 + -8) = 0;" (assignment_expression "*(size_type *)((long)paVar18 + -8) = 0" (pointer_expression "*(size_type *)((long)paVar18 + -8)" * (cast_expression "(size_type *)((long)paVar18 + -8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar18 + -8)" ( (binary_expression "(long)paVar18 + -8" (cast_expression "(long)paVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "(pIVar14->section_name_)._M_string_length = sVar4;" (assignment_expression "(pIVar14->section_name_)._M_string_length = sVar4" (field_expression "(pIVar14->section_name_)._M_string_length" (parenthesized_expression "(pIVar14->section_name_)" ( (field_expression "pIVar14->section_name_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "paVar18->_M_local_buf[0] = '\0';" (assignment_expression "paVar18->_M_local_buf[0] = '\0'" (subscript_expression "paVar18->_M_local_buf[0]" (field_expression "paVar18->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pIVar14 = pIVar13;" (assignment_expression "pIVar14 = pIVar13" identifier = identifier) ;) (expression_statement "paVar18 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar18 + 0x48);" (assignment_expression "paVar18 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar18 + 0x48)" identifier = (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar18 + 0x48)" (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 "((long)paVar18 + 0x48)" ( (binary_expression "(long)paVar18 + 0x48" (cast_expression "(long)paVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "pIVar15 = pIVar10;" (assignment_expression "pIVar15 = pIVar10" identifier = identifier) ;) }) while (parenthesized_expression "(pIVar13 != pIVar10)" ( (binary_expression "pIVar13 != pIVar10" identifier != identifier) )) ;) })) (for_statement "for (; pIVar9 != pIVar1; pIVar9 = pIVar9 + 1) {\n    pcVar3 = (pIVar9->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         *)pcVar3 != &(pIVar9->section_name_).field_2) {\n      operator_delete(pcVar3);\n    }\n  }" for ( ; (binary_expression "pIVar9 != pIVar1" identifier != identifier) ; (assignment_expression "pIVar9 = pIVar9 + 1" identifier = (binary_expression "pIVar9 + 1" identifier + number_literal)) ) (compound_statement "{\n    pcVar3 = (pIVar9->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         *)pcVar3 != &(pIVar9->section_name_).field_2) {\n      operator_delete(pcVar3);\n    }\n  }" { (expression_statement "pcVar3 = (pIVar9->section_name_)._M_dataplus._M_p;" (assignment_expression "pcVar3 = (pIVar9->section_name_)._M_dataplus._M_p" identifier = (field_expression "(pIVar9->section_name_)._M_dataplus._M_p" (field_expression "(pIVar9->section_name_)._M_dataplus" (parenthesized_expression "(pIVar9->section_name_)" ( (field_expression "pIVar9->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         *)pcVar3 != &(pIVar9->section_name_).field_2) {\n      operator_delete(pcVar3);\n    }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)pcVar3 != &(pIVar9->section_name_).field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)pcVar3 != &(pIVar9->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         *)pcVar3 != &(pIVar9->section_name_).field_2" (binary_expression "allocator<char>_>_9\n         *)pcVar3" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n         *)pcVar3" identifier * (ERROR ")" )) identifier)) != (pointer_expression "&(pIVar9->section_name_).field_2" & (field_expression "(pIVar9->section_name_).field_2" (parenthesized_expression "(pIVar9->section_name_)" ( (field_expression "pIVar9->section_name_" identifier -> field_identifier) )) . field_identifier))) )) )) (compound_statement "{\n      operator_delete(pcVar3);\n    }" { (expression_statement "operator_delete(pcVar3);" (call_expression "operator_delete(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) })) })) (if_statement "if (pIVar2 != (Input_section_sort_entry *)0x0) {\n    operator_delete(pIVar2);\n  }" if (parenthesized_expression "(pIVar2 != (Input_section_sort_entry *)0x0)" ( (binary_expression "pIVar2 != (Input_section_sort_entry *)0x0" identifier != (cast_expression "(Input_section_sort_entry *)0x0" ( (type_descriptor "Input_section_sort_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    operator_delete(pIVar2);\n  }" { (expression_statement "operator_delete(pIVar2);" (call_expression "operator_delete(pIVar2)" identifier (argument_list "(pIVar2)" ( identifier ))) ;) })) (expression_statement "(this->\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 = pIVar12;" (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 = pIVar12" (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 = pIVar15;" (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 = pIVar15" (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_48;" (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_48" (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_0020db90(long *param_1,long param_2,undefined8 *param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  undefined8 *puVar11;\n  ulong uVar12;\n  undefined8 *puVar13;\n  undefined8 *puVar14;\n  long local_48;\n  \n  lVar1 = param_1[1];\n  lVar2 = *param_1;\n  lVar8 = lVar1 - lVar2 >> 3;\n  if (lVar8 * -0x71c71c71c71c71c7 == 0) {\n    uVar12 = 1;\nLAB_0020de25:\n    local_48 = uVar12 * 0x48;\n  }\n  else {\n    uVar12 = lVar8 * 0x1c71c71c71c71c72;\n    local_48 = -0x10;\n    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }\n  puVar9 = (undefined8 *)FUN_002d94a0(local_48);\n  local_48 = (long)puVar9 + local_48;\n  puVar11 = puVar9 + 9;\nLAB_0020dc12:\n  puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9);\n  uVar4 = *param_3;\n  uVar5 = param_3[1];\n  uVar6 = param_3[2];\n  uVar7 = param_3[3];\n  puVar3 = (undefined8 *)param_3[5];\n  *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(param_3 + 4);\n  puVar13[5] = puVar13 + 7;\n  *puVar13 = uVar4;\n  puVar13[1] = uVar5;\n  puVar13[2] = uVar6;\n  puVar13[3] = uVar7;\n  if (puVar3 == param_3 + 7) {\n    uVar4 = param_3[8];\n    puVar13[7] = param_3[7];\n    puVar13[8] = uVar4;\n  }\n  else {\n    puVar13[5] = puVar3;\n    puVar13[7] = param_3[7];\n  }\n  uVar4 = param_3[6];\n  param_3[5] = param_3 + 7;\n  param_3[6] = 0;\n  puVar13[6] = uVar4;\n  *(undefined1 *)(param_3 + 7) = 0;\n  if (param_2 != lVar2) {\n    puVar3 = puVar9;\n    puVar13 = (undefined8 *)(lVar2 + 0x38);\n    do {\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    } while (puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            );\n    puVar11 = puVar11 + 0x12;\n  }\n  lVar8 = lVar2;\n  if (param_2 != lVar1) {\n    puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)\n    ;\n    puVar13 = puVar11;\n    puVar14 = (undefined8 *)(param_2 + 0x38);\n    do {\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    } while (puVar10 != puVar3);\n  }\n  for (; lVar8 != lVar1; lVar8 = lVar8 + 0x48) {\n    if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {\n      FUN_002dac70();\n    }\n  }\n  if (lVar2 != 0) {\n    FUN_002dac70(lVar2);\n  }\n  *param_1 = (long)puVar9;\n  param_1[1] = (long)puVar11;\n  param_1[2] = local_48;\n  return;\n}\n\n" (function_definition "void FUN_0020db90(long *param_1,long param_2,undefined8 *param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  undefined8 *puVar11;\n  ulong uVar12;\n  undefined8 *puVar13;\n  undefined8 *puVar14;\n  long local_48;\n  \n  lVar1 = param_1[1];\n  lVar2 = *param_1;\n  lVar8 = lVar1 - lVar2 >> 3;\n  if (lVar8 * -0x71c71c71c71c71c7 == 0) {\n    uVar12 = 1;\nLAB_0020de25:\n    local_48 = uVar12 * 0x48;\n  }\n  else {\n    uVar12 = lVar8 * 0x1c71c71c71c71c72;\n    local_48 = -0x10;\n    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }\n  puVar9 = (undefined8 *)FUN_002d94a0(local_48);\n  local_48 = (long)puVar9 + local_48;\n  puVar11 = puVar9 + 9;\nLAB_0020dc12:\n  puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9);\n  uVar4 = *param_3;\n  uVar5 = param_3[1];\n  uVar6 = param_3[2];\n  uVar7 = param_3[3];\n  puVar3 = (undefined8 *)param_3[5];\n  *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(param_3 + 4);\n  puVar13[5] = puVar13 + 7;\n  *puVar13 = uVar4;\n  puVar13[1] = uVar5;\n  puVar13[2] = uVar6;\n  puVar13[3] = uVar7;\n  if (puVar3 == param_3 + 7) {\n    uVar4 = param_3[8];\n    puVar13[7] = param_3[7];\n    puVar13[8] = uVar4;\n  }\n  else {\n    puVar13[5] = puVar3;\n    puVar13[7] = param_3[7];\n  }\n  uVar4 = param_3[6];\n  param_3[5] = param_3 + 7;\n  param_3[6] = 0;\n  puVar13[6] = uVar4;\n  *(undefined1 *)(param_3 + 7) = 0;\n  if (param_2 != lVar2) {\n    puVar3 = puVar9;\n    puVar13 = (undefined8 *)(lVar2 + 0x38);\n    do {\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    } while (puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            );\n    puVar11 = puVar11 + 0x12;\n  }\n  lVar8 = lVar2;\n  if (param_2 != lVar1) {\n    puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)\n    ;\n    puVar13 = puVar11;\n    puVar14 = (undefined8 *)(param_2 + 0x38);\n    do {\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    } while (puVar10 != puVar3);\n  }\n  for (; lVar8 != lVar1; lVar8 = lVar8 + 0x48) {\n    if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {\n      FUN_002dac70();\n    }\n  }\n  if (lVar2 != 0) {\n    FUN_002dac70(lVar2);\n  }\n  *param_1 = (long)puVar9;\n  param_1[1] = (long)puVar11;\n  param_1[2] = local_48;\n  return;\n}" primitive_type (function_declarator "FUN_0020db90(long *param_1,long param_2,undefined8 *param_3)" identifier (parameter_list "(long *param_1,long param_2,undefined8 *param_3)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  undefined8 *puVar11;\n  ulong uVar12;\n  undefined8 *puVar13;\n  undefined8 *puVar14;\n  long local_48;\n  \n  lVar1 = param_1[1];\n  lVar2 = *param_1;\n  lVar8 = lVar1 - lVar2 >> 3;\n  if (lVar8 * -0x71c71c71c71c71c7 == 0) {\n    uVar12 = 1;\nLAB_0020de25:\n    local_48 = uVar12 * 0x48;\n  }\n  else {\n    uVar12 = lVar8 * 0x1c71c71c71c71c72;\n    local_48 = -0x10;\n    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }\n  puVar9 = (undefined8 *)FUN_002d94a0(local_48);\n  local_48 = (long)puVar9 + local_48;\n  puVar11 = puVar9 + 9;\nLAB_0020dc12:\n  puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9);\n  uVar4 = *param_3;\n  uVar5 = param_3[1];\n  uVar6 = param_3[2];\n  uVar7 = param_3[3];\n  puVar3 = (undefined8 *)param_3[5];\n  *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(param_3 + 4);\n  puVar13[5] = puVar13 + 7;\n  *puVar13 = uVar4;\n  puVar13[1] = uVar5;\n  puVar13[2] = uVar6;\n  puVar13[3] = uVar7;\n  if (puVar3 == param_3 + 7) {\n    uVar4 = param_3[8];\n    puVar13[7] = param_3[7];\n    puVar13[8] = uVar4;\n  }\n  else {\n    puVar13[5] = puVar3;\n    puVar13[7] = param_3[7];\n  }\n  uVar4 = param_3[6];\n  param_3[5] = param_3 + 7;\n  param_3[6] = 0;\n  puVar13[6] = uVar4;\n  *(undefined1 *)(param_3 + 7) = 0;\n  if (param_2 != lVar2) {\n    puVar3 = puVar9;\n    puVar13 = (undefined8 *)(lVar2 + 0x38);\n    do {\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    } while (puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            );\n    puVar11 = puVar11 + 0x12;\n  }\n  lVar8 = lVar2;\n  if (param_2 != lVar1) {\n    puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)\n    ;\n    puVar13 = puVar11;\n    puVar14 = (undefined8 *)(param_2 + 0x38);\n    do {\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    } while (puVar10 != puVar3);\n  }\n  for (; lVar8 != lVar1; lVar8 = lVar8 + 0x48) {\n    if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {\n      FUN_002dac70();\n    }\n  }\n  if (lVar2 != 0) {\n    FUN_002dac70(lVar2);\n  }\n  *param_1 = (long)puVar9;\n  param_1[1] = (long)puVar11;\n  param_1[2] = local_48;\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined8 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined8 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "undefined8 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined8 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "long local_48;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar1 = param_1[1];" (assignment_expression "lVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "lVar2 = *param_1;" (assignment_expression "lVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "lVar8 = lVar1 - lVar2 >> 3;" (assignment_expression "lVar8 = lVar1 - lVar2 >> 3" identifier = (binary_expression "lVar1 - lVar2 >> 3" (binary_expression "lVar1 - lVar2" identifier - identifier) >> number_literal)) ;) (if_statement "if (lVar8 * -0x71c71c71c71c71c7 == 0) {\n    uVar12 = 1;\nLAB_0020de25:\n    local_48 = uVar12 * 0x48;\n  }\n  else {\n    uVar12 = lVar8 * 0x1c71c71c71c71c72;\n    local_48 = -0x10;\n    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }" if (parenthesized_expression "(lVar8 * -0x71c71c71c71c71c7 == 0)" ( (binary_expression "lVar8 * -0x71c71c71c71c71c7 == 0" (binary_expression "lVar8 * -0x71c71c71c71c71c7" identifier * number_literal) == number_literal) )) (compound_statement "{\n    uVar12 = 1;\nLAB_0020de25:\n    local_48 = uVar12 * 0x48;\n  }" { (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) (labeled_statement "LAB_0020de25:\n    local_48 = uVar12 * 0x48;" statement_identifier : (expression_statement "local_48 = uVar12 * 0x48;" (assignment_expression "local_48 = uVar12 * 0x48" identifier = (binary_expression "uVar12 * 0x48" identifier * number_literal)) ;)) }) (else_clause "else {\n    uVar12 = lVar8 * 0x1c71c71c71c71c72;\n    local_48 = -0x10;\n    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }" else (compound_statement "{\n    uVar12 = lVar8 * 0x1c71c71c71c71c72;\n    local_48 = -0x10;\n    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }" { (expression_statement "uVar12 = lVar8 * 0x1c71c71c71c71c72;" (assignment_expression "uVar12 = lVar8 * 0x1c71c71c71c71c72" identifier = (binary_expression "lVar8 * 0x1c71c71c71c71c72" identifier * number_literal)) ;) (expression_statement "local_48 = -0x10;" (assignment_expression "local_48 = -0x10" identifier = number_literal) ;) (if_statement "if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }" if (parenthesized_expression "(((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f))" ( (binary_expression "((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)" (parenthesized_expression "((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0)" ( (binary_expression "(ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0" (binary_expression "(ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12" (call_expression "(ulong)(lVar8 * -0x71c71c71c71c71c7)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(lVar8 * -0x71c71c71c71c71c7)" ( (binary_expression "lVar8 * -0x71c71c71c71c71c7" identifier * number_literal) ))) < identifier) || (binary_expression "lVar8 * 0x71c71c71c71c71c7 == 0" (binary_expression "lVar8 * 0x71c71c71c71c71c7" identifier * number_literal) == number_literal)) )) && (parenthesized_expression "(uVar12 < 0x38e38e38e38e38f)" ( (binary_expression "uVar12 < 0x38e38e38e38e38f" identifier < number_literal) ))) )) (compound_statement "{\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }" { (if_statement "if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }" { (expression_statement "puVar11 = (undefined8 *)0x48;" (assignment_expression "puVar11 = (undefined8 *)0x48" identifier = (cast_expression "(undefined8 *)0x48" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = (undefined8 *)0x0;" (assignment_expression "puVar9 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0020dc12;" goto statement_identifier ;) })) (goto_statement "goto LAB_0020de25;" goto statement_identifier ;) })) }))) (expression_statement "puVar9 = (undefined8 *)FUN_002d94a0(local_48);" (assignment_expression "puVar9 = (undefined8 *)FUN_002d94a0(local_48)" identifier = (cast_expression "(undefined8 *)FUN_002d94a0(local_48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d94a0(local_48)" identifier (argument_list "(local_48)" ( identifier ))))) ;) (expression_statement "local_48 = (long)puVar9 + local_48;" (assignment_expression "local_48 = (long)puVar9 + local_48" identifier = (binary_expression "(long)puVar9 + local_48" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "puVar11 = puVar9 + 9;" (assignment_expression "puVar11 = puVar9 + 9" identifier = (binary_expression "puVar9 + 9" identifier + number_literal)) ;) (labeled_statement "LAB_0020dc12:\n  puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9);" statement_identifier : (expression_statement "puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9);" (assignment_expression "puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9)" identifier = (cast_expression "(undefined8 *)((param_2 - lVar2) + (long)puVar9)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((param_2 - lVar2) + (long)puVar9)" ( (binary_expression "(param_2 - lVar2) + (long)puVar9" (parenthesized_expression "(param_2 - lVar2)" ( (binary_expression "param_2 - lVar2" identifier - identifier) )) + (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;)) (expression_statement "uVar4 = *param_3;" (assignment_expression "uVar4 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar5 = param_3[1];" (assignment_expression "uVar5 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = param_3[2];" (assignment_expression "uVar6 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = param_3[3];" (assignment_expression "uVar7 = param_3[3]" identifier = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (expression_statement "puVar3 = (undefined8 *)param_3[5];" (assignment_expression "puVar3 = (undefined8 *)param_3[5]" identifier = (cast_expression "(undefined8 *)param_3[5]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[5]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined4 *)(puVar13 + 4) = *(undefined4 *)(param_3 + 4);" (assignment_expression "*(undefined4 *)(puVar13 + 4) = *(undefined4 *)(param_3 + 4)" (pointer_expression "*(undefined4 *)(puVar13 + 4)" * (cast_expression "(undefined4 *)(puVar13 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 4)" ( (binary_expression "puVar13 + 4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_3 + 4)" * (cast_expression "(undefined4 *)(param_3 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (expression_statement "puVar13[5] = puVar13 + 7;" (assignment_expression "puVar13[5] = puVar13 + 7" (subscript_expression "puVar13[5]" identifier [ number_literal ]) = (binary_expression "puVar13 + 7" identifier + number_literal)) ;) (expression_statement "*puVar13 = uVar4;" (assignment_expression "*puVar13 = uVar4" (pointer_expression "*puVar13" * identifier) = identifier) ;) (expression_statement "puVar13[1] = uVar5;" (assignment_expression "puVar13[1] = uVar5" (subscript_expression "puVar13[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[2] = uVar6;" (assignment_expression "puVar13[2] = uVar6" (subscript_expression "puVar13[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[3] = uVar7;" (assignment_expression "puVar13[3] = uVar7" (subscript_expression "puVar13[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar3 == param_3 + 7) {\n    uVar4 = param_3[8];\n    puVar13[7] = param_3[7];\n    puVar13[8] = uVar4;\n  }\n  else {\n    puVar13[5] = puVar3;\n    puVar13[7] = param_3[7];\n  }" if (parenthesized_expression "(puVar3 == param_3 + 7)" ( (binary_expression "puVar3 == param_3 + 7" identifier == (binary_expression "param_3 + 7" identifier + number_literal)) )) (compound_statement "{\n    uVar4 = param_3[8];\n    puVar13[7] = param_3[7];\n    puVar13[8] = uVar4;\n  }" { (expression_statement "uVar4 = param_3[8];" (assignment_expression "uVar4 = param_3[8]" identifier = (subscript_expression "param_3[8]" identifier [ number_literal ])) ;) (expression_statement "puVar13[7] = param_3[7];" (assignment_expression "puVar13[7] = param_3[7]" (subscript_expression "puVar13[7]" identifier [ number_literal ]) = (subscript_expression "param_3[7]" identifier [ number_literal ])) ;) (expression_statement "puVar13[8] = uVar4;" (assignment_expression "puVar13[8] = uVar4" (subscript_expression "puVar13[8]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n    puVar13[5] = puVar3;\n    puVar13[7] = param_3[7];\n  }" else (compound_statement "{\n    puVar13[5] = puVar3;\n    puVar13[7] = param_3[7];\n  }" { (expression_statement "puVar13[5] = puVar3;" (assignment_expression "puVar13[5] = puVar3" (subscript_expression "puVar13[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[7] = param_3[7];" (assignment_expression "puVar13[7] = param_3[7]" (subscript_expression "puVar13[7]" identifier [ number_literal ]) = (subscript_expression "param_3[7]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar4 = param_3[6];" (assignment_expression "uVar4 = param_3[6]" identifier = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) (expression_statement "param_3[5] = param_3 + 7;" (assignment_expression "param_3[5] = param_3 + 7" (subscript_expression "param_3[5]" identifier [ number_literal ]) = (binary_expression "param_3 + 7" identifier + number_literal)) ;) (expression_statement "param_3[6] = 0;" (assignment_expression "param_3[6] = 0" (subscript_expression "param_3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar13[6] = uVar4;" (assignment_expression "puVar13[6] = uVar4" (subscript_expression "puVar13[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(param_3 + 7) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 7) = 0" (pointer_expression "*(undefined1 *)(param_3 + 7)" * (cast_expression "(undefined1 *)(param_3 + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 7)" ( (binary_expression "param_3 + 7" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (param_2 != lVar2) {\n    puVar3 = puVar9;\n    puVar13 = (undefined8 *)(lVar2 + 0x38);\n    do {\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    } while (puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            );\n    puVar11 = puVar11 + 0x12;\n  }" if (parenthesized_expression "(param_2 != lVar2)" ( (binary_expression "param_2 != lVar2" identifier != identifier) )) (compound_statement "{\n    puVar3 = puVar9;\n    puVar13 = (undefined8 *)(lVar2 + 0x38);\n    do {\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    } while (puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            );\n    puVar11 = puVar11 + 0x12;\n  }" { (expression_statement "puVar3 = puVar9;" (assignment_expression "puVar3 = puVar9" identifier = identifier) ;) (expression_statement "puVar13 = (undefined8 *)(lVar2 + 0x38);" (assignment_expression "puVar13 = (undefined8 *)(lVar2 + 0x38)" identifier = (cast_expression "(undefined8 *)(lVar2 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x38)" ( (binary_expression "lVar2 + 0x38" identifier + number_literal) )))) ;) (do_statement "do {\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    } while (puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            );" do (compound_statement "{\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    }" { (expression_statement "puVar11 = puVar3;" (assignment_expression "puVar11 = puVar3" identifier = identifier) ;) (expression_statement "uVar4 = puVar13[-6];" (assignment_expression "uVar4 = puVar13[-6]" identifier = (subscript_expression "puVar13[-6]" identifier [ number_literal ])) ;) (expression_statement "*puVar11 = puVar13[-7];" (assignment_expression "*puVar11 = puVar13[-7]" (pointer_expression "*puVar11" * identifier) = (subscript_expression "puVar13[-7]" identifier [ number_literal ])) ;) (expression_statement "puVar11[1] = uVar4;" (assignment_expression "puVar11[1] = uVar4" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar4 = puVar13[-4];" (assignment_expression "uVar4 = puVar13[-4]" identifier = (subscript_expression "puVar13[-4]" identifier [ number_literal ])) ;) (expression_statement "puVar11[2] = puVar13[-5];" (assignment_expression "puVar11[2] = puVar13[-5]" (subscript_expression "puVar11[2]" identifier [ number_literal ]) = (subscript_expression "puVar13[-5]" identifier [ number_literal ])) ;) (expression_statement "puVar11[3] = uVar4;" (assignment_expression "puVar11[3] = uVar4" (subscript_expression "puVar11[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);" (assignment_expression "*(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3)" (pointer_expression "*(undefined4 *)(puVar11 + 4)" * (cast_expression "(undefined4 *)(puVar11 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 4)" ( (binary_expression "puVar11 + 4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar13 + -3)" * (cast_expression "(undefined4 *)(puVar13 + -3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + -3)" ( (binary_expression "puVar13 + -3" identifier + number_literal) ))))) ;) (expression_statement "puVar11[5] = puVar11 + 7;" (assignment_expression "puVar11[5] = puVar11 + 7" (subscript_expression "puVar11[5]" identifier [ number_literal ]) = (binary_expression "puVar11 + 7" identifier + number_literal)) ;) (if_statement "if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }" if (parenthesized_expression "((undefined8 *)puVar13[-2] == puVar13)" ( (binary_expression "(undefined8 *)puVar13[-2] == puVar13" (cast_expression "(undefined8 *)puVar13[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }" { (expression_statement "uVar4 = puVar13[1];" (assignment_expression "uVar4 = puVar13[1]" identifier = (subscript_expression "puVar13[1]" identifier [ number_literal ])) ;) (expression_statement "puVar11[7] = *puVar13;" (assignment_expression "puVar11[7] = *puVar13" (subscript_expression "puVar11[7]" identifier [ number_literal ]) = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar11[8] = uVar4;" (assignment_expression "puVar11[8] = uVar4" (subscript_expression "puVar11[8]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }" else (compound_statement "{\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }" { (expression_statement "puVar11[5] = (undefined8 *)puVar13[-2];" (assignment_expression "puVar11[5] = (undefined8 *)puVar13[-2]" (subscript_expression "puVar11[5]" identifier [ number_literal ]) = (cast_expression "(undefined8 *)puVar13[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar11[7] = *puVar13;" (assignment_expression "puVar11[7] = *puVar13" (subscript_expression "puVar11[7]" identifier [ number_literal ]) = (pointer_expression "*puVar13" * identifier)) ;) }))) (expression_statement "puVar11[6] = puVar13[-1];" (assignment_expression "puVar11[6] = puVar13[-1]" (subscript_expression "puVar11[6]" identifier [ number_literal ]) = (subscript_expression "puVar13[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar13[-2] = puVar13;" (assignment_expression "puVar13[-2] = puVar13" (subscript_expression "puVar13[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[-1] = 0;" (assignment_expression "puVar13[-1] = 0" (subscript_expression "puVar13[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar13 = 0;" (assignment_expression "*(undefined1 *)puVar13 = 0" (pointer_expression "*(undefined1 *)puVar13" * (cast_expression "(undefined1 *)puVar13" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar3 = puVar11 + 9;" (assignment_expression "puVar3 = puVar11 + 9" identifier = (binary_expression "puVar11 + 9" identifier + number_literal)) ;) (expression_statement "puVar13 = puVar13 + 9;" (assignment_expression "puVar13 = puVar13 + 9" identifier = (binary_expression "puVar13 + 9" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            )" ( (binary_expression "puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)" (binary_expression "puVar11 + 9" identifier + number_literal) != (cast_expression "(undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)" ( (binary_expression "(long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48" (binary_expression "(long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U)" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U)" ( (binary_expression "(param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U" (binary_expression "(param_2 + -0x48) - lVar2" (parenthesized_expression "(param_2 + -0x48)" ( (binary_expression "param_2 + -0x48" identifier + number_literal) )) - identifier) & number_literal) ))) + number_literal) )))) )) ;) (expression_statement "puVar11 = puVar11 + 0x12;" (assignment_expression "puVar11 = puVar11 + 0x12" identifier = (binary_expression "puVar11 + 0x12" identifier + number_literal)) ;) })) (expression_statement "lVar8 = lVar2;" (assignment_expression "lVar8 = lVar2" identifier = identifier) ;) (if_statement "if (param_2 != lVar1) {\n    puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)\n    ;\n    puVar13 = puVar11;\n    puVar14 = (undefined8 *)(param_2 + 0x38);\n    do {\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    } while (puVar10 != puVar3);\n  }" if (parenthesized_expression "(param_2 != lVar1)" ( (binary_expression "param_2 != lVar1" identifier != identifier) )) (compound_statement "{\n    puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)\n    ;\n    puVar13 = puVar11;\n    puVar14 = (undefined8 *)(param_2 + 0x38);\n    do {\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    } while (puVar10 != puVar3);\n  }" { (expression_statement "puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)\n    ;" (assignment_expression "puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)" identifier = (cast_expression "(undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)" ( (binary_expression "(long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48" (binary_expression "(long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8)" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8)" ( (binary_expression "(lVar1 - param_2) - 0x48U & 0xfffffffffffffff8" (binary_expression "(lVar1 - param_2) - 0x48U" (parenthesized_expression "(lVar1 - param_2)" ( (binary_expression "lVar1 - param_2" identifier - identifier) )) - number_literal) & number_literal) ))) + number_literal) )))) ;) (expression_statement "puVar13 = puVar11;" (assignment_expression "puVar13 = puVar11" identifier = identifier) ;) (expression_statement "puVar14 = (undefined8 *)(param_2 + 0x38);" (assignment_expression "puVar14 = (undefined8 *)(param_2 + 0x38)" identifier = (cast_expression "(undefined8 *)(param_2 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) ;) (do_statement "do {\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    } while (puVar10 != puVar3);" do (compound_statement "{\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    }" { (expression_statement "uVar4 = puVar14[-7];" (assignment_expression "uVar4 = puVar14[-7]" identifier = (subscript_expression "puVar14[-7]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = puVar14[-6];" (assignment_expression "uVar5 = puVar14[-6]" identifier = (subscript_expression "puVar14[-6]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar14[-5];" (assignment_expression "uVar6 = puVar14[-5]" identifier = (subscript_expression "puVar14[-5]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar14[-4];" (assignment_expression "uVar7 = puVar14[-4]" identifier = (subscript_expression "puVar14[-4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);" (assignment_expression "*(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3)" (pointer_expression "*(undefined4 *)(puVar13 + 4)" * (cast_expression "(undefined4 *)(puVar13 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 4)" ( (binary_expression "puVar13 + 4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar14 + -3)" * (cast_expression "(undefined4 *)(puVar14 + -3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -3)" ( (binary_expression "puVar14 + -3" identifier + number_literal) ))))) ;) (expression_statement "puVar13[5] = puVar13 + 7;" (assignment_expression "puVar13[5] = puVar13 + 7" (subscript_expression "puVar13[5]" identifier [ number_literal ]) = (binary_expression "puVar13 + 7" identifier + number_literal)) ;) (expression_statement "puVar11 = (undefined8 *)puVar14[-2];" (assignment_expression "puVar11 = (undefined8 *)puVar14[-2]" identifier = (cast_expression "(undefined8 *)puVar14[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar14[-2]" identifier [ number_literal ]))) ;) (expression_statement "*puVar13 = uVar4;" (assignment_expression "*puVar13 = uVar4" (pointer_expression "*puVar13" * identifier) = identifier) ;) (expression_statement "puVar13[1] = uVar5;" (assignment_expression "puVar13[1] = uVar5" (subscript_expression "puVar13[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[2] = uVar6;" (assignment_expression "puVar13[2] = uVar6" (subscript_expression "puVar13[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[3] = uVar7;" (assignment_expression "puVar13[3] = uVar7" (subscript_expression "puVar13[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }" if (parenthesized_expression "(puVar14 == puVar11)" ( (binary_expression "puVar14 == puVar11" identifier == identifier) )) (compound_statement "{\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }" { (expression_statement "uVar4 = puVar14[1];" (assignment_expression "uVar4 = puVar14[1]" identifier = (subscript_expression "puVar14[1]" identifier [ number_literal ])) ;) (expression_statement "puVar13[7] = *puVar14;" (assignment_expression "puVar13[7] = *puVar14" (subscript_expression "puVar13[7]" identifier [ number_literal ]) = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "puVar13[8] = uVar4;" (assignment_expression "puVar13[8] = uVar4" (subscript_expression "puVar13[8]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }" else (compound_statement "{\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }" { (expression_statement "puVar13[5] = puVar11;" (assignment_expression "puVar13[5] = puVar11" (subscript_expression "puVar13[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[7] = *puVar14;" (assignment_expression "puVar13[7] = *puVar14" (subscript_expression "puVar13[7]" identifier [ number_literal ]) = (pointer_expression "*puVar14" * identifier)) ;) }))) (expression_statement "uVar4 = puVar14[-1];" (assignment_expression "uVar4 = puVar14[-1]" identifier = (subscript_expression "puVar14[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar10 = puVar13 + 9;" (assignment_expression "puVar10 = puVar13 + 9" identifier = (binary_expression "puVar13 + 9" identifier + number_literal)) ;) (expression_statement "puVar14[-2] = puVar14;" (assignment_expression "puVar14[-2] = puVar14" (subscript_expression "puVar14[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar14[-1] = 0;" (assignment_expression "puVar14[-1] = 0" (subscript_expression "puVar14[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar13[6] = uVar4;" (assignment_expression "puVar13[6] = uVar4" (subscript_expression "puVar13[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)puVar14 = 0;" (assignment_expression "*(undefined1 *)puVar14 = 0" (pointer_expression "*(undefined1 *)puVar14" * (cast_expression "(undefined1 *)puVar14" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar13 = puVar10;" (assignment_expression "puVar13 = puVar10" identifier = identifier) ;) (expression_statement "puVar14 = puVar14 + 9;" (assignment_expression "puVar14 = puVar14 + 9" identifier = (binary_expression "puVar14 + 9" identifier + number_literal)) ;) (expression_statement "puVar11 = puVar3;" (assignment_expression "puVar11 = puVar3" identifier = identifier) ;) }) while (parenthesized_expression "(puVar10 != puVar3)" ( (binary_expression "puVar10 != puVar3" identifier != identifier) )) ;) })) (for_statement "for (; lVar8 != lVar1; lVar8 = lVar8 + 0x48) {\n    if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {\n      FUN_002dac70();\n    }\n  }" for ( ; (binary_expression "lVar8 != lVar1" identifier != identifier) ; (assignment_expression "lVar8 = lVar8 + 0x48" identifier = (binary_expression "lVar8 + 0x48" identifier + number_literal)) ) (compound_statement "{\n    if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {\n      FUN_002dac70();\n    }\n  }" { (if_statement "if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {\n      FUN_002dac70();\n    }" if (parenthesized_expression "(*(long *)(lVar8 + 0x28) != lVar8 + 0x38)" ( (binary_expression "*(long *)(lVar8 + 0x28) != lVar8 + 0x38" (pointer_expression "*(long *)(lVar8 + 0x28)" * (cast_expression "(long *)(lVar8 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x28)" ( (binary_expression "lVar8 + 0x28" identifier + number_literal) )))) != (binary_expression "lVar8 + 0x38" identifier + number_literal)) )) (compound_statement "{\n      FUN_002dac70();\n    }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) })) (if_statement "if (lVar2 != 0) {\n    FUN_002dac70(lVar2);\n  }" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_002dac70(lVar2);\n  }" { (expression_statement "FUN_002dac70(lVar2);" (call_expression "FUN_002dac70(lVar2)" identifier (argument_list "(lVar2)" ( identifier ))) ;) })) (expression_statement "*param_1 = (long)puVar9;" (assignment_expression "*param_1 = (long)puVar9" (pointer_expression "*param_1" * identifier) = (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "param_1[1] = (long)puVar11;" (assignment_expression "param_1[1] = (long)puVar11" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "param_1[2] = local_48;" (assignment_expression "param_1[2] = local_48" (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 (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) 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 (sized_type_specifier long) 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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + 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 (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (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 IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (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) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT) & 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - 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 IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) (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 (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_0020db90(long *param_1,long param_2,undefined8 *param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  undefined8 *puVar11;\n  ulong uVar12;\n  undefined8 *puVar13;\n  undefined8 *puVar14;\n  long local_48;\n  \n  lVar1 = param_1[1];\n  lVar2 = *param_1;\n  lVar8 = lVar1 - lVar2 >> 3;\n  if (lVar8 * -0x71c71c71c71c71c7 == 0) {\n    uVar12 = 1;\nLAB_0020de25:\n    local_48 = uVar12 * 0x48;\n  }\n  else {\n    uVar12 = lVar8 * 0x1c71c71c71c71c72;\n    local_48 = -0x10;\n    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }\n  puVar9 = (undefined8 *)FUN_002d94a0(local_48);\n  local_48 = (long)puVar9 + local_48;\n  puVar11 = puVar9 + 9;\nLAB_0020dc12:\n  puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9);\n  uVar4 = *param_3;\n  uVar5 = param_3[1];\n  uVar6 = param_3[2];\n  uVar7 = param_3[3];\n  puVar3 = (undefined8 *)param_3[5];\n  *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(param_3 + 4);\n  puVar13[5] = puVar13 + 7;\n  *puVar13 = uVar4;\n  puVar13[1] = uVar5;\n  puVar13[2] = uVar6;\n  puVar13[3] = uVar7;\n  if (puVar3 == param_3 + 7) {\n    uVar4 = param_3[8];\n    puVar13[7] = param_3[7];\n    puVar13[8] = uVar4;\n  }\n  else {\n    puVar13[5] = puVar3;\n    puVar13[7] = param_3[7];\n  }\n  uVar4 = param_3[6];\n  param_3[5] = param_3 + 7;\n  param_3[6] = 0;\n  puVar13[6] = uVar4;\n  *(undefined1 *)(param_3 + 7) = 0;\n  if (param_2 != lVar2) {\n    puVar3 = puVar9;\n    puVar13 = (undefined8 *)(lVar2 + 0x38);\n    do {\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    } while (puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            );\n    puVar11 = puVar11 + 0x12;\n  }\n  lVar8 = lVar2;\n  if (param_2 != lVar1) {\n    puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)\n    ;\n    puVar13 = puVar11;\n    puVar14 = (undefined8 *)(param_2 + 0x38);\n    do {\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    } while (puVar10 != puVar3);\n  }\n  for (; lVar8 != lVar1; lVar8 = lVar8 + 0x48) {\n    if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {\n      FUN_002dac70();\n    }\n  }\n  if (lVar2 != 0) {\n    FUN_002dac70(lVar2);\n  }\n  *param_1 = (long)puVar9;\n  param_1[1] = (long)puVar11;\n  param_1[2] = local_48;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0020db90(long *param_1,long param_2,undefined8 *param_3)" (identifier "FUN_0020db90") (parameter_list "(long *param_1,long param_2,undefined8 *param_3)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "undefined8 *param_3" (type_identifier "undefined8") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  undefined8 *puVar11;\n  ulong uVar12;\n  undefined8 *puVar13;\n  undefined8 *puVar14;\n  long local_48;\n  \n  lVar1 = param_1[1];\n  lVar2 = *param_1;\n  lVar8 = lVar1 - lVar2 >> 3;\n  if (lVar8 * -0x71c71c71c71c71c7 == 0) {\n    uVar12 = 1;\nLAB_0020de25:\n    local_48 = uVar12 * 0x48;\n  }\n  else {\n    uVar12 = lVar8 * 0x1c71c71c71c71c72;\n    local_48 = -0x10;\n    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }\n  puVar9 = (undefined8 *)FUN_002d94a0(local_48);\n  local_48 = (long)puVar9 + local_48;\n  puVar11 = puVar9 + 9;\nLAB_0020dc12:\n  puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9);\n  uVar4 = *param_3;\n  uVar5 = param_3[1];\n  uVar6 = param_3[2];\n  uVar7 = param_3[3];\n  puVar3 = (undefined8 *)param_3[5];\n  *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(param_3 + 4);\n  puVar13[5] = puVar13 + 7;\n  *puVar13 = uVar4;\n  puVar13[1] = uVar5;\n  puVar13[2] = uVar6;\n  puVar13[3] = uVar7;\n  if (puVar3 == param_3 + 7) {\n    uVar4 = param_3[8];\n    puVar13[7] = param_3[7];\n    puVar13[8] = uVar4;\n  }\n  else {\n    puVar13[5] = puVar3;\n    puVar13[7] = param_3[7];\n  }\n  uVar4 = param_3[6];\n  param_3[5] = param_3 + 7;\n  param_3[6] = 0;\n  puVar13[6] = uVar4;\n  *(undefined1 *)(param_3 + 7) = 0;\n  if (param_2 != lVar2) {\n    puVar3 = puVar9;\n    puVar13 = (undefined8 *)(lVar2 + 0x38);\n    do {\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    } while (puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            );\n    puVar11 = puVar11 + 0x12;\n  }\n  lVar8 = lVar2;\n  if (param_2 != lVar1) {\n    puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)\n    ;\n    puVar13 = puVar11;\n    puVar14 = (undefined8 *)(param_2 + 0x38);\n    do {\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    } while (puVar10 != puVar3);\n  }\n  for (; lVar8 != lVar1; lVar8 = lVar8 + 0x48) {\n    if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {\n      FUN_002dac70();\n    }\n  }\n  if (lVar2 != 0) {\n    FUN_002dac70(lVar2);\n  }\n  *param_1 = (long)puVar9;\n  param_1[1] = (long)puVar11;\n  param_1[2] = local_48;\n  return;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "undefined8 *puVar3;" (type_identifier "undefined8") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "undefined8 *puVar9;" (type_identifier "undefined8") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined8 *puVar10;" (type_identifier "undefined8") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "undefined8 *puVar11;" (type_identifier "undefined8") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "ulong uVar12;" (type_identifier "ulong") (identifier "uVar12") (; ";")) (declaration "undefined8 *puVar13;" (type_identifier "undefined8") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "undefined8 *puVar14;" (type_identifier "undefined8") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "long local_48;" (sized_type_specifier "long" (long "long")) (identifier "local_48") (; ";")) (expression_statement "lVar1 = param_1[1];" (assignment_expression "lVar1 = param_1[1]" (identifier "lVar1") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "lVar2 = *param_1;" (assignment_expression "lVar2 = *param_1" (identifier "lVar2") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "lVar8 = lVar1 - lVar2 >> 3;" (assignment_expression "lVar8 = lVar1 - lVar2 >> 3" (identifier "lVar8") (= "=") (binary_expression "lVar1 - lVar2 >> 3" (binary_expression "lVar1 - lVar2" (identifier "lVar1") (- "-") (identifier "lVar2")) (>> ">>") (number_literal "3"))) (; ";")) (if_statement "if (lVar8 * -0x71c71c71c71c71c7 == 0) {\n    uVar12 = 1;\nLAB_0020de25:\n    local_48 = uVar12 * 0x48;\n  }\n  else {\n    uVar12 = lVar8 * 0x1c71c71c71c71c72;\n    local_48 = -0x10;\n    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }" (if "if") (parenthesized_expression "(lVar8 * -0x71c71c71c71c71c7 == 0)" (( "(") (binary_expression "lVar8 * -0x71c71c71c71c71c7 == 0" (binary_expression "lVar8 * -0x71c71c71c71c71c7" (identifier "lVar8") (* "*") (number_literal "-0x71c71c71c71c71c7")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar12 = 1;\nLAB_0020de25:\n    local_48 = uVar12 * 0x48;\n  }" ({ "{") (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" (identifier "uVar12") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_0020de25:\n    local_48 = uVar12 * 0x48;" (statement_identifier "LAB_0020de25") (: ":") (expression_statement "local_48 = uVar12 * 0x48;" (assignment_expression "local_48 = uVar12 * 0x48" (identifier "local_48") (= "=") (binary_expression "uVar12 * 0x48" (identifier "uVar12") (* "*") (number_literal "0x48"))) (; ";"))) (} "}")) (else_clause "else {\n    uVar12 = lVar8 * 0x1c71c71c71c71c72;\n    local_48 = -0x10;\n    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }" (else "else") (compound_statement "{\n    uVar12 = lVar8 * 0x1c71c71c71c71c72;\n    local_48 = -0x10;\n    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }\n  }" ({ "{") (expression_statement "uVar12 = lVar8 * 0x1c71c71c71c71c72;" (assignment_expression "uVar12 = lVar8 * 0x1c71c71c71c71c72" (identifier "uVar12") (= "=") (binary_expression "lVar8 * 0x1c71c71c71c71c72" (identifier "lVar8") (* "*") (number_literal "0x1c71c71c71c71c72"))) (; ";")) (expression_statement "local_48 = -0x10;" (assignment_expression "local_48 = -0x10" (identifier "local_48") (= "=") (number_literal "-0x10")) (; ";")) (if_statement "if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)) {\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }" (if "if") (parenthesized_expression "(((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f))" (( "(") (binary_expression "((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&\n       (uVar12 < 0x38e38e38e38e38f)" (parenthesized_expression "((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0)" (( "(") (binary_expression "(ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0" (binary_expression "(ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12" (call_expression "(ulong)(lVar8 * -0x71c71c71c71c71c7)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(lVar8 * -0x71c71c71c71c71c7)" (( "(") (binary_expression "lVar8 * -0x71c71c71c71c71c7" (identifier "lVar8") (* "*") (number_literal "-0x71c71c71c71c71c7")) () ")"))) (< "<") (identifier "uVar12")) (|| "||") (binary_expression "lVar8 * 0x71c71c71c71c71c7 == 0" (binary_expression "lVar8 * 0x71c71c71c71c71c7" (identifier "lVar8") (* "*") (number_literal "0x71c71c71c71c71c7")) (== "==") (number_literal "0"))) () ")")) (&& "&&") (parenthesized_expression "(uVar12 < 0x38e38e38e38e38f)" (( "(") (binary_expression "uVar12 < 0x38e38e38e38e38f" (identifier "uVar12") (< "<") (number_literal "0x38e38e38e38e38f")) () ")"))) () ")")) (compound_statement "{\n      if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }\n      goto LAB_0020de25;\n    }" ({ "{") (if_statement "if (uVar12 == 0) {\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }" (if "if") (parenthesized_expression "(uVar12 == 0)" (( "(") (binary_expression "uVar12 == 0" (identifier "uVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        puVar11 = (undefined8 *)0x48;\n        local_48 = 0;\n        puVar9 = (undefined8 *)0x0;\n        goto LAB_0020dc12;\n      }" ({ "{") (expression_statement "puVar11 = (undefined8 *)0x48;" (assignment_expression "puVar11 = (undefined8 *)0x48" (identifier "puVar11") (= "=") (cast_expression "(undefined8 *)0x48" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x48"))) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9 = (undefined8 *)0x0;" (assignment_expression "puVar9 = (undefined8 *)0x0" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_0020dc12;" (goto "goto") (statement_identifier "LAB_0020dc12") (; ";")) (} "}"))) (goto_statement "goto LAB_0020de25;" (goto "goto") (statement_identifier "LAB_0020de25") (; ";")) (} "}"))) (} "}")))) (expression_statement "puVar9 = (undefined8 *)FUN_002d94a0(local_48);" (assignment_expression "puVar9 = (undefined8 *)FUN_002d94a0(local_48)" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)FUN_002d94a0(local_48)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d94a0(local_48)" (identifier "FUN_002d94a0") (argument_list "(local_48)" (( "(") (identifier "local_48") () ")"))))) (; ";")) (expression_statement "local_48 = (long)puVar9 + local_48;" (assignment_expression "local_48 = (long)puVar9 + local_48" (identifier "local_48") (= "=") (binary_expression "(long)puVar9 + local_48" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (identifier "local_48"))) (; ";")) (expression_statement "puVar11 = puVar9 + 9;" (assignment_expression "puVar11 = puVar9 + 9" (identifier "puVar11") (= "=") (binary_expression "puVar9 + 9" (identifier "puVar9") (+ "+") (number_literal "9"))) (; ";")) (labeled_statement "LAB_0020dc12:\n  puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9);" (statement_identifier "LAB_0020dc12") (: ":") (expression_statement "puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9);" (assignment_expression "puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9)" (identifier "puVar13") (= "=") (cast_expression "(undefined8 *)((param_2 - lVar2) + (long)puVar9)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((param_2 - lVar2) + (long)puVar9)" (( "(") (binary_expression "(param_2 - lVar2) + (long)puVar9" (parenthesized_expression "(param_2 - lVar2)" (( "(") (binary_expression "param_2 - lVar2" (identifier "param_2") (- "-") (identifier "lVar2")) () ")")) (+ "+") (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9"))) () ")")))) (; ";"))) (expression_statement "uVar4 = *param_3;" (assignment_expression "uVar4 = *param_3" (identifier "uVar4") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "uVar5 = param_3[1];" (assignment_expression "uVar5 = param_3[1]" (identifier "uVar5") (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar6 = param_3[2];" (assignment_expression "uVar6 = param_3[2]" (identifier "uVar6") (= "=") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar7 = param_3[3];" (assignment_expression "uVar7 = param_3[3]" (identifier "uVar7") (= "=") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar3 = (undefined8 *)param_3[5];" (assignment_expression "puVar3 = (undefined8 *)param_3[5]" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)param_3[5]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[5]" (identifier "param_3") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "*(undefined4 *)(puVar13 + 4) = *(undefined4 *)(param_3 + 4);" (assignment_expression "*(undefined4 *)(puVar13 + 4) = *(undefined4 *)(param_3 + 4)" (pointer_expression "*(undefined4 *)(puVar13 + 4)" (* "*") (cast_expression "(undefined4 *)(puVar13 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + 4)" (( "(") (binary_expression "puVar13 + 4" (identifier "puVar13") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_3 + 4)" (* "*") (cast_expression "(undefined4 *)(param_3 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "puVar13[5] = puVar13 + 7;" (assignment_expression "puVar13[5] = puVar13 + 7" (subscript_expression "puVar13[5]" (identifier "puVar13") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "puVar13 + 7" (identifier "puVar13") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "*puVar13 = uVar4;" (assignment_expression "*puVar13 = uVar4" (pointer_expression "*puVar13" (* "*") (identifier "puVar13")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "puVar13[1] = uVar5;" (assignment_expression "puVar13[1] = uVar5" (subscript_expression "puVar13[1]" (identifier "puVar13") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "puVar13[2] = uVar6;" (assignment_expression "puVar13[2] = uVar6" (subscript_expression "puVar13[2]" (identifier "puVar13") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "puVar13[3] = uVar7;" (assignment_expression "puVar13[3] = uVar7" (subscript_expression "puVar13[3]" (identifier "puVar13") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (puVar3 == param_3 + 7) {\n    uVar4 = param_3[8];\n    puVar13[7] = param_3[7];\n    puVar13[8] = uVar4;\n  }\n  else {\n    puVar13[5] = puVar3;\n    puVar13[7] = param_3[7];\n  }" (if "if") (parenthesized_expression "(puVar3 == param_3 + 7)" (( "(") (binary_expression "puVar3 == param_3 + 7" (identifier "puVar3") (== "==") (binary_expression "param_3 + 7" (identifier "param_3") (+ "+") (number_literal "7"))) () ")")) (compound_statement "{\n    uVar4 = param_3[8];\n    puVar13[7] = param_3[7];\n    puVar13[8] = uVar4;\n  }" ({ "{") (expression_statement "uVar4 = param_3[8];" (assignment_expression "uVar4 = param_3[8]" (identifier "uVar4") (= "=") (subscript_expression "param_3[8]" (identifier "param_3") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "puVar13[7] = param_3[7];" (assignment_expression "puVar13[7] = param_3[7]" (subscript_expression "puVar13[7]" (identifier "puVar13") ([ "[") (number_literal "7") (] "]")) (= "=") (subscript_expression "param_3[7]" (identifier "param_3") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "puVar13[8] = uVar4;" (assignment_expression "puVar13[8] = uVar4" (subscript_expression "puVar13[8]" (identifier "puVar13") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (} "}")) (else_clause "else {\n    puVar13[5] = puVar3;\n    puVar13[7] = param_3[7];\n  }" (else "else") (compound_statement "{\n    puVar13[5] = puVar3;\n    puVar13[7] = param_3[7];\n  }" ({ "{") (expression_statement "puVar13[5] = puVar3;" (assignment_expression "puVar13[5] = puVar3" (subscript_expression "puVar13[5]" (identifier "puVar13") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "puVar13[7] = param_3[7];" (assignment_expression "puVar13[7] = param_3[7]" (subscript_expression "puVar13[7]" (identifier "puVar13") ([ "[") (number_literal "7") (] "]")) (= "=") (subscript_expression "param_3[7]" (identifier "param_3") ([ "[") (number_literal "7") (] "]"))) (; ";")) (} "}")))) (expression_statement "uVar4 = param_3[6];" (assignment_expression "uVar4 = param_3[6]" (identifier "uVar4") (= "=") (subscript_expression "param_3[6]" (identifier "param_3") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "param_3[5] = param_3 + 7;" (assignment_expression "param_3[5] = param_3 + 7" (subscript_expression "param_3[5]" (identifier "param_3") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "param_3 + 7" (identifier "param_3") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "param_3[6] = 0;" (assignment_expression "param_3[6] = 0" (subscript_expression "param_3[6]" (identifier "param_3") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar13[6] = uVar4;" (assignment_expression "puVar13[6] = uVar4" (subscript_expression "puVar13[6]" (identifier "puVar13") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "*(undefined1 *)(param_3 + 7) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 7) = 0" (pointer_expression "*(undefined1 *)(param_3 + 7)" (* "*") (cast_expression "(undefined1 *)(param_3 + 7)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 7)" (( "(") (binary_expression "param_3 + 7" (identifier "param_3") (+ "+") (number_literal "7")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_2 != lVar2) {\n    puVar3 = puVar9;\n    puVar13 = (undefined8 *)(lVar2 + 0x38);\n    do {\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    } while (puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            );\n    puVar11 = puVar11 + 0x12;\n  }" (if "if") (parenthesized_expression "(param_2 != lVar2)" (( "(") (binary_expression "param_2 != lVar2" (identifier "param_2") (!= "!=") (identifier "lVar2")) () ")")) (compound_statement "{\n    puVar3 = puVar9;\n    puVar13 = (undefined8 *)(lVar2 + 0x38);\n    do {\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    } while (puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            );\n    puVar11 = puVar11 + 0x12;\n  }" ({ "{") (expression_statement "puVar3 = puVar9;" (assignment_expression "puVar3 = puVar9" (identifier "puVar3") (= "=") (identifier "puVar9")) (; ";")) (expression_statement "puVar13 = (undefined8 *)(lVar2 + 0x38);" (assignment_expression "puVar13 = (undefined8 *)(lVar2 + 0x38)" (identifier "puVar13") (= "=") (cast_expression "(undefined8 *)(lVar2 + 0x38)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x38)" (( "(") (binary_expression "lVar2 + 0x38" (identifier "lVar2") (+ "+") (number_literal "0x38")) () ")")))) (; ";")) (do_statement "do {\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    } while (puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            );" (do "do") (compound_statement "{\n      puVar11 = puVar3;\n      uVar4 = puVar13[-6];\n      *puVar11 = puVar13[-7];\n      puVar11[1] = uVar4;\n      uVar4 = puVar13[-4];\n      puVar11[2] = puVar13[-5];\n      puVar11[3] = uVar4;\n      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);\n      puVar11[5] = puVar11 + 7;\n      if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }\n      puVar11[6] = puVar13[-1];\n      puVar13[-2] = puVar13;\n      puVar13[-1] = 0;\n      *(undefined1 *)puVar13 = 0;\n      puVar3 = puVar11 + 9;\n      puVar13 = puVar13 + 9;\n    }" ({ "{") (expression_statement "puVar11 = puVar3;" (assignment_expression "puVar11 = puVar3" (identifier "puVar11") (= "=") (identifier "puVar3")) (; ";")) (expression_statement "uVar4 = puVar13[-6];" (assignment_expression "uVar4 = puVar13[-6]" (identifier "uVar4") (= "=") (subscript_expression "puVar13[-6]" (identifier "puVar13") ([ "[") (number_literal "-6") (] "]"))) (; ";")) (expression_statement "*puVar11 = puVar13[-7];" (assignment_expression "*puVar11 = puVar13[-7]" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (subscript_expression "puVar13[-7]" (identifier "puVar13") ([ "[") (number_literal "-7") (] "]"))) (; ";")) (expression_statement "puVar11[1] = uVar4;" (assignment_expression "puVar11[1] = uVar4" (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "uVar4 = puVar13[-4];" (assignment_expression "uVar4 = puVar13[-4]" (identifier "uVar4") (= "=") (subscript_expression "puVar13[-4]" (identifier "puVar13") ([ "[") (number_literal "-4") (] "]"))) (; ";")) (expression_statement "puVar11[2] = puVar13[-5];" (assignment_expression "puVar11[2] = puVar13[-5]" (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar13[-5]" (identifier "puVar13") ([ "[") (number_literal "-5") (] "]"))) (; ";")) (expression_statement "puVar11[3] = uVar4;" (assignment_expression "puVar11[3] = uVar4" (subscript_expression "puVar11[3]" (identifier "puVar11") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);" (assignment_expression "*(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3)" (pointer_expression "*(undefined4 *)(puVar11 + 4)" (* "*") (cast_expression "(undefined4 *)(puVar11 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 4)" (( "(") (binary_expression "puVar11 + 4" (identifier "puVar11") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar13 + -3)" (* "*") (cast_expression "(undefined4 *)(puVar13 + -3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + -3)" (( "(") (binary_expression "puVar13 + -3" (identifier "puVar13") (+ "+") (number_literal "-3")) () ")"))))) (; ";")) (expression_statement "puVar11[5] = puVar11 + 7;" (assignment_expression "puVar11[5] = puVar11 + 7" (subscript_expression "puVar11[5]" (identifier "puVar11") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "puVar11 + 7" (identifier "puVar11") (+ "+") (number_literal "7"))) (; ";")) (if_statement "if ((undefined8 *)puVar13[-2] == puVar13) {\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }\n      else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }" (if "if") (parenthesized_expression "((undefined8 *)puVar13[-2] == puVar13)" (( "(") (binary_expression "(undefined8 *)puVar13[-2] == puVar13" (cast_expression "(undefined8 *)puVar13[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar13[-2]" (identifier "puVar13") ([ "[") (number_literal "-2") (] "]"))) (== "==") (identifier "puVar13")) () ")")) (compound_statement "{\n        uVar4 = puVar13[1];\n        puVar11[7] = *puVar13;\n        puVar11[8] = uVar4;\n      }" ({ "{") (expression_statement "uVar4 = puVar13[1];" (assignment_expression "uVar4 = puVar13[1]" (identifier "uVar4") (= "=") (subscript_expression "puVar13[1]" (identifier "puVar13") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar11[7] = *puVar13;" (assignment_expression "puVar11[7] = *puVar13" (subscript_expression "puVar11[7]" (identifier "puVar11") ([ "[") (number_literal "7") (] "]")) (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (expression_statement "puVar11[8] = uVar4;" (assignment_expression "puVar11[8] = uVar4" (subscript_expression "puVar11[8]" (identifier "puVar11") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (} "}")) (else_clause "else {\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }" (else "else") (compound_statement "{\n        puVar11[5] = (undefined8 *)puVar13[-2];\n        puVar11[7] = *puVar13;\n      }" ({ "{") (expression_statement "puVar11[5] = (undefined8 *)puVar13[-2];" (assignment_expression "puVar11[5] = (undefined8 *)puVar13[-2]" (subscript_expression "puVar11[5]" (identifier "puVar11") ([ "[") (number_literal "5") (] "]")) (= "=") (cast_expression "(undefined8 *)puVar13[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar13[-2]" (identifier "puVar13") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "puVar11[7] = *puVar13;" (assignment_expression "puVar11[7] = *puVar13" (subscript_expression "puVar11[7]" (identifier "puVar11") ([ "[") (number_literal "7") (] "]")) (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (} "}")))) (expression_statement "puVar11[6] = puVar13[-1];" (assignment_expression "puVar11[6] = puVar13[-1]" (subscript_expression "puVar11[6]" (identifier "puVar11") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "puVar13[-1]" (identifier "puVar13") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar13[-2] = puVar13;" (assignment_expression "puVar13[-2] = puVar13" (subscript_expression "puVar13[-2]" (identifier "puVar13") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar13")) (; ";")) (expression_statement "puVar13[-1] = 0;" (assignment_expression "puVar13[-1] = 0" (subscript_expression "puVar13[-1]" (identifier "puVar13") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)puVar13 = 0;" (assignment_expression "*(undefined1 *)puVar13 = 0" (pointer_expression "*(undefined1 *)puVar13" (* "*") (cast_expression "(undefined1 *)puVar13" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar13"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3 = puVar11 + 9;" (assignment_expression "puVar3 = puVar11 + 9" (identifier "puVar3") (= "=") (binary_expression "puVar11 + 9" (identifier "puVar11") (+ "+") (number_literal "9"))) (; ";")) (expression_statement "puVar13 = puVar13 + 9;" (assignment_expression "puVar13 = puVar13 + 9" (identifier "puVar13") (= "=") (binary_expression "puVar13 + 9" (identifier "puVar13") (+ "+") (number_literal "9"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)\n            )" (( "(") (binary_expression "puVar11 + 9 !=\n             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)" (binary_expression "puVar11 + 9" (identifier "puVar11") (+ "+") (number_literal "9")) (!= "!=") (cast_expression "(undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)" (( "(") (binary_expression "(long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48" (binary_expression "(long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U)" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (parenthesized_expression "((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U)" (( "(") (binary_expression "(param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U" (binary_expression "(param_2 + -0x48) - lVar2" (parenthesized_expression "(param_2 + -0x48)" (( "(") (binary_expression "param_2 + -0x48" (identifier "param_2") (+ "+") (number_literal "-0x48")) () ")")) (- "-") (identifier "lVar2")) (& "&") (number_literal "0xfffffffffffffff8U")) () ")"))) (+ "+") (number_literal "0x48")) () ")")))) () ")")) (; ";")) (expression_statement "puVar11 = puVar11 + 0x12;" (assignment_expression "puVar11 = puVar11 + 0x12" (identifier "puVar11") (= "=") (binary_expression "puVar11 + 0x12" (identifier "puVar11") (+ "+") (number_literal "0x12"))) (; ";")) (} "}"))) (expression_statement "lVar8 = lVar2;" (assignment_expression "lVar8 = lVar2" (identifier "lVar8") (= "=") (identifier "lVar2")) (; ";")) (if_statement "if (param_2 != lVar1) {\n    puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)\n    ;\n    puVar13 = puVar11;\n    puVar14 = (undefined8 *)(param_2 + 0x38);\n    do {\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    } while (puVar10 != puVar3);\n  }" (if "if") (parenthesized_expression "(param_2 != lVar1)" (( "(") (binary_expression "param_2 != lVar1" (identifier "param_2") (!= "!=") (identifier "lVar1")) () ")")) (compound_statement "{\n    puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)\n    ;\n    puVar13 = puVar11;\n    puVar14 = (undefined8 *)(param_2 + 0x38);\n    do {\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    } while (puVar10 != puVar3);\n  }" ({ "{") (expression_statement "puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)\n    ;" (assignment_expression "puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)" (( "(") (binary_expression "(long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48" (binary_expression "(long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8)" (cast_expression "(long)puVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar11")) (+ "+") (parenthesized_expression "((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8)" (( "(") (binary_expression "(lVar1 - param_2) - 0x48U & 0xfffffffffffffff8" (binary_expression "(lVar1 - param_2) - 0x48U" (parenthesized_expression "(lVar1 - param_2)" (( "(") (binary_expression "lVar1 - param_2" (identifier "lVar1") (- "-") (identifier "param_2")) () ")")) (- "-") (number_literal "0x48U")) (& "&") (number_literal "0xfffffffffffffff8")) () ")"))) (+ "+") (number_literal "0x48")) () ")")))) (; ";")) (expression_statement "puVar13 = puVar11;" (assignment_expression "puVar13 = puVar11" (identifier "puVar13") (= "=") (identifier "puVar11")) (; ";")) (expression_statement "puVar14 = (undefined8 *)(param_2 + 0x38);" (assignment_expression "puVar14 = (undefined8 *)(param_2 + 0x38)" (identifier "puVar14") (= "=") (cast_expression "(undefined8 *)(param_2 + 0x38)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x38)" (( "(") (binary_expression "param_2 + 0x38" (identifier "param_2") (+ "+") (number_literal "0x38")) () ")")))) (; ";")) (do_statement "do {\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    } while (puVar10 != puVar3);" (do "do") (compound_statement "{\n      uVar4 = puVar14[-7];\n      uVar5 = puVar14[-6];\n      uVar6 = puVar14[-5];\n      uVar7 = puVar14[-4];\n      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);\n      puVar13[5] = puVar13 + 7;\n      puVar11 = (undefined8 *)puVar14[-2];\n      *puVar13 = uVar4;\n      puVar13[1] = uVar5;\n      puVar13[2] = uVar6;\n      puVar13[3] = uVar7;\n      if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }\n      uVar4 = puVar14[-1];\n      puVar10 = puVar13 + 9;\n      puVar14[-2] = puVar14;\n      puVar14[-1] = 0;\n      puVar13[6] = uVar4;\n      *(undefined1 *)puVar14 = 0;\n      puVar13 = puVar10;\n      puVar14 = puVar14 + 9;\n      puVar11 = puVar3;\n    }" ({ "{") (expression_statement "uVar4 = puVar14[-7];" (assignment_expression "uVar4 = puVar14[-7]" (identifier "uVar4") (= "=") (subscript_expression "puVar14[-7]" (identifier "puVar14") ([ "[") (number_literal "-7") (] "]"))) (; ";")) (expression_statement "uVar5 = puVar14[-6];" (assignment_expression "uVar5 = puVar14[-6]" (identifier "uVar5") (= "=") (subscript_expression "puVar14[-6]" (identifier "puVar14") ([ "[") (number_literal "-6") (] "]"))) (; ";")) (expression_statement "uVar6 = puVar14[-5];" (assignment_expression "uVar6 = puVar14[-5]" (identifier "uVar6") (= "=") (subscript_expression "puVar14[-5]" (identifier "puVar14") ([ "[") (number_literal "-5") (] "]"))) (; ";")) (expression_statement "uVar7 = puVar14[-4];" (assignment_expression "uVar7 = puVar14[-4]" (identifier "uVar7") (= "=") (subscript_expression "puVar14[-4]" (identifier "puVar14") ([ "[") (number_literal "-4") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);" (assignment_expression "*(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3)" (pointer_expression "*(undefined4 *)(puVar13 + 4)" (* "*") (cast_expression "(undefined4 *)(puVar13 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + 4)" (( "(") (binary_expression "puVar13 + 4" (identifier "puVar13") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar14 + -3)" (* "*") (cast_expression "(undefined4 *)(puVar14 + -3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + -3)" (( "(") (binary_expression "puVar14 + -3" (identifier "puVar14") (+ "+") (number_literal "-3")) () ")"))))) (; ";")) (expression_statement "puVar13[5] = puVar13 + 7;" (assignment_expression "puVar13[5] = puVar13 + 7" (subscript_expression "puVar13[5]" (identifier "puVar13") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "puVar13 + 7" (identifier "puVar13") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "puVar11 = (undefined8 *)puVar14[-2];" (assignment_expression "puVar11 = (undefined8 *)puVar14[-2]" (identifier "puVar11") (= "=") (cast_expression "(undefined8 *)puVar14[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar14[-2]" (identifier "puVar14") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "*puVar13 = uVar4;" (assignment_expression "*puVar13 = uVar4" (pointer_expression "*puVar13" (* "*") (identifier "puVar13")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "puVar13[1] = uVar5;" (assignment_expression "puVar13[1] = uVar5" (subscript_expression "puVar13[1]" (identifier "puVar13") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "puVar13[2] = uVar6;" (assignment_expression "puVar13[2] = uVar6" (subscript_expression "puVar13[2]" (identifier "puVar13") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "puVar13[3] = uVar7;" (assignment_expression "puVar13[3] = uVar7" (subscript_expression "puVar13[3]" (identifier "puVar13") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (puVar14 == puVar11) {\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }\n      else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }" (if "if") (parenthesized_expression "(puVar14 == puVar11)" (( "(") (binary_expression "puVar14 == puVar11" (identifier "puVar14") (== "==") (identifier "puVar11")) () ")")) (compound_statement "{\n        uVar4 = puVar14[1];\n        puVar13[7] = *puVar14;\n        puVar13[8] = uVar4;\n      }" ({ "{") (expression_statement "uVar4 = puVar14[1];" (assignment_expression "uVar4 = puVar14[1]" (identifier "uVar4") (= "=") (subscript_expression "puVar14[1]" (identifier "puVar14") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar13[7] = *puVar14;" (assignment_expression "puVar13[7] = *puVar14" (subscript_expression "puVar13[7]" (identifier "puVar13") ([ "[") (number_literal "7") (] "]")) (= "=") (pointer_expression "*puVar14" (* "*") (identifier "puVar14"))) (; ";")) (expression_statement "puVar13[8] = uVar4;" (assignment_expression "puVar13[8] = uVar4" (subscript_expression "puVar13[8]" (identifier "puVar13") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (} "}")) (else_clause "else {\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }" (else "else") (compound_statement "{\n        puVar13[5] = puVar11;\n        puVar13[7] = *puVar14;\n      }" ({ "{") (expression_statement "puVar13[5] = puVar11;" (assignment_expression "puVar13[5] = puVar11" (subscript_expression "puVar13[5]" (identifier "puVar13") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "puVar11")) (; ";")) (expression_statement "puVar13[7] = *puVar14;" (assignment_expression "puVar13[7] = *puVar14" (subscript_expression "puVar13[7]" (identifier "puVar13") ([ "[") (number_literal "7") (] "]")) (= "=") (pointer_expression "*puVar14" (* "*") (identifier "puVar14"))) (; ";")) (} "}")))) (expression_statement "uVar4 = puVar14[-1];" (assignment_expression "uVar4 = puVar14[-1]" (identifier "uVar4") (= "=") (subscript_expression "puVar14[-1]" (identifier "puVar14") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar10 = puVar13 + 9;" (assignment_expression "puVar10 = puVar13 + 9" (identifier "puVar10") (= "=") (binary_expression "puVar13 + 9" (identifier "puVar13") (+ "+") (number_literal "9"))) (; ";")) (expression_statement "puVar14[-2] = puVar14;" (assignment_expression "puVar14[-2] = puVar14" (subscript_expression "puVar14[-2]" (identifier "puVar14") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar14")) (; ";")) (expression_statement "puVar14[-1] = 0;" (assignment_expression "puVar14[-1] = 0" (subscript_expression "puVar14[-1]" (identifier "puVar14") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar13[6] = uVar4;" (assignment_expression "puVar13[6] = uVar4" (subscript_expression "puVar13[6]" (identifier "puVar13") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "*(undefined1 *)puVar14 = 0;" (assignment_expression "*(undefined1 *)puVar14 = 0" (pointer_expression "*(undefined1 *)puVar14" (* "*") (cast_expression "(undefined1 *)puVar14" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar14"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar13 = puVar10;" (assignment_expression "puVar13 = puVar10" (identifier "puVar13") (= "=") (identifier "puVar10")) (; ";")) (expression_statement "puVar14 = puVar14 + 9;" (assignment_expression "puVar14 = puVar14 + 9" (identifier "puVar14") (= "=") (binary_expression "puVar14 + 9" (identifier "puVar14") (+ "+") (number_literal "9"))) (; ";")) (expression_statement "puVar11 = puVar3;" (assignment_expression "puVar11 = puVar3" (identifier "puVar11") (= "=") (identifier "puVar3")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar10 != puVar3)" (( "(") (binary_expression "puVar10 != puVar3" (identifier "puVar10") (!= "!=") (identifier "puVar3")) () ")")) (; ";")) (} "}"))) (for_statement "for (; lVar8 != lVar1; lVar8 = lVar8 + 0x48) {\n    if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {\n      FUN_002dac70();\n    }\n  }" (for "for") (( "(") (; ";") (binary_expression "lVar8 != lVar1" (identifier "lVar8") (!= "!=") (identifier "lVar1")) (; ";") (assignment_expression "lVar8 = lVar8 + 0x48" (identifier "lVar8") (= "=") (binary_expression "lVar8 + 0x48" (identifier "lVar8") (+ "+") (number_literal "0x48"))) () ")") (compound_statement "{\n    if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {\n      FUN_002dac70();\n    }\n  }" ({ "{") (if_statement "if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {\n      FUN_002dac70();\n    }" (if "if") (parenthesized_expression "(*(long *)(lVar8 + 0x28) != lVar8 + 0x38)" (( "(") (binary_expression "*(long *)(lVar8 + 0x28) != lVar8 + 0x38" (pointer_expression "*(long *)(lVar8 + 0x28)" (* "*") (cast_expression "(long *)(lVar8 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x28)" (( "(") (binary_expression "lVar8 + 0x28" (identifier "lVar8") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (binary_expression "lVar8 + 0x38" (identifier "lVar8") (+ "+") (number_literal "0x38"))) () ")")) (compound_statement "{\n      FUN_002dac70();\n    }" ({ "{") (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" (identifier "FUN_002dac70") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (lVar2 != 0) {\n    FUN_002dac70(lVar2);\n  }" (if "if") (parenthesized_expression "(lVar2 != 0)" (( "(") (binary_expression "lVar2 != 0" (identifier "lVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_002dac70(lVar2);\n  }" ({ "{") (expression_statement "FUN_002dac70(lVar2);" (call_expression "FUN_002dac70(lVar2)" (identifier "FUN_002dac70") (argument_list "(lVar2)" (( "(") (identifier "lVar2") () ")"))) (; ";")) (} "}"))) (expression_statement "*param_1 = (long)puVar9;" (assignment_expression "*param_1 = (long)puVar9" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9"))) (; ";")) (expression_statement "param_1[1] = (long)puVar11;" (assignment_expression "param_1[1] = (long)puVar11" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(long)puVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar11"))) (; ";")) (expression_statement "param_1[2] = local_48;" (assignment_expression "param_1[2] = local_48" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_48")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* 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::type_1,_std::var_1<gold::Output_section::type_1>var_3>
::_M_realloc_insert<gold::Output_section::type_1>
          (vector<gold::Output_section::type_1,_std::var_1<gold::Output_section::type_1>var_3>
           *this,iterator __position,type_1 *__args_0)

{
  type_1 *var_16;
  type_1 *var_14;
  type_2 var_13;
  type_3 sVar4;
  type_4 uVar5;
  type_5 aVar6;
  type_6 aVar7;
  type_4 uVar8;
  type_1 *var_20;
  type_2 var_19;
  long var_7;
  type_2 var_11;
  type_2 var_18;
  type_2 var_17;
  type_2 var_15;
  type_7 var_8;
  type_4 *var_12;
  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_7 var_10;
  type_2 local_48;
  
  var_16 = (this->
           super__Vector_base<gold::Output_section::type_1,_std::var_1<gold::Output_section::type_1>var_3>var_6
           )._M_impl._M_finish;
  var_14 = (this->
           super__Vector_base<gold::Output_section::type_1,_std::var_1<gold::Output_section::type_1>var_3>var_6
           )._M_impl._M_start;
  var_7 = (long)var_16 - (long)var_14 >> 3;
  if (var_7 * -0x71c71c71c71c71c7 == 0) {
    var_8 = 1;
LAB_0020de25:
    var_10 = var_8 * 0x48;
  }
  else {
    var_8 = var_7 * 0x1c71c71c71c71c72;
    var_10 = 0xfffffffffffffff0;
    if (((type_7)(var_7 * -0x71c71c71c71c71c7) < var_8 || var_7 * 0x71c71c71c71c71c7 == 0) &&
       (var_8 < 0x38e38e38e38e38f)) {
      if (var_8 == 0) {
        var_15 = (type_2)0x48;
        local_48 = (type_2)0x0;
        var_11 = (type_2)0x0;
        goto LAB_0020dc12;
      }
      goto LAB_0020de25;
    }
  }
  var_11 = (type_2)var_9(var_10);
  local_48 = (type_2)((long)&(var_11->input_section_).shndx_ + var_10);
  var_15 = var_11 + 1;
LAB_0020dc12:
  var_12 = (type_4 *)(((long)__position._M_current - (long)var_14) + (long)var_11);
  uVar5 = *(type_4 *)&__args_0->input_section_;
  aVar6 = (__args_0->input_section_).u1_;
  aVar7 = (__args_0->input_section_).u2_;
  uVar8 = *(type_4 *)&(__args_0->input_section_).section_order_index_;
  var_13 = (__args_0->section_name_)._M_dataplus._M_p;
  *(type_8 *)(var_12 + 4) = __args_0->index_;
  var_12[5] = var_12 + 7;
  var_5 = &(__args_0->section_name_).field_2;
  *var_12 = uVar5;
  *(type_5 *)(var_12 + 1) = aVar6;
  *(type_6 *)(var_12 + 2) = aVar7;
  var_12[3] = uVar8;
  if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
       *)var_13 == var_5) {
    uVar5 = *(type_4 *)((long)&(__args_0->section_name_).field_2 + 8);
    var_12[7] = (__args_0->section_name_).field_2._M_allocated_capacity;
    var_12[8] = uVar5;
  }
  else {
    var_12[5] = var_13;
    var_12[7] = (__args_0->section_name_).field_2._M_allocated_capacity;
  }
  sVar4 = (__args_0->section_name_)._M_string_length;
  (__args_0->section_name_)._M_dataplus._M_p = (type_2)var_5;
  (__args_0->section_name_)._M_string_length = 0;
  var_12[6] = sVar4;
  (__args_0->section_name_).field_2._M_local_buf[0] = '\0';
  if (__position._M_current != var_14) {
    var_19 = var_11;
    var_5 = &(var_14->section_name_).field_2;
    do {
      var_15 = var_19;
      uVar5 = *(type_4 *)((long)var_5 + -0x38);
      aVar6 = *(type_5 *)(var_5 + -3);
      (var_15->input_section_).shndx_ = (int)uVar5;
      (var_15->input_section_).p2align_ = (int)((type_7)uVar5 >> 0x20);
      (var_15->input_section_).u1_ = aVar6;
      uVar5 = var_5[-2]._M_allocated_capacity;
      (var_15->input_section_).u2_ = *(type_6 *)((long)var_5 + -0x28);
      *(type_4 *)&(var_15->input_section_).section_order_index_ = uVar5;
      var_15->index_ = *(type_8 *)((long)var_5 + -0x18);
      (var_15->section_name_)._M_dataplus._M_p = (type_2)&(var_15->section_name_).field_2;
      var_13 = (((type_9 *)(var_5 + -1))->_M_dataplus)._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
           *)var_13 == var_5) {
        uVar5 = *(type_4 *)((long)var_5 + 8);
        (var_15->section_name_).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
        *(type_4 *)((long)&(var_15->section_name_).field_2 + 8) = uVar5;
      }
      else {
        (var_15->section_name_)._M_dataplus._M_p = var_13;
        (var_15->section_name_).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
      }
      (var_15->section_name_)._M_string_length = *(type_3 *)((long)var_5 + -8);
      (((type_9 *)(var_5 + -1))->_M_dataplus)._M_p = (type_2)var_5;
      *(type_3 *)((long)var_5 + -8) = 0;
      var_5->_M_local_buf[0] = '\0';
      var_19 = var_15 + 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
                 *)((long)var_5 + 0x48);
    } while (var_15 + 1 !=
             (type_2)((long)&var_11[1].input_section_.shndx_ +
                      ((long)__position._M_current + (-0x48 - (long)var_14) & 0xfffffffffffffff8U)))
    ;
    var_15 = var_15 + 2;
  }
  var_20 = var_14;
  if (__position._M_current != var_16) {
    var_19 = (type_2)((long)&var_15[1].input_section_.shndx_ +
                       ((long)var_16 + (-0x48 - (long)__position._M_current) & 0xfffffffffffffff8U))
    ;
    var_17 = var_15;
    var_5 = &((__position._M_current)->section_name_).field_2;
    do {
      uVar5 = *(type_4 *)((long)var_5 + -0x38);
      aVar6 = *(type_5 *)(var_5 + -3);
      aVar7 = *(type_6 *)((long)var_5 + -0x28);
      uVar8 = var_5[-2]._M_allocated_capacity;
      var_17->index_ = *(type_8 *)((long)var_5 + -0x18);
      (var_17->section_name_)._M_dataplus._M_p = (type_2)&(var_17->section_name_).field_2;
      var_13 = (((type_9 *)(var_5 + -1))->_M_dataplus)._M_p;
      (var_17->input_section_).shndx_ = (int)uVar5;
      (var_17->input_section_).p2align_ = (int)((type_7)uVar5 >> 0x20);
      (var_17->input_section_).u1_ = aVar6;
      (var_17->input_section_).u2_ = aVar7;
      *(type_4 *)&(var_17->input_section_).section_order_index_ = uVar8;
      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_13) {
        uVar5 = *(type_4 *)((long)var_5 + 8);
        (var_17->section_name_).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
        *(type_4 *)((long)&(var_17->section_name_).field_2 + 8) = uVar5;
      }
      else {
        (var_17->section_name_)._M_dataplus._M_p = var_13;
        (var_17->section_name_).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
      }
      sVar4 = *(type_3 *)((long)var_5 + -8);
      var_18 = var_17 + 1;
      (((type_9 *)(var_5 + -1))->_M_dataplus)._M_p = (type_2)var_5;
      *(type_3 *)((long)var_5 + -8) = 0;
      (var_17->section_name_)._M_string_length = sVar4;
      var_5->_M_local_buf[0] = '\0';
      var_17 = var_18;
      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
                 *)((long)var_5 + 0x48);
      var_15 = var_19;
    } while (var_18 != var_19);
  }
  for (; var_20 != var_16; var_20 = var_20 + 1) {
    var_13 = (var_20->section_name_)._M_dataplus._M_p;
    if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
         *)var_13 != &(var_20->section_name_).field_2) {
      var_21(var_13);
    }
  }
  if (var_14 != (type_1 *)0x0) {
    var_21(var_14);
  }
  (this->
  super__Vector_base<gold::Output_section::type_1,_std::var_1<gold::Output_section::type_1>var_3>var_6
  )._M_impl._M_start = var_11;
  (this->
  super__Vector_base<gold::Output_section::type_1,_std::var_1<gold::Output_section::type_1>var_3>var_6
  )._M_impl._M_finish = var_15;
  (this->
  super__Vector_base<gold::Output_section::type_1,_std::var_1<gold::Output_section::type_1>var_3>var_6
  )._M_impl._M_end_of_storage = local_48;
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) 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: (sized_type_specifier) 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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (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: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (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: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) 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: (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (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: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (identifier)))) 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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)) right: (number_literal)))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (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)))))) (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: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (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: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) 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: (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: (sized_type_specifier) 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))))))) (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: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (return_statement))))

void MASKED(long *param_1,long param_2,undefined8 *param_3)

{
  long lVar1;
  long lVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  long lVar8;
  undefined8 *puVar9;
  undefined8 *puVar10;
  undefined8 *puVar11;
  ulong uVar12;
  undefined8 *puVar13;
  undefined8 *puVar14;
  long local_48;
  
  lVar1 = param_1[1];
  lVar2 = *param_1;
  lVar8 = lVar1 - lVar2 >> 3;
  if (lVar8 * -0x71c71c71c71c71c7 == 0) {
    uVar12 = 1;
LAB_0020de25:
    local_48 = uVar12 * 0x48;
  }
  else {
    uVar12 = lVar8 * 0x1c71c71c71c71c72;
    local_48 = -0x10;
    if (((ulong)(lVar8 * -0x71c71c71c71c71c7) < uVar12 || lVar8 * 0x71c71c71c71c71c7 == 0) &&
       (uVar12 < 0x38e38e38e38e38f)) {
      if (uVar12 == 0) {
        puVar11 = (undefined8 *)0x48;
        local_48 = 0;
        puVar9 = (undefined8 *)0x0;
        goto LAB_0020dc12;
      }
      goto LAB_0020de25;
    }
  }
  puVar9 = (undefined8 *)FUN_002d94a0(local_48);
  local_48 = (long)puVar9 + local_48;
  puVar11 = puVar9 + 9;
LAB_0020dc12:
  puVar13 = (undefined8 *)((param_2 - lVar2) + (long)puVar9);
  uVar4 = *param_3;
  uVar5 = param_3[1];
  uVar6 = param_3[2];
  uVar7 = param_3[3];
  puVar3 = (undefined8 *)param_3[5];
  *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(param_3 + 4);
  puVar13[5] = puVar13 + 7;
  *puVar13 = uVar4;
  puVar13[1] = uVar5;
  puVar13[2] = uVar6;
  puVar13[3] = uVar7;
  if (puVar3 == param_3 + 7) {
    uVar4 = param_3[8];
    puVar13[7] = param_3[7];
    puVar13[8] = uVar4;
  }
  else {
    puVar13[5] = puVar3;
    puVar13[7] = param_3[7];
  }
  uVar4 = param_3[6];
  param_3[5] = param_3 + 7;
  param_3[6] = 0;
  puVar13[6] = uVar4;
  *(undefined1 *)(param_3 + 7) = 0;
  if (param_2 != lVar2) {
    puVar3 = puVar9;
    puVar13 = (undefined8 *)(lVar2 + 0x38);
    do {
      puVar11 = puVar3;
      uVar4 = puVar13[-6];
      *puVar11 = puVar13[-7];
      puVar11[1] = uVar4;
      uVar4 = puVar13[-4];
      puVar11[2] = puVar13[-5];
      puVar11[3] = uVar4;
      *(undefined4 *)(puVar11 + 4) = *(undefined4 *)(puVar13 + -3);
      puVar11[5] = puVar11 + 7;
      if ((undefined8 *)puVar13[-2] == puVar13) {
        uVar4 = puVar13[1];
        puVar11[7] = *puVar13;
        puVar11[8] = uVar4;
      }
      else {
        puVar11[5] = (undefined8 *)puVar13[-2];
        puVar11[7] = *puVar13;
      }
      puVar11[6] = puVar13[-1];
      puVar13[-2] = puVar13;
      puVar13[-1] = 0;
      *(undefined1 *)puVar13 = 0;
      puVar3 = puVar11 + 9;
      puVar13 = puVar13 + 9;
    } while (puVar11 + 9 !=
             (undefined8 *)((long)puVar9 + ((param_2 + -0x48) - lVar2 & 0xfffffffffffffff8U) + 0x48)
            );
    puVar11 = puVar11 + 0x12;
  }
  lVar8 = lVar2;
  if (param_2 != lVar1) {
    puVar3 = (undefined8 *)((long)puVar11 + ((lVar1 - param_2) - 0x48U & 0xfffffffffffffff8) + 0x48)
    ;
    puVar13 = puVar11;
    puVar14 = (undefined8 *)(param_2 + 0x38);
    do {
      uVar4 = puVar14[-7];
      uVar5 = puVar14[-6];
      uVar6 = puVar14[-5];
      uVar7 = puVar14[-4];
      *(undefined4 *)(puVar13 + 4) = *(undefined4 *)(puVar14 + -3);
      puVar13[5] = puVar13 + 7;
      puVar11 = (undefined8 *)puVar14[-2];
      *puVar13 = uVar4;
      puVar13[1] = uVar5;
      puVar13[2] = uVar6;
      puVar13[3] = uVar7;
      if (puVar14 == puVar11) {
        uVar4 = puVar14[1];
        puVar13[7] = *puVar14;
        puVar13[8] = uVar4;
      }
      else {
        puVar13[5] = puVar11;
        puVar13[7] = *puVar14;
      }
      uVar4 = puVar14[-1];
      puVar10 = puVar13 + 9;
      puVar14[-2] = puVar14;
      puVar14[-1] = 0;
      puVar13[6] = uVar4;
      *(undefined1 *)puVar14 = 0;
      puVar13 = puVar10;
      puVar14 = puVar14 + 9;
      puVar11 = puVar3;
    } while (puVar10 != puVar3);
  }
  for (; lVar8 != lVar1; lVar8 = lVar8 + 0x48) {
    if (*(long *)(lVar8 + 0x28) != lVar8 + 0x38) {
      FUN_002dac70();
    }
  }
  if (lVar2 != 0) {
    FUN_002dac70(lVar2);
  }
  *param_1 = (long)puVar9;
  param_1[1] = (long)puVar11;
  param_1[2] = local_48;
  return;
}

