
/* DWARF original name: _M_realloc_insert<std::pair<int, std::__cxx11::basic_string<char,
   std::char_traits<char>, std::allocator<char> > > >
   DWARF original prototype: void
   _M_realloc_insert<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>(vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>
   * this, iterator __position,
   pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_> *
   __args#0) */

void __thiscall
std::
vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>
::
_M_realloc_insert<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
          (vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>
           *this,iterator __position,
          pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>
          *__args_0)

{
  int *piVar1;
  pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>
  *ppVar2;
  pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>
  *ppVar3;
  pointer pcVar4;
  size_type sVar5;
  undefined8 uVar6;
  pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>
  *ppVar7;
  long lVar8;
  pointer ppVar9;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar10;
  pointer ppVar11;
  pointer ppVar12;
  pointer ppVar13;
  ulong uVar14;
  pointer ppVar15;
  ulong uVar16;
  pointer local_48;
  
  ppVar2 = (this->
           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>
           )._M_impl._M_finish;
  ppVar3 = (this->
           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>
           )._M_impl._M_start;
  lVar8 = (long)ppVar2 - (long)ppVar3 >> 3;
  if (lVar8 * -0x3333333333333333 == 0) {
    uVar14 = 1;
LAB_001655d5:
    uVar16 = uVar14 * 0x28;
  }
  else {
    uVar14 = lVar8 * -0x6666666666666666;
    uVar16 = 0xfffffffffffffff0;
    if (((ulong)(lVar8 * -0x3333333333333333) < uVar14 || lVar8 * 0x3333333333333333 == 0) &&
       (uVar14 < 0x666666666666667)) {
      if (uVar14 == 0) {
        ppVar13 = (pointer)0x28;
        local_48 = (pointer)0x0;
        ppVar9 = (pointer)0x0;
        goto LAB_00165403;
      }
      goto LAB_001655d5;
    }
  }
  ppVar9 = (pointer)operator_new(uVar16);
  local_48 = (pointer)((long)&ppVar9->first + uVar16);
  ppVar13 = ppVar9 + 1;
LAB_00165403:
  piVar1 = (int *)((long)ppVar9 + ((long)__position._M_current - (long)ppVar3));
  pcVar4 = (__args_0->second)._M_dataplus._M_p;
  *piVar1 = __args_0->first;
  *(int **)(piVar1 + 2) = piVar1 + 6;
  paVar10 = &(__args_0->second).field_2;
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)pcVar4 == paVar10) {
    uVar6 = *(undefined8 *)((long)&(__args_0->second).field_2 + 8);
    *(size_type *)(piVar1 + 6) = (__args_0->second).field_2._M_allocated_capacity;
    *(undefined8 *)(piVar1 + 8) = uVar6;
  }
  else {
    *(pointer *)(piVar1 + 2) = pcVar4;
    *(size_type *)(piVar1 + 6) = (__args_0->second).field_2._M_allocated_capacity;
  }
  sVar5 = (__args_0->second)._M_string_length;
  (__args_0->second)._M_dataplus._M_p = (pointer)paVar10;
  (__args_0->second)._M_string_length = 0;
  *(size_type *)(piVar1 + 4) = sVar5;
  (__args_0->second).field_2._M_local_buf[0] = '\0';
  if (__position._M_current != ppVar3) {
    ppVar13 = (pointer)((long)&ppVar9[1].first +
                       ((long)__position._M_current + (-0x28 - (long)ppVar3) & 0xfffffffffffffff8U))
    ;
    paVar10 = &(ppVar3->second).field_2;
    ppVar15 = ppVar9;
    do {
      ppVar15->first = *(int *)((long)paVar10 + -0x18);
      (ppVar15->second)._M_dataplus._M_p = (pointer)&(ppVar15->second).field_2;
      pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)
                )->_M_dataplus)._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)pcVar4 == paVar10) {
        uVar6 = *(undefined8 *)((long)paVar10 + 8);
        (ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;
        *(undefined8 *)((long)&(ppVar15->second).field_2 + 8) = uVar6;
      }
      else {
        (ppVar15->second)._M_dataplus._M_p = pcVar4;
        (ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;
      }
      ppVar12 = ppVar15 + 1;
      (ppVar15->second)._M_string_length = *(size_type *)((long)paVar10 + -8);
      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->
      _M_dataplus)._M_p = (pointer)paVar10;
      *(size_type *)((long)paVar10 + -8) = 0;
      paVar10->_M_local_buf[0] = '\0';
      paVar10 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                 *)((long)paVar10 + 0x28);
      ppVar15 = ppVar12;
    } while (ppVar13 != ppVar12);
    ppVar13 = ppVar13 + 1;
  }
  ppVar7 = ppVar3;
  if (__position._M_current != ppVar2) {
    ppVar15 = (pointer)((long)&ppVar13[1].first +
                       ((long)ppVar2 + (-0x28 - (long)__position._M_current) & 0xfffffffffffffff8U))
    ;
    paVar10 = &((__position._M_current)->second).field_2;
    ppVar12 = ppVar13;
    do {
      ppVar12->first = *(int *)((long)paVar10 + -0x18);
      (ppVar12->second)._M_dataplus._M_p = (pointer)&(ppVar12->second).field_2;
      pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)
                )->_M_dataplus)._M_p;
      if (paVar10 ==
          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)pcVar4) {
        uVar6 = *(undefined8 *)((long)paVar10 + 8);
        (ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;
        *(undefined8 *)((long)&(ppVar12->second).field_2 + 8) = uVar6;
      }
      else {
        (ppVar12->second)._M_dataplus._M_p = pcVar4;
        (ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;
      }
      sVar5 = *(size_type *)((long)paVar10 + -8);
      ppVar11 = ppVar12 + 1;
      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->
      _M_dataplus)._M_p = (pointer)paVar10;
      *(size_type *)((long)paVar10 + -8) = 0;
      (ppVar12->second)._M_string_length = sVar5;
      paVar10->_M_local_buf[0] = '\0';
      paVar10 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                 *)((long)paVar10 + 0x28);
      ppVar12 = ppVar11;
      ppVar13 = ppVar15;
    } while (ppVar11 != ppVar15);
  }
  for (; ppVar7 != ppVar2; ppVar7 = ppVar7 + 1) {
    pcVar4 = (ppVar7->second)._M_dataplus._M_p;
    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
         *)pcVar4 != &(ppVar7->second).field_2) {
      operator_delete(pcVar4);
    }
  }
  if (ppVar3 != (pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>
                 *)0x0) {
    operator_delete(ppVar3);
  }
  (this->
  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>
  )._M_impl._M_start = ppVar9;
  (this->
  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>
  )._M_impl._M_finish = ppVar13;
  (this->
  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>
  )._M_impl._M_end_of_storage = local_48;
  return;
}



void FUN_00165380(long *param_1,long param_2,undefined4 *param_3)

{
  long lVar1;
  long lVar2;
  undefined8 uVar3;
  long lVar4;
  undefined4 *puVar5;
  undefined8 *puVar6;
  undefined4 *puVar7;
  undefined4 *puVar8;
  undefined4 *puVar9;
  ulong uVar10;
  undefined4 *puVar11;
  long local_48;
  
  lVar1 = param_1[1];
  lVar2 = *param_1;
  lVar4 = lVar1 - lVar2 >> 3;
  if (lVar4 * -0x3333333333333333 == 0) {
    uVar10 = 1;
LAB_001655d5:
    local_48 = uVar10 * 0x28;
  }
  else {
    uVar10 = lVar4 * -0x6666666666666666;
    local_48 = -0x10;
    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&
       (uVar10 < 0x666666666666667)) {
      if (uVar10 == 0) {
        puVar9 = (undefined4 *)0x28;
        local_48 = 0;
        puVar5 = (undefined4 *)0x0;
        goto LAB_00165403;
      }
      goto LAB_001655d5;
    }
  }
  puVar5 = (undefined4 *)FUN_00275550(local_48);
  local_48 = (long)puVar5 + local_48;
  puVar9 = puVar5 + 10;
LAB_00165403:
  puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2));
  puVar8 = *(undefined4 **)(param_3 + 2);
  *puVar11 = *param_3;
  *(undefined4 **)(puVar11 + 2) = puVar11 + 6;
  if (puVar8 == param_3 + 6) {
    uVar3 = *(undefined8 *)(param_3 + 8);
    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);
    *(undefined8 *)(puVar11 + 8) = uVar3;
  }
  else {
    *(undefined4 **)(puVar11 + 2) = puVar8;
    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);
  }
  uVar3 = *(undefined8 *)(param_3 + 4);
  *(undefined4 **)(param_3 + 2) = param_3 + 6;
  *(undefined8 *)(param_3 + 4) = 0;
  *(undefined8 *)(puVar11 + 4) = uVar3;
  *(undefined1 *)(param_3 + 6) = 0;
  if (param_2 != lVar2) {
    puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)
    ;
    puVar6 = (undefined8 *)(lVar2 + 0x18);
    puVar11 = puVar5;
    do {
      *puVar11 = *(undefined4 *)(puVar6 + -3);
      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;
      if ((undefined8 *)puVar6[-2] == puVar6) {
        uVar3 = puVar6[1];
        *(undefined8 *)(puVar11 + 6) = *puVar6;
        *(undefined8 *)(puVar11 + 8) = uVar3;
      }
      else {
        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];
        *(undefined8 *)(puVar11 + 6) = *puVar6;
      }
      puVar8 = puVar11 + 10;
      *(undefined8 *)(puVar11 + 4) = puVar6[-1];
      puVar6[-2] = puVar6;
      puVar6[-1] = 0;
      *(undefined1 *)puVar6 = 0;
      puVar6 = puVar6 + 5;
      puVar11 = puVar8;
    } while (puVar9 != puVar8);
    puVar9 = puVar9 + 10;
  }
  lVar4 = lVar2;
  if (param_2 != lVar1) {
    puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)
    ;
    puVar6 = (undefined8 *)(param_2 + 0x18);
    puVar8 = puVar9;
    do {
      *puVar8 = *(undefined4 *)(puVar6 + -3);
      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;
      if (puVar6 == (undefined8 *)puVar6[-2]) {
        uVar3 = puVar6[1];
        *(undefined8 *)(puVar8 + 6) = *puVar6;
        *(undefined8 *)(puVar8 + 8) = uVar3;
      }
      else {
        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];
        *(undefined8 *)(puVar8 + 6) = *puVar6;
      }
      uVar3 = puVar6[-1];
      puVar7 = puVar8 + 10;
      puVar6[-2] = puVar6;
      puVar6[-1] = 0;
      *(undefined8 *)(puVar8 + 4) = uVar3;
      *(undefined1 *)puVar6 = 0;
      puVar6 = puVar6 + 5;
      puVar8 = puVar7;
      puVar9 = puVar11;
    } while (puVar7 != puVar11);
  }
  for (; lVar4 != lVar1; lVar4 = lVar4 + 0x28) {
    if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {
      FUN_00276d20();
    }
  }
  if (lVar2 != 0) {
    FUN_00276d20(lVar2);
  }
  *param_1 = (long)puVar5;
  param_1[1] = (long)puVar9;
  param_1[2] = local_48;
  return;
}


PUSH R15
MOV R15,RDX
MOV RDX,-0x3333333333333333
PUSH R14
MOV R14,RSI
PUSH R13
PUSH R12
PUSH RBP
MOV RBP,RDI
PUSH RBX
SUB RSP,0x18
MOV R13,qword ptr [RDI + 0x8]
MOV RBX,qword ptr [RDI]
MOV RAX,R13
SUB RAX,RBX
SAR RAX,0x3
IMUL RAX,RDX
MOV RDX,RSI
SUB RDX,RBX
TEST RAX,RAX
JZ 0x001655d0
LEA RCX,[RAX + RAX*0x1]
MOV RSI,-0x10
CMP RAX,RCX
JBE 0x001655a0
MOV RDI,RSI
MOV qword ptr [RSP + 0x8],RDX
MOV qword ptr [RSP],RSI
CALL 0x00275550
MOV RSI,qword ptr [RSP]
MOV RDX,qword ptr [RSP + 0x8]
MOV R12,RAX
LEA RAX,[RAX + RSI*0x1]
LEA RCX,[R12 + 0x28]
MOV qword ptr [RSP],RAX
LEA RAX,[R12 + RDX*0x1]
MOV EDX,dword ptr [R15]
MOV RSI,qword ptr [R15 + 0x8]
MOV dword ptr [RAX],EDX
LEA RDX,[RAX + 0x18]
MOV qword ptr [RAX + 0x8],RDX
LEA RDX,[R15 + 0x18]
CMP RSI,RDX
JZ 0x001655f0
MOV qword ptr [RAX + 0x8],RSI
MOV RSI,qword ptr [R15 + 0x18]
MOV qword ptr [RAX + 0x18],RSI
MOV RSI,qword ptr [R15 + 0x10]
MOV qword ptr [R15 + 0x8],RDX
MOV qword ptr [R15 + 0x10],0x0
MOV qword ptr [RAX + 0x10],RSI
MOV byte ptr [R15 + 0x18],0x0
CMP R14,RBX
JZ 0x001654c4
LEA RDX,[R14 + -0x28]
LEA RAX,[RBX + 0x18]
SUB RDX,RBX
SHR RDX,0x3
LEA RCX,[R12 + RDX*0x8 + 0x28]
MOV RDX,R12
JMP 0x001654a0
MOV qword ptr [RDX + 0x8],RDI
MOV RSI,qword ptr [RAX]
MOV qword ptr [RDX + 0x18],RSI
MOV RDI,qword ptr [RAX + -0x8]
ADD RDX,0x28
MOV qword ptr [RDX + -0x18],RDI
MOV qword ptr [RAX + -0x10],RAX
ADD RAX,0x28
MOV qword ptr [RAX + -0x30],0x0
MOV byte ptr [RAX + -0x28],0x0
CMP RCX,RDX
JZ 0x001654c0
MOV ESI,dword ptr [RAX + -0x18]
MOV dword ptr [RDX],ESI
LEA RSI,[RDX + 0x18]
MOV qword ptr [RDX + 0x8],RSI
MOV RDI,qword ptr [RAX + -0x10]
CMP RDI,RAX
JNZ 0x00165470
MOVDQU XMM0,xmmword ptr [RAX]
MOVUPS xmmword ptr [RDX + 0x18],XMM0
JMP 0x0016547b
ADD RCX,0x28
CMP R14,R13
JZ 0x00165540
MOV RDX,R13
LEA RAX,[R14 + 0x18]
SUB RDX,R14
SUB RDX,0x28
SHR RDX,0x3
LEA R14,[RCX + RDX*0x8 + 0x28]
JMP 0x00165518
MOV qword ptr [RCX + 0x8],RDX
MOV RDX,qword ptr [RAX]
MOV qword ptr [RCX + 0x18],RDX
MOV RDX,qword ptr [RAX + -0x8]
ADD RCX,0x28
MOV qword ptr [RAX + -0x10],RAX
ADD RAX,0x28
MOV qword ptr [RAX + -0x30],0x0
MOV qword ptr [RCX + -0x18],RDX
MOV byte ptr [RAX + -0x28],0x0
CMP RCX,R14
JZ 0x00165548
MOV EDX,dword ptr [RAX + -0x18]
MOV dword ptr [RCX],EDX
LEA RDX,[RCX + 0x18]
MOV qword ptr [RCX + 0x8],RDX
MOV RDX,qword ptr [RAX + -0x10]
CMP RAX,RDX
JNZ 0x001654e8
MOVDQU XMM1,xmmword ptr [RAX]
MOVUPS xmmword ptr [RCX + 0x18],XMM1
JMP 0x001654f3
MOV R14,RCX
NOP dword ptr [RAX + RAX*0x1]
MOV R15,RBX
CMP RBX,R13
JZ 0x0016556b
MOV RDI,qword ptr [R15 + 0x8]
LEA RAX,[R15 + 0x18]
CMP RDI,RAX
JZ 0x00165562
CALL 0x00276d20
ADD R15,0x28
CMP R15,R13
JNZ 0x00165550
TEST RBX,RBX
JZ 0x00165578
MOV RDI,RBX
CALL 0x00276d20
MOV RAX,qword ptr [RSP]
MOV qword ptr [RBP],R12
MOV qword ptr [RBP + 0x8],R14
MOV qword ptr [RBP + 0x10],RAX
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RAX,0x666666666666666
CMP RCX,RAX
JA 0x001653d9
TEST RCX,RCX
JNZ 0x001655d5
MOV ECX,0x28
MOV qword ptr [RSP],0x0
XOR R12D,R12D
JMP 0x00165403
MOV ECX,0x1
LEA RAX,[RCX + RCX*0x4]
LEA RSI,[RAX*0x8]
JMP 0x001653d9
MOVDQU XMM2,xmmword ptr [R15 + 0x18]
MOVUPS xmmword ptr [RAX + 0x18],XMM2
JMP 0x00165431
(translation_unit "void FUN_00165380(long *param_1,long param_2,undefined4 *param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long lVar4;\n  undefined4 *puVar5;\n  undefined8 *puVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  ulong uVar10;\n  undefined4 *puVar11;\n  long local_48;\n  \n  lVar1 = param_1[1];\n  lVar2 = *param_1;\n  lVar4 = lVar1 - lVar2 >> 3;\n  if (lVar4 * -0x3333333333333333 == 0) {\n    uVar10 = 1;\nLAB_001655d5:\n    local_48 = uVar10 * 0x28;\n  }\n  else {\n    uVar10 = lVar4 * -0x6666666666666666;\n    local_48 = -0x10;\n    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }\n  puVar5 = (undefined4 *)FUN_00275550(local_48);\n  local_48 = (long)puVar5 + local_48;\n  puVar9 = puVar5 + 10;\nLAB_00165403:\n  puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2));\n  puVar8 = *(undefined4 **)(param_3 + 2);\n  *puVar11 = *param_3;\n  *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n  if (puVar8 == param_3 + 6) {\n    uVar3 = *(undefined8 *)(param_3 + 8);\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n    *(undefined8 *)(puVar11 + 8) = uVar3;\n  }\n  else {\n    *(undefined4 **)(puVar11 + 2) = puVar8;\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n  }\n  uVar3 = *(undefined8 *)(param_3 + 4);\n  *(undefined4 **)(param_3 + 2) = param_3 + 6;\n  *(undefined8 *)(param_3 + 4) = 0;\n  *(undefined8 *)(puVar11 + 4) = uVar3;\n  *(undefined1 *)(param_3 + 6) = 0;\n  if (param_2 != lVar2) {\n    puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(lVar2 + 0x18);\n    puVar11 = puVar5;\n    do {\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    } while (puVar9 != puVar8);\n    puVar9 = puVar9 + 10;\n  }\n  lVar4 = lVar2;\n  if (param_2 != lVar1) {\n    puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(param_2 + 0x18);\n    puVar8 = puVar9;\n    do {\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    } while (puVar7 != puVar11);\n  }\n  for (; lVar4 != lVar1; lVar4 = lVar4 + 0x28) {\n    if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {\n      FUN_00276d20();\n    }\n  }\n  if (lVar2 != 0) {\n    FUN_00276d20(lVar2);\n  }\n  *param_1 = (long)puVar5;\n  param_1[1] = (long)puVar9;\n  param_1[2] = local_48;\n  return;\n}\n\n" (function_definition "void FUN_00165380(long *param_1,long param_2,undefined4 *param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long lVar4;\n  undefined4 *puVar5;\n  undefined8 *puVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  ulong uVar10;\n  undefined4 *puVar11;\n  long local_48;\n  \n  lVar1 = param_1[1];\n  lVar2 = *param_1;\n  lVar4 = lVar1 - lVar2 >> 3;\n  if (lVar4 * -0x3333333333333333 == 0) {\n    uVar10 = 1;\nLAB_001655d5:\n    local_48 = uVar10 * 0x28;\n  }\n  else {\n    uVar10 = lVar4 * -0x6666666666666666;\n    local_48 = -0x10;\n    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }\n  puVar5 = (undefined4 *)FUN_00275550(local_48);\n  local_48 = (long)puVar5 + local_48;\n  puVar9 = puVar5 + 10;\nLAB_00165403:\n  puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2));\n  puVar8 = *(undefined4 **)(param_3 + 2);\n  *puVar11 = *param_3;\n  *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n  if (puVar8 == param_3 + 6) {\n    uVar3 = *(undefined8 *)(param_3 + 8);\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n    *(undefined8 *)(puVar11 + 8) = uVar3;\n  }\n  else {\n    *(undefined4 **)(puVar11 + 2) = puVar8;\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n  }\n  uVar3 = *(undefined8 *)(param_3 + 4);\n  *(undefined4 **)(param_3 + 2) = param_3 + 6;\n  *(undefined8 *)(param_3 + 4) = 0;\n  *(undefined8 *)(puVar11 + 4) = uVar3;\n  *(undefined1 *)(param_3 + 6) = 0;\n  if (param_2 != lVar2) {\n    puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(lVar2 + 0x18);\n    puVar11 = puVar5;\n    do {\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    } while (puVar9 != puVar8);\n    puVar9 = puVar9 + 10;\n  }\n  lVar4 = lVar2;\n  if (param_2 != lVar1) {\n    puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(param_2 + 0x18);\n    puVar8 = puVar9;\n    do {\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    } while (puVar7 != puVar11);\n  }\n  for (; lVar4 != lVar1; lVar4 = lVar4 + 0x28) {\n    if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {\n      FUN_00276d20();\n    }\n  }\n  if (lVar2 != 0) {\n    FUN_00276d20(lVar2);\n  }\n  *param_1 = (long)puVar5;\n  param_1[1] = (long)puVar9;\n  param_1[2] = local_48;\n  return;\n}" primitive_type (function_declarator "FUN_00165380(long *param_1,long param_2,undefined4 *param_3)" identifier (parameter_list "(long *param_1,long param_2,undefined4 *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 "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long lVar4;\n  undefined4 *puVar5;\n  undefined8 *puVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  ulong uVar10;\n  undefined4 *puVar11;\n  long local_48;\n  \n  lVar1 = param_1[1];\n  lVar2 = *param_1;\n  lVar4 = lVar1 - lVar2 >> 3;\n  if (lVar4 * -0x3333333333333333 == 0) {\n    uVar10 = 1;\nLAB_001655d5:\n    local_48 = uVar10 * 0x28;\n  }\n  else {\n    uVar10 = lVar4 * -0x6666666666666666;\n    local_48 = -0x10;\n    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }\n  puVar5 = (undefined4 *)FUN_00275550(local_48);\n  local_48 = (long)puVar5 + local_48;\n  puVar9 = puVar5 + 10;\nLAB_00165403:\n  puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2));\n  puVar8 = *(undefined4 **)(param_3 + 2);\n  *puVar11 = *param_3;\n  *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n  if (puVar8 == param_3 + 6) {\n    uVar3 = *(undefined8 *)(param_3 + 8);\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n    *(undefined8 *)(puVar11 + 8) = uVar3;\n  }\n  else {\n    *(undefined4 **)(puVar11 + 2) = puVar8;\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n  }\n  uVar3 = *(undefined8 *)(param_3 + 4);\n  *(undefined4 **)(param_3 + 2) = param_3 + 6;\n  *(undefined8 *)(param_3 + 4) = 0;\n  *(undefined8 *)(puVar11 + 4) = uVar3;\n  *(undefined1 *)(param_3 + 6) = 0;\n  if (param_2 != lVar2) {\n    puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(lVar2 + 0x18);\n    puVar11 = puVar5;\n    do {\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    } while (puVar9 != puVar8);\n    puVar9 = puVar9 + 10;\n  }\n  lVar4 = lVar2;\n  if (param_2 != lVar1) {\n    puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(param_2 + 0x18);\n    puVar8 = puVar9;\n    do {\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    } while (puVar7 != puVar11);\n  }\n  for (; lVar4 != lVar1; lVar4 = lVar4 + 0x28) {\n    if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {\n      FUN_00276d20();\n    }\n  }\n  if (lVar2 != 0) {\n    FUN_00276d20(lVar2);\n  }\n  *param_1 = (long)puVar5;\n  param_1[1] = (long)puVar9;\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 uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * 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 "lVar4 = lVar1 - lVar2 >> 3;" (assignment_expression "lVar4 = lVar1 - lVar2 >> 3" identifier = (binary_expression "lVar1 - lVar2 >> 3" (binary_expression "lVar1 - lVar2" identifier - identifier) >> number_literal)) ;) (if_statement "if (lVar4 * -0x3333333333333333 == 0) {\n    uVar10 = 1;\nLAB_001655d5:\n    local_48 = uVar10 * 0x28;\n  }\n  else {\n    uVar10 = lVar4 * -0x6666666666666666;\n    local_48 = -0x10;\n    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }" if (parenthesized_expression "(lVar4 * -0x3333333333333333 == 0)" ( (binary_expression "lVar4 * -0x3333333333333333 == 0" (binary_expression "lVar4 * -0x3333333333333333" identifier * number_literal) == number_literal) )) (compound_statement "{\n    uVar10 = 1;\nLAB_001655d5:\n    local_48 = uVar10 * 0x28;\n  }" { (expression_statement "uVar10 = 1;" (assignment_expression "uVar10 = 1" identifier = number_literal) ;) (labeled_statement "LAB_001655d5:\n    local_48 = uVar10 * 0x28;" statement_identifier : (expression_statement "local_48 = uVar10 * 0x28;" (assignment_expression "local_48 = uVar10 * 0x28" identifier = (binary_expression "uVar10 * 0x28" identifier * number_literal)) ;)) }) (else_clause "else {\n    uVar10 = lVar4 * -0x6666666666666666;\n    local_48 = -0x10;\n    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }" else (compound_statement "{\n    uVar10 = lVar4 * -0x6666666666666666;\n    local_48 = -0x10;\n    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }" { (expression_statement "uVar10 = lVar4 * -0x6666666666666666;" (assignment_expression "uVar10 = lVar4 * -0x6666666666666666" identifier = (binary_expression "lVar4 * -0x6666666666666666" identifier * number_literal)) ;) (expression_statement "local_48 = -0x10;" (assignment_expression "local_48 = -0x10" identifier = number_literal) ;) (if_statement "if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }" if (parenthesized_expression "(((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667))" ( (binary_expression "((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)" (parenthesized_expression "((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0)" ( (binary_expression "(ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0" (binary_expression "(ulong)(lVar4 * -0x3333333333333333) < uVar10" (call_expression "(ulong)(lVar4 * -0x3333333333333333)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(lVar4 * -0x3333333333333333)" ( (binary_expression "lVar4 * -0x3333333333333333" identifier * number_literal) ))) < identifier) || (binary_expression "lVar4 * 0x3333333333333333 == 0" (binary_expression "lVar4 * 0x3333333333333333" identifier * number_literal) == number_literal)) )) && (parenthesized_expression "(uVar10 < 0x666666666666667)" ( (binary_expression "uVar10 < 0x666666666666667" identifier < number_literal) ))) )) (compound_statement "{\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }" { (if_statement "if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }" { (expression_statement "puVar9 = (undefined4 *)0x28;" (assignment_expression "puVar9 = (undefined4 *)0x28" identifier = (cast_expression "(undefined4 *)0x28" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "puVar5 = (undefined4 *)0x0;" (assignment_expression "puVar5 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00165403;" goto statement_identifier ;) })) (goto_statement "goto LAB_001655d5;" goto statement_identifier ;) })) }))) (expression_statement "puVar5 = (undefined4 *)FUN_00275550(local_48);" (assignment_expression "puVar5 = (undefined4 *)FUN_00275550(local_48)" identifier = (cast_expression "(undefined4 *)FUN_00275550(local_48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(local_48)" identifier (argument_list "(local_48)" ( identifier ))))) ;) (expression_statement "local_48 = (long)puVar5 + local_48;" (assignment_expression "local_48 = (long)puVar5 + local_48" identifier = (binary_expression "(long)puVar5 + local_48" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "puVar9 = puVar5 + 10;" (assignment_expression "puVar9 = puVar5 + 10" identifier = (binary_expression "puVar5 + 10" identifier + number_literal)) ;) (labeled_statement "LAB_00165403:\n  puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2));" statement_identifier : (expression_statement "puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2));" (assignment_expression "puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2))" identifier = (cast_expression "(undefined4 *)((long)puVar5 + (param_2 - lVar2))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + (param_2 - lVar2))" ( (binary_expression "(long)puVar5 + (param_2 - lVar2)" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(param_2 - lVar2)" ( (binary_expression "param_2 - lVar2" identifier - identifier) ))) )))) ;)) (expression_statement "puVar8 = *(undefined4 **)(param_3 + 2);" (assignment_expression "puVar8 = *(undefined4 **)(param_3 + 2)" identifier = (pointer_expression "*(undefined4 **)(param_3 + 2)" * (cast_expression "(undefined4 **)(param_3 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) ))))) ;) (expression_statement "*puVar11 = *param_3;" (assignment_expression "*puVar11 = *param_3" (pointer_expression "*puVar11" * identifier) = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(undefined4 **)(puVar11 + 2) = puVar11 + 6;" (assignment_expression "*(undefined4 **)(puVar11 + 2) = puVar11 + 6" (pointer_expression "*(undefined4 **)(puVar11 + 2)" * (cast_expression "(undefined4 **)(puVar11 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 2)" ( (binary_expression "puVar11 + 2" identifier + number_literal) )))) = (binary_expression "puVar11 + 6" identifier + number_literal)) ;) (if_statement "if (puVar8 == param_3 + 6) {\n    uVar3 = *(undefined8 *)(param_3 + 8);\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n    *(undefined8 *)(puVar11 + 8) = uVar3;\n  }\n  else {\n    *(undefined4 **)(puVar11 + 2) = puVar8;\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n  }" if (parenthesized_expression "(puVar8 == param_3 + 6)" ( (binary_expression "puVar8 == param_3 + 6" identifier == (binary_expression "param_3 + 6" identifier + number_literal)) )) (compound_statement "{\n    uVar3 = *(undefined8 *)(param_3 + 8);\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n    *(undefined8 *)(puVar11 + 8) = uVar3;\n  }" { (expression_statement "uVar3 = *(undefined8 *)(param_3 + 8);" (assignment_expression "uVar3 = *(undefined8 *)(param_3 + 8)" identifier = (pointer_expression "*(undefined8 *)(param_3 + 8)" * (cast_expression "(undefined8 *)(param_3 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);" (assignment_expression "*(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6)" (pointer_expression "*(undefined8 *)(puVar11 + 6)" * (cast_expression "(undefined8 *)(puVar11 + 6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 6)" ( (binary_expression "puVar11 + 6" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_3 + 6)" * (cast_expression "(undefined8 *)(param_3 + 6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 6)" ( (binary_expression "param_3 + 6" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(puVar11 + 8) = uVar3;" (assignment_expression "*(undefined8 *)(puVar11 + 8) = uVar3" (pointer_expression "*(undefined8 *)(puVar11 + 8)" * (cast_expression "(undefined8 *)(puVar11 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 8)" ( (binary_expression "puVar11 + 8" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    *(undefined4 **)(puVar11 + 2) = puVar8;\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n  }" else (compound_statement "{\n    *(undefined4 **)(puVar11 + 2) = puVar8;\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n  }" { (expression_statement "*(undefined4 **)(puVar11 + 2) = puVar8;" (assignment_expression "*(undefined4 **)(puVar11 + 2) = puVar8" (pointer_expression "*(undefined4 **)(puVar11 + 2)" * (cast_expression "(undefined4 **)(puVar11 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 2)" ( (binary_expression "puVar11 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);" (assignment_expression "*(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6)" (pointer_expression "*(undefined8 *)(puVar11 + 6)" * (cast_expression "(undefined8 *)(puVar11 + 6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 6)" ( (binary_expression "puVar11 + 6" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_3 + 6)" * (cast_expression "(undefined8 *)(param_3 + 6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 6)" ( (binary_expression "param_3 + 6" identifier + number_literal) ))))) ;) }))) (expression_statement "uVar3 = *(undefined8 *)(param_3 + 4);" (assignment_expression "uVar3 = *(undefined8 *)(param_3 + 4)" identifier = (pointer_expression "*(undefined8 *)(param_3 + 4)" * (cast_expression "(undefined8 *)(param_3 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(param_3 + 2) = param_3 + 6;" (assignment_expression "*(undefined4 **)(param_3 + 2) = param_3 + 6" (pointer_expression "*(undefined4 **)(param_3 + 2)" * (cast_expression "(undefined4 **)(param_3 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) )))) = (binary_expression "param_3 + 6" identifier + number_literal)) ;) (expression_statement "*(undefined8 *)(param_3 + 4) = 0;" (assignment_expression "*(undefined8 *)(param_3 + 4) = 0" (pointer_expression "*(undefined8 *)(param_3 + 4)" * (cast_expression "(undefined8 *)(param_3 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(puVar11 + 4) = uVar3;" (assignment_expression "*(undefined8 *)(puVar11 + 4) = uVar3" (pointer_expression "*(undefined8 *)(puVar11 + 4)" * (cast_expression "(undefined8 *)(puVar11 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 4)" ( (binary_expression "puVar11 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_3 + 6) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 6) = 0" (pointer_expression "*(undefined1 *)(param_3 + 6)" * (cast_expression "(undefined1 *)(param_3 + 6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 6)" ( (binary_expression "param_3 + 6" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (param_2 != lVar2) {\n    puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(lVar2 + 0x18);\n    puVar11 = puVar5;\n    do {\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    } while (puVar9 != puVar8);\n    puVar9 = puVar9 + 10;\n  }" if (parenthesized_expression "(param_2 != lVar2)" ( (binary_expression "param_2 != lVar2" identifier != identifier) )) (compound_statement "{\n    puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(lVar2 + 0x18);\n    puVar11 = puVar5;\n    do {\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    } while (puVar9 != puVar8);\n    puVar9 = puVar9 + 10;\n  }" { (expression_statement "puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)\n    ;" (assignment_expression "puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)" identifier = (cast_expression "(undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)" ( (binary_expression "(long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28" (binary_expression "(long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U)" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U)" ( (binary_expression "(param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U" (binary_expression "(param_2 + -0x28) - lVar2" (parenthesized_expression "(param_2 + -0x28)" ( (binary_expression "param_2 + -0x28" identifier + number_literal) )) - identifier) & number_literal) ))) + number_literal) )))) ;) (expression_statement "puVar6 = (undefined8 *)(lVar2 + 0x18);" (assignment_expression "puVar6 = (undefined8 *)(lVar2 + 0x18)" identifier = (cast_expression "(undefined8 *)(lVar2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) )))) ;) (expression_statement "puVar11 = puVar5;" (assignment_expression "puVar11 = puVar5" identifier = identifier) ;) (do_statement "do {\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    } while (puVar9 != puVar8);" do (compound_statement "{\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    }" { (expression_statement "*puVar11 = *(undefined4 *)(puVar6 + -3);" (assignment_expression "*puVar11 = *(undefined4 *)(puVar6 + -3)" (pointer_expression "*puVar11" * identifier) = (pointer_expression "*(undefined4 *)(puVar6 + -3)" * (cast_expression "(undefined4 *)(puVar6 + -3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -3)" ( (binary_expression "puVar6 + -3" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(puVar11 + 2) = puVar11 + 6;" (assignment_expression "*(undefined4 **)(puVar11 + 2) = puVar11 + 6" (pointer_expression "*(undefined4 **)(puVar11 + 2)" * (cast_expression "(undefined4 **)(puVar11 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 2)" ( (binary_expression "puVar11 + 2" identifier + number_literal) )))) = (binary_expression "puVar11 + 6" identifier + number_literal)) ;) (if_statement "if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }" if (parenthesized_expression "((undefined8 *)puVar6[-2] == puVar6)" ( (binary_expression "(undefined8 *)puVar6[-2] == puVar6" (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }" { (expression_statement "uVar3 = puVar6[1];" (assignment_expression "uVar3 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined8 *)(puVar11 + 6) = *puVar6;" (assignment_expression "*(undefined8 *)(puVar11 + 6) = *puVar6" (pointer_expression "*(undefined8 *)(puVar11 + 6)" * (cast_expression "(undefined8 *)(puVar11 + 6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 6)" ( (binary_expression "puVar11 + 6" identifier + number_literal) )))) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "*(undefined8 *)(puVar11 + 8) = uVar3;" (assignment_expression "*(undefined8 *)(puVar11 + 8) = uVar3" (pointer_expression "*(undefined8 *)(puVar11 + 8)" * (cast_expression "(undefined8 *)(puVar11 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 8)" ( (binary_expression "puVar11 + 8" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }" else (compound_statement "{\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }" { (expression_statement "*(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];" (assignment_expression "*(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2]" (pointer_expression "*(undefined8 **)(puVar11 + 2)" * (cast_expression "(undefined8 **)(puVar11 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 2)" ( (binary_expression "puVar11 + 2" identifier + number_literal) )))) = (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined8 *)(puVar11 + 6) = *puVar6;" (assignment_expression "*(undefined8 *)(puVar11 + 6) = *puVar6" (pointer_expression "*(undefined8 *)(puVar11 + 6)" * (cast_expression "(undefined8 *)(puVar11 + 6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 6)" ( (binary_expression "puVar11 + 6" identifier + number_literal) )))) = (pointer_expression "*puVar6" * identifier)) ;) }))) (expression_statement "puVar8 = puVar11 + 10;" (assignment_expression "puVar8 = puVar11 + 10" identifier = (binary_expression "puVar11 + 10" identifier + number_literal)) ;) (expression_statement "*(undefined8 *)(puVar11 + 4) = puVar6[-1];" (assignment_expression "*(undefined8 *)(puVar11 + 4) = puVar6[-1]" (pointer_expression "*(undefined8 *)(puVar11 + 4)" * (cast_expression "(undefined8 *)(puVar11 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 4)" ( (binary_expression "puVar11 + 4" identifier + number_literal) )))) = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar6[-2] = puVar6;" (assignment_expression "puVar6[-2] = puVar6" (subscript_expression "puVar6[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[-1] = 0;" (assignment_expression "puVar6[-1] = 0" (subscript_expression "puVar6[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar6 = 0;" (assignment_expression "*(undefined1 *)puVar6 = 0" (pointer_expression "*(undefined1 *)puVar6" * (cast_expression "(undefined1 *)puVar6" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 5;" (assignment_expression "puVar6 = puVar6 + 5" identifier = (binary_expression "puVar6 + 5" identifier + number_literal)) ;) (expression_statement "puVar11 = puVar8;" (assignment_expression "puVar11 = puVar8" identifier = identifier) ;) }) while (parenthesized_expression "(puVar9 != puVar8)" ( (binary_expression "puVar9 != puVar8" identifier != identifier) )) ;) (expression_statement "puVar9 = puVar9 + 10;" (assignment_expression "puVar9 = puVar9 + 10" identifier = (binary_expression "puVar9 + 10" identifier + number_literal)) ;) })) (expression_statement "lVar4 = lVar2;" (assignment_expression "lVar4 = lVar2" identifier = identifier) ;) (if_statement "if (param_2 != lVar1) {\n    puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(param_2 + 0x18);\n    puVar8 = puVar9;\n    do {\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    } while (puVar7 != puVar11);\n  }" if (parenthesized_expression "(param_2 != lVar1)" ( (binary_expression "param_2 != lVar1" identifier != identifier) )) (compound_statement "{\n    puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(param_2 + 0x18);\n    puVar8 = puVar9;\n    do {\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    } while (puVar7 != puVar11);\n  }" { (expression_statement "puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)\n    ;" (assignment_expression "puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)" identifier = (cast_expression "(undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)" ( (binary_expression "(long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28" (binary_expression "(long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8)" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8)" ( (binary_expression "(lVar1 - param_2) - 0x28U & 0xfffffffffffffff8" (binary_expression "(lVar1 - param_2) - 0x28U" (parenthesized_expression "(lVar1 - param_2)" ( (binary_expression "lVar1 - param_2" identifier - identifier) )) - number_literal) & number_literal) ))) + number_literal) )))) ;) (expression_statement "puVar6 = (undefined8 *)(param_2 + 0x18);" (assignment_expression "puVar6 = (undefined8 *)(param_2 + 0x18)" identifier = (cast_expression "(undefined8 *)(param_2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) ;) (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" identifier = identifier) ;) (do_statement "do {\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    } while (puVar7 != puVar11);" do (compound_statement "{\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    }" { (expression_statement "*puVar8 = *(undefined4 *)(puVar6 + -3);" (assignment_expression "*puVar8 = *(undefined4 *)(puVar6 + -3)" (pointer_expression "*puVar8" * identifier) = (pointer_expression "*(undefined4 *)(puVar6 + -3)" * (cast_expression "(undefined4 *)(puVar6 + -3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -3)" ( (binary_expression "puVar6 + -3" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(puVar8 + 2) = puVar8 + 6;" (assignment_expression "*(undefined4 **)(puVar8 + 2) = puVar8 + 6" (pointer_expression "*(undefined4 **)(puVar8 + 2)" * (cast_expression "(undefined4 **)(puVar8 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 2)" ( (binary_expression "puVar8 + 2" identifier + number_literal) )))) = (binary_expression "puVar8 + 6" identifier + number_literal)) ;) (if_statement "if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }" if (parenthesized_expression "(puVar6 == (undefined8 *)puVar6[-2])" ( (binary_expression "puVar6 == (undefined8 *)puVar6[-2]" identifier == (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ]))) )) (compound_statement "{\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }" { (expression_statement "uVar3 = puVar6[1];" (assignment_expression "uVar3 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined8 *)(puVar8 + 6) = *puVar6;" (assignment_expression "*(undefined8 *)(puVar8 + 6) = *puVar6" (pointer_expression "*(undefined8 *)(puVar8 + 6)" * (cast_expression "(undefined8 *)(puVar8 + 6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 6)" ( (binary_expression "puVar8 + 6" identifier + number_literal) )))) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "*(undefined8 *)(puVar8 + 8) = uVar3;" (assignment_expression "*(undefined8 *)(puVar8 + 8) = uVar3" (pointer_expression "*(undefined8 *)(puVar8 + 8)" * (cast_expression "(undefined8 *)(puVar8 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 8)" ( (binary_expression "puVar8 + 8" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }" else (compound_statement "{\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }" { (expression_statement "*(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];" (assignment_expression "*(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2]" (pointer_expression "*(undefined8 **)(puVar8 + 2)" * (cast_expression "(undefined8 **)(puVar8 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 2)" ( (binary_expression "puVar8 + 2" identifier + number_literal) )))) = (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined8 *)(puVar8 + 6) = *puVar6;" (assignment_expression "*(undefined8 *)(puVar8 + 6) = *puVar6" (pointer_expression "*(undefined8 *)(puVar8 + 6)" * (cast_expression "(undefined8 *)(puVar8 + 6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 6)" ( (binary_expression "puVar8 + 6" identifier + number_literal) )))) = (pointer_expression "*puVar6" * identifier)) ;) }))) (expression_statement "uVar3 = puVar6[-1];" (assignment_expression "uVar3 = puVar6[-1]" identifier = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar7 = puVar8 + 10;" (assignment_expression "puVar7 = puVar8 + 10" identifier = (binary_expression "puVar8 + 10" identifier + number_literal)) ;) (expression_statement "puVar6[-2] = puVar6;" (assignment_expression "puVar6[-2] = puVar6" (subscript_expression "puVar6[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[-1] = 0;" (assignment_expression "puVar6[-1] = 0" (subscript_expression "puVar6[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined8 *)(puVar8 + 4) = uVar3;" (assignment_expression "*(undefined8 *)(puVar8 + 4) = uVar3" (pointer_expression "*(undefined8 *)(puVar8 + 4)" * (cast_expression "(undefined8 *)(puVar8 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 4)" ( (binary_expression "puVar8 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)puVar6 = 0;" (assignment_expression "*(undefined1 *)puVar6 = 0" (pointer_expression "*(undefined1 *)puVar6" * (cast_expression "(undefined1 *)puVar6" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 5;" (assignment_expression "puVar6 = puVar6 + 5" identifier = (binary_expression "puVar6 + 5" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar7;" (assignment_expression "puVar8 = puVar7" identifier = identifier) ;) (expression_statement "puVar9 = puVar11;" (assignment_expression "puVar9 = puVar11" identifier = identifier) ;) }) while (parenthesized_expression "(puVar7 != puVar11)" ( (binary_expression "puVar7 != puVar11" identifier != identifier) )) ;) })) (for_statement "for (; lVar4 != lVar1; lVar4 = lVar4 + 0x28) {\n    if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {\n      FUN_00276d20();\n    }\n  }" for ( ; (binary_expression "lVar4 != lVar1" identifier != identifier) ; (assignment_expression "lVar4 = lVar4 + 0x28" identifier = (binary_expression "lVar4 + 0x28" identifier + number_literal)) ) (compound_statement "{\n    if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {\n      FUN_00276d20();\n    }\n  }" { (if_statement "if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {\n      FUN_00276d20();\n    }" if (parenthesized_expression "(*(long *)(lVar4 + 8) != lVar4 + 0x18)" ( (binary_expression "*(long *)(lVar4 + 8) != lVar4 + 0x18" (pointer_expression "*(long *)(lVar4 + 8)" * (cast_expression "(long *)(lVar4 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) )))) != (binary_expression "lVar4 + 0x18" identifier + number_literal)) )) (compound_statement "{\n      FUN_00276d20();\n    }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) })) (if_statement "if (lVar2 != 0) {\n    FUN_00276d20(lVar2);\n  }" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_00276d20(lVar2);\n  }" { (expression_statement "FUN_00276d20(lVar2);" (call_expression "FUN_00276d20(lVar2)" identifier (argument_list "(lVar2)" ( identifier ))) ;) })) (expression_statement "*param_1 = (long)puVar5;" (assignment_expression "*param_1 = (long)puVar5" (pointer_expression "*param_1" * identifier) = (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "param_1[1] = (long)puVar9;" (assignment_expression "param_1[1] = (long)puVar9" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(long)puVar9" ( (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 "/* DWARF original name: _M_realloc_insert<std::pair<int, std::__cxx11::basic_string<char,\n   std::char_traits<char>, std::allocator<char> > > >\n   DWARF original prototype: void\n   _M_realloc_insert<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>(vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n   * this, iterator __position,\n   pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_> *\n   __args#0) */\n\nvoid __thiscall\nstd::\nvector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n::\n_M_realloc_insert<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n          (vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           *this,iterator __position,\n          pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n          *__args_0)\n\n{\n  int *piVar1;\n  pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n  *ppVar2;\n  pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n  *ppVar3;\n  pointer pcVar4;\n  size_type sVar5;\n  undefined8 uVar6;\n  pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n  *ppVar7;\n  long lVar8;\n  pointer ppVar9;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar10;\n  pointer ppVar11;\n  pointer ppVar12;\n  pointer ppVar13;\n  ulong uVar14;\n  pointer ppVar15;\n  ulong uVar16;\n  pointer local_48;\n  \n  ppVar2 = (this->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )._M_impl._M_finish;\n  ppVar3 = (this->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )._M_impl._M_start;\n  lVar8 = (long)ppVar2 - (long)ppVar3 >> 3;\n  if (lVar8 * -0x3333333333333333 == 0) {\n    uVar14 = 1;\nLAB_001655d5:\n    uVar16 = uVar14 * 0x28;\n  }\n  else {\n    uVar14 = lVar8 * -0x6666666666666666;\n    uVar16 = 0xfffffffffffffff0;\n    if (((ulong)(lVar8 * -0x3333333333333333) < uVar14 || lVar8 * 0x3333333333333333 == 0) &&\n       (uVar14 < 0x666666666666667)) {\n      if (uVar14 == 0) {\n        ppVar13 = (pointer)0x28;\n        local_48 = (pointer)0x0;\n        ppVar9 = (pointer)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }\n  ppVar9 = (pointer)operator_new(uVar16);\n  local_48 = (pointer)((long)&ppVar9->first + uVar16);\n  ppVar13 = ppVar9 + 1;\nLAB_00165403:\n  piVar1 = (int *)((long)ppVar9 + ((long)__position._M_current - (long)ppVar3));\n  pcVar4 = (__args_0->second)._M_dataplus._M_p;\n  *piVar1 = __args_0->first;\n  *(int **)(piVar1 + 2) = piVar1 + 6;\n  paVar10 = &(__args_0->second).field_2;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar4 == paVar10) {\n    uVar6 = *(undefined8 *)((long)&(__args_0->second).field_2 + 8);\n    *(size_type *)(piVar1 + 6) = (__args_0->second).field_2._M_allocated_capacity;\n    *(undefined8 *)(piVar1 + 8) = uVar6;\n  }\n  else {\n    *(pointer *)(piVar1 + 2) = pcVar4;\n    *(size_type *)(piVar1 + 6) = (__args_0->second).field_2._M_allocated_capacity;\n  }\n  sVar5 = (__args_0->second)._M_string_length;\n  (__args_0->second)._M_dataplus._M_p = (pointer)paVar10;\n  (__args_0->second)._M_string_length = 0;\n  *(size_type *)(piVar1 + 4) = sVar5;\n  (__args_0->second).field_2._M_local_buf[0] = '\0';\n  if (__position._M_current != ppVar3) {\n    ppVar13 = (pointer)((long)&ppVar9[1].first +\n                       ((long)__position._M_current + (-0x28 - (long)ppVar3) & 0xfffffffffffffff8U))\n    ;\n    paVar10 = &(ppVar3->second).field_2;\n    ppVar15 = ppVar9;\n    do {\n      ppVar15->first = *(int *)((long)paVar10 + -0x18);\n      (ppVar15->second)._M_dataplus._M_p = (pointer)&(ppVar15->second).field_2;\n      pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar10) {\n        uVar6 = *(undefined8 *)((long)paVar10 + 8);\n        (ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n        *(undefined8 *)((long)&(ppVar15->second).field_2 + 8) = uVar6;\n      }\n      else {\n        (ppVar15->second)._M_dataplus._M_p = pcVar4;\n        (ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n      }\n      ppVar12 = ppVar15 + 1;\n      (ppVar15->second)._M_string_length = *(size_type *)((long)paVar10 + -8);\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus)._M_p = (pointer)paVar10;\n      *(size_type *)((long)paVar10 + -8) = 0;\n      paVar10->_M_local_buf[0] = '\0';\n      paVar10 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar10 + 0x28);\n      ppVar15 = ppVar12;\n    } while (ppVar13 != ppVar12);\n    ppVar13 = ppVar13 + 1;\n  }\n  ppVar7 = ppVar3;\n  if (__position._M_current != ppVar2) {\n    ppVar15 = (pointer)((long)&ppVar13[1].first +\n                       ((long)ppVar2 + (-0x28 - (long)__position._M_current) & 0xfffffffffffffff8U))\n    ;\n    paVar10 = &((__position._M_current)->second).field_2;\n    ppVar12 = ppVar13;\n    do {\n      ppVar12->first = *(int *)((long)paVar10 + -0x18);\n      (ppVar12->second)._M_dataplus._M_p = (pointer)&(ppVar12->second).field_2;\n      pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus)._M_p;\n      if (paVar10 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4) {\n        uVar6 = *(undefined8 *)((long)paVar10 + 8);\n        (ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n        *(undefined8 *)((long)&(ppVar12->second).field_2 + 8) = uVar6;\n      }\n      else {\n        (ppVar12->second)._M_dataplus._M_p = pcVar4;\n        (ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n      }\n      sVar5 = *(size_type *)((long)paVar10 + -8);\n      ppVar11 = ppVar12 + 1;\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus)._M_p = (pointer)paVar10;\n      *(size_type *)((long)paVar10 + -8) = 0;\n      (ppVar12->second)._M_string_length = sVar5;\n      paVar10->_M_local_buf[0] = '\0';\n      paVar10 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar10 + 0x28);\n      ppVar12 = ppVar11;\n      ppVar13 = ppVar15;\n    } while (ppVar11 != ppVar15);\n  }\n  for (; ppVar7 != ppVar2; ppVar7 = ppVar7 + 1) {\n    pcVar4 = (ppVar7->second)._M_dataplus._M_p;\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)pcVar4 != &(ppVar7->second).field_2) {\n      operator_delete(pcVar4);\n    }\n  }\n  if (ppVar3 != (pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n                 *)0x0) {\n    operator_delete(ppVar3);\n  }\n  (this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  )._M_impl._M_start = ppVar9;\n  (this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  )._M_impl._M_finish = ppVar13;\n  (this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  )._M_impl._M_end_of_storage = local_48;\n  return;\n}\n\n" comment (declaration "void __thiscall\nstd::\nvector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n::\n_M_realloc_insert<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n          (vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           *this,iterator __position,\n          pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n          *__args_0)\n\n{\n  int *piVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::\nvector<std::" identifier : : identifier < identifier : :) identifier (ERROR "<int" < primitive_type) , (ERROR "_std::__cxx11::" identifier : : identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "_std::" identifier : :) identifier (ERROR "<char>" < primitive_type >) , (ERROR "_std::allocator<char>_>" identifier : : identifier < primitive_type > identifier >) identifier (ERROR ">" >) , (ERROR "_std::allocator<std::" identifier : : identifier < identifier : :) identifier (ERROR "<int" < primitive_type) , (ERROR "_std::__cxx11::" identifier : : identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "_std::" identifier : :) identifier (ERROR "<char>" < primitive_type >) , (ERROR "_std::allocator<char>_>_>_>_>\n::\n_M_realloc_insert<std::" identifier : : identifier < primitive_type > identifier > identifier > identifier > identifier > : : identifier < identifier : :) identifier (ERROR "<int" < primitive_type) , (ERROR "_std::__cxx11::" identifier : : identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "_std::" identifier : :) identifier (ERROR "<char>" < primitive_type >) , (ERROR "_std::allocator<char>_>_>_>\n          (vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           *this,iterator __position,\n          pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n          *__args_0)\n\n{\n  int" identifier : : identifier < primitive_type > identifier > identifier > (function_declarator "_>\n          (vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           *this,iterator __position,\n          pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n          *__args_0)" identifier (ERROR ">" >) (parameter_list "(vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           *this,iterator __position,\n          pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n          *__args_0)" ( (parameter_declaration "vector<std::pair" type_identifier (ERROR "<std::" < identifier : :) identifier) (ERROR "<int" < primitive_type) , (parameter_declaration "_std::__cxx11::basic_string" type_identifier (ERROR "::__cxx11::" : : identifier : :) identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_>_" type_identifier (ERROR "::allocator<char>_>" : : identifier < primitive_type > identifier >) identifier) (ERROR ">" >) , (parameter_declaration "_std::allocator<std::pair" type_identifier (ERROR "::allocator<std::" : : identifier < identifier : :) identifier) (ERROR "<int" < primitive_type) , (parameter_declaration "_std::__cxx11::basic_string" type_identifier (ERROR "::__cxx11::" : : identifier : :) identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_>_>_>_>\n           *this" type_identifier (ERROR "::allocator<char>_>_>_>_>" : : identifier < primitive_type > identifier > identifier > identifier > identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "iterator __position" type_identifier identifier) , (parameter_declaration "pair" type_identifier) (ERROR "<int" < primitive_type) , (parameter_declaration "_std::__cxx11::basic_string" type_identifier (ERROR "::__cxx11::" : : identifier : :) identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_>_>\n          *__args_0" type_identifier (ERROR "::allocator<char>_>_>" : : identifier < primitive_type > identifier > identifier >) (pointer_declarator "*__args_0" * identifier)) ))) { primitive_type) (pointer_declarator "*piVar1" * identifier) ;) (ERROR "pair<int," (binary_expression "pair<int" identifier < identifier) ,) (labeled_statement "_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n  *ppVar2;" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) :) : (expression_statement "allocator<char>_>_>\n  *ppVar2;" (binary_expression "allocator<char>_>_>\n  *ppVar2" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (pointer_expression "*ppVar2" * identifier)) ;)) (ERROR "pair<int," (binary_expression "pair<int" identifier < identifier) ,) (labeled_statement "_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n  *ppVar3;" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) :) : (expression_statement "allocator<char>_>_>\n  *ppVar3;" (binary_expression "allocator<char>_>_>\n  *ppVar3" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (pointer_expression "*ppVar3" * identifier)) ;)) (declaration "pointer pcVar4;" type_identifier identifier ;) (declaration "size_type sVar5;" type_identifier identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (ERROR "pair<int," (binary_expression "pair<int" identifier < identifier) ,) (labeled_statement "_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n  *ppVar7;" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) :) : (expression_statement "allocator<char>_>_>\n  *ppVar7;" (binary_expression "allocator<char>_>_>\n  *ppVar7" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (pointer_expression "*ppVar7" * identifier)) ;)) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "pointer ppVar9;" type_identifier identifier ;) (ERROR "anon_union_16_2_edb7204a_for_basic_string<char," (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) ,) (labeled_statement "_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar10;" 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  *paVar10;" (binary_expression "allocator<char>_>_9\n  *paVar10" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar10" identifier * identifier)) ;)) (declaration "pointer ppVar11;" type_identifier identifier ;) (declaration "pointer ppVar12;" type_identifier identifier ;) (declaration "pointer ppVar13;" type_identifier identifier ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "pointer ppVar15;" type_identifier identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "pointer local_48;" type_identifier identifier ;) (expression_statement "ppVar2 = (this->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )._M_impl._M_finish;" (assignment_expression "ppVar2 = (this->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )._M_impl._M_finish" identifier = (field_expression "(this->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )._M_impl._M_finish" (field_expression "(this->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )._M_impl" (parenthesized_expression "(this->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )" ( (ERROR "this->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n           super__Vector_base<std::pair<int,_std" (binary_expression "this->\n           super__Vector_base<std::pair<int" (binary_expression "this->\n           super__Vector_base<std" (field_expression "this->\n           super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<int,_std" (binary_expression "pair<int" identifier < identifier) , identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>_>" (binary_expression "allocator<char>_>_>_>_" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "ppVar3 = (this->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )._M_impl._M_start;" (assignment_expression "ppVar3 = (this->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )._M_impl._M_start" identifier = (field_expression "(this->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )._M_impl._M_start" (field_expression "(this->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )._M_impl" (parenthesized_expression "(this->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )" ( (ERROR "this->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n           super__Vector_base<std::pair<int,_std" (binary_expression "this->\n           super__Vector_base<std::pair<int" (binary_expression "this->\n           super__Vector_base<std" (field_expression "this->\n           super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<int,_std" (binary_expression "pair<int" identifier < identifier) , identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>_>" (binary_expression "allocator<char>_>_>_>_" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "lVar8 = (long)ppVar2 - (long)ppVar3 >> 3;" (assignment_expression "lVar8 = (long)ppVar2 - (long)ppVar3 >> 3" identifier = (binary_expression "(long)ppVar2 - (long)ppVar3 >> 3" (binary_expression "(long)ppVar2 - (long)ppVar3" (cast_expression "(long)ppVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)ppVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (lVar8 * -0x3333333333333333 == 0) {\n    uVar14 = 1;\nLAB_001655d5:\n    uVar16 = uVar14 * 0x28;\n  }\n  else {\n    uVar14 = lVar8 * -0x6666666666666666;\n    uVar16 = 0xfffffffffffffff0;\n    if (((ulong)(lVar8 * -0x3333333333333333) < uVar14 || lVar8 * 0x3333333333333333 == 0) &&\n       (uVar14 < 0x666666666666667)) {\n      if (uVar14 == 0) {\n        ppVar13 = (pointer)0x28;\n        local_48 = (pointer)0x0;\n        ppVar9 = (pointer)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }" if (parenthesized_expression "(lVar8 * -0x3333333333333333 == 0)" ( (binary_expression "lVar8 * -0x3333333333333333 == 0" (binary_expression "lVar8 * -0x3333333333333333" identifier * number_literal) == number_literal) )) (compound_statement "{\n    uVar14 = 1;\nLAB_001655d5:\n    uVar16 = uVar14 * 0x28;\n  }" { (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) (labeled_statement "LAB_001655d5:\n    uVar16 = uVar14 * 0x28;" statement_identifier : (expression_statement "uVar16 = uVar14 * 0x28;" (assignment_expression "uVar16 = uVar14 * 0x28" identifier = (binary_expression "uVar14 * 0x28" identifier * number_literal)) ;)) }) (else_clause "else {\n    uVar14 = lVar8 * -0x6666666666666666;\n    uVar16 = 0xfffffffffffffff0;\n    if (((ulong)(lVar8 * -0x3333333333333333) < uVar14 || lVar8 * 0x3333333333333333 == 0) &&\n       (uVar14 < 0x666666666666667)) {\n      if (uVar14 == 0) {\n        ppVar13 = (pointer)0x28;\n        local_48 = (pointer)0x0;\n        ppVar9 = (pointer)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }" else (compound_statement "{\n    uVar14 = lVar8 * -0x6666666666666666;\n    uVar16 = 0xfffffffffffffff0;\n    if (((ulong)(lVar8 * -0x3333333333333333) < uVar14 || lVar8 * 0x3333333333333333 == 0) &&\n       (uVar14 < 0x666666666666667)) {\n      if (uVar14 == 0) {\n        ppVar13 = (pointer)0x28;\n        local_48 = (pointer)0x0;\n        ppVar9 = (pointer)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }" { (expression_statement "uVar14 = lVar8 * -0x6666666666666666;" (assignment_expression "uVar14 = lVar8 * -0x6666666666666666" identifier = (binary_expression "lVar8 * -0x6666666666666666" identifier * number_literal)) ;) (expression_statement "uVar16 = 0xfffffffffffffff0;" (assignment_expression "uVar16 = 0xfffffffffffffff0" identifier = number_literal) ;) (if_statement "if (((ulong)(lVar8 * -0x3333333333333333) < uVar14 || lVar8 * 0x3333333333333333 == 0) &&\n       (uVar14 < 0x666666666666667)) {\n      if (uVar14 == 0) {\n        ppVar13 = (pointer)0x28;\n        local_48 = (pointer)0x0;\n        ppVar9 = (pointer)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }" if (parenthesized_expression "(((ulong)(lVar8 * -0x3333333333333333) < uVar14 || lVar8 * 0x3333333333333333 == 0) &&\n       (uVar14 < 0x666666666666667))" ( (binary_expression "((ulong)(lVar8 * -0x3333333333333333) < uVar14 || lVar8 * 0x3333333333333333 == 0) &&\n       (uVar14 < 0x666666666666667)" (parenthesized_expression "((ulong)(lVar8 * -0x3333333333333333) < uVar14 || lVar8 * 0x3333333333333333 == 0)" ( (binary_expression "(ulong)(lVar8 * -0x3333333333333333) < uVar14 || lVar8 * 0x3333333333333333 == 0" (binary_expression "(ulong)(lVar8 * -0x3333333333333333) < uVar14" (call_expression "(ulong)(lVar8 * -0x3333333333333333)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(lVar8 * -0x3333333333333333)" ( (binary_expression "lVar8 * -0x3333333333333333" identifier * number_literal) ))) < identifier) || (binary_expression "lVar8 * 0x3333333333333333 == 0" (binary_expression "lVar8 * 0x3333333333333333" identifier * number_literal) == number_literal)) )) && (parenthesized_expression "(uVar14 < 0x666666666666667)" ( (binary_expression "uVar14 < 0x666666666666667" identifier < number_literal) ))) )) (compound_statement "{\n      if (uVar14 == 0) {\n        ppVar13 = (pointer)0x28;\n        local_48 = (pointer)0x0;\n        ppVar9 = (pointer)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }" { (if_statement "if (uVar14 == 0) {\n        ppVar13 = (pointer)0x28;\n        local_48 = (pointer)0x0;\n        ppVar9 = (pointer)0x0;\n        goto LAB_00165403;\n      }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\n        ppVar13 = (pointer)0x28;\n        local_48 = (pointer)0x0;\n        ppVar9 = (pointer)0x0;\n        goto LAB_00165403;\n      }" { (expression_statement "ppVar13 = (pointer)0x28;" (assignment_expression "ppVar13 = (pointer)0x28" identifier = (cast_expression "(pointer)0x28" ( (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 "ppVar9 = (pointer)0x0;" (assignment_expression "ppVar9 = (pointer)0x0" identifier = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (goto_statement "goto LAB_00165403;" goto statement_identifier ;) })) (goto_statement "goto LAB_001655d5;" goto statement_identifier ;) })) }))) (expression_statement "ppVar9 = (pointer)operator_new(uVar16);" (assignment_expression "ppVar9 = (pointer)operator_new(uVar16)" identifier = (cast_expression "(pointer)operator_new(uVar16)" ( (type_descriptor "pointer" type_identifier) ) (call_expression "operator_new(uVar16)" identifier (argument_list "(uVar16)" ( identifier ))))) ;) (expression_statement "local_48 = (pointer)((long)&ppVar9->first + uVar16);" (assignment_expression "local_48 = (pointer)((long)&ppVar9->first + uVar16)" identifier = (call_expression "(pointer)((long)&ppVar9->first + uVar16)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((long)&ppVar9->first + uVar16)" ( (binary_expression "(long)&ppVar9->first + uVar16" (cast_expression "(long)&ppVar9->first" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&ppVar9->first" & (field_expression "ppVar9->first" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "ppVar13 = ppVar9 + 1;" (assignment_expression "ppVar13 = ppVar9 + 1" identifier = (binary_expression "ppVar9 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_00165403:\n  piVar1 = (int *)((long)ppVar9 + ((long)__position._M_current - (long)ppVar3));" statement_identifier : (expression_statement "piVar1 = (int *)((long)ppVar9 + ((long)__position._M_current - (long)ppVar3));" (assignment_expression "piVar1 = (int *)((long)ppVar9 + ((long)__position._M_current - (long)ppVar3))" identifier = (cast_expression "(int *)((long)ppVar9 + ((long)__position._M_current - (long)ppVar3))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)ppVar9 + ((long)__position._M_current - (long)ppVar3))" ( (binary_expression "(long)ppVar9 + ((long)__position._M_current - (long)ppVar3)" (cast_expression "(long)ppVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((long)__position._M_current - (long)ppVar3)" ( (binary_expression "(long)__position._M_current - (long)ppVar3" (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)ppVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) )))) ;)) (expression_statement "pcVar4 = (__args_0->second)._M_dataplus._M_p;" (assignment_expression "pcVar4 = (__args_0->second)._M_dataplus._M_p" identifier = (field_expression "(__args_0->second)._M_dataplus._M_p" (field_expression "(__args_0->second)._M_dataplus" (parenthesized_expression "(__args_0->second)" ( (field_expression "__args_0->second" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "*piVar1 = __args_0->first;" (assignment_expression "*piVar1 = __args_0->first" (pointer_expression "*piVar1" * identifier) = (field_expression "__args_0->first" identifier -> field_identifier)) ;) (expression_statement "*(int **)(piVar1 + 2) = piVar1 + 6;" (assignment_expression "*(int **)(piVar1 + 2) = piVar1 + 6" (pointer_expression "*(int **)(piVar1 + 2)" * (cast_expression "(int **)(piVar1 + 2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar1 + 2)" ( (binary_expression "piVar1 + 2" identifier + number_literal) )))) = (binary_expression "piVar1 + 6" identifier + number_literal)) ;) (expression_statement "paVar10 = &(__args_0->second).field_2;" (assignment_expression "paVar10 = &(__args_0->second).field_2" identifier = (pointer_expression "&(__args_0->second).field_2" & (field_expression "(__args_0->second).field_2" (parenthesized_expression "(__args_0->second)" ( (field_expression "__args_0->second" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar4 == paVar10) {\n    uVar6 = *(undefined8 *)((long)&(__args_0->second).field_2 + 8);\n    *(size_type *)(piVar1 + 6) = (__args_0->second).field_2._M_allocated_capacity;\n    *(undefined8 *)(piVar1 + 8) = uVar6;\n  }\n  else {\n    *(pointer *)(piVar1 + 2) = pcVar4;\n    *(size_type *)(piVar1 + 6) = (__args_0->second).field_2._M_allocated_capacity;\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar4 == paVar10)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar4 == paVar10)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)pcVar4 == paVar10" (binary_expression "allocator<char>_>_9\n       *)pcVar4" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)pcVar4" identifier * (ERROR ")" )) identifier)) == identifier) )) )) (compound_statement "{\n    uVar6 = *(undefined8 *)((long)&(__args_0->second).field_2 + 8);\n    *(size_type *)(piVar1 + 6) = (__args_0->second).field_2._M_allocated_capacity;\n    *(undefined8 *)(piVar1 + 8) = uVar6;\n  }" { (expression_statement "uVar6 = *(undefined8 *)((long)&(__args_0->second).field_2 + 8);" (assignment_expression "uVar6 = *(undefined8 *)((long)&(__args_0->second).field_2 + 8)" identifier = (pointer_expression "*(undefined8 *)((long)&(__args_0->second).field_2 + 8)" * (cast_expression "(undefined8 *)((long)&(__args_0->second).field_2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&(__args_0->second).field_2 + 8)" ( (binary_expression "(long)&(__args_0->second).field_2 + 8" (cast_expression "(long)&(__args_0->second).field_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&(__args_0->second).field_2" & (field_expression "(__args_0->second).field_2" (parenthesized_expression "(__args_0->second)" ( (field_expression "__args_0->second" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "*(size_type *)(piVar1 + 6) = (__args_0->second).field_2._M_allocated_capacity;" (assignment_expression "*(size_type *)(piVar1 + 6) = (__args_0->second).field_2._M_allocated_capacity" (pointer_expression "*(size_type *)(piVar1 + 6)" * (cast_expression "(size_type *)(piVar1 + 6)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1 + 6)" ( (binary_expression "piVar1 + 6" identifier + number_literal) )))) = (field_expression "(__args_0->second).field_2._M_allocated_capacity" (field_expression "(__args_0->second).field_2" (parenthesized_expression "(__args_0->second)" ( (field_expression "__args_0->second" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "*(undefined8 *)(piVar1 + 8) = uVar6;" (assignment_expression "*(undefined8 *)(piVar1 + 8) = uVar6" (pointer_expression "*(undefined8 *)(piVar1 + 8)" * (cast_expression "(undefined8 *)(piVar1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1 + 8)" ( (binary_expression "piVar1 + 8" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    *(pointer *)(piVar1 + 2) = pcVar4;\n    *(size_type *)(piVar1 + 6) = (__args_0->second).field_2._M_allocated_capacity;\n  }" else (compound_statement "{\n    *(pointer *)(piVar1 + 2) = pcVar4;\n    *(size_type *)(piVar1 + 6) = (__args_0->second).field_2._M_allocated_capacity;\n  }" { (expression_statement "*(pointer *)(piVar1 + 2) = pcVar4;" (assignment_expression "*(pointer *)(piVar1 + 2) = pcVar4" (pointer_expression "*(pointer *)(piVar1 + 2)" * (cast_expression "(pointer *)(piVar1 + 2)" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1 + 2)" ( (binary_expression "piVar1 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(size_type *)(piVar1 + 6) = (__args_0->second).field_2._M_allocated_capacity;" (assignment_expression "*(size_type *)(piVar1 + 6) = (__args_0->second).field_2._M_allocated_capacity" (pointer_expression "*(size_type *)(piVar1 + 6)" * (cast_expression "(size_type *)(piVar1 + 6)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1 + 6)" ( (binary_expression "piVar1 + 6" identifier + number_literal) )))) = (field_expression "(__args_0->second).field_2._M_allocated_capacity" (field_expression "(__args_0->second).field_2" (parenthesized_expression "(__args_0->second)" ( (field_expression "__args_0->second" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) }))) (expression_statement "sVar5 = (__args_0->second)._M_string_length;" (assignment_expression "sVar5 = (__args_0->second)._M_string_length" identifier = (field_expression "(__args_0->second)._M_string_length" (parenthesized_expression "(__args_0->second)" ( (field_expression "__args_0->second" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(__args_0->second)._M_dataplus._M_p = (pointer)paVar10;" (assignment_expression "(__args_0->second)._M_dataplus._M_p = (pointer)paVar10" (field_expression "(__args_0->second)._M_dataplus._M_p" (field_expression "(__args_0->second)._M_dataplus" (parenthesized_expression "(__args_0->second)" ( (field_expression "__args_0->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar10" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "(__args_0->second)._M_string_length = 0;" (assignment_expression "(__args_0->second)._M_string_length = 0" (field_expression "(__args_0->second)._M_string_length" (parenthesized_expression "(__args_0->second)" ( (field_expression "__args_0->second" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "*(size_type *)(piVar1 + 4) = sVar5;" (assignment_expression "*(size_type *)(piVar1 + 4) = sVar5" (pointer_expression "*(size_type *)(piVar1 + 4)" * (cast_expression "(size_type *)(piVar1 + 4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1 + 4)" ( (binary_expression "piVar1 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "(__args_0->second).field_2._M_local_buf[0] = '\0';" (assignment_expression "(__args_0->second).field_2._M_local_buf[0] = '\0'" (subscript_expression "(__args_0->second).field_2._M_local_buf[0]" (field_expression "(__args_0->second).field_2._M_local_buf" (field_expression "(__args_0->second).field_2" (parenthesized_expression "(__args_0->second)" ( (field_expression "__args_0->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (__position._M_current != ppVar3) {\n    ppVar13 = (pointer)((long)&ppVar9[1].first +\n                       ((long)__position._M_current + (-0x28 - (long)ppVar3) & 0xfffffffffffffff8U))\n    ;\n    paVar10 = &(ppVar3->second).field_2;\n    ppVar15 = ppVar9;\n    do {\n      ppVar15->first = *(int *)((long)paVar10 + -0x18);\n      (ppVar15->second)._M_dataplus._M_p = (pointer)&(ppVar15->second).field_2;\n      pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar10) {\n        uVar6 = *(undefined8 *)((long)paVar10 + 8);\n        (ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n        *(undefined8 *)((long)&(ppVar15->second).field_2 + 8) = uVar6;\n      }\n      else {\n        (ppVar15->second)._M_dataplus._M_p = pcVar4;\n        (ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n      }\n      ppVar12 = ppVar15 + 1;\n      (ppVar15->second)._M_string_length = *(size_type *)((long)paVar10 + -8);\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus)._M_p = (pointer)paVar10;\n      *(size_type *)((long)paVar10 + -8) = 0;\n      paVar10->_M_local_buf[0] = '\0';\n      paVar10 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar10 + 0x28);\n      ppVar15 = ppVar12;\n    } while (ppVar13 != ppVar12);\n    ppVar13 = ppVar13 + 1;\n  }" if (parenthesized_expression "(__position._M_current != ppVar3)" ( (binary_expression "__position._M_current != ppVar3" (field_expression "__position._M_current" identifier . field_identifier) != identifier) )) (compound_statement "{\n    ppVar13 = (pointer)((long)&ppVar9[1].first +\n                       ((long)__position._M_current + (-0x28 - (long)ppVar3) & 0xfffffffffffffff8U))\n    ;\n    paVar10 = &(ppVar3->second).field_2;\n    ppVar15 = ppVar9;\n    do {\n      ppVar15->first = *(int *)((long)paVar10 + -0x18);\n      (ppVar15->second)._M_dataplus._M_p = (pointer)&(ppVar15->second).field_2;\n      pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar10) {\n        uVar6 = *(undefined8 *)((long)paVar10 + 8);\n        (ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n        *(undefined8 *)((long)&(ppVar15->second).field_2 + 8) = uVar6;\n      }\n      else {\n        (ppVar15->second)._M_dataplus._M_p = pcVar4;\n        (ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n      }\n      ppVar12 = ppVar15 + 1;\n      (ppVar15->second)._M_string_length = *(size_type *)((long)paVar10 + -8);\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus)._M_p = (pointer)paVar10;\n      *(size_type *)((long)paVar10 + -8) = 0;\n      paVar10->_M_local_buf[0] = '\0';\n      paVar10 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar10 + 0x28);\n      ppVar15 = ppVar12;\n    } while (ppVar13 != ppVar12);\n    ppVar13 = ppVar13 + 1;\n  }" { (expression_statement "ppVar13 = (pointer)((long)&ppVar9[1].first +\n                       ((long)__position._M_current + (-0x28 - (long)ppVar3) & 0xfffffffffffffff8U))\n    ;" (assignment_expression "ppVar13 = (pointer)((long)&ppVar9[1].first +\n                       ((long)__position._M_current + (-0x28 - (long)ppVar3) & 0xfffffffffffffff8U))" identifier = (call_expression "(pointer)((long)&ppVar9[1].first +\n                       ((long)__position._M_current + (-0x28 - (long)ppVar3) & 0xfffffffffffffff8U))" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((long)&ppVar9[1].first +\n                       ((long)__position._M_current + (-0x28 - (long)ppVar3) & 0xfffffffffffffff8U))" ( (binary_expression "(long)&ppVar9[1].first +\n                       ((long)__position._M_current + (-0x28 - (long)ppVar3) & 0xfffffffffffffff8U)" (cast_expression "(long)&ppVar9[1].first" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&ppVar9[1].first" & (field_expression "ppVar9[1].first" (subscript_expression "ppVar9[1]" identifier [ number_literal ]) . field_identifier))) + (parenthesized_expression "((long)__position._M_current + (-0x28 - (long)ppVar3) & 0xfffffffffffffff8U)" ( (binary_expression "(long)__position._M_current + (-0x28 - (long)ppVar3) & 0xfffffffffffffff8U" (binary_expression "(long)__position._M_current + (-0x28 - (long)ppVar3)" (cast_expression "(long)__position._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__position._M_current" identifier . field_identifier)) + (parenthesized_expression "(-0x28 - (long)ppVar3)" ( (binary_expression "-0x28 - (long)ppVar3" number_literal - (cast_expression "(long)ppVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) & number_literal) ))) )))) ;) (expression_statement "paVar10 = &(ppVar3->second).field_2;" (assignment_expression "paVar10 = &(ppVar3->second).field_2" identifier = (pointer_expression "&(ppVar3->second).field_2" & (field_expression "(ppVar3->second).field_2" (parenthesized_expression "(ppVar3->second)" ( (field_expression "ppVar3->second" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "ppVar15 = ppVar9;" (assignment_expression "ppVar15 = ppVar9" identifier = identifier) ;) (do_statement "do {\n      ppVar15->first = *(int *)((long)paVar10 + -0x18);\n      (ppVar15->second)._M_dataplus._M_p = (pointer)&(ppVar15->second).field_2;\n      pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar10) {\n        uVar6 = *(undefined8 *)((long)paVar10 + 8);\n        (ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n        *(undefined8 *)((long)&(ppVar15->second).field_2 + 8) = uVar6;\n      }\n      else {\n        (ppVar15->second)._M_dataplus._M_p = pcVar4;\n        (ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n      }\n      ppVar12 = ppVar15 + 1;\n      (ppVar15->second)._M_string_length = *(size_type *)((long)paVar10 + -8);\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus)._M_p = (pointer)paVar10;\n      *(size_type *)((long)paVar10 + -8) = 0;\n      paVar10->_M_local_buf[0] = '\0';\n      paVar10 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar10 + 0x28);\n      ppVar15 = ppVar12;\n    } while (ppVar13 != ppVar12);" do (compound_statement "{\n      ppVar15->first = *(int *)((long)paVar10 + -0x18);\n      (ppVar15->second)._M_dataplus._M_p = (pointer)&(ppVar15->second).field_2;\n      pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar10) {\n        uVar6 = *(undefined8 *)((long)paVar10 + 8);\n        (ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n        *(undefined8 *)((long)&(ppVar15->second).field_2 + 8) = uVar6;\n      }\n      else {\n        (ppVar15->second)._M_dataplus._M_p = pcVar4;\n        (ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n      }\n      ppVar12 = ppVar15 + 1;\n      (ppVar15->second)._M_string_length = *(size_type *)((long)paVar10 + -8);\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus)._M_p = (pointer)paVar10;\n      *(size_type *)((long)paVar10 + -8) = 0;\n      paVar10->_M_local_buf[0] = '\0';\n      paVar10 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar10 + 0x28);\n      ppVar15 = ppVar12;\n    }" { (expression_statement "ppVar15->first = *(int *)((long)paVar10 + -0x18);" (assignment_expression "ppVar15->first = *(int *)((long)paVar10 + -0x18)" (field_expression "ppVar15->first" identifier -> field_identifier) = (pointer_expression "*(int *)((long)paVar10 + -0x18)" * (cast_expression "(int *)((long)paVar10 + -0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar10 + -0x18)" ( (binary_expression "(long)paVar10 + -0x18" (cast_expression "(long)paVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "(ppVar15->second)._M_dataplus._M_p = (pointer)&(ppVar15->second).field_2;" (assignment_expression "(ppVar15->second)._M_dataplus._M_p = (pointer)&(ppVar15->second).field_2" (field_expression "(ppVar15->second)._M_dataplus._M_p" (field_expression "(ppVar15->second)._M_dataplus" (parenthesized_expression "(ppVar15->second)" ( (field_expression "ppVar15->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(ppVar15->second).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(ppVar15->second).field_2" (parenthesized_expression "(ppVar15->second)" ( (field_expression "ppVar15->second" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus)._M_p;" (assignment_expression "pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus)._M_p" identifier = (field_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus)._M_p" (parenthesized_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus)" ( (field_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus" (parenthesized_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )" ( (call_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)" (parenthesized_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)" ( (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_> *" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(paVar10 + -1)" ( (binary_expression "paVar10 + -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           *)pcVar4 == paVar10) {\n        uVar6 = *(undefined8 *)((long)paVar10 + 8);\n        (ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n        *(undefined8 *)((long)&(ppVar15->second).field_2 + 8) = uVar6;\n      }\n      else {\n        (ppVar15->second)._M_dataplus._M_p = pcVar4;\n        (ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n      }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar10)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar10)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n           *)pcVar4 == paVar10" (binary_expression "allocator<char>_>_9\n           *)pcVar4" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)pcVar4" identifier * (ERROR ")" )) identifier)) == identifier) )) )) (compound_statement "{\n        uVar6 = *(undefined8 *)((long)paVar10 + 8);\n        (ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n        *(undefined8 *)((long)&(ppVar15->second).field_2 + 8) = uVar6;\n      }" { (expression_statement "uVar6 = *(undefined8 *)((long)paVar10 + 8);" (assignment_expression "uVar6 = *(undefined8 *)((long)paVar10 + 8)" identifier = (pointer_expression "*(undefined8 *)((long)paVar10 + 8)" * (cast_expression "(undefined8 *)((long)paVar10 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar10 + 8)" ( (binary_expression "(long)paVar10 + 8" (cast_expression "(long)paVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "(ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;" (assignment_expression "(ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity" (field_expression "(ppVar15->second).field_2._M_allocated_capacity" (field_expression "(ppVar15->second).field_2" (parenthesized_expression "(ppVar15->second)" ( (field_expression "ppVar15->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar10->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "*(undefined8 *)((long)&(ppVar15->second).field_2 + 8) = uVar6;" (assignment_expression "*(undefined8 *)((long)&(ppVar15->second).field_2 + 8) = uVar6" (pointer_expression "*(undefined8 *)((long)&(ppVar15->second).field_2 + 8)" * (cast_expression "(undefined8 *)((long)&(ppVar15->second).field_2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&(ppVar15->second).field_2 + 8)" ( (binary_expression "(long)&(ppVar15->second).field_2 + 8" (cast_expression "(long)&(ppVar15->second).field_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&(ppVar15->second).field_2" & (field_expression "(ppVar15->second).field_2" (parenthesized_expression "(ppVar15->second)" ( (field_expression "ppVar15->second" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = identifier) ;) }) (else_clause "else {\n        (ppVar15->second)._M_dataplus._M_p = pcVar4;\n        (ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n      }" else (compound_statement "{\n        (ppVar15->second)._M_dataplus._M_p = pcVar4;\n        (ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n      }" { (expression_statement "(ppVar15->second)._M_dataplus._M_p = pcVar4;" (assignment_expression "(ppVar15->second)._M_dataplus._M_p = pcVar4" (field_expression "(ppVar15->second)._M_dataplus._M_p" (field_expression "(ppVar15->second)._M_dataplus" (parenthesized_expression "(ppVar15->second)" ( (field_expression "ppVar15->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;" (assignment_expression "(ppVar15->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity" (field_expression "(ppVar15->second).field_2._M_allocated_capacity" (field_expression "(ppVar15->second).field_2" (parenthesized_expression "(ppVar15->second)" ( (field_expression "ppVar15->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar10->_M_allocated_capacity" identifier -> field_identifier)) ;) }))) (expression_statement "ppVar12 = ppVar15 + 1;" (assignment_expression "ppVar12 = ppVar15 + 1" identifier = (binary_expression "ppVar15 + 1" identifier + number_literal)) ;) (expression_statement "(ppVar15->second)._M_string_length = *(size_type *)((long)paVar10 + -8);" (assignment_expression "(ppVar15->second)._M_string_length = *(size_type *)((long)paVar10 + -8)" (field_expression "(ppVar15->second)._M_string_length" (parenthesized_expression "(ppVar15->second)" ( (field_expression "ppVar15->second" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(size_type *)((long)paVar10 + -8)" * (cast_expression "(size_type *)((long)paVar10 + -8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar10 + -8)" ( (binary_expression "(long)paVar10 + -8" (cast_expression "(long)paVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus)._M_p = (pointer)paVar10;" (assignment_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus)._M_p = (pointer)paVar10" (field_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus)._M_p" (parenthesized_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus)" ( (field_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus" (parenthesized_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))" ( (call_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)" (parenthesized_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)" ( (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_> *" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(paVar10 + -1)" ( (binary_expression "paVar10 + -1" identifier + number_literal) ))) )) -> field_identifier) )) . field_identifier) = (cast_expression "(pointer)paVar10" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "*(size_type *)((long)paVar10 + -8) = 0;" (assignment_expression "*(size_type *)((long)paVar10 + -8) = 0" (pointer_expression "*(size_type *)((long)paVar10 + -8)" * (cast_expression "(size_type *)((long)paVar10 + -8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar10 + -8)" ( (binary_expression "(long)paVar10 + -8" (cast_expression "(long)paVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "paVar10->_M_local_buf[0] = '\0';" (assignment_expression "paVar10->_M_local_buf[0] = '\0'" (subscript_expression "paVar10->_M_local_buf[0]" (field_expression "paVar10->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "paVar10 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar10 + 0x28);" (assignment_expression "paVar10 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar10 + 0x28)" identifier = (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar10 + 0x28)" (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)paVar10 + 0x28)" ( (binary_expression "(long)paVar10 + 0x28" (cast_expression "(long)paVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "ppVar15 = ppVar12;" (assignment_expression "ppVar15 = ppVar12" identifier = identifier) ;) }) while (parenthesized_expression "(ppVar13 != ppVar12)" ( (binary_expression "ppVar13 != ppVar12" identifier != identifier) )) ;) (expression_statement "ppVar13 = ppVar13 + 1;" (assignment_expression "ppVar13 = ppVar13 + 1" identifier = (binary_expression "ppVar13 + 1" identifier + number_literal)) ;) })) (expression_statement "ppVar7 = ppVar3;" (assignment_expression "ppVar7 = ppVar3" identifier = identifier) ;) (if_statement "if (__position._M_current != ppVar2) {\n    ppVar15 = (pointer)((long)&ppVar13[1].first +\n                       ((long)ppVar2 + (-0x28 - (long)__position._M_current) & 0xfffffffffffffff8U))\n    ;\n    paVar10 = &((__position._M_current)->second).field_2;\n    ppVar12 = ppVar13;\n    do {\n      ppVar12->first = *(int *)((long)paVar10 + -0x18);\n      (ppVar12->second)._M_dataplus._M_p = (pointer)&(ppVar12->second).field_2;\n      pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus)._M_p;\n      if (paVar10 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4) {\n        uVar6 = *(undefined8 *)((long)paVar10 + 8);\n        (ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n        *(undefined8 *)((long)&(ppVar12->second).field_2 + 8) = uVar6;\n      }\n      else {\n        (ppVar12->second)._M_dataplus._M_p = pcVar4;\n        (ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n      }\n      sVar5 = *(size_type *)((long)paVar10 + -8);\n      ppVar11 = ppVar12 + 1;\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus)._M_p = (pointer)paVar10;\n      *(size_type *)((long)paVar10 + -8) = 0;\n      (ppVar12->second)._M_string_length = sVar5;\n      paVar10->_M_local_buf[0] = '\0';\n      paVar10 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar10 + 0x28);\n      ppVar12 = ppVar11;\n      ppVar13 = ppVar15;\n    } while (ppVar11 != ppVar15);\n  }" if (parenthesized_expression "(__position._M_current != ppVar2)" ( (binary_expression "__position._M_current != ppVar2" (field_expression "__position._M_current" identifier . field_identifier) != identifier) )) (compound_statement "{\n    ppVar15 = (pointer)((long)&ppVar13[1].first +\n                       ((long)ppVar2 + (-0x28 - (long)__position._M_current) & 0xfffffffffffffff8U))\n    ;\n    paVar10 = &((__position._M_current)->second).field_2;\n    ppVar12 = ppVar13;\n    do {\n      ppVar12->first = *(int *)((long)paVar10 + -0x18);\n      (ppVar12->second)._M_dataplus._M_p = (pointer)&(ppVar12->second).field_2;\n      pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus)._M_p;\n      if (paVar10 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4) {\n        uVar6 = *(undefined8 *)((long)paVar10 + 8);\n        (ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n        *(undefined8 *)((long)&(ppVar12->second).field_2 + 8) = uVar6;\n      }\n      else {\n        (ppVar12->second)._M_dataplus._M_p = pcVar4;\n        (ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n      }\n      sVar5 = *(size_type *)((long)paVar10 + -8);\n      ppVar11 = ppVar12 + 1;\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus)._M_p = (pointer)paVar10;\n      *(size_type *)((long)paVar10 + -8) = 0;\n      (ppVar12->second)._M_string_length = sVar5;\n      paVar10->_M_local_buf[0] = '\0';\n      paVar10 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar10 + 0x28);\n      ppVar12 = ppVar11;\n      ppVar13 = ppVar15;\n    } while (ppVar11 != ppVar15);\n  }" { (expression_statement "ppVar15 = (pointer)((long)&ppVar13[1].first +\n                       ((long)ppVar2 + (-0x28 - (long)__position._M_current) & 0xfffffffffffffff8U))\n    ;" (assignment_expression "ppVar15 = (pointer)((long)&ppVar13[1].first +\n                       ((long)ppVar2 + (-0x28 - (long)__position._M_current) & 0xfffffffffffffff8U))" identifier = (call_expression "(pointer)((long)&ppVar13[1].first +\n                       ((long)ppVar2 + (-0x28 - (long)__position._M_current) & 0xfffffffffffffff8U))" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((long)&ppVar13[1].first +\n                       ((long)ppVar2 + (-0x28 - (long)__position._M_current) & 0xfffffffffffffff8U))" ( (binary_expression "(long)&ppVar13[1].first +\n                       ((long)ppVar2 + (-0x28 - (long)__position._M_current) & 0xfffffffffffffff8U)" (cast_expression "(long)&ppVar13[1].first" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&ppVar13[1].first" & (field_expression "ppVar13[1].first" (subscript_expression "ppVar13[1]" identifier [ number_literal ]) . field_identifier))) + (parenthesized_expression "((long)ppVar2 + (-0x28 - (long)__position._M_current) & 0xfffffffffffffff8U)" ( (binary_expression "(long)ppVar2 + (-0x28 - (long)__position._M_current) & 0xfffffffffffffff8U" (binary_expression "(long)ppVar2 + (-0x28 - (long)__position._M_current)" (cast_expression "(long)ppVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x28 - (long)__position._M_current)" ( (binary_expression "-0x28 - (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 "paVar10 = &((__position._M_current)->second).field_2;" (assignment_expression "paVar10 = &((__position._M_current)->second).field_2" identifier = (pointer_expression "&((__position._M_current)->second).field_2" & (field_expression "((__position._M_current)->second).field_2" (parenthesized_expression "((__position._M_current)->second)" ( (field_expression "(__position._M_current)->second" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) )) . field_identifier))) ;) (expression_statement "ppVar12 = ppVar13;" (assignment_expression "ppVar12 = ppVar13" identifier = identifier) ;) (do_statement "do {\n      ppVar12->first = *(int *)((long)paVar10 + -0x18);\n      (ppVar12->second)._M_dataplus._M_p = (pointer)&(ppVar12->second).field_2;\n      pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus)._M_p;\n      if (paVar10 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4) {\n        uVar6 = *(undefined8 *)((long)paVar10 + 8);\n        (ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n        *(undefined8 *)((long)&(ppVar12->second).field_2 + 8) = uVar6;\n      }\n      else {\n        (ppVar12->second)._M_dataplus._M_p = pcVar4;\n        (ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n      }\n      sVar5 = *(size_type *)((long)paVar10 + -8);\n      ppVar11 = ppVar12 + 1;\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus)._M_p = (pointer)paVar10;\n      *(size_type *)((long)paVar10 + -8) = 0;\n      (ppVar12->second)._M_string_length = sVar5;\n      paVar10->_M_local_buf[0] = '\0';\n      paVar10 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar10 + 0x28);\n      ppVar12 = ppVar11;\n      ppVar13 = ppVar15;\n    } while (ppVar11 != ppVar15);" do (compound_statement "{\n      ppVar12->first = *(int *)((long)paVar10 + -0x18);\n      (ppVar12->second)._M_dataplus._M_p = (pointer)&(ppVar12->second).field_2;\n      pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus)._M_p;\n      if (paVar10 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4) {\n        uVar6 = *(undefined8 *)((long)paVar10 + 8);\n        (ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n        *(undefined8 *)((long)&(ppVar12->second).field_2 + 8) = uVar6;\n      }\n      else {\n        (ppVar12->second)._M_dataplus._M_p = pcVar4;\n        (ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n      }\n      sVar5 = *(size_type *)((long)paVar10 + -8);\n      ppVar11 = ppVar12 + 1;\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus)._M_p = (pointer)paVar10;\n      *(size_type *)((long)paVar10 + -8) = 0;\n      (ppVar12->second)._M_string_length = sVar5;\n      paVar10->_M_local_buf[0] = '\0';\n      paVar10 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar10 + 0x28);\n      ppVar12 = ppVar11;\n      ppVar13 = ppVar15;\n    }" { (expression_statement "ppVar12->first = *(int *)((long)paVar10 + -0x18);" (assignment_expression "ppVar12->first = *(int *)((long)paVar10 + -0x18)" (field_expression "ppVar12->first" identifier -> field_identifier) = (pointer_expression "*(int *)((long)paVar10 + -0x18)" * (cast_expression "(int *)((long)paVar10 + -0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar10 + -0x18)" ( (binary_expression "(long)paVar10 + -0x18" (cast_expression "(long)paVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "(ppVar12->second)._M_dataplus._M_p = (pointer)&(ppVar12->second).field_2;" (assignment_expression "(ppVar12->second)._M_dataplus._M_p = (pointer)&(ppVar12->second).field_2" (field_expression "(ppVar12->second)._M_dataplus._M_p" (field_expression "(ppVar12->second)._M_dataplus" (parenthesized_expression "(ppVar12->second)" ( (field_expression "ppVar12->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(ppVar12->second).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(ppVar12->second).field_2" (parenthesized_expression "(ppVar12->second)" ( (field_expression "ppVar12->second" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus)._M_p;" (assignment_expression "pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus)._M_p" identifier = (field_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus)._M_p" (parenthesized_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus)" ( (field_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )->_M_dataplus" (parenthesized_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)\n                )" ( (call_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)" (parenthesized_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)" ( (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_> *" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(paVar10 + -1)" ( (binary_expression "paVar10 + -1" identifier + number_literal) ))) )) -> field_identifier) )) . field_identifier)) ;) (if_statement "if (paVar10 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4) {\n        uVar6 = *(undefined8 *)((long)paVar10 + 8);\n        (ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n        *(undefined8 *)((long)&(ppVar12->second).field_2 + 8) = uVar6;\n      }\n      else {\n        (ppVar12->second)._M_dataplus._M_p = pcVar4;\n        (ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n      }" if (parenthesized_expression "(paVar10 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4)" ( (binary_expression "paVar10 ==\n          (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4)" identifier == (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n           *)pcVar4" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)pcVar4" identifier * (ERROR ")" )) identifier)) ))) )) (compound_statement "{\n        uVar6 = *(undefined8 *)((long)paVar10 + 8);\n        (ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n        *(undefined8 *)((long)&(ppVar12->second).field_2 + 8) = uVar6;\n      }" { (expression_statement "uVar6 = *(undefined8 *)((long)paVar10 + 8);" (assignment_expression "uVar6 = *(undefined8 *)((long)paVar10 + 8)" identifier = (pointer_expression "*(undefined8 *)((long)paVar10 + 8)" * (cast_expression "(undefined8 *)((long)paVar10 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar10 + 8)" ( (binary_expression "(long)paVar10 + 8" (cast_expression "(long)paVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "(ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;" (assignment_expression "(ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity" (field_expression "(ppVar12->second).field_2._M_allocated_capacity" (field_expression "(ppVar12->second).field_2" (parenthesized_expression "(ppVar12->second)" ( (field_expression "ppVar12->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar10->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "*(undefined8 *)((long)&(ppVar12->second).field_2 + 8) = uVar6;" (assignment_expression "*(undefined8 *)((long)&(ppVar12->second).field_2 + 8) = uVar6" (pointer_expression "*(undefined8 *)((long)&(ppVar12->second).field_2 + 8)" * (cast_expression "(undefined8 *)((long)&(ppVar12->second).field_2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&(ppVar12->second).field_2 + 8)" ( (binary_expression "(long)&(ppVar12->second).field_2 + 8" (cast_expression "(long)&(ppVar12->second).field_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&(ppVar12->second).field_2" & (field_expression "(ppVar12->second).field_2" (parenthesized_expression "(ppVar12->second)" ( (field_expression "ppVar12->second" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = identifier) ;) }) (else_clause "else {\n        (ppVar12->second)._M_dataplus._M_p = pcVar4;\n        (ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n      }" else (compound_statement "{\n        (ppVar12->second)._M_dataplus._M_p = pcVar4;\n        (ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;\n      }" { (expression_statement "(ppVar12->second)._M_dataplus._M_p = pcVar4;" (assignment_expression "(ppVar12->second)._M_dataplus._M_p = pcVar4" (field_expression "(ppVar12->second)._M_dataplus._M_p" (field_expression "(ppVar12->second)._M_dataplus" (parenthesized_expression "(ppVar12->second)" ( (field_expression "ppVar12->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity;" (assignment_expression "(ppVar12->second).field_2._M_allocated_capacity = paVar10->_M_allocated_capacity" (field_expression "(ppVar12->second).field_2._M_allocated_capacity" (field_expression "(ppVar12->second).field_2" (parenthesized_expression "(ppVar12->second)" ( (field_expression "ppVar12->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar10->_M_allocated_capacity" identifier -> field_identifier)) ;) }))) (expression_statement "sVar5 = *(size_type *)((long)paVar10 + -8);" (assignment_expression "sVar5 = *(size_type *)((long)paVar10 + -8)" identifier = (pointer_expression "*(size_type *)((long)paVar10 + -8)" * (cast_expression "(size_type *)((long)paVar10 + -8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar10 + -8)" ( (binary_expression "(long)paVar10 + -8" (cast_expression "(long)paVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "ppVar11 = ppVar12 + 1;" (assignment_expression "ppVar11 = ppVar12 + 1" identifier = (binary_expression "ppVar12 + 1" identifier + number_literal)) ;) (expression_statement "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus)._M_p = (pointer)paVar10;" (assignment_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus)._M_p = (pointer)paVar10" (field_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus)._M_p" (parenthesized_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus)" ( (field_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))->\n      _M_dataplus" (parenthesized_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1))" ( (call_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(paVar10 + -1)" (parenthesized_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)" ( (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_> *" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(paVar10 + -1)" ( (binary_expression "paVar10 + -1" identifier + number_literal) ))) )) -> field_identifier) )) . field_identifier) = (cast_expression "(pointer)paVar10" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "*(size_type *)((long)paVar10 + -8) = 0;" (assignment_expression "*(size_type *)((long)paVar10 + -8) = 0" (pointer_expression "*(size_type *)((long)paVar10 + -8)" * (cast_expression "(size_type *)((long)paVar10 + -8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar10 + -8)" ( (binary_expression "(long)paVar10 + -8" (cast_expression "(long)paVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "(ppVar12->second)._M_string_length = sVar5;" (assignment_expression "(ppVar12->second)._M_string_length = sVar5" (field_expression "(ppVar12->second)._M_string_length" (parenthesized_expression "(ppVar12->second)" ( (field_expression "ppVar12->second" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "paVar10->_M_local_buf[0] = '\0';" (assignment_expression "paVar10->_M_local_buf[0] = '\0'" (subscript_expression "paVar10->_M_local_buf[0]" (field_expression "paVar10->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "paVar10 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar10 + 0x28);" (assignment_expression "paVar10 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar10 + 0x28)" identifier = (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((long)paVar10 + 0x28)" (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)paVar10 + 0x28)" ( (binary_expression "(long)paVar10 + 0x28" (cast_expression "(long)paVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "ppVar12 = ppVar11;" (assignment_expression "ppVar12 = ppVar11" identifier = identifier) ;) (expression_statement "ppVar13 = ppVar15;" (assignment_expression "ppVar13 = ppVar15" identifier = identifier) ;) }) while (parenthesized_expression "(ppVar11 != ppVar15)" ( (binary_expression "ppVar11 != ppVar15" identifier != identifier) )) ;) })) (for_statement "for (; ppVar7 != ppVar2; ppVar7 = ppVar7 + 1) {\n    pcVar4 = (ppVar7->second)._M_dataplus._M_p;\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)pcVar4 != &(ppVar7->second).field_2) {\n      operator_delete(pcVar4);\n    }\n  }" for ( ; (binary_expression "ppVar7 != ppVar2" identifier != identifier) ; (assignment_expression "ppVar7 = ppVar7 + 1" identifier = (binary_expression "ppVar7 + 1" identifier + number_literal)) ) (compound_statement "{\n    pcVar4 = (ppVar7->second)._M_dataplus._M_p;\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)pcVar4 != &(ppVar7->second).field_2) {\n      operator_delete(pcVar4);\n    }\n  }" { (expression_statement "pcVar4 = (ppVar7->second)._M_dataplus._M_p;" (assignment_expression "pcVar4 = (ppVar7->second)._M_dataplus._M_p" identifier = (field_expression "(ppVar7->second)._M_dataplus._M_p" (field_expression "(ppVar7->second)._M_dataplus" (parenthesized_expression "(ppVar7->second)" ( (field_expression "ppVar7->second" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)pcVar4 != &(ppVar7->second).field_2) {\n      operator_delete(pcVar4);\n    }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)pcVar4 != &(ppVar7->second).field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)pcVar4 != &(ppVar7->second).field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n         *)pcVar4 != &(ppVar7->second).field_2" (binary_expression "allocator<char>_>_9\n         *)pcVar4" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n         *)pcVar4" identifier * (ERROR ")" )) identifier)) != (pointer_expression "&(ppVar7->second).field_2" & (field_expression "(ppVar7->second).field_2" (parenthesized_expression "(ppVar7->second)" ( (field_expression "ppVar7->second" identifier -> field_identifier) )) . field_identifier))) )) )) (compound_statement "{\n      operator_delete(pcVar4);\n    }" { (expression_statement "operator_delete(pcVar4);" (call_expression "operator_delete(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier ))) ;) })) })) (if_statement "if (ppVar3 != (pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n                 *)0x0) {\n    operator_delete(ppVar3);\n  }" if (parenthesized_expression "(ppVar3 != (pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n                 *)0x0)" ( (binary_expression "ppVar3 != (pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n                 *)0x0)" identifier != (parenthesized_expression "(pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n                 *)0x0)" ( (ERROR "pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "pair<int,_std" (binary_expression "pair<int" identifier < identifier) , identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>\n                 *)0x0" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) ))) )) (compound_statement "{\n    operator_delete(ppVar3);\n  }" { (expression_statement "operator_delete(ppVar3);" (call_expression "operator_delete(ppVar3)" identifier (argument_list "(ppVar3)" ( identifier ))) ;) })) (expression_statement "(this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  )._M_impl._M_start = ppVar9;" (assignment_expression "(this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  )._M_impl._M_start = ppVar9" (field_expression "(this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  )._M_impl._M_start" (field_expression "(this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  )._M_impl" (parenthesized_expression "(this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  )" ( (ERROR "this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n  super__Vector_base<std::pair<int,_std" (binary_expression "this->\n  super__Vector_base<std::pair<int" (binary_expression "this->\n  super__Vector_base<std" (field_expression "this->\n  super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<int,_std" (binary_expression "pair<int" identifier < identifier) , identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>_>" (binary_expression "allocator<char>_>_>_>_" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  )._M_impl._M_finish = ppVar13;" (assignment_expression "(this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  )._M_impl._M_finish = ppVar13" (field_expression "(this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  )._M_impl._M_finish" (field_expression "(this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  )._M_impl" (parenthesized_expression "(this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  )" ( (ERROR "this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n  super__Vector_base<std::pair<int,_std" (binary_expression "this->\n  super__Vector_base<std::pair<int" (binary_expression "this->\n  super__Vector_base<std" (field_expression "this->\n  super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<int,_std" (binary_expression "pair<int" identifier < identifier) , identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>_>" (binary_expression "allocator<char>_>_>_>_" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  )._M_impl._M_end_of_storage = local_48;" (assignment_expression "(this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  )._M_impl._M_end_of_storage = local_48" (field_expression "(this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  )._M_impl._M_end_of_storage" (field_expression "(this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  )._M_impl" (parenthesized_expression "(this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  )" ( (ERROR "this->\n  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n  super__Vector_base<std::pair<int,_std" (binary_expression "this->\n  super__Vector_base<std::pair<int" (binary_expression "this->\n  super__Vector_base<std" (field_expression "this->\n  super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<int,_std" (binary_expression "pair<int" identifier < identifier) , identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>_>" (binary_expression "allocator<char>_>_>_>_" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_00165380(long *param_1,long param_2,undefined4 *param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long lVar4;\n  undefined4 *puVar5;\n  undefined8 *puVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  ulong uVar10;\n  undefined4 *puVar11;\n  long local_48;\n  \n  lVar1 = param_1[1];\n  lVar2 = *param_1;\n  lVar4 = lVar1 - lVar2 >> 3;\n  if (lVar4 * -0x3333333333333333 == 0) {\n    uVar10 = 1;\nLAB_001655d5:\n    local_48 = uVar10 * 0x28;\n  }\n  else {\n    uVar10 = lVar4 * -0x6666666666666666;\n    local_48 = -0x10;\n    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }\n  puVar5 = (undefined4 *)FUN_00275550(local_48);\n  local_48 = (long)puVar5 + local_48;\n  puVar9 = puVar5 + 10;\nLAB_00165403:\n  puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2));\n  puVar8 = *(undefined4 **)(param_3 + 2);\n  *puVar11 = *param_3;\n  *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n  if (puVar8 == param_3 + 6) {\n    uVar3 = *(undefined8 *)(param_3 + 8);\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n    *(undefined8 *)(puVar11 + 8) = uVar3;\n  }\n  else {\n    *(undefined4 **)(puVar11 + 2) = puVar8;\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n  }\n  uVar3 = *(undefined8 *)(param_3 + 4);\n  *(undefined4 **)(param_3 + 2) = param_3 + 6;\n  *(undefined8 *)(param_3 + 4) = 0;\n  *(undefined8 *)(puVar11 + 4) = uVar3;\n  *(undefined1 *)(param_3 + 6) = 0;\n  if (param_2 != lVar2) {\n    puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(lVar2 + 0x18);\n    puVar11 = puVar5;\n    do {\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    } while (puVar9 != puVar8);\n    puVar9 = puVar9 + 10;\n  }\n  lVar4 = lVar2;\n  if (param_2 != lVar1) {\n    puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(param_2 + 0x18);\n    puVar8 = puVar9;\n    do {\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    } while (puVar7 != puVar11);\n  }\n  for (; lVar4 != lVar1; lVar4 = lVar4 + 0x28) {\n    if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {\n      FUN_00276d20();\n    }\n  }\n  if (lVar2 != 0) {\n    FUN_00276d20(lVar2);\n  }\n  *param_1 = (long)puVar5;\n  param_1[1] = (long)puVar9;\n  param_1[2] = local_48;\n  return;\n}\n\n" (function_definition "void FUN_00165380(long *param_1,long param_2,undefined4 *param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long lVar4;\n  undefined4 *puVar5;\n  undefined8 *puVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  ulong uVar10;\n  undefined4 *puVar11;\n  long local_48;\n  \n  lVar1 = param_1[1];\n  lVar2 = *param_1;\n  lVar4 = lVar1 - lVar2 >> 3;\n  if (lVar4 * -0x3333333333333333 == 0) {\n    uVar10 = 1;\nLAB_001655d5:\n    local_48 = uVar10 * 0x28;\n  }\n  else {\n    uVar10 = lVar4 * -0x6666666666666666;\n    local_48 = -0x10;\n    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }\n  puVar5 = (undefined4 *)FUN_00275550(local_48);\n  local_48 = (long)puVar5 + local_48;\n  puVar9 = puVar5 + 10;\nLAB_00165403:\n  puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2));\n  puVar8 = *(undefined4 **)(param_3 + 2);\n  *puVar11 = *param_3;\n  *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n  if (puVar8 == param_3 + 6) {\n    uVar3 = *(undefined8 *)(param_3 + 8);\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n    *(undefined8 *)(puVar11 + 8) = uVar3;\n  }\n  else {\n    *(undefined4 **)(puVar11 + 2) = puVar8;\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n  }\n  uVar3 = *(undefined8 *)(param_3 + 4);\n  *(undefined4 **)(param_3 + 2) = param_3 + 6;\n  *(undefined8 *)(param_3 + 4) = 0;\n  *(undefined8 *)(puVar11 + 4) = uVar3;\n  *(undefined1 *)(param_3 + 6) = 0;\n  if (param_2 != lVar2) {\n    puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(lVar2 + 0x18);\n    puVar11 = puVar5;\n    do {\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    } while (puVar9 != puVar8);\n    puVar9 = puVar9 + 10;\n  }\n  lVar4 = lVar2;\n  if (param_2 != lVar1) {\n    puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(param_2 + 0x18);\n    puVar8 = puVar9;\n    do {\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    } while (puVar7 != puVar11);\n  }\n  for (; lVar4 != lVar1; lVar4 = lVar4 + 0x28) {\n    if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {\n      FUN_00276d20();\n    }\n  }\n  if (lVar2 != 0) {\n    FUN_00276d20(lVar2);\n  }\n  *param_1 = (long)puVar5;\n  param_1[1] = (long)puVar9;\n  param_1[2] = local_48;\n  return;\n}" primitive_type (function_declarator "FUN_00165380(long *param_1,long param_2,undefined4 *param_3)" identifier (parameter_list "(long *param_1,long param_2,undefined4 *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 "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long lVar4;\n  undefined4 *puVar5;\n  undefined8 *puVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  ulong uVar10;\n  undefined4 *puVar11;\n  long local_48;\n  \n  lVar1 = param_1[1];\n  lVar2 = *param_1;\n  lVar4 = lVar1 - lVar2 >> 3;\n  if (lVar4 * -0x3333333333333333 == 0) {\n    uVar10 = 1;\nLAB_001655d5:\n    local_48 = uVar10 * 0x28;\n  }\n  else {\n    uVar10 = lVar4 * -0x6666666666666666;\n    local_48 = -0x10;\n    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }\n  puVar5 = (undefined4 *)FUN_00275550(local_48);\n  local_48 = (long)puVar5 + local_48;\n  puVar9 = puVar5 + 10;\nLAB_00165403:\n  puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2));\n  puVar8 = *(undefined4 **)(param_3 + 2);\n  *puVar11 = *param_3;\n  *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n  if (puVar8 == param_3 + 6) {\n    uVar3 = *(undefined8 *)(param_3 + 8);\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n    *(undefined8 *)(puVar11 + 8) = uVar3;\n  }\n  else {\n    *(undefined4 **)(puVar11 + 2) = puVar8;\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n  }\n  uVar3 = *(undefined8 *)(param_3 + 4);\n  *(undefined4 **)(param_3 + 2) = param_3 + 6;\n  *(undefined8 *)(param_3 + 4) = 0;\n  *(undefined8 *)(puVar11 + 4) = uVar3;\n  *(undefined1 *)(param_3 + 6) = 0;\n  if (param_2 != lVar2) {\n    puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(lVar2 + 0x18);\n    puVar11 = puVar5;\n    do {\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    } while (puVar9 != puVar8);\n    puVar9 = puVar9 + 10;\n  }\n  lVar4 = lVar2;\n  if (param_2 != lVar1) {\n    puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(param_2 + 0x18);\n    puVar8 = puVar9;\n    do {\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    } while (puVar7 != puVar11);\n  }\n  for (; lVar4 != lVar1; lVar4 = lVar4 + 0x28) {\n    if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {\n      FUN_00276d20();\n    }\n  }\n  if (lVar2 != 0) {\n    FUN_00276d20(lVar2);\n  }\n  *param_1 = (long)puVar5;\n  param_1[1] = (long)puVar9;\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 uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * 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 "lVar4 = lVar1 - lVar2 >> 3;" (assignment_expression "lVar4 = lVar1 - lVar2 >> 3" identifier = (binary_expression "lVar1 - lVar2 >> 3" (binary_expression "lVar1 - lVar2" identifier - identifier) >> number_literal)) ;) (if_statement "if (lVar4 * -0x3333333333333333 == 0) {\n    uVar10 = 1;\nLAB_001655d5:\n    local_48 = uVar10 * 0x28;\n  }\n  else {\n    uVar10 = lVar4 * -0x6666666666666666;\n    local_48 = -0x10;\n    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }" if (parenthesized_expression "(lVar4 * -0x3333333333333333 == 0)" ( (binary_expression "lVar4 * -0x3333333333333333 == 0" (binary_expression "lVar4 * -0x3333333333333333" identifier * number_literal) == number_literal) )) (compound_statement "{\n    uVar10 = 1;\nLAB_001655d5:\n    local_48 = uVar10 * 0x28;\n  }" { (expression_statement "uVar10 = 1;" (assignment_expression "uVar10 = 1" identifier = number_literal) ;) (labeled_statement "LAB_001655d5:\n    local_48 = uVar10 * 0x28;" statement_identifier : (expression_statement "local_48 = uVar10 * 0x28;" (assignment_expression "local_48 = uVar10 * 0x28" identifier = (binary_expression "uVar10 * 0x28" identifier * number_literal)) ;)) }) (else_clause "else {\n    uVar10 = lVar4 * -0x6666666666666666;\n    local_48 = -0x10;\n    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }" else (compound_statement "{\n    uVar10 = lVar4 * -0x6666666666666666;\n    local_48 = -0x10;\n    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }" { (expression_statement "uVar10 = lVar4 * -0x6666666666666666;" (assignment_expression "uVar10 = lVar4 * -0x6666666666666666" identifier = (binary_expression "lVar4 * -0x6666666666666666" identifier * number_literal)) ;) (expression_statement "local_48 = -0x10;" (assignment_expression "local_48 = -0x10" identifier = number_literal) ;) (if_statement "if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }" if (parenthesized_expression "(((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667))" ( (binary_expression "((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)" (parenthesized_expression "((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0)" ( (binary_expression "(ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0" (binary_expression "(ulong)(lVar4 * -0x3333333333333333) < uVar10" (call_expression "(ulong)(lVar4 * -0x3333333333333333)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(lVar4 * -0x3333333333333333)" ( (binary_expression "lVar4 * -0x3333333333333333" identifier * number_literal) ))) < identifier) || (binary_expression "lVar4 * 0x3333333333333333 == 0" (binary_expression "lVar4 * 0x3333333333333333" identifier * number_literal) == number_literal)) )) && (parenthesized_expression "(uVar10 < 0x666666666666667)" ( (binary_expression "uVar10 < 0x666666666666667" identifier < number_literal) ))) )) (compound_statement "{\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }" { (if_statement "if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }" { (expression_statement "puVar9 = (undefined4 *)0x28;" (assignment_expression "puVar9 = (undefined4 *)0x28" identifier = (cast_expression "(undefined4 *)0x28" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "puVar5 = (undefined4 *)0x0;" (assignment_expression "puVar5 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00165403;" goto statement_identifier ;) })) (goto_statement "goto LAB_001655d5;" goto statement_identifier ;) })) }))) (expression_statement "puVar5 = (undefined4 *)FUN_00275550(local_48);" (assignment_expression "puVar5 = (undefined4 *)FUN_00275550(local_48)" identifier = (cast_expression "(undefined4 *)FUN_00275550(local_48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(local_48)" identifier (argument_list "(local_48)" ( identifier ))))) ;) (expression_statement "local_48 = (long)puVar5 + local_48;" (assignment_expression "local_48 = (long)puVar5 + local_48" identifier = (binary_expression "(long)puVar5 + local_48" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "puVar9 = puVar5 + 10;" (assignment_expression "puVar9 = puVar5 + 10" identifier = (binary_expression "puVar5 + 10" identifier + number_literal)) ;) (labeled_statement "LAB_00165403:\n  puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2));" statement_identifier : (expression_statement "puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2));" (assignment_expression "puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2))" identifier = (cast_expression "(undefined4 *)((long)puVar5 + (param_2 - lVar2))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + (param_2 - lVar2))" ( (binary_expression "(long)puVar5 + (param_2 - lVar2)" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(param_2 - lVar2)" ( (binary_expression "param_2 - lVar2" identifier - identifier) ))) )))) ;)) (expression_statement "puVar8 = *(undefined4 **)(param_3 + 2);" (assignment_expression "puVar8 = *(undefined4 **)(param_3 + 2)" identifier = (pointer_expression "*(undefined4 **)(param_3 + 2)" * (cast_expression "(undefined4 **)(param_3 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) ))))) ;) (expression_statement "*puVar11 = *param_3;" (assignment_expression "*puVar11 = *param_3" (pointer_expression "*puVar11" * identifier) = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(undefined4 **)(puVar11 + 2) = puVar11 + 6;" (assignment_expression "*(undefined4 **)(puVar11 + 2) = puVar11 + 6" (pointer_expression "*(undefined4 **)(puVar11 + 2)" * (cast_expression "(undefined4 **)(puVar11 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 2)" ( (binary_expression "puVar11 + 2" identifier + number_literal) )))) = (binary_expression "puVar11 + 6" identifier + number_literal)) ;) (if_statement "if (puVar8 == param_3 + 6) {\n    uVar3 = *(undefined8 *)(param_3 + 8);\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n    *(undefined8 *)(puVar11 + 8) = uVar3;\n  }\n  else {\n    *(undefined4 **)(puVar11 + 2) = puVar8;\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n  }" if (parenthesized_expression "(puVar8 == param_3 + 6)" ( (binary_expression "puVar8 == param_3 + 6" identifier == (binary_expression "param_3 + 6" identifier + number_literal)) )) (compound_statement "{\n    uVar3 = *(undefined8 *)(param_3 + 8);\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n    *(undefined8 *)(puVar11 + 8) = uVar3;\n  }" { (expression_statement "uVar3 = *(undefined8 *)(param_3 + 8);" (assignment_expression "uVar3 = *(undefined8 *)(param_3 + 8)" identifier = (pointer_expression "*(undefined8 *)(param_3 + 8)" * (cast_expression "(undefined8 *)(param_3 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);" (assignment_expression "*(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6)" (pointer_expression "*(undefined8 *)(puVar11 + 6)" * (cast_expression "(undefined8 *)(puVar11 + 6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 6)" ( (binary_expression "puVar11 + 6" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_3 + 6)" * (cast_expression "(undefined8 *)(param_3 + 6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 6)" ( (binary_expression "param_3 + 6" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(puVar11 + 8) = uVar3;" (assignment_expression "*(undefined8 *)(puVar11 + 8) = uVar3" (pointer_expression "*(undefined8 *)(puVar11 + 8)" * (cast_expression "(undefined8 *)(puVar11 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 8)" ( (binary_expression "puVar11 + 8" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    *(undefined4 **)(puVar11 + 2) = puVar8;\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n  }" else (compound_statement "{\n    *(undefined4 **)(puVar11 + 2) = puVar8;\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n  }" { (expression_statement "*(undefined4 **)(puVar11 + 2) = puVar8;" (assignment_expression "*(undefined4 **)(puVar11 + 2) = puVar8" (pointer_expression "*(undefined4 **)(puVar11 + 2)" * (cast_expression "(undefined4 **)(puVar11 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 2)" ( (binary_expression "puVar11 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);" (assignment_expression "*(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6)" (pointer_expression "*(undefined8 *)(puVar11 + 6)" * (cast_expression "(undefined8 *)(puVar11 + 6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 6)" ( (binary_expression "puVar11 + 6" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_3 + 6)" * (cast_expression "(undefined8 *)(param_3 + 6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 6)" ( (binary_expression "param_3 + 6" identifier + number_literal) ))))) ;) }))) (expression_statement "uVar3 = *(undefined8 *)(param_3 + 4);" (assignment_expression "uVar3 = *(undefined8 *)(param_3 + 4)" identifier = (pointer_expression "*(undefined8 *)(param_3 + 4)" * (cast_expression "(undefined8 *)(param_3 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(param_3 + 2) = param_3 + 6;" (assignment_expression "*(undefined4 **)(param_3 + 2) = param_3 + 6" (pointer_expression "*(undefined4 **)(param_3 + 2)" * (cast_expression "(undefined4 **)(param_3 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) )))) = (binary_expression "param_3 + 6" identifier + number_literal)) ;) (expression_statement "*(undefined8 *)(param_3 + 4) = 0;" (assignment_expression "*(undefined8 *)(param_3 + 4) = 0" (pointer_expression "*(undefined8 *)(param_3 + 4)" * (cast_expression "(undefined8 *)(param_3 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(puVar11 + 4) = uVar3;" (assignment_expression "*(undefined8 *)(puVar11 + 4) = uVar3" (pointer_expression "*(undefined8 *)(puVar11 + 4)" * (cast_expression "(undefined8 *)(puVar11 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 4)" ( (binary_expression "puVar11 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_3 + 6) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 6) = 0" (pointer_expression "*(undefined1 *)(param_3 + 6)" * (cast_expression "(undefined1 *)(param_3 + 6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 6)" ( (binary_expression "param_3 + 6" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (param_2 != lVar2) {\n    puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(lVar2 + 0x18);\n    puVar11 = puVar5;\n    do {\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    } while (puVar9 != puVar8);\n    puVar9 = puVar9 + 10;\n  }" if (parenthesized_expression "(param_2 != lVar2)" ( (binary_expression "param_2 != lVar2" identifier != identifier) )) (compound_statement "{\n    puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(lVar2 + 0x18);\n    puVar11 = puVar5;\n    do {\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    } while (puVar9 != puVar8);\n    puVar9 = puVar9 + 10;\n  }" { (expression_statement "puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)\n    ;" (assignment_expression "puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)" identifier = (cast_expression "(undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)" ( (binary_expression "(long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28" (binary_expression "(long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U)" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U)" ( (binary_expression "(param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U" (binary_expression "(param_2 + -0x28) - lVar2" (parenthesized_expression "(param_2 + -0x28)" ( (binary_expression "param_2 + -0x28" identifier + number_literal) )) - identifier) & number_literal) ))) + number_literal) )))) ;) (expression_statement "puVar6 = (undefined8 *)(lVar2 + 0x18);" (assignment_expression "puVar6 = (undefined8 *)(lVar2 + 0x18)" identifier = (cast_expression "(undefined8 *)(lVar2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) )))) ;) (expression_statement "puVar11 = puVar5;" (assignment_expression "puVar11 = puVar5" identifier = identifier) ;) (do_statement "do {\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    } while (puVar9 != puVar8);" do (compound_statement "{\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    }" { (expression_statement "*puVar11 = *(undefined4 *)(puVar6 + -3);" (assignment_expression "*puVar11 = *(undefined4 *)(puVar6 + -3)" (pointer_expression "*puVar11" * identifier) = (pointer_expression "*(undefined4 *)(puVar6 + -3)" * (cast_expression "(undefined4 *)(puVar6 + -3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -3)" ( (binary_expression "puVar6 + -3" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(puVar11 + 2) = puVar11 + 6;" (assignment_expression "*(undefined4 **)(puVar11 + 2) = puVar11 + 6" (pointer_expression "*(undefined4 **)(puVar11 + 2)" * (cast_expression "(undefined4 **)(puVar11 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 2)" ( (binary_expression "puVar11 + 2" identifier + number_literal) )))) = (binary_expression "puVar11 + 6" identifier + number_literal)) ;) (if_statement "if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }" if (parenthesized_expression "((undefined8 *)puVar6[-2] == puVar6)" ( (binary_expression "(undefined8 *)puVar6[-2] == puVar6" (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }" { (expression_statement "uVar3 = puVar6[1];" (assignment_expression "uVar3 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined8 *)(puVar11 + 6) = *puVar6;" (assignment_expression "*(undefined8 *)(puVar11 + 6) = *puVar6" (pointer_expression "*(undefined8 *)(puVar11 + 6)" * (cast_expression "(undefined8 *)(puVar11 + 6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 6)" ( (binary_expression "puVar11 + 6" identifier + number_literal) )))) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "*(undefined8 *)(puVar11 + 8) = uVar3;" (assignment_expression "*(undefined8 *)(puVar11 + 8) = uVar3" (pointer_expression "*(undefined8 *)(puVar11 + 8)" * (cast_expression "(undefined8 *)(puVar11 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 8)" ( (binary_expression "puVar11 + 8" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }" else (compound_statement "{\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }" { (expression_statement "*(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];" (assignment_expression "*(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2]" (pointer_expression "*(undefined8 **)(puVar11 + 2)" * (cast_expression "(undefined8 **)(puVar11 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 2)" ( (binary_expression "puVar11 + 2" identifier + number_literal) )))) = (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined8 *)(puVar11 + 6) = *puVar6;" (assignment_expression "*(undefined8 *)(puVar11 + 6) = *puVar6" (pointer_expression "*(undefined8 *)(puVar11 + 6)" * (cast_expression "(undefined8 *)(puVar11 + 6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 6)" ( (binary_expression "puVar11 + 6" identifier + number_literal) )))) = (pointer_expression "*puVar6" * identifier)) ;) }))) (expression_statement "puVar8 = puVar11 + 10;" (assignment_expression "puVar8 = puVar11 + 10" identifier = (binary_expression "puVar11 + 10" identifier + number_literal)) ;) (expression_statement "*(undefined8 *)(puVar11 + 4) = puVar6[-1];" (assignment_expression "*(undefined8 *)(puVar11 + 4) = puVar6[-1]" (pointer_expression "*(undefined8 *)(puVar11 + 4)" * (cast_expression "(undefined8 *)(puVar11 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 4)" ( (binary_expression "puVar11 + 4" identifier + number_literal) )))) = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar6[-2] = puVar6;" (assignment_expression "puVar6[-2] = puVar6" (subscript_expression "puVar6[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[-1] = 0;" (assignment_expression "puVar6[-1] = 0" (subscript_expression "puVar6[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar6 = 0;" (assignment_expression "*(undefined1 *)puVar6 = 0" (pointer_expression "*(undefined1 *)puVar6" * (cast_expression "(undefined1 *)puVar6" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 5;" (assignment_expression "puVar6 = puVar6 + 5" identifier = (binary_expression "puVar6 + 5" identifier + number_literal)) ;) (expression_statement "puVar11 = puVar8;" (assignment_expression "puVar11 = puVar8" identifier = identifier) ;) }) while (parenthesized_expression "(puVar9 != puVar8)" ( (binary_expression "puVar9 != puVar8" identifier != identifier) )) ;) (expression_statement "puVar9 = puVar9 + 10;" (assignment_expression "puVar9 = puVar9 + 10" identifier = (binary_expression "puVar9 + 10" identifier + number_literal)) ;) })) (expression_statement "lVar4 = lVar2;" (assignment_expression "lVar4 = lVar2" identifier = identifier) ;) (if_statement "if (param_2 != lVar1) {\n    puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(param_2 + 0x18);\n    puVar8 = puVar9;\n    do {\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    } while (puVar7 != puVar11);\n  }" if (parenthesized_expression "(param_2 != lVar1)" ( (binary_expression "param_2 != lVar1" identifier != identifier) )) (compound_statement "{\n    puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(param_2 + 0x18);\n    puVar8 = puVar9;\n    do {\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    } while (puVar7 != puVar11);\n  }" { (expression_statement "puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)\n    ;" (assignment_expression "puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)" identifier = (cast_expression "(undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)" ( (binary_expression "(long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28" (binary_expression "(long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8)" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8)" ( (binary_expression "(lVar1 - param_2) - 0x28U & 0xfffffffffffffff8" (binary_expression "(lVar1 - param_2) - 0x28U" (parenthesized_expression "(lVar1 - param_2)" ( (binary_expression "lVar1 - param_2" identifier - identifier) )) - number_literal) & number_literal) ))) + number_literal) )))) ;) (expression_statement "puVar6 = (undefined8 *)(param_2 + 0x18);" (assignment_expression "puVar6 = (undefined8 *)(param_2 + 0x18)" identifier = (cast_expression "(undefined8 *)(param_2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) ;) (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" identifier = identifier) ;) (do_statement "do {\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    } while (puVar7 != puVar11);" do (compound_statement "{\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    }" { (expression_statement "*puVar8 = *(undefined4 *)(puVar6 + -3);" (assignment_expression "*puVar8 = *(undefined4 *)(puVar6 + -3)" (pointer_expression "*puVar8" * identifier) = (pointer_expression "*(undefined4 *)(puVar6 + -3)" * (cast_expression "(undefined4 *)(puVar6 + -3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -3)" ( (binary_expression "puVar6 + -3" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(puVar8 + 2) = puVar8 + 6;" (assignment_expression "*(undefined4 **)(puVar8 + 2) = puVar8 + 6" (pointer_expression "*(undefined4 **)(puVar8 + 2)" * (cast_expression "(undefined4 **)(puVar8 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 2)" ( (binary_expression "puVar8 + 2" identifier + number_literal) )))) = (binary_expression "puVar8 + 6" identifier + number_literal)) ;) (if_statement "if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }" if (parenthesized_expression "(puVar6 == (undefined8 *)puVar6[-2])" ( (binary_expression "puVar6 == (undefined8 *)puVar6[-2]" identifier == (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ]))) )) (compound_statement "{\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }" { (expression_statement "uVar3 = puVar6[1];" (assignment_expression "uVar3 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined8 *)(puVar8 + 6) = *puVar6;" (assignment_expression "*(undefined8 *)(puVar8 + 6) = *puVar6" (pointer_expression "*(undefined8 *)(puVar8 + 6)" * (cast_expression "(undefined8 *)(puVar8 + 6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 6)" ( (binary_expression "puVar8 + 6" identifier + number_literal) )))) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "*(undefined8 *)(puVar8 + 8) = uVar3;" (assignment_expression "*(undefined8 *)(puVar8 + 8) = uVar3" (pointer_expression "*(undefined8 *)(puVar8 + 8)" * (cast_expression "(undefined8 *)(puVar8 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 8)" ( (binary_expression "puVar8 + 8" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }" else (compound_statement "{\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }" { (expression_statement "*(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];" (assignment_expression "*(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2]" (pointer_expression "*(undefined8 **)(puVar8 + 2)" * (cast_expression "(undefined8 **)(puVar8 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 2)" ( (binary_expression "puVar8 + 2" identifier + number_literal) )))) = (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined8 *)(puVar8 + 6) = *puVar6;" (assignment_expression "*(undefined8 *)(puVar8 + 6) = *puVar6" (pointer_expression "*(undefined8 *)(puVar8 + 6)" * (cast_expression "(undefined8 *)(puVar8 + 6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 6)" ( (binary_expression "puVar8 + 6" identifier + number_literal) )))) = (pointer_expression "*puVar6" * identifier)) ;) }))) (expression_statement "uVar3 = puVar6[-1];" (assignment_expression "uVar3 = puVar6[-1]" identifier = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar7 = puVar8 + 10;" (assignment_expression "puVar7 = puVar8 + 10" identifier = (binary_expression "puVar8 + 10" identifier + number_literal)) ;) (expression_statement "puVar6[-2] = puVar6;" (assignment_expression "puVar6[-2] = puVar6" (subscript_expression "puVar6[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[-1] = 0;" (assignment_expression "puVar6[-1] = 0" (subscript_expression "puVar6[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined8 *)(puVar8 + 4) = uVar3;" (assignment_expression "*(undefined8 *)(puVar8 + 4) = uVar3" (pointer_expression "*(undefined8 *)(puVar8 + 4)" * (cast_expression "(undefined8 *)(puVar8 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 4)" ( (binary_expression "puVar8 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)puVar6 = 0;" (assignment_expression "*(undefined1 *)puVar6 = 0" (pointer_expression "*(undefined1 *)puVar6" * (cast_expression "(undefined1 *)puVar6" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 5;" (assignment_expression "puVar6 = puVar6 + 5" identifier = (binary_expression "puVar6 + 5" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar7;" (assignment_expression "puVar8 = puVar7" identifier = identifier) ;) (expression_statement "puVar9 = puVar11;" (assignment_expression "puVar9 = puVar11" identifier = identifier) ;) }) while (parenthesized_expression "(puVar7 != puVar11)" ( (binary_expression "puVar7 != puVar11" identifier != identifier) )) ;) })) (for_statement "for (; lVar4 != lVar1; lVar4 = lVar4 + 0x28) {\n    if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {\n      FUN_00276d20();\n    }\n  }" for ( ; (binary_expression "lVar4 != lVar1" identifier != identifier) ; (assignment_expression "lVar4 = lVar4 + 0x28" identifier = (binary_expression "lVar4 + 0x28" identifier + number_literal)) ) (compound_statement "{\n    if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {\n      FUN_00276d20();\n    }\n  }" { (if_statement "if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {\n      FUN_00276d20();\n    }" if (parenthesized_expression "(*(long *)(lVar4 + 8) != lVar4 + 0x18)" ( (binary_expression "*(long *)(lVar4 + 8) != lVar4 + 0x18" (pointer_expression "*(long *)(lVar4 + 8)" * (cast_expression "(long *)(lVar4 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) )))) != (binary_expression "lVar4 + 0x18" identifier + number_literal)) )) (compound_statement "{\n      FUN_00276d20();\n    }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) })) (if_statement "if (lVar2 != 0) {\n    FUN_00276d20(lVar2);\n  }" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_00276d20(lVar2);\n  }" { (expression_statement "FUN_00276d20(lVar2);" (call_expression "FUN_00276d20(lVar2)" identifier (argument_list "(lVar2)" ( identifier ))) ;) })) (expression_statement "*param_1 = (long)puVar5;" (assignment_expression "*param_1 = (long)puVar5" (pointer_expression "*param_1" * identifier) = (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "param_1[1] = (long)puVar9;" (assignment_expression "param_1[1] = (long)puVar9" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(long)puVar9" ( (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 IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) )))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 = (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (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 * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (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 = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression 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 * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (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 * 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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_00165380(long *param_1,long param_2,undefined4 *param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long lVar4;\n  undefined4 *puVar5;\n  undefined8 *puVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  ulong uVar10;\n  undefined4 *puVar11;\n  long local_48;\n  \n  lVar1 = param_1[1];\n  lVar2 = *param_1;\n  lVar4 = lVar1 - lVar2 >> 3;\n  if (lVar4 * -0x3333333333333333 == 0) {\n    uVar10 = 1;\nLAB_001655d5:\n    local_48 = uVar10 * 0x28;\n  }\n  else {\n    uVar10 = lVar4 * -0x6666666666666666;\n    local_48 = -0x10;\n    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }\n  puVar5 = (undefined4 *)FUN_00275550(local_48);\n  local_48 = (long)puVar5 + local_48;\n  puVar9 = puVar5 + 10;\nLAB_00165403:\n  puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2));\n  puVar8 = *(undefined4 **)(param_3 + 2);\n  *puVar11 = *param_3;\n  *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n  if (puVar8 == param_3 + 6) {\n    uVar3 = *(undefined8 *)(param_3 + 8);\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n    *(undefined8 *)(puVar11 + 8) = uVar3;\n  }\n  else {\n    *(undefined4 **)(puVar11 + 2) = puVar8;\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n  }\n  uVar3 = *(undefined8 *)(param_3 + 4);\n  *(undefined4 **)(param_3 + 2) = param_3 + 6;\n  *(undefined8 *)(param_3 + 4) = 0;\n  *(undefined8 *)(puVar11 + 4) = uVar3;\n  *(undefined1 *)(param_3 + 6) = 0;\n  if (param_2 != lVar2) {\n    puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(lVar2 + 0x18);\n    puVar11 = puVar5;\n    do {\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    } while (puVar9 != puVar8);\n    puVar9 = puVar9 + 10;\n  }\n  lVar4 = lVar2;\n  if (param_2 != lVar1) {\n    puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(param_2 + 0x18);\n    puVar8 = puVar9;\n    do {\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    } while (puVar7 != puVar11);\n  }\n  for (; lVar4 != lVar1; lVar4 = lVar4 + 0x28) {\n    if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {\n      FUN_00276d20();\n    }\n  }\n  if (lVar2 != 0) {\n    FUN_00276d20(lVar2);\n  }\n  *param_1 = (long)puVar5;\n  param_1[1] = (long)puVar9;\n  param_1[2] = local_48;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00165380(long *param_1,long param_2,undefined4 *param_3)" (identifier "FUN_00165380") (parameter_list "(long *param_1,long param_2,undefined4 *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 "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long lVar4;\n  undefined4 *puVar5;\n  undefined8 *puVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  ulong uVar10;\n  undefined4 *puVar11;\n  long local_48;\n  \n  lVar1 = param_1[1];\n  lVar2 = *param_1;\n  lVar4 = lVar1 - lVar2 >> 3;\n  if (lVar4 * -0x3333333333333333 == 0) {\n    uVar10 = 1;\nLAB_001655d5:\n    local_48 = uVar10 * 0x28;\n  }\n  else {\n    uVar10 = lVar4 * -0x6666666666666666;\n    local_48 = -0x10;\n    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }\n  puVar5 = (undefined4 *)FUN_00275550(local_48);\n  local_48 = (long)puVar5 + local_48;\n  puVar9 = puVar5 + 10;\nLAB_00165403:\n  puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2));\n  puVar8 = *(undefined4 **)(param_3 + 2);\n  *puVar11 = *param_3;\n  *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n  if (puVar8 == param_3 + 6) {\n    uVar3 = *(undefined8 *)(param_3 + 8);\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n    *(undefined8 *)(puVar11 + 8) = uVar3;\n  }\n  else {\n    *(undefined4 **)(puVar11 + 2) = puVar8;\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n  }\n  uVar3 = *(undefined8 *)(param_3 + 4);\n  *(undefined4 **)(param_3 + 2) = param_3 + 6;\n  *(undefined8 *)(param_3 + 4) = 0;\n  *(undefined8 *)(puVar11 + 4) = uVar3;\n  *(undefined1 *)(param_3 + 6) = 0;\n  if (param_2 != lVar2) {\n    puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(lVar2 + 0x18);\n    puVar11 = puVar5;\n    do {\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    } while (puVar9 != puVar8);\n    puVar9 = puVar9 + 10;\n  }\n  lVar4 = lVar2;\n  if (param_2 != lVar1) {\n    puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(param_2 + 0x18);\n    puVar8 = puVar9;\n    do {\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    } while (puVar7 != puVar11);\n  }\n  for (; lVar4 != lVar1; lVar4 = lVar4 + 0x28) {\n    if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {\n      FUN_00276d20();\n    }\n  }\n  if (lVar2 != 0) {\n    FUN_00276d20(lVar2);\n  }\n  *param_1 = (long)puVar5;\n  param_1[1] = (long)puVar9;\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 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined8 *puVar6;" (type_identifier "undefined8") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined4 *puVar9;" (type_identifier "undefined4") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "undefined4 *puVar11;" (type_identifier "undefined4") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (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 "lVar4 = lVar1 - lVar2 >> 3;" (assignment_expression "lVar4 = lVar1 - lVar2 >> 3" (identifier "lVar4") (= "=") (binary_expression "lVar1 - lVar2 >> 3" (binary_expression "lVar1 - lVar2" (identifier "lVar1") (- "-") (identifier "lVar2")) (>> ">>") (number_literal "3"))) (; ";")) (if_statement "if (lVar4 * -0x3333333333333333 == 0) {\n    uVar10 = 1;\nLAB_001655d5:\n    local_48 = uVar10 * 0x28;\n  }\n  else {\n    uVar10 = lVar4 * -0x6666666666666666;\n    local_48 = -0x10;\n    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }" (if "if") (parenthesized_expression "(lVar4 * -0x3333333333333333 == 0)" (( "(") (binary_expression "lVar4 * -0x3333333333333333 == 0" (binary_expression "lVar4 * -0x3333333333333333" (identifier "lVar4") (* "*") (number_literal "-0x3333333333333333")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar10 = 1;\nLAB_001655d5:\n    local_48 = uVar10 * 0x28;\n  }" ({ "{") (expression_statement "uVar10 = 1;" (assignment_expression "uVar10 = 1" (identifier "uVar10") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_001655d5:\n    local_48 = uVar10 * 0x28;" (statement_identifier "LAB_001655d5") (: ":") (expression_statement "local_48 = uVar10 * 0x28;" (assignment_expression "local_48 = uVar10 * 0x28" (identifier "local_48") (= "=") (binary_expression "uVar10 * 0x28" (identifier "uVar10") (* "*") (number_literal "0x28"))) (; ";"))) (} "}")) (else_clause "else {\n    uVar10 = lVar4 * -0x6666666666666666;\n    local_48 = -0x10;\n    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }" (else "else") (compound_statement "{\n    uVar10 = lVar4 * -0x6666666666666666;\n    local_48 = -0x10;\n    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }\n  }" ({ "{") (expression_statement "uVar10 = lVar4 * -0x6666666666666666;" (assignment_expression "uVar10 = lVar4 * -0x6666666666666666" (identifier "uVar10") (= "=") (binary_expression "lVar4 * -0x6666666666666666" (identifier "lVar4") (* "*") (number_literal "-0x6666666666666666"))) (; ";")) (expression_statement "local_48 = -0x10;" (assignment_expression "local_48 = -0x10" (identifier "local_48") (= "=") (number_literal "-0x10")) (; ";")) (if_statement "if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)) {\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }" (if "if") (parenthesized_expression "(((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667))" (( "(") (binary_expression "((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&\n       (uVar10 < 0x666666666666667)" (parenthesized_expression "((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0)" (( "(") (binary_expression "(ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0" (binary_expression "(ulong)(lVar4 * -0x3333333333333333) < uVar10" (call_expression "(ulong)(lVar4 * -0x3333333333333333)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(lVar4 * -0x3333333333333333)" (( "(") (binary_expression "lVar4 * -0x3333333333333333" (identifier "lVar4") (* "*") (number_literal "-0x3333333333333333")) () ")"))) (< "<") (identifier "uVar10")) (|| "||") (binary_expression "lVar4 * 0x3333333333333333 == 0" (binary_expression "lVar4 * 0x3333333333333333" (identifier "lVar4") (* "*") (number_literal "0x3333333333333333")) (== "==") (number_literal "0"))) () ")")) (&& "&&") (parenthesized_expression "(uVar10 < 0x666666666666667)" (( "(") (binary_expression "uVar10 < 0x666666666666667" (identifier "uVar10") (< "<") (number_literal "0x666666666666667")) () ")"))) () ")")) (compound_statement "{\n      if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }\n      goto LAB_001655d5;\n    }" ({ "{") (if_statement "if (uVar10 == 0) {\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }" (if "if") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        puVar9 = (undefined4 *)0x28;\n        local_48 = 0;\n        puVar5 = (undefined4 *)0x0;\n        goto LAB_00165403;\n      }" ({ "{") (expression_statement "puVar9 = (undefined4 *)0x28;" (assignment_expression "puVar9 = (undefined4 *)0x28" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)0x28" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x28"))) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5 = (undefined4 *)0x0;" (assignment_expression "puVar5 = (undefined4 *)0x0" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_00165403;" (goto "goto") (statement_identifier "LAB_00165403") (; ";")) (} "}"))) (goto_statement "goto LAB_001655d5;" (goto "goto") (statement_identifier "LAB_001655d5") (; ";")) (} "}"))) (} "}")))) (expression_statement "puVar5 = (undefined4 *)FUN_00275550(local_48);" (assignment_expression "puVar5 = (undefined4 *)FUN_00275550(local_48)" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)FUN_00275550(local_48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(local_48)" (identifier "FUN_00275550") (argument_list "(local_48)" (( "(") (identifier "local_48") () ")"))))) (; ";")) (expression_statement "local_48 = (long)puVar5 + local_48;" (assignment_expression "local_48 = (long)puVar5 + local_48" (identifier "local_48") (= "=") (binary_expression "(long)puVar5 + local_48" (cast_expression "(long)puVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar5")) (+ "+") (identifier "local_48"))) (; ";")) (expression_statement "puVar9 = puVar5 + 10;" (assignment_expression "puVar9 = puVar5 + 10" (identifier "puVar9") (= "=") (binary_expression "puVar5 + 10" (identifier "puVar5") (+ "+") (number_literal "10"))) (; ";")) (labeled_statement "LAB_00165403:\n  puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2));" (statement_identifier "LAB_00165403") (: ":") (expression_statement "puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2));" (assignment_expression "puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2))" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)((long)puVar5 + (param_2 - lVar2))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar5 + (param_2 - lVar2))" (( "(") (binary_expression "(long)puVar5 + (param_2 - lVar2)" (cast_expression "(long)puVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar5")) (+ "+") (parenthesized_expression "(param_2 - lVar2)" (( "(") (binary_expression "param_2 - lVar2" (identifier "param_2") (- "-") (identifier "lVar2")) () ")"))) () ")")))) (; ";"))) (expression_statement "puVar8 = *(undefined4 **)(param_3 + 2);" (assignment_expression "puVar8 = *(undefined4 **)(param_3 + 2)" (identifier "puVar8") (= "=") (pointer_expression "*(undefined4 **)(param_3 + 2)" (* "*") (cast_expression "(undefined4 **)(param_3 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 2)" (( "(") (binary_expression "param_3 + 2" (identifier "param_3") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*puVar11 = *param_3;" (assignment_expression "*puVar11 = *param_3" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "*(undefined4 **)(puVar11 + 2) = puVar11 + 6;" (assignment_expression "*(undefined4 **)(puVar11 + 2) = puVar11 + 6" (pointer_expression "*(undefined4 **)(puVar11 + 2)" (* "*") (cast_expression "(undefined4 **)(puVar11 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 2)" (( "(") (binary_expression "puVar11 + 2" (identifier "puVar11") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar11 + 6" (identifier "puVar11") (+ "+") (number_literal "6"))) (; ";")) (if_statement "if (puVar8 == param_3 + 6) {\n    uVar3 = *(undefined8 *)(param_3 + 8);\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n    *(undefined8 *)(puVar11 + 8) = uVar3;\n  }\n  else {\n    *(undefined4 **)(puVar11 + 2) = puVar8;\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n  }" (if "if") (parenthesized_expression "(puVar8 == param_3 + 6)" (( "(") (binary_expression "puVar8 == param_3 + 6" (identifier "puVar8") (== "==") (binary_expression "param_3 + 6" (identifier "param_3") (+ "+") (number_literal "6"))) () ")")) (compound_statement "{\n    uVar3 = *(undefined8 *)(param_3 + 8);\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n    *(undefined8 *)(puVar11 + 8) = uVar3;\n  }" ({ "{") (expression_statement "uVar3 = *(undefined8 *)(param_3 + 8);" (assignment_expression "uVar3 = *(undefined8 *)(param_3 + 8)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)(param_3 + 8)" (* "*") (cast_expression "(undefined8 *)(param_3 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 8)" (( "(") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);" (assignment_expression "*(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6)" (pointer_expression "*(undefined8 *)(puVar11 + 6)" (* "*") (cast_expression "(undefined8 *)(puVar11 + 6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 6)" (( "(") (binary_expression "puVar11 + 6" (identifier "puVar11") (+ "+") (number_literal "6")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(param_3 + 6)" (* "*") (cast_expression "(undefined8 *)(param_3 + 6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 6)" (( "(") (binary_expression "param_3 + 6" (identifier "param_3") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(puVar11 + 8) = uVar3;" (assignment_expression "*(undefined8 *)(puVar11 + 8) = uVar3" (pointer_expression "*(undefined8 *)(puVar11 + 8)" (* "*") (cast_expression "(undefined8 *)(puVar11 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 8)" (( "(") (binary_expression "puVar11 + 8" (identifier "puVar11") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (} "}")) (else_clause "else {\n    *(undefined4 **)(puVar11 + 2) = puVar8;\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n  }" (else "else") (compound_statement "{\n    *(undefined4 **)(puVar11 + 2) = puVar8;\n    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);\n  }" ({ "{") (expression_statement "*(undefined4 **)(puVar11 + 2) = puVar8;" (assignment_expression "*(undefined4 **)(puVar11 + 2) = puVar8" (pointer_expression "*(undefined4 **)(puVar11 + 2)" (* "*") (cast_expression "(undefined4 **)(puVar11 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 2)" (( "(") (binary_expression "puVar11 + 2" (identifier "puVar11") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "puVar8")) (; ";")) (expression_statement "*(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);" (assignment_expression "*(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6)" (pointer_expression "*(undefined8 *)(puVar11 + 6)" (* "*") (cast_expression "(undefined8 *)(puVar11 + 6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 6)" (( "(") (binary_expression "puVar11 + 6" (identifier "puVar11") (+ "+") (number_literal "6")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(param_3 + 6)" (* "*") (cast_expression "(undefined8 *)(param_3 + 6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 6)" (( "(") (binary_expression "param_3 + 6" (identifier "param_3") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (} "}")))) (expression_statement "uVar3 = *(undefined8 *)(param_3 + 4);" (assignment_expression "uVar3 = *(undefined8 *)(param_3 + 4)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)(param_3 + 4)" (* "*") (cast_expression "(undefined8 *)(param_3 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(param_3 + 2) = param_3 + 6;" (assignment_expression "*(undefined4 **)(param_3 + 2) = param_3 + 6" (pointer_expression "*(undefined4 **)(param_3 + 2)" (* "*") (cast_expression "(undefined4 **)(param_3 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 2)" (( "(") (binary_expression "param_3 + 2" (identifier "param_3") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "param_3 + 6" (identifier "param_3") (+ "+") (number_literal "6"))) (; ";")) (expression_statement "*(undefined8 *)(param_3 + 4) = 0;" (assignment_expression "*(undefined8 *)(param_3 + 4) = 0" (pointer_expression "*(undefined8 *)(param_3 + 4)" (* "*") (cast_expression "(undefined8 *)(param_3 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined8 *)(puVar11 + 4) = uVar3;" (assignment_expression "*(undefined8 *)(puVar11 + 4) = uVar3" (pointer_expression "*(undefined8 *)(puVar11 + 4)" (* "*") (cast_expression "(undefined8 *)(puVar11 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 4)" (( "(") (binary_expression "puVar11 + 4" (identifier "puVar11") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*(undefined1 *)(param_3 + 6) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 6) = 0" (pointer_expression "*(undefined1 *)(param_3 + 6)" (* "*") (cast_expression "(undefined1 *)(param_3 + 6)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 6)" (( "(") (binary_expression "param_3 + 6" (identifier "param_3") (+ "+") (number_literal "6")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_2 != lVar2) {\n    puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(lVar2 + 0x18);\n    puVar11 = puVar5;\n    do {\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    } while (puVar9 != puVar8);\n    puVar9 = puVar9 + 10;\n  }" (if "if") (parenthesized_expression "(param_2 != lVar2)" (( "(") (binary_expression "param_2 != lVar2" (identifier "param_2") (!= "!=") (identifier "lVar2")) () ")")) (compound_statement "{\n    puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(lVar2 + 0x18);\n    puVar11 = puVar5;\n    do {\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    } while (puVar9 != puVar8);\n    puVar9 = puVar9 + 10;\n  }" ({ "{") (expression_statement "puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)\n    ;" (assignment_expression "puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)" (( "(") (binary_expression "(long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28" (binary_expression "(long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U)" (cast_expression "(long)puVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar5")) (+ "+") (parenthesized_expression "((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U)" (( "(") (binary_expression "(param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U" (binary_expression "(param_2 + -0x28) - lVar2" (parenthesized_expression "(param_2 + -0x28)" (( "(") (binary_expression "param_2 + -0x28" (identifier "param_2") (+ "+") (number_literal "-0x28")) () ")")) (- "-") (identifier "lVar2")) (& "&") (number_literal "0xfffffffffffffff8U")) () ")"))) (+ "+") (number_literal "0x28")) () ")")))) (; ";")) (expression_statement "puVar6 = (undefined8 *)(lVar2 + 0x18);" (assignment_expression "puVar6 = (undefined8 *)(lVar2 + 0x18)" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)(lVar2 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x18)" (( "(") (binary_expression "lVar2 + 0x18" (identifier "lVar2") (+ "+") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "puVar11 = puVar5;" (assignment_expression "puVar11 = puVar5" (identifier "puVar11") (= "=") (identifier "puVar5")) (; ";")) (do_statement "do {\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    } while (puVar9 != puVar8);" (do "do") (compound_statement "{\n      *puVar11 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }\n      puVar8 = puVar11 + 10;\n      *(undefined8 *)(puVar11 + 4) = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar11 = puVar8;\n    }" ({ "{") (expression_statement "*puVar11 = *(undefined4 *)(puVar6 + -3);" (assignment_expression "*puVar11 = *(undefined4 *)(puVar6 + -3)" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (pointer_expression "*(undefined4 *)(puVar6 + -3)" (* "*") (cast_expression "(undefined4 *)(puVar6 + -3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + -3)" (( "(") (binary_expression "puVar6 + -3" (identifier "puVar6") (+ "+") (number_literal "-3")) () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(puVar11 + 2) = puVar11 + 6;" (assignment_expression "*(undefined4 **)(puVar11 + 2) = puVar11 + 6" (pointer_expression "*(undefined4 **)(puVar11 + 2)" (* "*") (cast_expression "(undefined4 **)(puVar11 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 2)" (( "(") (binary_expression "puVar11 + 2" (identifier "puVar11") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar11 + 6" (identifier "puVar11") (+ "+") (number_literal "6"))) (; ";")) (if_statement "if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }" (if "if") (parenthesized_expression "((undefined8 *)puVar6[-2] == puVar6)" (( "(") (binary_expression "(undefined8 *)puVar6[-2] == puVar6" (cast_expression "(undefined8 *)puVar6[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]"))) (== "==") (identifier "puVar6")) () ")")) (compound_statement "{\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n        *(undefined8 *)(puVar11 + 8) = uVar3;\n      }" ({ "{") (expression_statement "uVar3 = puVar6[1];" (assignment_expression "uVar3 = puVar6[1]" (identifier "uVar3") (= "=") (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(undefined8 *)(puVar11 + 6) = *puVar6;" (assignment_expression "*(undefined8 *)(puVar11 + 6) = *puVar6" (pointer_expression "*(undefined8 *)(puVar11 + 6)" (* "*") (cast_expression "(undefined8 *)(puVar11 + 6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 6)" (( "(") (binary_expression "puVar11 + 6" (identifier "puVar11") (+ "+") (number_literal "6")) () ")")))) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "*(undefined8 *)(puVar11 + 8) = uVar3;" (assignment_expression "*(undefined8 *)(puVar11 + 8) = uVar3" (pointer_expression "*(undefined8 *)(puVar11 + 8)" (* "*") (cast_expression "(undefined8 *)(puVar11 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 8)" (( "(") (binary_expression "puVar11 + 8" (identifier "puVar11") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (} "}")) (else_clause "else {\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }" (else "else") (compound_statement "{\n        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar11 + 6) = *puVar6;\n      }" ({ "{") (expression_statement "*(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];" (assignment_expression "*(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2]" (pointer_expression "*(undefined8 **)(puVar11 + 2)" (* "*") (cast_expression "(undefined8 **)(puVar11 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 2)" (( "(") (binary_expression "puVar11 + 2" (identifier "puVar11") (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(undefined8 *)puVar6[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "*(undefined8 *)(puVar11 + 6) = *puVar6;" (assignment_expression "*(undefined8 *)(puVar11 + 6) = *puVar6" (pointer_expression "*(undefined8 *)(puVar11 + 6)" (* "*") (cast_expression "(undefined8 *)(puVar11 + 6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 6)" (( "(") (binary_expression "puVar11 + 6" (identifier "puVar11") (+ "+") (number_literal "6")) () ")")))) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (} "}")))) (expression_statement "puVar8 = puVar11 + 10;" (assignment_expression "puVar8 = puVar11 + 10" (identifier "puVar8") (= "=") (binary_expression "puVar11 + 10" (identifier "puVar11") (+ "+") (number_literal "10"))) (; ";")) (expression_statement "*(undefined8 *)(puVar11 + 4) = puVar6[-1];" (assignment_expression "*(undefined8 *)(puVar11 + 4) = puVar6[-1]" (pointer_expression "*(undefined8 *)(puVar11 + 4)" (* "*") (cast_expression "(undefined8 *)(puVar11 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 4)" (( "(") (binary_expression "puVar11 + 4" (identifier "puVar11") (+ "+") (number_literal "4")) () ")")))) (= "=") (subscript_expression "puVar6[-1]" (identifier "puVar6") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar6[-2] = puVar6;" (assignment_expression "puVar6[-2] = puVar6" (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar6")) (; ";")) (expression_statement "puVar6[-1] = 0;" (assignment_expression "puVar6[-1] = 0" (subscript_expression "puVar6[-1]" (identifier "puVar6") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)puVar6 = 0;" (assignment_expression "*(undefined1 *)puVar6 = 0" (pointer_expression "*(undefined1 *)puVar6" (* "*") (cast_expression "(undefined1 *)puVar6" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar6"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6 = puVar6 + 5;" (assignment_expression "puVar6 = puVar6 + 5" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 5" (identifier "puVar6") (+ "+") (number_literal "5"))) (; ";")) (expression_statement "puVar11 = puVar8;" (assignment_expression "puVar11 = puVar8" (identifier "puVar11") (= "=") (identifier "puVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar9 != puVar8)" (( "(") (binary_expression "puVar9 != puVar8" (identifier "puVar9") (!= "!=") (identifier "puVar8")) () ")")) (; ";")) (expression_statement "puVar9 = puVar9 + 10;" (assignment_expression "puVar9 = puVar9 + 10" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 10" (identifier "puVar9") (+ "+") (number_literal "10"))) (; ";")) (} "}"))) (expression_statement "lVar4 = lVar2;" (assignment_expression "lVar4 = lVar2" (identifier "lVar4") (= "=") (identifier "lVar2")) (; ";")) (if_statement "if (param_2 != lVar1) {\n    puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(param_2 + 0x18);\n    puVar8 = puVar9;\n    do {\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    } while (puVar7 != puVar11);\n  }" (if "if") (parenthesized_expression "(param_2 != lVar1)" (( "(") (binary_expression "param_2 != lVar1" (identifier "param_2") (!= "!=") (identifier "lVar1")) () ")")) (compound_statement "{\n    puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)\n    ;\n    puVar6 = (undefined8 *)(param_2 + 0x18);\n    puVar8 = puVar9;\n    do {\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    } while (puVar7 != puVar11);\n  }" ({ "{") (expression_statement "puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)\n    ;" (assignment_expression "puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)" (( "(") (binary_expression "(long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28" (binary_expression "(long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8)" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (parenthesized_expression "((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8)" (( "(") (binary_expression "(lVar1 - param_2) - 0x28U & 0xfffffffffffffff8" (binary_expression "(lVar1 - param_2) - 0x28U" (parenthesized_expression "(lVar1 - param_2)" (( "(") (binary_expression "lVar1 - param_2" (identifier "lVar1") (- "-") (identifier "param_2")) () ")")) (- "-") (number_literal "0x28U")) (& "&") (number_literal "0xfffffffffffffff8")) () ")"))) (+ "+") (number_literal "0x28")) () ")")))) (; ";")) (expression_statement "puVar6 = (undefined8 *)(param_2 + 0x18);" (assignment_expression "puVar6 = (undefined8 *)(param_2 + 0x18)" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)(param_2 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" (identifier "puVar8") (= "=") (identifier "puVar9")) (; ";")) (do_statement "do {\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    } while (puVar7 != puVar11);" (do "do") (compound_statement "{\n      *puVar8 = *(undefined4 *)(puVar6 + -3);\n      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;\n      if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }\n      uVar3 = puVar6[-1];\n      puVar7 = puVar8 + 10;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined8 *)(puVar8 + 4) = uVar3;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 5;\n      puVar8 = puVar7;\n      puVar9 = puVar11;\n    }" ({ "{") (expression_statement "*puVar8 = *(undefined4 *)(puVar6 + -3);" (assignment_expression "*puVar8 = *(undefined4 *)(puVar6 + -3)" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (pointer_expression "*(undefined4 *)(puVar6 + -3)" (* "*") (cast_expression "(undefined4 *)(puVar6 + -3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + -3)" (( "(") (binary_expression "puVar6 + -3" (identifier "puVar6") (+ "+") (number_literal "-3")) () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(puVar8 + 2) = puVar8 + 6;" (assignment_expression "*(undefined4 **)(puVar8 + 2) = puVar8 + 6" (pointer_expression "*(undefined4 **)(puVar8 + 2)" (* "*") (cast_expression "(undefined4 **)(puVar8 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar8 + 2)" (( "(") (binary_expression "puVar8 + 2" (identifier "puVar8") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar8 + 6" (identifier "puVar8") (+ "+") (number_literal "6"))) (; ";")) (if_statement "if (puVar6 == (undefined8 *)puVar6[-2]) {\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }\n      else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }" (if "if") (parenthesized_expression "(puVar6 == (undefined8 *)puVar6[-2])" (( "(") (binary_expression "puVar6 == (undefined8 *)puVar6[-2]" (identifier "puVar6") (== "==") (cast_expression "(undefined8 *)puVar6[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]")))) () ")")) (compound_statement "{\n        uVar3 = puVar6[1];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n        *(undefined8 *)(puVar8 + 8) = uVar3;\n      }" ({ "{") (expression_statement "uVar3 = puVar6[1];" (assignment_expression "uVar3 = puVar6[1]" (identifier "uVar3") (= "=") (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(undefined8 *)(puVar8 + 6) = *puVar6;" (assignment_expression "*(undefined8 *)(puVar8 + 6) = *puVar6" (pointer_expression "*(undefined8 *)(puVar8 + 6)" (* "*") (cast_expression "(undefined8 *)(puVar8 + 6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 6)" (( "(") (binary_expression "puVar8 + 6" (identifier "puVar8") (+ "+") (number_literal "6")) () ")")))) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "*(undefined8 *)(puVar8 + 8) = uVar3;" (assignment_expression "*(undefined8 *)(puVar8 + 8) = uVar3" (pointer_expression "*(undefined8 *)(puVar8 + 8)" (* "*") (cast_expression "(undefined8 *)(puVar8 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 8)" (( "(") (binary_expression "puVar8 + 8" (identifier "puVar8") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (} "}")) (else_clause "else {\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }" (else "else") (compound_statement "{\n        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];\n        *(undefined8 *)(puVar8 + 6) = *puVar6;\n      }" ({ "{") (expression_statement "*(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];" (assignment_expression "*(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2]" (pointer_expression "*(undefined8 **)(puVar8 + 2)" (* "*") (cast_expression "(undefined8 **)(puVar8 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar8 + 2)" (( "(") (binary_expression "puVar8 + 2" (identifier "puVar8") (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(undefined8 *)puVar6[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "*(undefined8 *)(puVar8 + 6) = *puVar6;" (assignment_expression "*(undefined8 *)(puVar8 + 6) = *puVar6" (pointer_expression "*(undefined8 *)(puVar8 + 6)" (* "*") (cast_expression "(undefined8 *)(puVar8 + 6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 6)" (( "(") (binary_expression "puVar8 + 6" (identifier "puVar8") (+ "+") (number_literal "6")) () ")")))) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (} "}")))) (expression_statement "uVar3 = puVar6[-1];" (assignment_expression "uVar3 = puVar6[-1]" (identifier "uVar3") (= "=") (subscript_expression "puVar6[-1]" (identifier "puVar6") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar7 = puVar8 + 10;" (assignment_expression "puVar7 = puVar8 + 10" (identifier "puVar7") (= "=") (binary_expression "puVar8 + 10" (identifier "puVar8") (+ "+") (number_literal "10"))) (; ";")) (expression_statement "puVar6[-2] = puVar6;" (assignment_expression "puVar6[-2] = puVar6" (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar6")) (; ";")) (expression_statement "puVar6[-1] = 0;" (assignment_expression "puVar6[-1] = 0" (subscript_expression "puVar6[-1]" (identifier "puVar6") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined8 *)(puVar8 + 4) = uVar3;" (assignment_expression "*(undefined8 *)(puVar8 + 4) = uVar3" (pointer_expression "*(undefined8 *)(puVar8 + 4)" (* "*") (cast_expression "(undefined8 *)(puVar8 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 4)" (( "(") (binary_expression "puVar8 + 4" (identifier "puVar8") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*(undefined1 *)puVar6 = 0;" (assignment_expression "*(undefined1 *)puVar6 = 0" (pointer_expression "*(undefined1 *)puVar6" (* "*") (cast_expression "(undefined1 *)puVar6" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar6"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6 = puVar6 + 5;" (assignment_expression "puVar6 = puVar6 + 5" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 5" (identifier "puVar6") (+ "+") (number_literal "5"))) (; ";")) (expression_statement "puVar8 = puVar7;" (assignment_expression "puVar8 = puVar7" (identifier "puVar8") (= "=") (identifier "puVar7")) (; ";")) (expression_statement "puVar9 = puVar11;" (assignment_expression "puVar9 = puVar11" (identifier "puVar9") (= "=") (identifier "puVar11")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar7 != puVar11)" (( "(") (binary_expression "puVar7 != puVar11" (identifier "puVar7") (!= "!=") (identifier "puVar11")) () ")")) (; ";")) (} "}"))) (for_statement "for (; lVar4 != lVar1; lVar4 = lVar4 + 0x28) {\n    if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {\n      FUN_00276d20();\n    }\n  }" (for "for") (( "(") (; ";") (binary_expression "lVar4 != lVar1" (identifier "lVar4") (!= "!=") (identifier "lVar1")) (; ";") (assignment_expression "lVar4 = lVar4 + 0x28" (identifier "lVar4") (= "=") (binary_expression "lVar4 + 0x28" (identifier "lVar4") (+ "+") (number_literal "0x28"))) () ")") (compound_statement "{\n    if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {\n      FUN_00276d20();\n    }\n  }" ({ "{") (if_statement "if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {\n      FUN_00276d20();\n    }" (if "if") (parenthesized_expression "(*(long *)(lVar4 + 8) != lVar4 + 0x18)" (( "(") (binary_expression "*(long *)(lVar4 + 8) != lVar4 + 0x18" (pointer_expression "*(long *)(lVar4 + 8)" (* "*") (cast_expression "(long *)(lVar4 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 8)" (( "(") (binary_expression "lVar4 + 8" (identifier "lVar4") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18"))) () ")")) (compound_statement "{\n      FUN_00276d20();\n    }" ({ "{") (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" (identifier "FUN_00276d20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (lVar2 != 0) {\n    FUN_00276d20(lVar2);\n  }" (if "if") (parenthesized_expression "(lVar2 != 0)" (( "(") (binary_expression "lVar2 != 0" (identifier "lVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_00276d20(lVar2);\n  }" ({ "{") (expression_statement "FUN_00276d20(lVar2);" (call_expression "FUN_00276d20(lVar2)" (identifier "FUN_00276d20") (argument_list "(lVar2)" (( "(") (identifier "lVar2") () ")"))) (; ";")) (} "}"))) (expression_statement "*param_1 = (long)puVar5;" (assignment_expression "*param_1 = (long)puVar5" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(long)puVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar5"))) (; ";")) (expression_statement "param_1[1] = (long)puVar9;" (assignment_expression "param_1[1] = (long)puVar9" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9"))) (; ";")) (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") (; ";")) (} "}")))

/* DWARF original name: _M_realloc_insert<std::pair<int, std::__cxx11::basic_string<char,
   std::char_traits<char>, std::allocator<char> > > >
   DWARF original prototype: void
   _M_realloc_insert<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>(vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>
   * this, iterator __position,
   pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_> *
   __args#0) */

void __thiscall
std::
vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::var_1<char>var_3>var_3>,_std::var_1<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::var_1<char>var_3>var_3>var_3>var_3>
::
_M_realloc_insert<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::var_1<char>var_3>var_3>var_3>
          (vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::var_1<char>var_3>var_3>,_std::var_1<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::var_1<char>var_3>var_3>var_3>var_3>
           *this,iterator __position,
          pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::var_1<char>var_3>var_3>
          *__args_0)

{
  int *var_12;
  pair<int,_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>
  *var_18;
  pair<int,_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>
  *var_14;
  type_1 var_13;
  type_2 sVar5;
  type_3 uVar6;
  pair<int,_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>
  *var_20;
  long var_7;
  type_1 var_11;
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
  *var_5;
  type_1 var_19;
  type_1 var_17;
  type_1 var_16;
  type_4 var_8;
  type_1 var_15;
  type_4 var_10;
  type_1 local_48;
  
  var_18 = (this->
           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>,_std::var_1<std::pair<int,_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_3>var_6
           )._M_impl._M_finish;
  var_14 = (this->
           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>,_std::var_1<std::pair<int,_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_3>var_6
           )._M_impl._M_start;
  var_7 = (long)var_18 - (long)var_14 >> 3;
  if (var_7 * -0x3333333333333333 == 0) {
    var_8 = 1;
LAB_001655d5:
    var_10 = var_8 * 0x28;
  }
  else {
    var_8 = var_7 * -0x6666666666666666;
    var_10 = 0xfffffffffffffff0;
    if (((type_4)(var_7 * -0x3333333333333333) < var_8 || var_7 * 0x3333333333333333 == 0) &&
       (var_8 < 0x666666666666667)) {
      if (var_8 == 0) {
        var_16 = (type_1)0x28;
        local_48 = (type_1)0x0;
        var_11 = (type_1)0x0;
        goto LAB_00165403;
      }
      goto LAB_001655d5;
    }
  }
  var_11 = (type_1)var_9(var_10);
  local_48 = (type_1)((long)&var_11->first + var_10);
  var_16 = var_11 + 1;
LAB_00165403:
  var_12 = (int *)((long)var_11 + ((long)__position._M_current - (long)var_14));
  var_13 = (__args_0->second)._M_dataplus._M_p;
  *var_12 = __args_0->first;
  *(int **)(var_12 + 2) = var_12 + 6;
  var_5 = &(__args_0->second).field_2;
  if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
       *)var_13 == var_5) {
    uVar6 = *(type_3 *)((long)&(__args_0->second).field_2 + 8);
    *(type_2 *)(var_12 + 6) = (__args_0->second).field_2._M_allocated_capacity;
    *(type_3 *)(var_12 + 8) = uVar6;
  }
  else {
    *(type_1 *)(var_12 + 2) = var_13;
    *(type_2 *)(var_12 + 6) = (__args_0->second).field_2._M_allocated_capacity;
  }
  sVar5 = (__args_0->second)._M_string_length;
  (__args_0->second)._M_dataplus._M_p = (type_1)var_5;
  (__args_0->second)._M_string_length = 0;
  *(type_2 *)(var_12 + 4) = sVar5;
  (__args_0->second).field_2._M_local_buf[0] = '\0';
  if (__position._M_current != var_14) {
    var_16 = (type_1)((long)&var_11[1].first +
                       ((long)__position._M_current + (-0x28 - (long)var_14) & 0xfffffffffffffff8U))
    ;
    var_5 = &(var_14->second).field_2;
    var_15 = var_11;
    do {
      var_15->first = *(int *)((long)var_5 + -0x18);
      (var_15->second)._M_dataplus._M_p = (type_1)&(var_15->second).field_2;
      var_13 = (((basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *var_6)(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) {
        uVar6 = *(type_3 *)((long)var_5 + 8);
        (var_15->second).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
        *(type_3 *)((long)&(var_15->second).field_2 + 8) = uVar6;
      }
      else {
        (var_15->second)._M_dataplus._M_p = var_13;
        (var_15->second).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
      }
      var_17 = var_15 + 1;
      (var_15->second)._M_string_length = *(type_2 *)((long)var_5 + -8);
      (((basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *var_6)(var_5 + -1))->
      _M_dataplus)._M_p = (type_1)var_5;
      *(type_2 *)((long)var_5 + -8) = 0;
      var_5->_M_local_buf[0] = '\0';
      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 + 0x28);
      var_15 = var_17;
    } while (var_16 != var_17);
    var_16 = var_16 + 1;
  }
  var_20 = var_14;
  if (__position._M_current != var_18) {
    var_15 = (type_1)((long)&var_16[1].first +
                       ((long)var_18 + (-0x28 - (long)__position._M_current) & 0xfffffffffffffff8U))
    ;
    var_5 = &((__position._M_current)->second).field_2;
    var_17 = var_16;
    do {
      var_17->first = *(int *)((long)var_5 + -0x18);
      (var_17->second)._M_dataplus._M_p = (type_1)&(var_17->second).field_2;
      var_13 = (((basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *var_6)(var_5 + -1)
                )->_M_dataplus)._M_p;
      if (var_5 ==
          (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
           *)var_13) {
        uVar6 = *(type_3 *)((long)var_5 + 8);
        (var_17->second).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
        *(type_3 *)((long)&(var_17->second).field_2 + 8) = uVar6;
      }
      else {
        (var_17->second)._M_dataplus._M_p = var_13;
        (var_17->second).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
      }
      sVar5 = *(type_2 *)((long)var_5 + -8);
      var_19 = var_17 + 1;
      (((basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *var_6)(var_5 + -1))->
      _M_dataplus)._M_p = (type_1)var_5;
      *(type_2 *)((long)var_5 + -8) = 0;
      (var_17->second)._M_string_length = sVar5;
      var_5->_M_local_buf[0] = '\0';
      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 + 0x28);
      var_17 = var_19;
      var_16 = var_15;
    } while (var_19 != var_15);
  }
  for (; var_20 != var_18; var_20 = var_20 + 1) {
    var_13 = (var_20->second)._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->second).field_2) {
      var_21(var_13);
    }
  }
  if (var_14 != (pair<int,_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>
                 *)0x0) {
    var_21(var_14);
  }
  (this->
  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>,_std::var_1<std::pair<int,_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_3>var_6
  )._M_impl._M_start = var_11;
  (this->
  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>,_std::var_1<std::pair<int,_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_3>var_6
  )._M_impl._M_finish = var_16;
  (this->
  super__Vector_base<std::pair<int,_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>,_std::var_1<std::pair<int,_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>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: (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: (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: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (identifier)))) condition: (parenthesized_expression (binary_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))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (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: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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,undefined4 *param_3)

{
  long lVar1;
  long lVar2;
  undefined8 uVar3;
  long lVar4;
  undefined4 *puVar5;
  undefined8 *puVar6;
  undefined4 *puVar7;
  undefined4 *puVar8;
  undefined4 *puVar9;
  ulong uVar10;
  undefined4 *puVar11;
  long local_48;
  
  lVar1 = param_1[1];
  lVar2 = *param_1;
  lVar4 = lVar1 - lVar2 >> 3;
  if (lVar4 * -0x3333333333333333 == 0) {
    uVar10 = 1;
LAB_001655d5:
    local_48 = uVar10 * 0x28;
  }
  else {
    uVar10 = lVar4 * -0x6666666666666666;
    local_48 = -0x10;
    if (((ulong)(lVar4 * -0x3333333333333333) < uVar10 || lVar4 * 0x3333333333333333 == 0) &&
       (uVar10 < 0x666666666666667)) {
      if (uVar10 == 0) {
        puVar9 = (undefined4 *)0x28;
        local_48 = 0;
        puVar5 = (undefined4 *)0x0;
        goto LAB_00165403;
      }
      goto LAB_001655d5;
    }
  }
  puVar5 = (undefined4 *)FUN_00275550(local_48);
  local_48 = (long)puVar5 + local_48;
  puVar9 = puVar5 + 10;
LAB_00165403:
  puVar11 = (undefined4 *)((long)puVar5 + (param_2 - lVar2));
  puVar8 = *(undefined4 **)(param_3 + 2);
  *puVar11 = *param_3;
  *(undefined4 **)(puVar11 + 2) = puVar11 + 6;
  if (puVar8 == param_3 + 6) {
    uVar3 = *(undefined8 *)(param_3 + 8);
    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);
    *(undefined8 *)(puVar11 + 8) = uVar3;
  }
  else {
    *(undefined4 **)(puVar11 + 2) = puVar8;
    *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(param_3 + 6);
  }
  uVar3 = *(undefined8 *)(param_3 + 4);
  *(undefined4 **)(param_3 + 2) = param_3 + 6;
  *(undefined8 *)(param_3 + 4) = 0;
  *(undefined8 *)(puVar11 + 4) = uVar3;
  *(undefined1 *)(param_3 + 6) = 0;
  if (param_2 != lVar2) {
    puVar9 = (undefined4 *)((long)puVar5 + ((param_2 + -0x28) - lVar2 & 0xfffffffffffffff8U) + 0x28)
    ;
    puVar6 = (undefined8 *)(lVar2 + 0x18);
    puVar11 = puVar5;
    do {
      *puVar11 = *(undefined4 *)(puVar6 + -3);
      *(undefined4 **)(puVar11 + 2) = puVar11 + 6;
      if ((undefined8 *)puVar6[-2] == puVar6) {
        uVar3 = puVar6[1];
        *(undefined8 *)(puVar11 + 6) = *puVar6;
        *(undefined8 *)(puVar11 + 8) = uVar3;
      }
      else {
        *(undefined8 **)(puVar11 + 2) = (undefined8 *)puVar6[-2];
        *(undefined8 *)(puVar11 + 6) = *puVar6;
      }
      puVar8 = puVar11 + 10;
      *(undefined8 *)(puVar11 + 4) = puVar6[-1];
      puVar6[-2] = puVar6;
      puVar6[-1] = 0;
      *(undefined1 *)puVar6 = 0;
      puVar6 = puVar6 + 5;
      puVar11 = puVar8;
    } while (puVar9 != puVar8);
    puVar9 = puVar9 + 10;
  }
  lVar4 = lVar2;
  if (param_2 != lVar1) {
    puVar11 = (undefined4 *)((long)puVar9 + ((lVar1 - param_2) - 0x28U & 0xfffffffffffffff8) + 0x28)
    ;
    puVar6 = (undefined8 *)(param_2 + 0x18);
    puVar8 = puVar9;
    do {
      *puVar8 = *(undefined4 *)(puVar6 + -3);
      *(undefined4 **)(puVar8 + 2) = puVar8 + 6;
      if (puVar6 == (undefined8 *)puVar6[-2]) {
        uVar3 = puVar6[1];
        *(undefined8 *)(puVar8 + 6) = *puVar6;
        *(undefined8 *)(puVar8 + 8) = uVar3;
      }
      else {
        *(undefined8 **)(puVar8 + 2) = (undefined8 *)puVar6[-2];
        *(undefined8 *)(puVar8 + 6) = *puVar6;
      }
      uVar3 = puVar6[-1];
      puVar7 = puVar8 + 10;
      puVar6[-2] = puVar6;
      puVar6[-1] = 0;
      *(undefined8 *)(puVar8 + 4) = uVar3;
      *(undefined1 *)puVar6 = 0;
      puVar6 = puVar6 + 5;
      puVar8 = puVar7;
      puVar9 = puVar11;
    } while (puVar7 != puVar11);
  }
  for (; lVar4 != lVar1; lVar4 = lVar4 + 0x28) {
    if (*(long *)(lVar4 + 8) != lVar4 + 0x18) {
      FUN_00276d20();
    }
  }
  if (lVar2 != 0) {
    FUN_00276d20(lVar2);
  }
  *param_1 = (long)puVar5;
  param_1[1] = (long)puVar9;
  param_1[2] = local_48;
  return;
}

