
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original name: _M_realloc_insert<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;
  pointer ppVar2;
  pointer ppVar3;
  pointer pcVar4;
  size_type sVar5;
  size_type *psVar6;
  pointer ppVar7;
  int iVar8;
  pointer ppVar9;
  pointer ppVar10;
  pointer ppVar11;
  uint uVar12;
  uint uVar13;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar14;
  pointer ppVar15;
  pointer local_24;
  pointer local_20;
  
  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;
  iVar8 = (int)ppVar2 - (int)ppVar3 >> 2;
  if (iVar8 * -0x49249249 == 0) {
    uVar12 = 1;
LAB_00057235:
    uVar13 = uVar12 * 0x1c;
  }
  else {
    uVar12 = iVar8 * 0x6db6db6e;
    uVar13 = 0xfffffffc;
    if (((uint)(iVar8 * -0x49249249) < uVar12 || iVar8 * 0x49249249 == 0) && (uVar12 < 0x924924a)) {
      if (uVar12 == 0) {
        ppVar11 = (pointer)0x1c;
        local_20 = (pointer)0x0;
        local_24 = (pointer)0x0;
        goto LAB_00057025;
      }
      goto LAB_00057235;
    }
  }
  local_24 = (pointer)operator_new(uVar13);
  local_20 = (pointer)((int)&local_24->first + uVar13);
  ppVar11 = local_24 + 1;
LAB_00057025:
  piVar1 = (int *)((int)local_24 + ((int)__position._M_current - (int)ppVar3));
  pcVar4 = (__args_0->second)._M_dataplus._M_p;
  *piVar1 = __args_0->first;
  paVar14 = &(__args_0->second).field_2;
  piVar1[1] = (int)(piVar1 + 3);
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)pcVar4 == paVar14) {
    piVar1[3] = (__args_0->second).field_2._M_allocated_capacity;
    piVar1[4] = *(int *)((int)&(__args_0->second).field_2 + 4);
    piVar1[5] = *(int *)((int)&(__args_0->second).field_2 + 8);
    piVar1[6] = *(int *)((int)&(__args_0->second).field_2 + 0xc);
  }
  else {
    piVar1[1] = (int)pcVar4;
    piVar1[3] = (__args_0->second).field_2._M_allocated_capacity;
  }
  sVar5 = (__args_0->second)._M_string_length;
  (__args_0->second)._M_dataplus._M_p = (pointer)paVar14;
  (__args_0->second)._M_string_length = 0;
  (__args_0->second).field_2._M_local_buf[0] = '\0';
  piVar1[2] = sVar5;
  if (__position._M_current != ppVar3) {
    ppVar7 = local_24;
    paVar14 = &(ppVar3->second).field_2;
    do {
      ppVar11 = ppVar7;
      iVar8 = *(int *)((int)paVar14 + -0xc);
      (ppVar11->second)._M_dataplus._M_p = (pointer)&(ppVar11->second).field_2;
      ppVar11->first = iVar8;
      pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)
                ((int)paVar14 + -8))->_M_dataplus)._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)pcVar4 == paVar14) {
        (ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;
        *(undefined4 *)((int)&(ppVar11->second).field_2 + 4) = *(undefined4 *)((int)paVar14 + 4);
        *(undefined4 *)((int)&(ppVar11->second).field_2 + 8) = *(undefined4 *)((int)paVar14 + 8);
        *(undefined4 *)((int)&(ppVar11->second).field_2 + 0xc) = *(undefined4 *)((int)paVar14 + 0xc)
        ;
      }
      else {
        (ppVar11->second)._M_dataplus._M_p = pcVar4;
        (ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;
      }
      (ppVar11->second)._M_string_length = *(size_type *)((int)paVar14 + -4);
      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->
      _M_dataplus)._M_p = (pointer)paVar14;
      *(size_type *)((int)paVar14 + -4) = 0;
      paVar14->_M_local_buf[0] = '\0';
      ppVar7 = ppVar11 + 1;
      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                 *)((int)paVar14 + 0x1c);
    } while (ppVar11 + 1 !=
             local_24 +
             (((uint)((int)__position._M_current + (-0x1c - (int)ppVar3)) >> 2) * 0x36db6db7 &
             0x3fffffff) + 1);
    ppVar11 = ppVar11 + 2;
  }
  ppVar7 = ppVar3;
  if (__position._M_current != ppVar2) {
    ppVar15 = ppVar11 + (((uint)((int)ppVar2 + (-0x1c - (int)__position._M_current)) >> 2) *
                         0x36db6db7 & 0x3fffffff) + 1;
    ppVar10 = ppVar11;
    paVar14 = &((__position._M_current)->second).field_2;
    do {
      sVar5 = *(size_type *)((int)paVar14 + -0xc);
      (ppVar10->second)._M_dataplus._M_p = (pointer)&(ppVar10->second).field_2;
      ppVar10->first = sVar5;
      psVar6 = (size_type *)
               (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)
                ((int)paVar14 + -8))->_M_dataplus)._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)psVar6 == paVar14) {
        (ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;
        *(size_type *)((int)&(ppVar10->second).field_2 + 4) = *(size_type *)((int)paVar14 + 4);
        *(size_type *)((int)&(ppVar10->second).field_2 + 8) = *(size_type *)((int)paVar14 + 8);
        *(size_type *)((int)&(ppVar10->second).field_2 + 0xc) = *(size_type *)((int)paVar14 + 0xc);
      }
      else {
        (ppVar10->second)._M_dataplus._M_p = (pointer)psVar6;
        (ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;
      }
      sVar5 = *(size_type *)((int)paVar14 + -4);
      ppVar9 = ppVar10 + 1;
      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->
      _M_dataplus)._M_p = (pointer)paVar14;
      *(size_type *)((int)paVar14 + -4) = 0;
      (ppVar10->second)._M_string_length = sVar5;
      paVar14->_M_local_buf[0] = '\0';
      ppVar10 = ppVar9;
      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                 *)((int)paVar14 + 0x1c);
      ppVar11 = ppVar15;
    } while (ppVar9 != 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 != (pointer)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 = local_24;
  (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 = ppVar11;
  (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_20;
  return;
}



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

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

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  uint uVar8;
  undefined4 *puVar9;
  undefined4 *puVar10;
  undefined4 *local_24;
  int local_20;
  
  iVar1 = param_1[1];
  iVar2 = *param_1;
  iVar4 = iVar1 - iVar2 >> 2;
  if (iVar4 * -0x49249249 == 0) {
    uVar8 = 1;
LAB_00057235:
    local_20 = uVar8 * 0x1c;
  }
  else {
    uVar8 = iVar4 * 0x6db6db6e;
    local_20 = -4;
    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {
      if (uVar8 == 0) {
        puVar7 = (undefined4 *)0x1c;
        local_20 = 0;
        local_24 = (undefined4 *)0x0;
        goto LAB_00057025;
      }
      goto LAB_00057235;
    }
  }
  local_24 = (undefined4 *)FUN_0017ebf0(local_20);
  local_20 = local_20 + (int)local_24;
  puVar7 = local_24 + 7;
LAB_00057025:
  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));
  puVar9 = (undefined4 *)param_3[1];
  *puVar6 = *param_3;
  puVar6[1] = puVar6 + 3;
  if (puVar9 == param_3 + 3) {
    puVar6[3] = param_3[3];
    puVar6[4] = param_3[4];
    puVar6[5] = param_3[5];
    puVar6[6] = param_3[6];
  }
  else {
    puVar6[1] = puVar9;
    puVar6[3] = param_3[3];
  }
  uVar3 = param_3[2];
  param_3[1] = param_3 + 3;
  param_3[2] = 0;
  *(undefined1 *)(param_3 + 3) = 0;
  puVar6[2] = uVar3;
  if (param_2 != iVar2) {
    puVar6 = local_24;
    puVar9 = (undefined4 *)(iVar2 + 0xc);
    do {
      puVar7 = puVar6;
      uVar3 = puVar9[-3];
      puVar7[1] = puVar7 + 3;
      *puVar7 = uVar3;
      if ((undefined4 *)puVar9[-2] == puVar9) {
        puVar7[3] = *puVar9;
        puVar7[4] = puVar9[1];
        puVar7[5] = puVar9[2];
        puVar7[6] = puVar9[3];
      }
      else {
        puVar7[1] = (undefined4 *)puVar9[-2];
        puVar7[3] = *puVar9;
      }
      puVar7[2] = puVar9[-1];
      puVar9[-2] = puVar9;
      puVar9[-1] = 0;
      *(undefined1 *)puVar9 = 0;
      puVar6 = puVar7 + 7;
      puVar9 = puVar9 + 7;
    } while (puVar7 + 7 !=
             local_24 +
             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);
    puVar7 = puVar7 + 0xe;
  }
  iVar4 = iVar2;
  if (param_2 != iVar1) {
    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;
    puVar6 = puVar7;
    puVar9 = (undefined4 *)(param_2 + 0xc);
    do {
      uVar3 = puVar9[-3];
      puVar6[1] = puVar6 + 3;
      *puVar6 = uVar3;
      if ((undefined4 *)puVar9[-2] == puVar9) {
        puVar6[3] = *puVar9;
        puVar6[4] = puVar9[1];
        puVar6[5] = puVar9[2];
        puVar6[6] = puVar9[3];
      }
      else {
        puVar6[1] = (undefined4 *)puVar9[-2];
        puVar6[3] = *puVar9;
      }
      uVar3 = puVar9[-1];
      puVar5 = puVar6 + 7;
      puVar9[-2] = puVar9;
      puVar9[-1] = 0;
      puVar6[2] = uVar3;
      *(undefined1 *)puVar9 = 0;
      puVar6 = puVar5;
      puVar9 = puVar9 + 7;
      puVar7 = puVar10;
    } while (puVar5 != puVar10);
  }
  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x1c) {
    if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {
      FUN_001807a0(*(int *)(iVar4 + 4));
    }
  }
  if (iVar2 != 0) {
    FUN_001807a0(iVar2);
  }
  *param_1 = (int)local_24;
  param_1[1] = (int)puVar7;
  param_1[2] = local_20;
  return;
}


CALL 0x0004fb76
ADD EAX,0x2ab04b
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOV EBP,dword ptr [ESP + 0x34]
MOV ESI,dword ptr [ESP + 0x38]
MOV dword ptr [ESP],EAX
MOV EAX,dword ptr [ESP + 0x30]
MOV EDI,dword ptr [EAX + 0x4]
MOV EBX,dword ptr [EAX]
MOV EAX,EDI
MOV dword ptr [ESP + 0x4],EBX
SUB EBP,EBX
SUB EAX,EBX
SAR EAX,0x2
IMUL EAX,EAX,-0x49249249
TEST EAX,EAX
JZ 0x00057230
LEA ECX,[EAX + EAX*0x1]
MOV EDX,0xfffffffc
CMP EAX,ECX
JBE 0x00057200
SUB ESP,0xc
PUSH EDX
MOV EBX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x1c],EDX
CALL 0x0017ebf0
MOV EDX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0x18],EAX
ADD EDX,EAX
ADD EAX,0x1c
MOV dword ptr [ESP + 0x1c],EDX
ADD ESP,0x10
MOV EBX,dword ptr [ESP + 0x8]
MOV ECX,dword ptr [ESI]
LEA EDX,[EBX + EBP*0x1]
MOV EBX,dword ptr [ESI + 0x4]
MOV dword ptr [EDX],ECX
LEA EBP,[EDX + 0xc]
LEA ECX,[ESI + 0xc]
MOV dword ptr [EDX + 0x4],EBP
CMP EBX,ECX
JZ 0x00057240
MOV dword ptr [EDX + 0x4],EBX
MOV EBX,dword ptr [ESI + 0xc]
MOV dword ptr [EDX + 0xc],EBX
MOV EBX,dword ptr [ESI + 0x8]
MOV dword ptr [ESI + 0x4],ECX
MOV dword ptr [ESI + 0x8],0x0
MOV byte ptr [ESI + 0xc],0x0
MOV ESI,dword ptr [ESP + 0x4]
MOV dword ptr [EDX + 0x8],EBX
CMP dword ptr [ESP + 0x34],ESI
JZ 0x000570fb
MOV EAX,ESI
LEA EDX,[ESI + 0xc]
MOV ESI,dword ptr [ESP + 0x34]
LEA EBX,[ESI + -0x1c]
SUB EBX,EAX
MOV EAX,dword ptr [ESP + 0x8]
SHR EBX,0x2
IMUL EBX,EBX,0x36db6db7
AND EBX,0x3fffffff
ADD EBX,0x1
IMUL EBX,EBX,0x1c
ADD EBX,EAX
JMP 0x000570c6
MOV dword ptr [EAX + 0x4],ECX
MOV ECX,dword ptr [EDX]
MOV dword ptr [EAX + 0xc],ECX
MOV ECX,dword ptr [EDX + -0x4]
ADD EAX,0x1c
MOV dword ptr [EAX + -0x14],ECX
MOV dword ptr [EDX + -0x8],EDX
ADD EDX,0x1c
MOV dword ptr [EDX + -0x20],0x0
MOV byte ptr [EDX + -0x1c],0x0
CMP EAX,EBX
JZ 0x000570f8
MOV ECX,dword ptr [EDX + -0xc]
LEA ESI,[EAX + 0xc]
MOV dword ptr [EAX + 0x4],ESI
MOV dword ptr [EAX],ECX
MOV ECX,dword ptr [EDX + -0x8]
CMP ECX,EDX
JNZ 0x000570a0
MOV ECX,dword ptr [EDX]
MOV dword ptr [EAX + 0xc],ECX
MOV ECX,dword ptr [EDX + 0x4]
MOV dword ptr [EAX + 0x10],ECX
MOV ECX,dword ptr [EDX + 0x8]
MOV dword ptr [EAX + 0x14],ECX
MOV ECX,dword ptr [EDX + 0xc]
MOV dword ptr [EAX + 0x18],ECX
JMP 0x000570a8
ADD EAX,0x1c
CMP dword ptr [ESP + 0x34],EDI
JZ 0x00057188
MOV ESI,dword ptr [ESP + 0x34]
MOV ECX,EDI
SUB ECX,ESI
LEA EDX,[ESI + 0xc]
LEA ESI,[ECX + -0x1c]
SHR ESI,0x2
IMUL ESI,ESI,0x36db6db7
AND ESI,0x3fffffff
ADD ESI,0x1
IMUL ESI,ESI,0x1c
ADD ESI,EAX
JMP 0x00057156
MOV dword ptr [EAX + 0x4],ECX
MOV ECX,dword ptr [EDX]
MOV dword ptr [EAX + 0xc],ECX
MOV ECX,dword ptr [EDX + -0x4]
ADD EAX,0x1c
MOV dword ptr [EDX + -0x8],EDX
ADD EDX,0x1c
MOV dword ptr [EDX + -0x20],0x0
MOV dword ptr [EAX + -0x14],ECX
MOV byte ptr [EDX + -0x1c],0x0
CMP EAX,ESI
JZ 0x00057190
MOV ECX,dword ptr [EDX + -0xc]
LEA EBX,[EAX + 0xc]
MOV dword ptr [EAX + 0x4],EBX
MOV dword ptr [EAX],ECX
MOV ECX,dword ptr [EDX + -0x8]
CMP ECX,EDX
JNZ 0x00057130
MOV ECX,dword ptr [EDX]
MOV dword ptr [EAX + 0xc],ECX
MOV ECX,dword ptr [EDX + 0x4]
MOV dword ptr [EAX + 0x10],ECX
MOV ECX,dword ptr [EDX + 0x8]
MOV dword ptr [EAX + 0x14],ECX
MOV ECX,dword ptr [EDX + 0xc]
MOV dword ptr [EAX + 0x18],ECX
JMP 0x00057138
MOV ESI,EAX
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x4]
MOV EBP,EAX
CMP EAX,EDI
JZ 0x000571c1
LEA ESI,[ESI]
MOV EAX,dword ptr [EBP + 0x4]
LEA EDX,[EBP + 0xc]
CMP EAX,EDX
JZ 0x000571ba
SUB ESP,0xc
PUSH EAX
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x001807a0
ADD ESP,0x10
ADD EBP,0x1c
CMP EBP,EDI
JNZ 0x000571a0
MOV EAX,dword ptr [ESP + 0x4]
TEST EAX,EAX
JZ 0x000571dc
SUB ESP,0xc
PUSH dword ptr [ESP + 0x10]
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x001807a0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x30]
MOV EDI,dword ptr [ESP + 0x8]
MOV dword ptr [EAX],EDI
MOV EDI,dword ptr [ESP + 0xc]
MOV dword ptr [EAX + 0x4],ESI
MOV dword ptr [EAX + 0x8],EDI
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP ECX,0x9249249
JA 0x00057000
TEST ECX,ECX
JNZ 0x00057235
MOV EAX,0x1c
MOV dword ptr [ESP + 0xc],0x0
MOV dword ptr [ESP + 0x8],0x0
JMP 0x00057025
MOV ECX,0x1
IMUL EDX,ECX,0x1c
JMP 0x00057000
MOV EBX,dword ptr [ESI + 0xc]
MOV dword ptr [EDX + 0xc],EBX
MOV EBX,dword ptr [ECX + 0x4]
MOV dword ptr [EDX + 0x10],EBX
MOV EBX,dword ptr [ECX + 0x8]
MOV dword ptr [EDX + 0x14],EBX
MOV EBX,dword ptr [ECX + 0xc]
MOV dword ptr [EDX + 0x18],EBX
JMP 0x0005704d
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_00056fb0(int *param_1,int param_2,undefined4 *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *local_24;\n  int local_20;\n  \n  iVar1 = param_1[1];\n  iVar2 = *param_1;\n  iVar4 = iVar1 - iVar2 >> 2;\n  if (iVar4 * -0x49249249 == 0) {\n    uVar8 = 1;\nLAB_00057235:\n    local_20 = uVar8 * 0x1c;\n  }\n  else {\n    uVar8 = iVar4 * 0x6db6db6e;\n    local_20 = -4;\n    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }\n  local_24 = (undefined4 *)FUN_0017ebf0(local_20);\n  local_20 = local_20 + (int)local_24;\n  puVar7 = local_24 + 7;\nLAB_00057025:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));\n  puVar9 = (undefined4 *)param_3[1];\n  *puVar6 = *param_3;\n  puVar6[1] = puVar6 + 3;\n  if (puVar9 == param_3 + 3) {\n    puVar6[3] = param_3[3];\n    puVar6[4] = param_3[4];\n    puVar6[5] = param_3[5];\n    puVar6[6] = param_3[6];\n  }\n  else {\n    puVar6[1] = puVar9;\n    puVar6[3] = param_3[3];\n  }\n  uVar3 = param_3[2];\n  param_3[1] = param_3 + 3;\n  param_3[2] = 0;\n  *(undefined1 *)(param_3 + 3) = 0;\n  puVar6[2] = uVar3;\n  if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0xc);\n    do {\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    } while (puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);\n    puVar7 = puVar7 + 0xe;\n  }\n  iVar4 = iVar2;\n  if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0xc);\n    do {\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }\n  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x1c) {\n    if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }\n  }\n  if (iVar2 != 0) {\n    FUN_001807a0(iVar2);\n  }\n  *param_1 = (int)local_24;\n  param_1[1] = (int)puVar7;\n  param_1[2] = local_20;\n  return;\n}\n\n" comment (function_definition "void FUN_00056fb0(int *param_1,int param_2,undefined4 *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *local_24;\n  int local_20;\n  \n  iVar1 = param_1[1];\n  iVar2 = *param_1;\n  iVar4 = iVar1 - iVar2 >> 2;\n  if (iVar4 * -0x49249249 == 0) {\n    uVar8 = 1;\nLAB_00057235:\n    local_20 = uVar8 * 0x1c;\n  }\n  else {\n    uVar8 = iVar4 * 0x6db6db6e;\n    local_20 = -4;\n    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }\n  local_24 = (undefined4 *)FUN_0017ebf0(local_20);\n  local_20 = local_20 + (int)local_24;\n  puVar7 = local_24 + 7;\nLAB_00057025:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));\n  puVar9 = (undefined4 *)param_3[1];\n  *puVar6 = *param_3;\n  puVar6[1] = puVar6 + 3;\n  if (puVar9 == param_3 + 3) {\n    puVar6[3] = param_3[3];\n    puVar6[4] = param_3[4];\n    puVar6[5] = param_3[5];\n    puVar6[6] = param_3[6];\n  }\n  else {\n    puVar6[1] = puVar9;\n    puVar6[3] = param_3[3];\n  }\n  uVar3 = param_3[2];\n  param_3[1] = param_3 + 3;\n  param_3[2] = 0;\n  *(undefined1 *)(param_3 + 3) = 0;\n  puVar6[2] = uVar3;\n  if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0xc);\n    do {\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    } while (puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);\n    puVar7 = puVar7 + 0xe;\n  }\n  iVar4 = iVar2;\n  if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0xc);\n    do {\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }\n  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x1c) {\n    if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }\n  }\n  if (iVar2 != 0) {\n    FUN_001807a0(iVar2);\n  }\n  *param_1 = (int)local_24;\n  param_1[1] = (int)puVar7;\n  param_1[2] = local_20;\n  return;\n}" primitive_type (function_declarator "FUN_00056fb0(int *param_1,int param_2,undefined4 *param_3)" identifier (parameter_list "(int *param_1,int param_2,undefined4 *param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *local_24;\n  int local_20;\n  \n  iVar1 = param_1[1];\n  iVar2 = *param_1;\n  iVar4 = iVar1 - iVar2 >> 2;\n  if (iVar4 * -0x49249249 == 0) {\n    uVar8 = 1;\nLAB_00057235:\n    local_20 = uVar8 * 0x1c;\n  }\n  else {\n    uVar8 = iVar4 * 0x6db6db6e;\n    local_20 = -4;\n    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }\n  local_24 = (undefined4 *)FUN_0017ebf0(local_20);\n  local_20 = local_20 + (int)local_24;\n  puVar7 = local_24 + 7;\nLAB_00057025:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));\n  puVar9 = (undefined4 *)param_3[1];\n  *puVar6 = *param_3;\n  puVar6[1] = puVar6 + 3;\n  if (puVar9 == param_3 + 3) {\n    puVar6[3] = param_3[3];\n    puVar6[4] = param_3[4];\n    puVar6[5] = param_3[5];\n    puVar6[6] = param_3[6];\n  }\n  else {\n    puVar6[1] = puVar9;\n    puVar6[3] = param_3[3];\n  }\n  uVar3 = param_3[2];\n  param_3[1] = param_3 + 3;\n  param_3[2] = 0;\n  *(undefined1 *)(param_3 + 3) = 0;\n  puVar6[2] = uVar3;\n  if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0xc);\n    do {\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    } while (puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);\n    puVar7 = puVar7 + 0xe;\n  }\n  iVar4 = iVar2;\n  if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0xc);\n    do {\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }\n  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x1c) {\n    if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }\n  }\n  if (iVar2 != 0) {\n    FUN_001807a0(iVar2);\n  }\n  *param_1 = (int)local_24;\n  param_1[1] = (int)puVar7;\n  param_1[2] = local_20;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined4 *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "iVar1 = param_1[1];" (assignment_expression "iVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = *param_1;" (assignment_expression "iVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar4 = iVar1 - iVar2 >> 2;" (assignment_expression "iVar4 = iVar1 - iVar2 >> 2" identifier = (binary_expression "iVar1 - iVar2 >> 2" (binary_expression "iVar1 - iVar2" identifier - identifier) >> number_literal)) ;) (if_statement "if (iVar4 * -0x49249249 == 0) {\n    uVar8 = 1;\nLAB_00057235:\n    local_20 = uVar8 * 0x1c;\n  }\n  else {\n    uVar8 = iVar4 * 0x6db6db6e;\n    local_20 = -4;\n    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }" if (parenthesized_expression "(iVar4 * -0x49249249 == 0)" ( (binary_expression "iVar4 * -0x49249249 == 0" (binary_expression "iVar4 * -0x49249249" identifier * number_literal) == number_literal) )) (compound_statement "{\n    uVar8 = 1;\nLAB_00057235:\n    local_20 = uVar8 * 0x1c;\n  }" { (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00057235:\n    local_20 = uVar8 * 0x1c;" statement_identifier : (expression_statement "local_20 = uVar8 * 0x1c;" (assignment_expression "local_20 = uVar8 * 0x1c" identifier = (binary_expression "uVar8 * 0x1c" identifier * number_literal)) ;)) }) (else_clause "else {\n    uVar8 = iVar4 * 0x6db6db6e;\n    local_20 = -4;\n    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }" else (compound_statement "{\n    uVar8 = iVar4 * 0x6db6db6e;\n    local_20 = -4;\n    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }" { (expression_statement "uVar8 = iVar4 * 0x6db6db6e;" (assignment_expression "uVar8 = iVar4 * 0x6db6db6e" identifier = (binary_expression "iVar4 * 0x6db6db6e" identifier * number_literal)) ;) (expression_statement "local_20 = -4;" (assignment_expression "local_20 = -4" identifier = number_literal) ;) (if_statement "if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }" if (parenthesized_expression "(((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a))" ( (binary_expression "((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)" (parenthesized_expression "((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0)" ( (binary_expression "(uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0" (binary_expression "(uint)(iVar4 * -0x49249249) < uVar8" (call_expression "(uint)(iVar4 * -0x49249249)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar4 * -0x49249249)" ( (binary_expression "iVar4 * -0x49249249" identifier * number_literal) ))) < identifier) || (binary_expression "iVar4 * 0x49249249 == 0" (binary_expression "iVar4 * 0x49249249" identifier * number_literal) == number_literal)) )) && (parenthesized_expression "(uVar8 < 0x924924a)" ( (binary_expression "uVar8 < 0x924924a" identifier < number_literal) ))) )) (compound_statement "{\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }" { (if_statement "if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }" { (expression_statement "puVar7 = (undefined4 *)0x1c;" (assignment_expression "puVar7 = (undefined4 *)0x1c" identifier = (cast_expression "(undefined4 *)0x1c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_24 = (undefined4 *)0x0;" (assignment_expression "local_24 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00057025;" goto statement_identifier ;) })) (goto_statement "goto LAB_00057235;" goto statement_identifier ;) })) }))) (expression_statement "local_24 = (undefined4 *)FUN_0017ebf0(local_20);" (assignment_expression "local_24 = (undefined4 *)FUN_0017ebf0(local_20)" identifier = (cast_expression "(undefined4 *)FUN_0017ebf0(local_20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017ebf0(local_20)" identifier (argument_list "(local_20)" ( identifier ))))) ;) (expression_statement "local_20 = local_20 + (int)local_24;" (assignment_expression "local_20 = local_20 + (int)local_24" identifier = (binary_expression "local_20 + (int)local_24" identifier + (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar7 = local_24 + 7;" (assignment_expression "puVar7 = local_24 + 7" identifier = (binary_expression "local_24 + 7" identifier + number_literal)) ;) (labeled_statement "LAB_00057025:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));" statement_identifier : (expression_statement "puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));" (assignment_expression "puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2))" identifier = (cast_expression "(undefined4 *)((int)local_24 + (param_2 - iVar2))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_24 + (param_2 - iVar2))" ( (binary_expression "(int)local_24 + (param_2 - iVar2)" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(param_2 - iVar2)" ( (binary_expression "param_2 - iVar2" identifier - identifier) ))) )))) ;)) (expression_statement "puVar9 = (undefined4 *)param_3[1];" (assignment_expression "puVar9 = (undefined4 *)param_3[1]" identifier = (cast_expression "(undefined4 *)param_3[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) ;) (expression_statement "*puVar6 = *param_3;" (assignment_expression "*puVar6 = *param_3" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "puVar6[1] = puVar6 + 3;" (assignment_expression "puVar6[1] = puVar6 + 3" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = (binary_expression "puVar6 + 3" identifier + number_literal)) ;) (if_statement "if (puVar9 == param_3 + 3) {\n    puVar6[3] = param_3[3];\n    puVar6[4] = param_3[4];\n    puVar6[5] = param_3[5];\n    puVar6[6] = param_3[6];\n  }\n  else {\n    puVar6[1] = puVar9;\n    puVar6[3] = param_3[3];\n  }" if (parenthesized_expression "(puVar9 == param_3 + 3)" ( (binary_expression "puVar9 == param_3 + 3" identifier == (binary_expression "param_3 + 3" identifier + number_literal)) )) (compound_statement "{\n    puVar6[3] = param_3[3];\n    puVar6[4] = param_3[4];\n    puVar6[5] = param_3[5];\n    puVar6[6] = param_3[6];\n  }" { (expression_statement "puVar6[3] = param_3[3];" (assignment_expression "puVar6[3] = param_3[3]" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (expression_statement "puVar6[4] = param_3[4];" (assignment_expression "puVar6[4] = param_3[4]" (subscript_expression "puVar6[4]" identifier [ number_literal ]) = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (expression_statement "puVar6[5] = param_3[5];" (assignment_expression "puVar6[5] = param_3[5]" (subscript_expression "puVar6[5]" identifier [ number_literal ]) = (subscript_expression "param_3[5]" identifier [ number_literal ])) ;) (expression_statement "puVar6[6] = param_3[6];" (assignment_expression "puVar6[6] = param_3[6]" (subscript_expression "puVar6[6]" identifier [ number_literal ]) = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    puVar6[1] = puVar9;\n    puVar6[3] = param_3[3];\n  }" else (compound_statement "{\n    puVar6[1] = puVar9;\n    puVar6[3] = param_3[3];\n  }" { (expression_statement "puVar6[1] = puVar9;" (assignment_expression "puVar6[1] = puVar9" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[3] = param_3[3];" (assignment_expression "puVar6[3] = param_3[3]" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar3 = param_3[2];" (assignment_expression "uVar3 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (expression_statement "param_3[1] = param_3 + 3;" (assignment_expression "param_3[1] = param_3 + 3" (subscript_expression "param_3[1]" identifier [ number_literal ]) = (binary_expression "param_3 + 3" identifier + number_literal)) ;) (expression_statement "param_3[2] = 0;" (assignment_expression "param_3[2] = 0" (subscript_expression "param_3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(param_3 + 3) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 3) = 0" (pointer_expression "*(undefined1 *)(param_3 + 3)" * (cast_expression "(undefined1 *)(param_3 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 3)" ( (binary_expression "param_3 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar6[2] = uVar3;" (assignment_expression "puVar6[2] = uVar3" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0xc);\n    do {\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    } while (puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);\n    puVar7 = puVar7 + 0xe;\n  }" if (parenthesized_expression "(param_2 != iVar2)" ( (binary_expression "param_2 != iVar2" identifier != identifier) )) (compound_statement "{\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0xc);\n    do {\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    } while (puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);\n    puVar7 = puVar7 + 0xe;\n  }" { (expression_statement "puVar6 = local_24;" (assignment_expression "puVar6 = local_24" identifier = identifier) ;) (expression_statement "puVar9 = (undefined4 *)(iVar2 + 0xc);" (assignment_expression "puVar9 = (undefined4 *)(iVar2 + 0xc)" identifier = (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) ;) (do_statement "do {\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    } while (puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);" do (compound_statement "{\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    }" { (expression_statement "puVar7 = puVar6;" (assignment_expression "puVar7 = puVar6" identifier = identifier) ;) (expression_statement "uVar3 = puVar9[-3];" (assignment_expression "uVar3 = puVar9[-3]" identifier = (subscript_expression "puVar9[-3]" identifier [ number_literal ])) ;) (expression_statement "puVar7[1] = puVar7 + 3;" (assignment_expression "puVar7[1] = puVar7 + 3" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (binary_expression "puVar7 + 3" identifier + number_literal)) ;) (expression_statement "*puVar7 = uVar3;" (assignment_expression "*puVar7 = uVar3" (pointer_expression "*puVar7" * identifier) = identifier) ;) (if_statement "if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }" if (parenthesized_expression "((undefined4 *)puVar9[-2] == puVar9)" ( (binary_expression "(undefined4 *)puVar9[-2] == puVar9" (cast_expression "(undefined4 *)puVar9[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }" { (expression_statement "puVar7[3] = *puVar9;" (assignment_expression "puVar7[3] = *puVar9" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar7[4] = puVar9[1];" (assignment_expression "puVar7[4] = puVar9[1]" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = (subscript_expression "puVar9[1]" identifier [ number_literal ])) ;) (expression_statement "puVar7[5] = puVar9[2];" (assignment_expression "puVar7[5] = puVar9[2]" (subscript_expression "puVar7[5]" identifier [ number_literal ]) = (subscript_expression "puVar9[2]" identifier [ number_literal ])) ;) (expression_statement "puVar7[6] = puVar9[3];" (assignment_expression "puVar7[6] = puVar9[3]" (subscript_expression "puVar7[6]" identifier [ number_literal ]) = (subscript_expression "puVar9[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }" else (compound_statement "{\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }" { (expression_statement "puVar7[1] = (undefined4 *)puVar9[-2];" (assignment_expression "puVar7[1] = (undefined4 *)puVar9[-2]" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (cast_expression "(undefined4 *)puVar9[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar7[3] = *puVar9;" (assignment_expression "puVar7[3] = *puVar9" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = (pointer_expression "*puVar9" * identifier)) ;) }))) (expression_statement "puVar7[2] = puVar9[-1];" (assignment_expression "puVar7[2] = puVar9[-1]" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = (subscript_expression "puVar9[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar9[-2] = puVar9;" (assignment_expression "puVar9[-2] = puVar9" (subscript_expression "puVar9[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[-1] = 0;" (assignment_expression "puVar9[-1] = 0" (subscript_expression "puVar9[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar9 = 0;" (assignment_expression "*(undefined1 *)puVar9 = 0" (pointer_expression "*(undefined1 *)puVar9" * (cast_expression "(undefined1 *)puVar9" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar6 = puVar7 + 7;" (assignment_expression "puVar6 = puVar7 + 7" identifier = (binary_expression "puVar7 + 7" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar9 + 7;" (assignment_expression "puVar9 = puVar9 + 7" identifier = (binary_expression "puVar9 + 7" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7)" ( (binary_expression "puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7" (binary_expression "puVar7 + 7" identifier + number_literal) != (binary_expression "local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7" identifier + (binary_expression "((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7" (parenthesized_expression "((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1)" ( (binary_expression "(((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1" (parenthesized_expression "(((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff)" ( (binary_expression "((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff" (binary_expression "((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7" (parenthesized_expression "((uint)((param_2 + -0x1c) - iVar2) >> 2)" ( (binary_expression "(uint)((param_2 + -0x1c) - iVar2) >> 2" (call_expression "(uint)((param_2 + -0x1c) - iVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((param_2 + -0x1c) - iVar2)" ( (binary_expression "(param_2 + -0x1c) - iVar2" (parenthesized_expression "(param_2 + -0x1c)" ( (binary_expression "param_2 + -0x1c" identifier + number_literal) )) - identifier) ))) >> number_literal) )) * number_literal) & number_literal) )) + number_literal) )) * number_literal))) )) ;) (expression_statement "puVar7 = puVar7 + 0xe;" (assignment_expression "puVar7 = puVar7 + 0xe" identifier = (binary_expression "puVar7 + 0xe" identifier + number_literal)) ;) })) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" identifier = identifier) ;) (if_statement "if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0xc);\n    do {\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }" if (parenthesized_expression "(param_2 != iVar1)" ( (binary_expression "param_2 != iVar1" identifier != identifier) )) (compound_statement "{\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0xc);\n    do {\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }" { (expression_statement "puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;" (assignment_expression "puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7" identifier = (binary_expression "puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7" identifier + (binary_expression "((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7" (parenthesized_expression "((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1)" ( (binary_expression "(((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1" (parenthesized_expression "(((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff)" ( (binary_expression "((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff" (binary_expression "((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7" (parenthesized_expression "((iVar1 - param_2) - 0x1cU >> 2)" ( (binary_expression "(iVar1 - param_2) - 0x1cU >> 2" (binary_expression "(iVar1 - param_2) - 0x1cU" (parenthesized_expression "(iVar1 - param_2)" ( (binary_expression "iVar1 - param_2" identifier - identifier) )) - number_literal) >> number_literal) )) * number_literal) & number_literal) )) + number_literal) )) * number_literal))) ;) (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" identifier = identifier) ;) (expression_statement "puVar9 = (undefined4 *)(param_2 + 0xc);" (assignment_expression "puVar9 = (undefined4 *)(param_2 + 0xc)" identifier = (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) ;) (do_statement "do {\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);" do (compound_statement "{\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    }" { (expression_statement "uVar3 = puVar9[-3];" (assignment_expression "uVar3 = puVar9[-3]" identifier = (subscript_expression "puVar9[-3]" identifier [ number_literal ])) ;) (expression_statement "puVar6[1] = puVar6 + 3;" (assignment_expression "puVar6[1] = puVar6 + 3" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = (binary_expression "puVar6 + 3" identifier + number_literal)) ;) (expression_statement "*puVar6 = uVar3;" (assignment_expression "*puVar6 = uVar3" (pointer_expression "*puVar6" * identifier) = identifier) ;) (if_statement "if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }" if (parenthesized_expression "((undefined4 *)puVar9[-2] == puVar9)" ( (binary_expression "(undefined4 *)puVar9[-2] == puVar9" (cast_expression "(undefined4 *)puVar9[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }" { (expression_statement "puVar6[3] = *puVar9;" (assignment_expression "puVar6[3] = *puVar9" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar6[4] = puVar9[1];" (assignment_expression "puVar6[4] = puVar9[1]" (subscript_expression "puVar6[4]" identifier [ number_literal ]) = (subscript_expression "puVar9[1]" identifier [ number_literal ])) ;) (expression_statement "puVar6[5] = puVar9[2];" (assignment_expression "puVar6[5] = puVar9[2]" (subscript_expression "puVar6[5]" identifier [ number_literal ]) = (subscript_expression "puVar9[2]" identifier [ number_literal ])) ;) (expression_statement "puVar6[6] = puVar9[3];" (assignment_expression "puVar6[6] = puVar9[3]" (subscript_expression "puVar6[6]" identifier [ number_literal ]) = (subscript_expression "puVar9[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }" else (compound_statement "{\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }" { (expression_statement "puVar6[1] = (undefined4 *)puVar9[-2];" (assignment_expression "puVar6[1] = (undefined4 *)puVar9[-2]" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = (cast_expression "(undefined4 *)puVar9[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar6[3] = *puVar9;" (assignment_expression "puVar6[3] = *puVar9" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = (pointer_expression "*puVar9" * identifier)) ;) }))) (expression_statement "uVar3 = puVar9[-1];" (assignment_expression "uVar3 = puVar9[-1]" identifier = (subscript_expression "puVar9[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = puVar6 + 7;" (assignment_expression "puVar5 = puVar6 + 7" identifier = (binary_expression "puVar6 + 7" identifier + number_literal)) ;) (expression_statement "puVar9[-2] = puVar9;" (assignment_expression "puVar9[-2] = puVar9" (subscript_expression "puVar9[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[-1] = 0;" (assignment_expression "puVar9[-1] = 0" (subscript_expression "puVar9[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[2] = uVar3;" (assignment_expression "puVar6[2] = uVar3" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)puVar9 = 0;" (assignment_expression "*(undefined1 *)puVar9 = 0" (pointer_expression "*(undefined1 *)puVar9" * (cast_expression "(undefined1 *)puVar9" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" identifier = identifier) ;) (expression_statement "puVar9 = puVar9 + 7;" (assignment_expression "puVar9 = puVar9 + 7" identifier = (binary_expression "puVar9 + 7" identifier + number_literal)) ;) (expression_statement "puVar7 = puVar10;" (assignment_expression "puVar7 = puVar10" identifier = identifier) ;) }) while (parenthesized_expression "(puVar5 != puVar10)" ( (binary_expression "puVar5 != puVar10" identifier != identifier) )) ;) })) (for_statement "for (; iVar4 != iVar1; iVar4 = iVar4 + 0x1c) {\n    if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }\n  }" for ( ; (binary_expression "iVar4 != iVar1" identifier != identifier) ; (assignment_expression "iVar4 = iVar4 + 0x1c" identifier = (binary_expression "iVar4 + 0x1c" identifier + number_literal)) ) (compound_statement "{\n    if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }\n  }" { (if_statement "if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }" if (parenthesized_expression "(*(int *)(iVar4 + 4) != iVar4 + 0xc)" ( (binary_expression "*(int *)(iVar4 + 4) != iVar4 + 0xc" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) != (binary_expression "iVar4 + 0xc" identifier + number_literal)) )) (compound_statement "{\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }" { (expression_statement "FUN_001807a0(*(int *)(iVar4 + 4));" (call_expression "FUN_001807a0(*(int *)(iVar4 + 4))" identifier (argument_list "(*(int *)(iVar4 + 4))" ( (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) ))) ;) })) })) (if_statement "if (iVar2 != 0) {\n    FUN_001807a0(iVar2);\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_001807a0(iVar2);\n  }" { (expression_statement "FUN_001807a0(iVar2);" (call_expression "FUN_001807a0(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) })) (expression_statement "*param_1 = (int)local_24;" (assignment_expression "*param_1 = (int)local_24" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[1] = (int)puVar7;" (assignment_expression "param_1[1] = (int)puVar7" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[2] = local_20;" (assignment_expression "param_1[2] = local_20" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Type propagation algorithm not settling */\n/* DWARF original 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  pointer ppVar2;\n  pointer ppVar3;\n  pointer pcVar4;\n  size_type sVar5;\n  size_type *psVar6;\n  pointer ppVar7;\n  int iVar8;\n  pointer ppVar9;\n  pointer ppVar10;\n  pointer ppVar11;\n  uint uVar12;\n  uint uVar13;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar14;\n  pointer ppVar15;\n  pointer local_24;\n  pointer local_20;\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  iVar8 = (int)ppVar2 - (int)ppVar3 >> 2;\n  if (iVar8 * -0x49249249 == 0) {\n    uVar12 = 1;\nLAB_00057235:\n    uVar13 = uVar12 * 0x1c;\n  }\n  else {\n    uVar12 = iVar8 * 0x6db6db6e;\n    uVar13 = 0xfffffffc;\n    if (((uint)(iVar8 * -0x49249249) < uVar12 || iVar8 * 0x49249249 == 0) && (uVar12 < 0x924924a)) {\n      if (uVar12 == 0) {\n        ppVar11 = (pointer)0x1c;\n        local_20 = (pointer)0x0;\n        local_24 = (pointer)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }\n  local_24 = (pointer)operator_new(uVar13);\n  local_20 = (pointer)((int)&local_24->first + uVar13);\n  ppVar11 = local_24 + 1;\nLAB_00057025:\n  piVar1 = (int *)((int)local_24 + ((int)__position._M_current - (int)ppVar3));\n  pcVar4 = (__args_0->second)._M_dataplus._M_p;\n  *piVar1 = __args_0->first;\n  paVar14 = &(__args_0->second).field_2;\n  piVar1[1] = (int)(piVar1 + 3);\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar4 == paVar14) {\n    piVar1[3] = (__args_0->second).field_2._M_allocated_capacity;\n    piVar1[4] = *(int *)((int)&(__args_0->second).field_2 + 4);\n    piVar1[5] = *(int *)((int)&(__args_0->second).field_2 + 8);\n    piVar1[6] = *(int *)((int)&(__args_0->second).field_2 + 0xc);\n  }\n  else {\n    piVar1[1] = (int)pcVar4;\n    piVar1[3] = (__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)paVar14;\n  (__args_0->second)._M_string_length = 0;\n  (__args_0->second).field_2._M_local_buf[0] = '\0';\n  piVar1[2] = sVar5;\n  if (__position._M_current != ppVar3) {\n    ppVar7 = local_24;\n    paVar14 = &(ppVar3->second).field_2;\n    do {\n      ppVar11 = ppVar7;\n      iVar8 = *(int *)((int)paVar14 + -0xc);\n      (ppVar11->second)._M_dataplus._M_p = (pointer)&(ppVar11->second).field_2;\n      ppVar11->first = iVar8;\n      pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar14) {\n        (ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 4) = *(undefined4 *)((int)paVar14 + 4);\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 8) = *(undefined4 *)((int)paVar14 + 8);\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 0xc) = *(undefined4 *)((int)paVar14 + 0xc)\n        ;\n      }\n      else {\n        (ppVar11->second)._M_dataplus._M_p = pcVar4;\n        (ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      (ppVar11->second)._M_string_length = *(size_type *)((int)paVar14 + -4);\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      paVar14->_M_local_buf[0] = '\0';\n      ppVar7 = ppVar11 + 1;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x1c);\n    } while (ppVar11 + 1 !=\n             local_24 +\n             (((uint)((int)__position._M_current + (-0x1c - (int)ppVar3)) >> 2) * 0x36db6db7 &\n             0x3fffffff) + 1);\n    ppVar11 = ppVar11 + 2;\n  }\n  ppVar7 = ppVar3;\n  if (__position._M_current != ppVar2) {\n    ppVar15 = ppVar11 + (((uint)((int)ppVar2 + (-0x1c - (int)__position._M_current)) >> 2) *\n                         0x36db6db7 & 0x3fffffff) + 1;\n    ppVar10 = ppVar11;\n    paVar14 = &((__position._M_current)->second).field_2;\n    do {\n      sVar5 = *(size_type *)((int)paVar14 + -0xc);\n      (ppVar10->second)._M_dataplus._M_p = (pointer)&(ppVar10->second).field_2;\n      ppVar10->first = sVar5;\n      psVar6 = (size_type *)\n               (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar6 == paVar14) {\n        (ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(size_type *)((int)&(ppVar10->second).field_2 + 4) = *(size_type *)((int)paVar14 + 4);\n        *(size_type *)((int)&(ppVar10->second).field_2 + 8) = *(size_type *)((int)paVar14 + 8);\n        *(size_type *)((int)&(ppVar10->second).field_2 + 0xc) = *(size_type *)((int)paVar14 + 0xc);\n      }\n      else {\n        (ppVar10->second)._M_dataplus._M_p = (pointer)psVar6;\n        (ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      sVar5 = *(size_type *)((int)paVar14 + -4);\n      ppVar9 = ppVar10 + 1;\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      (ppVar10->second)._M_string_length = sVar5;\n      paVar14->_M_local_buf[0] = '\0';\n      ppVar10 = ppVar9;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x1c);\n      ppVar11 = ppVar15;\n    } while (ppVar9 != 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 != (pointer)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 = local_24;\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 = ppVar11;\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_20;\n  return;\n}\n\n" comment comment 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) ;) (declaration "pointer ppVar2;" type_identifier identifier ;) (declaration "pointer ppVar3;" type_identifier identifier ;) (declaration "pointer pcVar4;" type_identifier identifier ;) (declaration "size_type sVar5;" type_identifier identifier ;) (declaration "size_type *psVar6;" type_identifier (pointer_declarator "*psVar6" * identifier) ;) (declaration "pointer ppVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "pointer ppVar9;" type_identifier identifier ;) (declaration "pointer ppVar10;" type_identifier identifier ;) (declaration "pointer ppVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (ERROR "anon_union_16_2_edb7204a_for_basic_string<char," (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) ,) (labeled_statement "_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar14;" statement_identifier (ERROR "::char_traits<char>,_std:" : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) :) : (expression_statement "allocator<char>_>_9\n  *paVar14;" (binary_expression "allocator<char>_>_9\n  *paVar14" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar14" identifier * identifier)) ;)) (declaration "pointer ppVar15;" type_identifier identifier ;) (declaration "pointer local_24;" type_identifier identifier ;) (declaration "pointer local_20;" 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 "iVar8 = (int)ppVar2 - (int)ppVar3 >> 2;" (assignment_expression "iVar8 = (int)ppVar2 - (int)ppVar3 >> 2" identifier = (binary_expression "(int)ppVar2 - (int)ppVar3 >> 2" (binary_expression "(int)ppVar2 - (int)ppVar3" (cast_expression "(int)ppVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)ppVar3" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (if_statement "if (iVar8 * -0x49249249 == 0) {\n    uVar12 = 1;\nLAB_00057235:\n    uVar13 = uVar12 * 0x1c;\n  }\n  else {\n    uVar12 = iVar8 * 0x6db6db6e;\n    uVar13 = 0xfffffffc;\n    if (((uint)(iVar8 * -0x49249249) < uVar12 || iVar8 * 0x49249249 == 0) && (uVar12 < 0x924924a)) {\n      if (uVar12 == 0) {\n        ppVar11 = (pointer)0x1c;\n        local_20 = (pointer)0x0;\n        local_24 = (pointer)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }" if (parenthesized_expression "(iVar8 * -0x49249249 == 0)" ( (binary_expression "iVar8 * -0x49249249 == 0" (binary_expression "iVar8 * -0x49249249" identifier * number_literal) == number_literal) )) (compound_statement "{\n    uVar12 = 1;\nLAB_00057235:\n    uVar13 = uVar12 * 0x1c;\n  }" { (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00057235:\n    uVar13 = uVar12 * 0x1c;" statement_identifier : (expression_statement "uVar13 = uVar12 * 0x1c;" (assignment_expression "uVar13 = uVar12 * 0x1c" identifier = (binary_expression "uVar12 * 0x1c" identifier * number_literal)) ;)) }) (else_clause "else {\n    uVar12 = iVar8 * 0x6db6db6e;\n    uVar13 = 0xfffffffc;\n    if (((uint)(iVar8 * -0x49249249) < uVar12 || iVar8 * 0x49249249 == 0) && (uVar12 < 0x924924a)) {\n      if (uVar12 == 0) {\n        ppVar11 = (pointer)0x1c;\n        local_20 = (pointer)0x0;\n        local_24 = (pointer)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }" else (compound_statement "{\n    uVar12 = iVar8 * 0x6db6db6e;\n    uVar13 = 0xfffffffc;\n    if (((uint)(iVar8 * -0x49249249) < uVar12 || iVar8 * 0x49249249 == 0) && (uVar12 < 0x924924a)) {\n      if (uVar12 == 0) {\n        ppVar11 = (pointer)0x1c;\n        local_20 = (pointer)0x0;\n        local_24 = (pointer)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }" { (expression_statement "uVar12 = iVar8 * 0x6db6db6e;" (assignment_expression "uVar12 = iVar8 * 0x6db6db6e" identifier = (binary_expression "iVar8 * 0x6db6db6e" identifier * number_literal)) ;) (expression_statement "uVar13 = 0xfffffffc;" (assignment_expression "uVar13 = 0xfffffffc" identifier = number_literal) ;) (if_statement "if (((uint)(iVar8 * -0x49249249) < uVar12 || iVar8 * 0x49249249 == 0) && (uVar12 < 0x924924a)) {\n      if (uVar12 == 0) {\n        ppVar11 = (pointer)0x1c;\n        local_20 = (pointer)0x0;\n        local_24 = (pointer)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }" if (parenthesized_expression "(((uint)(iVar8 * -0x49249249) < uVar12 || iVar8 * 0x49249249 == 0) && (uVar12 < 0x924924a))" ( (binary_expression "((uint)(iVar8 * -0x49249249) < uVar12 || iVar8 * 0x49249249 == 0) && (uVar12 < 0x924924a)" (parenthesized_expression "((uint)(iVar8 * -0x49249249) < uVar12 || iVar8 * 0x49249249 == 0)" ( (binary_expression "(uint)(iVar8 * -0x49249249) < uVar12 || iVar8 * 0x49249249 == 0" (binary_expression "(uint)(iVar8 * -0x49249249) < uVar12" (call_expression "(uint)(iVar8 * -0x49249249)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar8 * -0x49249249)" ( (binary_expression "iVar8 * -0x49249249" identifier * number_literal) ))) < identifier) || (binary_expression "iVar8 * 0x49249249 == 0" (binary_expression "iVar8 * 0x49249249" identifier * number_literal) == number_literal)) )) && (parenthesized_expression "(uVar12 < 0x924924a)" ( (binary_expression "uVar12 < 0x924924a" identifier < number_literal) ))) )) (compound_statement "{\n      if (uVar12 == 0) {\n        ppVar11 = (pointer)0x1c;\n        local_20 = (pointer)0x0;\n        local_24 = (pointer)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }" { (if_statement "if (uVar12 == 0) {\n        ppVar11 = (pointer)0x1c;\n        local_20 = (pointer)0x0;\n        local_24 = (pointer)0x0;\n        goto LAB_00057025;\n      }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n        ppVar11 = (pointer)0x1c;\n        local_20 = (pointer)0x0;\n        local_24 = (pointer)0x0;\n        goto LAB_00057025;\n      }" { (expression_statement "ppVar11 = (pointer)0x1c;" (assignment_expression "ppVar11 = (pointer)0x1c" identifier = (cast_expression "(pointer)0x1c" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "local_20 = (pointer)0x0;" (assignment_expression "local_20 = (pointer)0x0" identifier = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "local_24 = (pointer)0x0;" (assignment_expression "local_24 = (pointer)0x0" identifier = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (goto_statement "goto LAB_00057025;" goto statement_identifier ;) })) (goto_statement "goto LAB_00057235;" goto statement_identifier ;) })) }))) (expression_statement "local_24 = (pointer)operator_new(uVar13);" (assignment_expression "local_24 = (pointer)operator_new(uVar13)" identifier = (cast_expression "(pointer)operator_new(uVar13)" ( (type_descriptor "pointer" type_identifier) ) (call_expression "operator_new(uVar13)" identifier (argument_list "(uVar13)" ( identifier ))))) ;) (expression_statement "local_20 = (pointer)((int)&local_24->first + uVar13);" (assignment_expression "local_20 = (pointer)((int)&local_24->first + uVar13)" identifier = (call_expression "(pointer)((int)&local_24->first + uVar13)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((int)&local_24->first + uVar13)" ( (binary_expression "(int)&local_24->first + uVar13" (cast_expression "(int)&local_24->first" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_24->first" & (field_expression "local_24->first" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "ppVar11 = local_24 + 1;" (assignment_expression "ppVar11 = local_24 + 1" identifier = (binary_expression "local_24 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_00057025:\n  piVar1 = (int *)((int)local_24 + ((int)__position._M_current - (int)ppVar3));" statement_identifier : (expression_statement "piVar1 = (int *)((int)local_24 + ((int)__position._M_current - (int)ppVar3));" (assignment_expression "piVar1 = (int *)((int)local_24 + ((int)__position._M_current - (int)ppVar3))" identifier = (cast_expression "(int *)((int)local_24 + ((int)__position._M_current - (int)ppVar3))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_24 + ((int)__position._M_current - (int)ppVar3))" ( (binary_expression "(int)local_24 + ((int)__position._M_current - (int)ppVar3)" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((int)__position._M_current - (int)ppVar3)" ( (binary_expression "(int)__position._M_current - (int)ppVar3" (cast_expression "(int)__position._M_current" ( (type_descriptor "int" primitive_type) ) (field_expression "__position._M_current" identifier . field_identifier)) - (cast_expression "(int)ppVar3" ( (type_descriptor "int" primitive_type) ) 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 "paVar14 = &(__args_0->second).field_2;" (assignment_expression "paVar14 = &(__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))) ;) (expression_statement "piVar1[1] = (int)(piVar1 + 3);" (assignment_expression "piVar1[1] = (int)(piVar1 + 3)" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = (cast_expression "(int)(piVar1 + 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar1 + 3)" ( (binary_expression "piVar1 + 3" identifier + number_literal) )))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar4 == paVar14) {\n    piVar1[3] = (__args_0->second).field_2._M_allocated_capacity;\n    piVar1[4] = *(int *)((int)&(__args_0->second).field_2 + 4);\n    piVar1[5] = *(int *)((int)&(__args_0->second).field_2 + 8);\n    piVar1[6] = *(int *)((int)&(__args_0->second).field_2 + 0xc);\n  }\n  else {\n    piVar1[1] = (int)pcVar4;\n    piVar1[3] = (__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 == paVar14)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar4 == paVar14)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)pcVar4 == paVar14" (binary_expression "allocator<char>_>_9\n       *)pcVar4" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)pcVar4" identifier * (ERROR ")" )) identifier)) == identifier) )) )) (compound_statement "{\n    piVar1[3] = (__args_0->second).field_2._M_allocated_capacity;\n    piVar1[4] = *(int *)((int)&(__args_0->second).field_2 + 4);\n    piVar1[5] = *(int *)((int)&(__args_0->second).field_2 + 8);\n    piVar1[6] = *(int *)((int)&(__args_0->second).field_2 + 0xc);\n  }" { (expression_statement "piVar1[3] = (__args_0->second).field_2._M_allocated_capacity;" (assignment_expression "piVar1[3] = (__args_0->second).field_2._M_allocated_capacity" (subscript_expression "piVar1[3]" 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 "piVar1[4] = *(int *)((int)&(__args_0->second).field_2 + 4);" (assignment_expression "piVar1[4] = *(int *)((int)&(__args_0->second).field_2 + 4)" (subscript_expression "piVar1[4]" identifier [ number_literal ]) = (pointer_expression "*(int *)((int)&(__args_0->second).field_2 + 4)" * (cast_expression "(int *)((int)&(__args_0->second).field_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(__args_0->second).field_2 + 4)" ( (binary_expression "(int)&(__args_0->second).field_2 + 4" (cast_expression "(int)&(__args_0->second).field_2" ( (type_descriptor "int" primitive_type) ) (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 "piVar1[5] = *(int *)((int)&(__args_0->second).field_2 + 8);" (assignment_expression "piVar1[5] = *(int *)((int)&(__args_0->second).field_2 + 8)" (subscript_expression "piVar1[5]" identifier [ number_literal ]) = (pointer_expression "*(int *)((int)&(__args_0->second).field_2 + 8)" * (cast_expression "(int *)((int)&(__args_0->second).field_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(__args_0->second).field_2 + 8)" ( (binary_expression "(int)&(__args_0->second).field_2 + 8" (cast_expression "(int)&(__args_0->second).field_2" ( (type_descriptor "int" primitive_type) ) (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 "piVar1[6] = *(int *)((int)&(__args_0->second).field_2 + 0xc);" (assignment_expression "piVar1[6] = *(int *)((int)&(__args_0->second).field_2 + 0xc)" (subscript_expression "piVar1[6]" identifier [ number_literal ]) = (pointer_expression "*(int *)((int)&(__args_0->second).field_2 + 0xc)" * (cast_expression "(int *)((int)&(__args_0->second).field_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(__args_0->second).field_2 + 0xc)" ( (binary_expression "(int)&(__args_0->second).field_2 + 0xc" (cast_expression "(int)&(__args_0->second).field_2" ( (type_descriptor "int" primitive_type) ) (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) ))))) ;) }) (else_clause "else {\n    piVar1[1] = (int)pcVar4;\n    piVar1[3] = (__args_0->second).field_2._M_allocated_capacity;\n  }" else (compound_statement "{\n    piVar1[1] = (int)pcVar4;\n    piVar1[3] = (__args_0->second).field_2._M_allocated_capacity;\n  }" { (expression_statement "piVar1[1] = (int)pcVar4;" (assignment_expression "piVar1[1] = (int)pcVar4" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar1[3] = (__args_0->second).field_2._M_allocated_capacity;" (assignment_expression "piVar1[3] = (__args_0->second).field_2._M_allocated_capacity" (subscript_expression "piVar1[3]" 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)paVar14;" (assignment_expression "(__args_0->second)._M_dataplus._M_p = (pointer)paVar14" (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)paVar14" ( (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 "(__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 ')) ;) (expression_statement "piVar1[2] = sVar5;" (assignment_expression "piVar1[2] = sVar5" (subscript_expression "piVar1[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (__position._M_current != ppVar3) {\n    ppVar7 = local_24;\n    paVar14 = &(ppVar3->second).field_2;\n    do {\n      ppVar11 = ppVar7;\n      iVar8 = *(int *)((int)paVar14 + -0xc);\n      (ppVar11->second)._M_dataplus._M_p = (pointer)&(ppVar11->second).field_2;\n      ppVar11->first = iVar8;\n      pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar14) {\n        (ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 4) = *(undefined4 *)((int)paVar14 + 4);\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 8) = *(undefined4 *)((int)paVar14 + 8);\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 0xc) = *(undefined4 *)((int)paVar14 + 0xc)\n        ;\n      }\n      else {\n        (ppVar11->second)._M_dataplus._M_p = pcVar4;\n        (ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      (ppVar11->second)._M_string_length = *(size_type *)((int)paVar14 + -4);\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      paVar14->_M_local_buf[0] = '\0';\n      ppVar7 = ppVar11 + 1;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x1c);\n    } while (ppVar11 + 1 !=\n             local_24 +\n             (((uint)((int)__position._M_current + (-0x1c - (int)ppVar3)) >> 2) * 0x36db6db7 &\n             0x3fffffff) + 1);\n    ppVar11 = ppVar11 + 2;\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    ppVar7 = local_24;\n    paVar14 = &(ppVar3->second).field_2;\n    do {\n      ppVar11 = ppVar7;\n      iVar8 = *(int *)((int)paVar14 + -0xc);\n      (ppVar11->second)._M_dataplus._M_p = (pointer)&(ppVar11->second).field_2;\n      ppVar11->first = iVar8;\n      pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar14) {\n        (ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 4) = *(undefined4 *)((int)paVar14 + 4);\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 8) = *(undefined4 *)((int)paVar14 + 8);\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 0xc) = *(undefined4 *)((int)paVar14 + 0xc)\n        ;\n      }\n      else {\n        (ppVar11->second)._M_dataplus._M_p = pcVar4;\n        (ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      (ppVar11->second)._M_string_length = *(size_type *)((int)paVar14 + -4);\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      paVar14->_M_local_buf[0] = '\0';\n      ppVar7 = ppVar11 + 1;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x1c);\n    } while (ppVar11 + 1 !=\n             local_24 +\n             (((uint)((int)__position._M_current + (-0x1c - (int)ppVar3)) >> 2) * 0x36db6db7 &\n             0x3fffffff) + 1);\n    ppVar11 = ppVar11 + 2;\n  }" { (expression_statement "ppVar7 = local_24;" (assignment_expression "ppVar7 = local_24" identifier = identifier) ;) (expression_statement "paVar14 = &(ppVar3->second).field_2;" (assignment_expression "paVar14 = &(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))) ;) (do_statement "do {\n      ppVar11 = ppVar7;\n      iVar8 = *(int *)((int)paVar14 + -0xc);\n      (ppVar11->second)._M_dataplus._M_p = (pointer)&(ppVar11->second).field_2;\n      ppVar11->first = iVar8;\n      pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar14) {\n        (ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 4) = *(undefined4 *)((int)paVar14 + 4);\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 8) = *(undefined4 *)((int)paVar14 + 8);\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 0xc) = *(undefined4 *)((int)paVar14 + 0xc)\n        ;\n      }\n      else {\n        (ppVar11->second)._M_dataplus._M_p = pcVar4;\n        (ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      (ppVar11->second)._M_string_length = *(size_type *)((int)paVar14 + -4);\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      paVar14->_M_local_buf[0] = '\0';\n      ppVar7 = ppVar11 + 1;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x1c);\n    } while (ppVar11 + 1 !=\n             local_24 +\n             (((uint)((int)__position._M_current + (-0x1c - (int)ppVar3)) >> 2) * 0x36db6db7 &\n             0x3fffffff) + 1);" do (compound_statement "{\n      ppVar11 = ppVar7;\n      iVar8 = *(int *)((int)paVar14 + -0xc);\n      (ppVar11->second)._M_dataplus._M_p = (pointer)&(ppVar11->second).field_2;\n      ppVar11->first = iVar8;\n      pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar14) {\n        (ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 4) = *(undefined4 *)((int)paVar14 + 4);\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 8) = *(undefined4 *)((int)paVar14 + 8);\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 0xc) = *(undefined4 *)((int)paVar14 + 0xc)\n        ;\n      }\n      else {\n        (ppVar11->second)._M_dataplus._M_p = pcVar4;\n        (ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      (ppVar11->second)._M_string_length = *(size_type *)((int)paVar14 + -4);\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      paVar14->_M_local_buf[0] = '\0';\n      ppVar7 = ppVar11 + 1;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x1c);\n    }" { (expression_statement "ppVar11 = ppVar7;" (assignment_expression "ppVar11 = ppVar7" identifier = identifier) ;) (expression_statement "iVar8 = *(int *)((int)paVar14 + -0xc);" (assignment_expression "iVar8 = *(int *)((int)paVar14 + -0xc)" identifier = (pointer_expression "*(int *)((int)paVar14 + -0xc)" * (cast_expression "(int *)((int)paVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -0xc)" ( (binary_expression "(int)paVar14 + -0xc" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "(ppVar11->second)._M_dataplus._M_p = (pointer)&(ppVar11->second).field_2;" (assignment_expression "(ppVar11->second)._M_dataplus._M_p = (pointer)&(ppVar11->second).field_2" (field_expression "(ppVar11->second)._M_dataplus._M_p" (field_expression "(ppVar11->second)._M_dataplus" (parenthesized_expression "(ppVar11->second)" ( (field_expression "ppVar11->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(ppVar11->second).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(ppVar11->second).field_2" (parenthesized_expression "(ppVar11->second)" ( (field_expression "ppVar11->second" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "ppVar11->first = iVar8;" (assignment_expression "ppVar11->first = iVar8" (field_expression "ppVar11->first" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)._M_p;" (assignment_expression "pcVar4 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)._M_p" identifier = (field_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)._M_p" (parenthesized_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)" ( (field_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus" (parenthesized_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))" ( (call_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8)" (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 "((int)paVar14 + -8)" ( (binary_expression "(int)paVar14 + -8" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )) -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar14) {\n        (ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 4) = *(undefined4 *)((int)paVar14 + 4);\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 8) = *(undefined4 *)((int)paVar14 + 8);\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 0xc) = *(undefined4 *)((int)paVar14 + 0xc)\n        ;\n      }\n      else {\n        (ppVar11->second)._M_dataplus._M_p = pcVar4;\n        (ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar14)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 == paVar14)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n           *)pcVar4 == paVar14" (binary_expression "allocator<char>_>_9\n           *)pcVar4" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)pcVar4" identifier * (ERROR ")" )) identifier)) == identifier) )) )) (compound_statement "{\n        (ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 4) = *(undefined4 *)((int)paVar14 + 4);\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 8) = *(undefined4 *)((int)paVar14 + 8);\n        *(undefined4 *)((int)&(ppVar11->second).field_2 + 0xc) = *(undefined4 *)((int)paVar14 + 0xc)\n        ;\n      }" { (expression_statement "(ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;" (assignment_expression "(ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity" (field_expression "(ppVar11->second).field_2._M_allocated_capacity" (field_expression "(ppVar11->second).field_2" (parenthesized_expression "(ppVar11->second)" ( (field_expression "ppVar11->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar14->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&(ppVar11->second).field_2 + 4) = *(undefined4 *)((int)paVar14 + 4);" (assignment_expression "*(undefined4 *)((int)&(ppVar11->second).field_2 + 4) = *(undefined4 *)((int)paVar14 + 4)" (pointer_expression "*(undefined4 *)((int)&(ppVar11->second).field_2 + 4)" * (cast_expression "(undefined4 *)((int)&(ppVar11->second).field_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(ppVar11->second).field_2 + 4)" ( (binary_expression "(int)&(ppVar11->second).field_2 + 4" (cast_expression "(int)&(ppVar11->second).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(ppVar11->second).field_2" & (field_expression "(ppVar11->second).field_2" (parenthesized_expression "(ppVar11->second)" ( (field_expression "ppVar11->second" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)paVar14 + 4)" * (cast_expression "(undefined4 *)((int)paVar14 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + 4)" ( (binary_expression "(int)paVar14 + 4" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)&(ppVar11->second).field_2 + 8) = *(undefined4 *)((int)paVar14 + 8);" (assignment_expression "*(undefined4 *)((int)&(ppVar11->second).field_2 + 8) = *(undefined4 *)((int)paVar14 + 8)" (pointer_expression "*(undefined4 *)((int)&(ppVar11->second).field_2 + 8)" * (cast_expression "(undefined4 *)((int)&(ppVar11->second).field_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(ppVar11->second).field_2 + 8)" ( (binary_expression "(int)&(ppVar11->second).field_2 + 8" (cast_expression "(int)&(ppVar11->second).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(ppVar11->second).field_2" & (field_expression "(ppVar11->second).field_2" (parenthesized_expression "(ppVar11->second)" ( (field_expression "ppVar11->second" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)paVar14 + 8)" * (cast_expression "(undefined4 *)((int)paVar14 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + 8)" ( (binary_expression "(int)paVar14 + 8" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)&(ppVar11->second).field_2 + 0xc) = *(undefined4 *)((int)paVar14 + 0xc)\n        ;" (assignment_expression "*(undefined4 *)((int)&(ppVar11->second).field_2 + 0xc) = *(undefined4 *)((int)paVar14 + 0xc)" (pointer_expression "*(undefined4 *)((int)&(ppVar11->second).field_2 + 0xc)" * (cast_expression "(undefined4 *)((int)&(ppVar11->second).field_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(ppVar11->second).field_2 + 0xc)" ( (binary_expression "(int)&(ppVar11->second).field_2 + 0xc" (cast_expression "(int)&(ppVar11->second).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(ppVar11->second).field_2" & (field_expression "(ppVar11->second).field_2" (parenthesized_expression "(ppVar11->second)" ( (field_expression "ppVar11->second" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)paVar14 + 0xc)" * (cast_expression "(undefined4 *)((int)paVar14 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + 0xc)" ( (binary_expression "(int)paVar14 + 0xc" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n        (ppVar11->second)._M_dataplus._M_p = pcVar4;\n        (ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }" else (compound_statement "{\n        (ppVar11->second)._M_dataplus._M_p = pcVar4;\n        (ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }" { (expression_statement "(ppVar11->second)._M_dataplus._M_p = pcVar4;" (assignment_expression "(ppVar11->second)._M_dataplus._M_p = pcVar4" (field_expression "(ppVar11->second)._M_dataplus._M_p" (field_expression "(ppVar11->second)._M_dataplus" (parenthesized_expression "(ppVar11->second)" ( (field_expression "ppVar11->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;" (assignment_expression "(ppVar11->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity" (field_expression "(ppVar11->second).field_2._M_allocated_capacity" (field_expression "(ppVar11->second).field_2" (parenthesized_expression "(ppVar11->second)" ( (field_expression "ppVar11->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar14->_M_allocated_capacity" identifier -> field_identifier)) ;) }))) (expression_statement "(ppVar11->second)._M_string_length = *(size_type *)((int)paVar14 + -4);" (assignment_expression "(ppVar11->second)._M_string_length = *(size_type *)((int)paVar14 + -4)" (field_expression "(ppVar11->second)._M_string_length" (parenthesized_expression "(ppVar11->second)" ( (field_expression "ppVar11->second" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(size_type *)((int)paVar14 + -4)" * (cast_expression "(size_type *)((int)paVar14 + -4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -4)" ( (binary_expression "(int)paVar14 + -4" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus)._M_p = (pointer)paVar14;" (assignment_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus)._M_p = (pointer)paVar14" (field_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus)._M_p" (parenthesized_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus)" ( (field_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus" (parenthesized_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))" ( (call_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8)" (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 "((int)paVar14 + -8)" ( (binary_expression "(int)paVar14 + -8" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )) -> field_identifier) )) . field_identifier) = (cast_expression "(pointer)paVar14" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "*(size_type *)((int)paVar14 + -4) = 0;" (assignment_expression "*(size_type *)((int)paVar14 + -4) = 0" (pointer_expression "*(size_type *)((int)paVar14 + -4)" * (cast_expression "(size_type *)((int)paVar14 + -4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -4)" ( (binary_expression "(int)paVar14 + -4" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "paVar14->_M_local_buf[0] = '\0';" (assignment_expression "paVar14->_M_local_buf[0] = '\0'" (subscript_expression "paVar14->_M_local_buf[0]" (field_expression "paVar14->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "ppVar7 = ppVar11 + 1;" (assignment_expression "ppVar7 = ppVar11 + 1" identifier = (binary_expression "ppVar11 + 1" identifier + number_literal)) ;) (expression_statement "paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x1c);" (assignment_expression "paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x1c)" identifier = (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x1c)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) (ERROR "*" *) )) (argument_list "((int)paVar14 + 0x1c)" ( (binary_expression "(int)paVar14 + 0x1c" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(ppVar11 + 1 !=\n             local_24 +\n             (((uint)((int)__position._M_current + (-0x1c - (int)ppVar3)) >> 2) * 0x36db6db7 &\n             0x3fffffff) + 1)" ( (binary_expression "ppVar11 + 1 !=\n             local_24 +\n             (((uint)((int)__position._M_current + (-0x1c - (int)ppVar3)) >> 2) * 0x36db6db7 &\n             0x3fffffff) + 1" (binary_expression "ppVar11 + 1" identifier + number_literal) != (binary_expression "local_24 +\n             (((uint)((int)__position._M_current + (-0x1c - (int)ppVar3)) >> 2) * 0x36db6db7 &\n             0x3fffffff) + 1" (binary_expression "local_24 +\n             (((uint)((int)__position._M_current + (-0x1c - (int)ppVar3)) >> 2) * 0x36db6db7 &\n             0x3fffffff)" identifier + (parenthesized_expression "(((uint)((int)__position._M_current + (-0x1c - (int)ppVar3)) >> 2) * 0x36db6db7 &\n             0x3fffffff)" ( (binary_expression "((uint)((int)__position._M_current + (-0x1c - (int)ppVar3)) >> 2) * 0x36db6db7 &\n             0x3fffffff" (binary_expression "((uint)((int)__position._M_current + (-0x1c - (int)ppVar3)) >> 2) * 0x36db6db7" (parenthesized_expression "((uint)((int)__position._M_current + (-0x1c - (int)ppVar3)) >> 2)" ( (binary_expression "(uint)((int)__position._M_current + (-0x1c - (int)ppVar3)) >> 2" (call_expression "(uint)((int)__position._M_current + (-0x1c - (int)ppVar3))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)__position._M_current + (-0x1c - (int)ppVar3))" ( (binary_expression "(int)__position._M_current + (-0x1c - (int)ppVar3)" (cast_expression "(int)__position._M_current" ( (type_descriptor "int" primitive_type) ) (field_expression "__position._M_current" identifier . field_identifier)) + (parenthesized_expression "(-0x1c - (int)ppVar3)" ( (binary_expression "-0x1c - (int)ppVar3" number_literal - (cast_expression "(int)ppVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) >> number_literal) )) * number_literal) & number_literal) ))) + number_literal)) )) ;) (expression_statement "ppVar11 = ppVar11 + 2;" (assignment_expression "ppVar11 = ppVar11 + 2" identifier = (binary_expression "ppVar11 + 2" identifier + number_literal)) ;) })) (expression_statement "ppVar7 = ppVar3;" (assignment_expression "ppVar7 = ppVar3" identifier = identifier) ;) (if_statement "if (__position._M_current != ppVar2) {\n    ppVar15 = ppVar11 + (((uint)((int)ppVar2 + (-0x1c - (int)__position._M_current)) >> 2) *\n                         0x36db6db7 & 0x3fffffff) + 1;\n    ppVar10 = ppVar11;\n    paVar14 = &((__position._M_current)->second).field_2;\n    do {\n      sVar5 = *(size_type *)((int)paVar14 + -0xc);\n      (ppVar10->second)._M_dataplus._M_p = (pointer)&(ppVar10->second).field_2;\n      ppVar10->first = sVar5;\n      psVar6 = (size_type *)\n               (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar6 == paVar14) {\n        (ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(size_type *)((int)&(ppVar10->second).field_2 + 4) = *(size_type *)((int)paVar14 + 4);\n        *(size_type *)((int)&(ppVar10->second).field_2 + 8) = *(size_type *)((int)paVar14 + 8);\n        *(size_type *)((int)&(ppVar10->second).field_2 + 0xc) = *(size_type *)((int)paVar14 + 0xc);\n      }\n      else {\n        (ppVar10->second)._M_dataplus._M_p = (pointer)psVar6;\n        (ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      sVar5 = *(size_type *)((int)paVar14 + -4);\n      ppVar9 = ppVar10 + 1;\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      (ppVar10->second)._M_string_length = sVar5;\n      paVar14->_M_local_buf[0] = '\0';\n      ppVar10 = ppVar9;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x1c);\n      ppVar11 = ppVar15;\n    } while (ppVar9 != 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 = ppVar11 + (((uint)((int)ppVar2 + (-0x1c - (int)__position._M_current)) >> 2) *\n                         0x36db6db7 & 0x3fffffff) + 1;\n    ppVar10 = ppVar11;\n    paVar14 = &((__position._M_current)->second).field_2;\n    do {\n      sVar5 = *(size_type *)((int)paVar14 + -0xc);\n      (ppVar10->second)._M_dataplus._M_p = (pointer)&(ppVar10->second).field_2;\n      ppVar10->first = sVar5;\n      psVar6 = (size_type *)\n               (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar6 == paVar14) {\n        (ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(size_type *)((int)&(ppVar10->second).field_2 + 4) = *(size_type *)((int)paVar14 + 4);\n        *(size_type *)((int)&(ppVar10->second).field_2 + 8) = *(size_type *)((int)paVar14 + 8);\n        *(size_type *)((int)&(ppVar10->second).field_2 + 0xc) = *(size_type *)((int)paVar14 + 0xc);\n      }\n      else {\n        (ppVar10->second)._M_dataplus._M_p = (pointer)psVar6;\n        (ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      sVar5 = *(size_type *)((int)paVar14 + -4);\n      ppVar9 = ppVar10 + 1;\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      (ppVar10->second)._M_string_length = sVar5;\n      paVar14->_M_local_buf[0] = '\0';\n      ppVar10 = ppVar9;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x1c);\n      ppVar11 = ppVar15;\n    } while (ppVar9 != ppVar15);\n  }" { (expression_statement "ppVar15 = ppVar11 + (((uint)((int)ppVar2 + (-0x1c - (int)__position._M_current)) >> 2) *\n                         0x36db6db7 & 0x3fffffff) + 1;" (assignment_expression "ppVar15 = ppVar11 + (((uint)((int)ppVar2 + (-0x1c - (int)__position._M_current)) >> 2) *\n                         0x36db6db7 & 0x3fffffff) + 1" identifier = (binary_expression "ppVar11 + (((uint)((int)ppVar2 + (-0x1c - (int)__position._M_current)) >> 2) *\n                         0x36db6db7 & 0x3fffffff) + 1" (binary_expression "ppVar11 + (((uint)((int)ppVar2 + (-0x1c - (int)__position._M_current)) >> 2) *\n                         0x36db6db7 & 0x3fffffff)" identifier + (parenthesized_expression "(((uint)((int)ppVar2 + (-0x1c - (int)__position._M_current)) >> 2) *\n                         0x36db6db7 & 0x3fffffff)" ( (binary_expression "((uint)((int)ppVar2 + (-0x1c - (int)__position._M_current)) >> 2) *\n                         0x36db6db7 & 0x3fffffff" (binary_expression "((uint)((int)ppVar2 + (-0x1c - (int)__position._M_current)) >> 2) *\n                         0x36db6db7" (parenthesized_expression "((uint)((int)ppVar2 + (-0x1c - (int)__position._M_current)) >> 2)" ( (binary_expression "(uint)((int)ppVar2 + (-0x1c - (int)__position._M_current)) >> 2" (call_expression "(uint)((int)ppVar2 + (-0x1c - (int)__position._M_current))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)ppVar2 + (-0x1c - (int)__position._M_current))" ( (binary_expression "(int)ppVar2 + (-0x1c - (int)__position._M_current)" (cast_expression "(int)ppVar2" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-0x1c - (int)__position._M_current)" ( (binary_expression "-0x1c - (int)__position._M_current" number_literal - (cast_expression "(int)__position._M_current" ( (type_descriptor "int" primitive_type) ) (field_expression "__position._M_current" identifier . field_identifier))) ))) ))) >> number_literal) )) * number_literal) & number_literal) ))) + number_literal)) ;) (expression_statement "ppVar10 = ppVar11;" (assignment_expression "ppVar10 = ppVar11" identifier = identifier) ;) (expression_statement "paVar14 = &((__position._M_current)->second).field_2;" (assignment_expression "paVar14 = &((__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))) ;) (do_statement "do {\n      sVar5 = *(size_type *)((int)paVar14 + -0xc);\n      (ppVar10->second)._M_dataplus._M_p = (pointer)&(ppVar10->second).field_2;\n      ppVar10->first = sVar5;\n      psVar6 = (size_type *)\n               (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar6 == paVar14) {\n        (ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(size_type *)((int)&(ppVar10->second).field_2 + 4) = *(size_type *)((int)paVar14 + 4);\n        *(size_type *)((int)&(ppVar10->second).field_2 + 8) = *(size_type *)((int)paVar14 + 8);\n        *(size_type *)((int)&(ppVar10->second).field_2 + 0xc) = *(size_type *)((int)paVar14 + 0xc);\n      }\n      else {\n        (ppVar10->second)._M_dataplus._M_p = (pointer)psVar6;\n        (ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      sVar5 = *(size_type *)((int)paVar14 + -4);\n      ppVar9 = ppVar10 + 1;\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      (ppVar10->second)._M_string_length = sVar5;\n      paVar14->_M_local_buf[0] = '\0';\n      ppVar10 = ppVar9;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x1c);\n      ppVar11 = ppVar15;\n    } while (ppVar9 != ppVar15);" do (compound_statement "{\n      sVar5 = *(size_type *)((int)paVar14 + -0xc);\n      (ppVar10->second)._M_dataplus._M_p = (pointer)&(ppVar10->second).field_2;\n      ppVar10->first = sVar5;\n      psVar6 = (size_type *)\n               (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar6 == paVar14) {\n        (ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(size_type *)((int)&(ppVar10->second).field_2 + 4) = *(size_type *)((int)paVar14 + 4);\n        *(size_type *)((int)&(ppVar10->second).field_2 + 8) = *(size_type *)((int)paVar14 + 8);\n        *(size_type *)((int)&(ppVar10->second).field_2 + 0xc) = *(size_type *)((int)paVar14 + 0xc);\n      }\n      else {\n        (ppVar10->second)._M_dataplus._M_p = (pointer)psVar6;\n        (ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }\n      sVar5 = *(size_type *)((int)paVar14 + -4);\n      ppVar9 = ppVar10 + 1;\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus)._M_p = (pointer)paVar14;\n      *(size_type *)((int)paVar14 + -4) = 0;\n      (ppVar10->second)._M_string_length = sVar5;\n      paVar14->_M_local_buf[0] = '\0';\n      ppVar10 = ppVar9;\n      paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x1c);\n      ppVar11 = ppVar15;\n    }" { (expression_statement "sVar5 = *(size_type *)((int)paVar14 + -0xc);" (assignment_expression "sVar5 = *(size_type *)((int)paVar14 + -0xc)" identifier = (pointer_expression "*(size_type *)((int)paVar14 + -0xc)" * (cast_expression "(size_type *)((int)paVar14 + -0xc)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -0xc)" ( (binary_expression "(int)paVar14 + -0xc" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "(ppVar10->second)._M_dataplus._M_p = (pointer)&(ppVar10->second).field_2;" (assignment_expression "(ppVar10->second)._M_dataplus._M_p = (pointer)&(ppVar10->second).field_2" (field_expression "(ppVar10->second)._M_dataplus._M_p" (field_expression "(ppVar10->second)._M_dataplus" (parenthesized_expression "(ppVar10->second)" ( (field_expression "ppVar10->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(ppVar10->second).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(ppVar10->second).field_2" (parenthesized_expression "(ppVar10->second)" ( (field_expression "ppVar10->second" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "ppVar10->first = sVar5;" (assignment_expression "ppVar10->first = sVar5" (field_expression "ppVar10->first" identifier -> field_identifier) = identifier) ;) (expression_statement "psVar6 = (size_type *)\n               (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)._M_p;" (assignment_expression "psVar6 = (size_type *)\n               (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)._M_p" identifier = (cast_expression "(size_type *)\n               (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)._M_p" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)._M_p" (parenthesized_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus)" ( (field_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))->_M_dataplus" (parenthesized_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8))" ( (call_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                ((int)paVar14 + -8)" (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 "((int)paVar14 + -8)" ( (binary_expression "(int)paVar14 + -8" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )) -> field_identifier) )) . field_identifier))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar6 == paVar14) {\n        (ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(size_type *)((int)&(ppVar10->second).field_2 + 4) = *(size_type *)((int)paVar14 + 4);\n        *(size_type *)((int)&(ppVar10->second).field_2 + 8) = *(size_type *)((int)paVar14 + 8);\n        *(size_type *)((int)&(ppVar10->second).field_2 + 0xc) = *(size_type *)((int)paVar14 + 0xc);\n      }\n      else {\n        (ppVar10->second)._M_dataplus._M_p = (pointer)psVar6;\n        (ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar6 == paVar14)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)psVar6 == paVar14)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n           *)psVar6 == paVar14" (binary_expression "allocator<char>_>_9\n           *)psVar6" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)psVar6" identifier * (ERROR ")" )) identifier)) == identifier) )) )) (compound_statement "{\n        (ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n        *(size_type *)((int)&(ppVar10->second).field_2 + 4) = *(size_type *)((int)paVar14 + 4);\n        *(size_type *)((int)&(ppVar10->second).field_2 + 8) = *(size_type *)((int)paVar14 + 8);\n        *(size_type *)((int)&(ppVar10->second).field_2 + 0xc) = *(size_type *)((int)paVar14 + 0xc);\n      }" { (expression_statement "(ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;" (assignment_expression "(ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity" (field_expression "(ppVar10->second).field_2._M_allocated_capacity" (field_expression "(ppVar10->second).field_2" (parenthesized_expression "(ppVar10->second)" ( (field_expression "ppVar10->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar14->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "*(size_type *)((int)&(ppVar10->second).field_2 + 4) = *(size_type *)((int)paVar14 + 4);" (assignment_expression "*(size_type *)((int)&(ppVar10->second).field_2 + 4) = *(size_type *)((int)paVar14 + 4)" (pointer_expression "*(size_type *)((int)&(ppVar10->second).field_2 + 4)" * (cast_expression "(size_type *)((int)&(ppVar10->second).field_2 + 4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(ppVar10->second).field_2 + 4)" ( (binary_expression "(int)&(ppVar10->second).field_2 + 4" (cast_expression "(int)&(ppVar10->second).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(ppVar10->second).field_2" & (field_expression "(ppVar10->second).field_2" (parenthesized_expression "(ppVar10->second)" ( (field_expression "ppVar10->second" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(size_type *)((int)paVar14 + 4)" * (cast_expression "(size_type *)((int)paVar14 + 4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + 4)" ( (binary_expression "(int)paVar14 + 4" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(size_type *)((int)&(ppVar10->second).field_2 + 8) = *(size_type *)((int)paVar14 + 8);" (assignment_expression "*(size_type *)((int)&(ppVar10->second).field_2 + 8) = *(size_type *)((int)paVar14 + 8)" (pointer_expression "*(size_type *)((int)&(ppVar10->second).field_2 + 8)" * (cast_expression "(size_type *)((int)&(ppVar10->second).field_2 + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(ppVar10->second).field_2 + 8)" ( (binary_expression "(int)&(ppVar10->second).field_2 + 8" (cast_expression "(int)&(ppVar10->second).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(ppVar10->second).field_2" & (field_expression "(ppVar10->second).field_2" (parenthesized_expression "(ppVar10->second)" ( (field_expression "ppVar10->second" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(size_type *)((int)paVar14 + 8)" * (cast_expression "(size_type *)((int)paVar14 + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + 8)" ( (binary_expression "(int)paVar14 + 8" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(size_type *)((int)&(ppVar10->second).field_2 + 0xc) = *(size_type *)((int)paVar14 + 0xc);" (assignment_expression "*(size_type *)((int)&(ppVar10->second).field_2 + 0xc) = *(size_type *)((int)paVar14 + 0xc)" (pointer_expression "*(size_type *)((int)&(ppVar10->second).field_2 + 0xc)" * (cast_expression "(size_type *)((int)&(ppVar10->second).field_2 + 0xc)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(ppVar10->second).field_2 + 0xc)" ( (binary_expression "(int)&(ppVar10->second).field_2 + 0xc" (cast_expression "(int)&(ppVar10->second).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(ppVar10->second).field_2" & (field_expression "(ppVar10->second).field_2" (parenthesized_expression "(ppVar10->second)" ( (field_expression "ppVar10->second" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(size_type *)((int)paVar14 + 0xc)" * (cast_expression "(size_type *)((int)paVar14 + 0xc)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + 0xc)" ( (binary_expression "(int)paVar14 + 0xc" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n        (ppVar10->second)._M_dataplus._M_p = (pointer)psVar6;\n        (ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }" else (compound_statement "{\n        (ppVar10->second)._M_dataplus._M_p = (pointer)psVar6;\n        (ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;\n      }" { (expression_statement "(ppVar10->second)._M_dataplus._M_p = (pointer)psVar6;" (assignment_expression "(ppVar10->second)._M_dataplus._M_p = (pointer)psVar6" (field_expression "(ppVar10->second)._M_dataplus._M_p" (field_expression "(ppVar10->second)._M_dataplus" (parenthesized_expression "(ppVar10->second)" ( (field_expression "ppVar10->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(pointer)psVar6" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "(ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity;" (assignment_expression "(ppVar10->second).field_2._M_allocated_capacity = paVar14->_M_allocated_capacity" (field_expression "(ppVar10->second).field_2._M_allocated_capacity" (field_expression "(ppVar10->second).field_2" (parenthesized_expression "(ppVar10->second)" ( (field_expression "ppVar10->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar14->_M_allocated_capacity" identifier -> field_identifier)) ;) }))) (expression_statement "sVar5 = *(size_type *)((int)paVar14 + -4);" (assignment_expression "sVar5 = *(size_type *)((int)paVar14 + -4)" identifier = (pointer_expression "*(size_type *)((int)paVar14 + -4)" * (cast_expression "(size_type *)((int)paVar14 + -4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -4)" ( (binary_expression "(int)paVar14 + -4" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "ppVar9 = ppVar10 + 1;" (assignment_expression "ppVar9 = ppVar10 + 1" identifier = (binary_expression "ppVar10 + 1" identifier + number_literal)) ;) (expression_statement "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus)._M_p = (pointer)paVar14;" (assignment_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus)._M_p = (pointer)paVar14" (field_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus)._M_p" (parenthesized_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus)" ( (field_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))->\n      _M_dataplus" (parenthesized_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8))" ( (call_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)((int)paVar14 + -8)" (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 "((int)paVar14 + -8)" ( (binary_expression "(int)paVar14 + -8" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )) -> field_identifier) )) . field_identifier) = (cast_expression "(pointer)paVar14" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "*(size_type *)((int)paVar14 + -4) = 0;" (assignment_expression "*(size_type *)((int)paVar14 + -4) = 0" (pointer_expression "*(size_type *)((int)paVar14 + -4)" * (cast_expression "(size_type *)((int)paVar14 + -4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar14 + -4)" ( (binary_expression "(int)paVar14 + -4" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "(ppVar10->second)._M_string_length = sVar5;" (assignment_expression "(ppVar10->second)._M_string_length = sVar5" (field_expression "(ppVar10->second)._M_string_length" (parenthesized_expression "(ppVar10->second)" ( (field_expression "ppVar10->second" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "paVar14->_M_local_buf[0] = '\0';" (assignment_expression "paVar14->_M_local_buf[0] = '\0'" (subscript_expression "paVar14->_M_local_buf[0]" (field_expression "paVar14->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "ppVar10 = ppVar9;" (assignment_expression "ppVar10 = ppVar9" identifier = identifier) ;) (expression_statement "paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x1c);" (assignment_expression "paVar14 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x1c)" identifier = (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)((int)paVar14 + 0x1c)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) (ERROR "*" *) )) (argument_list "((int)paVar14 + 0x1c)" ( (binary_expression "(int)paVar14 + 0x1c" (cast_expression "(int)paVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "ppVar11 = ppVar15;" (assignment_expression "ppVar11 = ppVar15" identifier = identifier) ;) }) while (parenthesized_expression "(ppVar9 != ppVar15)" ( (binary_expression "ppVar9 != 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 != (pointer)0x0) {\n    operator_delete(ppVar3);\n  }" if (parenthesized_expression "(ppVar3 != (pointer)0x0)" ( (binary_expression "ppVar3 != (pointer)0x0" identifier != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) 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 = local_24;" (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 = local_24" (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 = ppVar11;" (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 = ppVar11" (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_20;" (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_20" (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_00056fb0(int *param_1,int param_2,undefined4 *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *local_24;\n  int local_20;\n  \n  iVar1 = param_1[1];\n  iVar2 = *param_1;\n  iVar4 = iVar1 - iVar2 >> 2;\n  if (iVar4 * -0x49249249 == 0) {\n    uVar8 = 1;\nLAB_00057235:\n    local_20 = uVar8 * 0x1c;\n  }\n  else {\n    uVar8 = iVar4 * 0x6db6db6e;\n    local_20 = -4;\n    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }\n  local_24 = (undefined4 *)FUN_0017ebf0(local_20);\n  local_20 = local_20 + (int)local_24;\n  puVar7 = local_24 + 7;\nLAB_00057025:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));\n  puVar9 = (undefined4 *)param_3[1];\n  *puVar6 = *param_3;\n  puVar6[1] = puVar6 + 3;\n  if (puVar9 == param_3 + 3) {\n    puVar6[3] = param_3[3];\n    puVar6[4] = param_3[4];\n    puVar6[5] = param_3[5];\n    puVar6[6] = param_3[6];\n  }\n  else {\n    puVar6[1] = puVar9;\n    puVar6[3] = param_3[3];\n  }\n  uVar3 = param_3[2];\n  param_3[1] = param_3 + 3;\n  param_3[2] = 0;\n  *(undefined1 *)(param_3 + 3) = 0;\n  puVar6[2] = uVar3;\n  if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0xc);\n    do {\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    } while (puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);\n    puVar7 = puVar7 + 0xe;\n  }\n  iVar4 = iVar2;\n  if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0xc);\n    do {\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }\n  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x1c) {\n    if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }\n  }\n  if (iVar2 != 0) {\n    FUN_001807a0(iVar2);\n  }\n  *param_1 = (int)local_24;\n  param_1[1] = (int)puVar7;\n  param_1[2] = local_20;\n  return;\n}\n\n" (function_definition "void FUN_00056fb0(int *param_1,int param_2,undefined4 *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *local_24;\n  int local_20;\n  \n  iVar1 = param_1[1];\n  iVar2 = *param_1;\n  iVar4 = iVar1 - iVar2 >> 2;\n  if (iVar4 * -0x49249249 == 0) {\n    uVar8 = 1;\nLAB_00057235:\n    local_20 = uVar8 * 0x1c;\n  }\n  else {\n    uVar8 = iVar4 * 0x6db6db6e;\n    local_20 = -4;\n    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }\n  local_24 = (undefined4 *)FUN_0017ebf0(local_20);\n  local_20 = local_20 + (int)local_24;\n  puVar7 = local_24 + 7;\nLAB_00057025:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));\n  puVar9 = (undefined4 *)param_3[1];\n  *puVar6 = *param_3;\n  puVar6[1] = puVar6 + 3;\n  if (puVar9 == param_3 + 3) {\n    puVar6[3] = param_3[3];\n    puVar6[4] = param_3[4];\n    puVar6[5] = param_3[5];\n    puVar6[6] = param_3[6];\n  }\n  else {\n    puVar6[1] = puVar9;\n    puVar6[3] = param_3[3];\n  }\n  uVar3 = param_3[2];\n  param_3[1] = param_3 + 3;\n  param_3[2] = 0;\n  *(undefined1 *)(param_3 + 3) = 0;\n  puVar6[2] = uVar3;\n  if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0xc);\n    do {\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    } while (puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);\n    puVar7 = puVar7 + 0xe;\n  }\n  iVar4 = iVar2;\n  if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0xc);\n    do {\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }\n  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x1c) {\n    if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }\n  }\n  if (iVar2 != 0) {\n    FUN_001807a0(iVar2);\n  }\n  *param_1 = (int)local_24;\n  param_1[1] = (int)puVar7;\n  param_1[2] = local_20;\n  return;\n}" primitive_type (function_declarator "FUN_00056fb0(int *param_1,int param_2,undefined4 *param_3)" identifier (parameter_list "(int *param_1,int param_2,undefined4 *param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *local_24;\n  int local_20;\n  \n  iVar1 = param_1[1];\n  iVar2 = *param_1;\n  iVar4 = iVar1 - iVar2 >> 2;\n  if (iVar4 * -0x49249249 == 0) {\n    uVar8 = 1;\nLAB_00057235:\n    local_20 = uVar8 * 0x1c;\n  }\n  else {\n    uVar8 = iVar4 * 0x6db6db6e;\n    local_20 = -4;\n    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }\n  local_24 = (undefined4 *)FUN_0017ebf0(local_20);\n  local_20 = local_20 + (int)local_24;\n  puVar7 = local_24 + 7;\nLAB_00057025:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));\n  puVar9 = (undefined4 *)param_3[1];\n  *puVar6 = *param_3;\n  puVar6[1] = puVar6 + 3;\n  if (puVar9 == param_3 + 3) {\n    puVar6[3] = param_3[3];\n    puVar6[4] = param_3[4];\n    puVar6[5] = param_3[5];\n    puVar6[6] = param_3[6];\n  }\n  else {\n    puVar6[1] = puVar9;\n    puVar6[3] = param_3[3];\n  }\n  uVar3 = param_3[2];\n  param_3[1] = param_3 + 3;\n  param_3[2] = 0;\n  *(undefined1 *)(param_3 + 3) = 0;\n  puVar6[2] = uVar3;\n  if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0xc);\n    do {\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    } while (puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);\n    puVar7 = puVar7 + 0xe;\n  }\n  iVar4 = iVar2;\n  if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0xc);\n    do {\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }\n  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x1c) {\n    if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }\n  }\n  if (iVar2 != 0) {\n    FUN_001807a0(iVar2);\n  }\n  *param_1 = (int)local_24;\n  param_1[1] = (int)puVar7;\n  param_1[2] = local_20;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined4 *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "iVar1 = param_1[1];" (assignment_expression "iVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = *param_1;" (assignment_expression "iVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar4 = iVar1 - iVar2 >> 2;" (assignment_expression "iVar4 = iVar1 - iVar2 >> 2" identifier = (binary_expression "iVar1 - iVar2 >> 2" (binary_expression "iVar1 - iVar2" identifier - identifier) >> number_literal)) ;) (if_statement "if (iVar4 * -0x49249249 == 0) {\n    uVar8 = 1;\nLAB_00057235:\n    local_20 = uVar8 * 0x1c;\n  }\n  else {\n    uVar8 = iVar4 * 0x6db6db6e;\n    local_20 = -4;\n    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }" if (parenthesized_expression "(iVar4 * -0x49249249 == 0)" ( (binary_expression "iVar4 * -0x49249249 == 0" (binary_expression "iVar4 * -0x49249249" identifier * number_literal) == number_literal) )) (compound_statement "{\n    uVar8 = 1;\nLAB_00057235:\n    local_20 = uVar8 * 0x1c;\n  }" { (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00057235:\n    local_20 = uVar8 * 0x1c;" statement_identifier : (expression_statement "local_20 = uVar8 * 0x1c;" (assignment_expression "local_20 = uVar8 * 0x1c" identifier = (binary_expression "uVar8 * 0x1c" identifier * number_literal)) ;)) }) (else_clause "else {\n    uVar8 = iVar4 * 0x6db6db6e;\n    local_20 = -4;\n    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }" else (compound_statement "{\n    uVar8 = iVar4 * 0x6db6db6e;\n    local_20 = -4;\n    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }" { (expression_statement "uVar8 = iVar4 * 0x6db6db6e;" (assignment_expression "uVar8 = iVar4 * 0x6db6db6e" identifier = (binary_expression "iVar4 * 0x6db6db6e" identifier * number_literal)) ;) (expression_statement "local_20 = -4;" (assignment_expression "local_20 = -4" identifier = number_literal) ;) (if_statement "if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }" if (parenthesized_expression "(((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a))" ( (binary_expression "((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)" (parenthesized_expression "((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0)" ( (binary_expression "(uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0" (binary_expression "(uint)(iVar4 * -0x49249249) < uVar8" (call_expression "(uint)(iVar4 * -0x49249249)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar4 * -0x49249249)" ( (binary_expression "iVar4 * -0x49249249" identifier * number_literal) ))) < identifier) || (binary_expression "iVar4 * 0x49249249 == 0" (binary_expression "iVar4 * 0x49249249" identifier * number_literal) == number_literal)) )) && (parenthesized_expression "(uVar8 < 0x924924a)" ( (binary_expression "uVar8 < 0x924924a" identifier < number_literal) ))) )) (compound_statement "{\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }" { (if_statement "if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }" { (expression_statement "puVar7 = (undefined4 *)0x1c;" (assignment_expression "puVar7 = (undefined4 *)0x1c" identifier = (cast_expression "(undefined4 *)0x1c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_24 = (undefined4 *)0x0;" (assignment_expression "local_24 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00057025;" goto statement_identifier ;) })) (goto_statement "goto LAB_00057235;" goto statement_identifier ;) })) }))) (expression_statement "local_24 = (undefined4 *)FUN_0017ebf0(local_20);" (assignment_expression "local_24 = (undefined4 *)FUN_0017ebf0(local_20)" identifier = (cast_expression "(undefined4 *)FUN_0017ebf0(local_20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017ebf0(local_20)" identifier (argument_list "(local_20)" ( identifier ))))) ;) (expression_statement "local_20 = local_20 + (int)local_24;" (assignment_expression "local_20 = local_20 + (int)local_24" identifier = (binary_expression "local_20 + (int)local_24" identifier + (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar7 = local_24 + 7;" (assignment_expression "puVar7 = local_24 + 7" identifier = (binary_expression "local_24 + 7" identifier + number_literal)) ;) (labeled_statement "LAB_00057025:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));" statement_identifier : (expression_statement "puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));" (assignment_expression "puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2))" identifier = (cast_expression "(undefined4 *)((int)local_24 + (param_2 - iVar2))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_24 + (param_2 - iVar2))" ( (binary_expression "(int)local_24 + (param_2 - iVar2)" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(param_2 - iVar2)" ( (binary_expression "param_2 - iVar2" identifier - identifier) ))) )))) ;)) (expression_statement "puVar9 = (undefined4 *)param_3[1];" (assignment_expression "puVar9 = (undefined4 *)param_3[1]" identifier = (cast_expression "(undefined4 *)param_3[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) ;) (expression_statement "*puVar6 = *param_3;" (assignment_expression "*puVar6 = *param_3" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "puVar6[1] = puVar6 + 3;" (assignment_expression "puVar6[1] = puVar6 + 3" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = (binary_expression "puVar6 + 3" identifier + number_literal)) ;) (if_statement "if (puVar9 == param_3 + 3) {\n    puVar6[3] = param_3[3];\n    puVar6[4] = param_3[4];\n    puVar6[5] = param_3[5];\n    puVar6[6] = param_3[6];\n  }\n  else {\n    puVar6[1] = puVar9;\n    puVar6[3] = param_3[3];\n  }" if (parenthesized_expression "(puVar9 == param_3 + 3)" ( (binary_expression "puVar9 == param_3 + 3" identifier == (binary_expression "param_3 + 3" identifier + number_literal)) )) (compound_statement "{\n    puVar6[3] = param_3[3];\n    puVar6[4] = param_3[4];\n    puVar6[5] = param_3[5];\n    puVar6[6] = param_3[6];\n  }" { (expression_statement "puVar6[3] = param_3[3];" (assignment_expression "puVar6[3] = param_3[3]" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (expression_statement "puVar6[4] = param_3[4];" (assignment_expression "puVar6[4] = param_3[4]" (subscript_expression "puVar6[4]" identifier [ number_literal ]) = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (expression_statement "puVar6[5] = param_3[5];" (assignment_expression "puVar6[5] = param_3[5]" (subscript_expression "puVar6[5]" identifier [ number_literal ]) = (subscript_expression "param_3[5]" identifier [ number_literal ])) ;) (expression_statement "puVar6[6] = param_3[6];" (assignment_expression "puVar6[6] = param_3[6]" (subscript_expression "puVar6[6]" identifier [ number_literal ]) = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    puVar6[1] = puVar9;\n    puVar6[3] = param_3[3];\n  }" else (compound_statement "{\n    puVar6[1] = puVar9;\n    puVar6[3] = param_3[3];\n  }" { (expression_statement "puVar6[1] = puVar9;" (assignment_expression "puVar6[1] = puVar9" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[3] = param_3[3];" (assignment_expression "puVar6[3] = param_3[3]" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar3 = param_3[2];" (assignment_expression "uVar3 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (expression_statement "param_3[1] = param_3 + 3;" (assignment_expression "param_3[1] = param_3 + 3" (subscript_expression "param_3[1]" identifier [ number_literal ]) = (binary_expression "param_3 + 3" identifier + number_literal)) ;) (expression_statement "param_3[2] = 0;" (assignment_expression "param_3[2] = 0" (subscript_expression "param_3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(param_3 + 3) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 3) = 0" (pointer_expression "*(undefined1 *)(param_3 + 3)" * (cast_expression "(undefined1 *)(param_3 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 3)" ( (binary_expression "param_3 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar6[2] = uVar3;" (assignment_expression "puVar6[2] = uVar3" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0xc);\n    do {\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    } while (puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);\n    puVar7 = puVar7 + 0xe;\n  }" if (parenthesized_expression "(param_2 != iVar2)" ( (binary_expression "param_2 != iVar2" identifier != identifier) )) (compound_statement "{\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0xc);\n    do {\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    } while (puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);\n    puVar7 = puVar7 + 0xe;\n  }" { (expression_statement "puVar6 = local_24;" (assignment_expression "puVar6 = local_24" identifier = identifier) ;) (expression_statement "puVar9 = (undefined4 *)(iVar2 + 0xc);" (assignment_expression "puVar9 = (undefined4 *)(iVar2 + 0xc)" identifier = (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) ;) (do_statement "do {\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    } while (puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);" do (compound_statement "{\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    }" { (expression_statement "puVar7 = puVar6;" (assignment_expression "puVar7 = puVar6" identifier = identifier) ;) (expression_statement "uVar3 = puVar9[-3];" (assignment_expression "uVar3 = puVar9[-3]" identifier = (subscript_expression "puVar9[-3]" identifier [ number_literal ])) ;) (expression_statement "puVar7[1] = puVar7 + 3;" (assignment_expression "puVar7[1] = puVar7 + 3" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (binary_expression "puVar7 + 3" identifier + number_literal)) ;) (expression_statement "*puVar7 = uVar3;" (assignment_expression "*puVar7 = uVar3" (pointer_expression "*puVar7" * identifier) = identifier) ;) (if_statement "if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }" if (parenthesized_expression "((undefined4 *)puVar9[-2] == puVar9)" ( (binary_expression "(undefined4 *)puVar9[-2] == puVar9" (cast_expression "(undefined4 *)puVar9[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }" { (expression_statement "puVar7[3] = *puVar9;" (assignment_expression "puVar7[3] = *puVar9" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar7[4] = puVar9[1];" (assignment_expression "puVar7[4] = puVar9[1]" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = (subscript_expression "puVar9[1]" identifier [ number_literal ])) ;) (expression_statement "puVar7[5] = puVar9[2];" (assignment_expression "puVar7[5] = puVar9[2]" (subscript_expression "puVar7[5]" identifier [ number_literal ]) = (subscript_expression "puVar9[2]" identifier [ number_literal ])) ;) (expression_statement "puVar7[6] = puVar9[3];" (assignment_expression "puVar7[6] = puVar9[3]" (subscript_expression "puVar7[6]" identifier [ number_literal ]) = (subscript_expression "puVar9[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }" else (compound_statement "{\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }" { (expression_statement "puVar7[1] = (undefined4 *)puVar9[-2];" (assignment_expression "puVar7[1] = (undefined4 *)puVar9[-2]" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (cast_expression "(undefined4 *)puVar9[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar7[3] = *puVar9;" (assignment_expression "puVar7[3] = *puVar9" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = (pointer_expression "*puVar9" * identifier)) ;) }))) (expression_statement "puVar7[2] = puVar9[-1];" (assignment_expression "puVar7[2] = puVar9[-1]" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = (subscript_expression "puVar9[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar9[-2] = puVar9;" (assignment_expression "puVar9[-2] = puVar9" (subscript_expression "puVar9[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[-1] = 0;" (assignment_expression "puVar9[-1] = 0" (subscript_expression "puVar9[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar9 = 0;" (assignment_expression "*(undefined1 *)puVar9 = 0" (pointer_expression "*(undefined1 *)puVar9" * (cast_expression "(undefined1 *)puVar9" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar6 = puVar7 + 7;" (assignment_expression "puVar6 = puVar7 + 7" identifier = (binary_expression "puVar7 + 7" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar9 + 7;" (assignment_expression "puVar9 = puVar9 + 7" identifier = (binary_expression "puVar9 + 7" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7)" ( (binary_expression "puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7" (binary_expression "puVar7 + 7" identifier + number_literal) != (binary_expression "local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7" identifier + (binary_expression "((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7" (parenthesized_expression "((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1)" ( (binary_expression "(((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1" (parenthesized_expression "(((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff)" ( (binary_expression "((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff" (binary_expression "((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7" (parenthesized_expression "((uint)((param_2 + -0x1c) - iVar2) >> 2)" ( (binary_expression "(uint)((param_2 + -0x1c) - iVar2) >> 2" (call_expression "(uint)((param_2 + -0x1c) - iVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((param_2 + -0x1c) - iVar2)" ( (binary_expression "(param_2 + -0x1c) - iVar2" (parenthesized_expression "(param_2 + -0x1c)" ( (binary_expression "param_2 + -0x1c" identifier + number_literal) )) - identifier) ))) >> number_literal) )) * number_literal) & number_literal) )) + number_literal) )) * number_literal))) )) ;) (expression_statement "puVar7 = puVar7 + 0xe;" (assignment_expression "puVar7 = puVar7 + 0xe" identifier = (binary_expression "puVar7 + 0xe" identifier + number_literal)) ;) })) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" identifier = identifier) ;) (if_statement "if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0xc);\n    do {\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }" if (parenthesized_expression "(param_2 != iVar1)" ( (binary_expression "param_2 != iVar1" identifier != identifier) )) (compound_statement "{\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0xc);\n    do {\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }" { (expression_statement "puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;" (assignment_expression "puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7" identifier = (binary_expression "puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7" identifier + (binary_expression "((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7" (parenthesized_expression "((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1)" ( (binary_expression "(((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1" (parenthesized_expression "(((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff)" ( (binary_expression "((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff" (binary_expression "((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7" (parenthesized_expression "((iVar1 - param_2) - 0x1cU >> 2)" ( (binary_expression "(iVar1 - param_2) - 0x1cU >> 2" (binary_expression "(iVar1 - param_2) - 0x1cU" (parenthesized_expression "(iVar1 - param_2)" ( (binary_expression "iVar1 - param_2" identifier - identifier) )) - number_literal) >> number_literal) )) * number_literal) & number_literal) )) + number_literal) )) * number_literal))) ;) (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" identifier = identifier) ;) (expression_statement "puVar9 = (undefined4 *)(param_2 + 0xc);" (assignment_expression "puVar9 = (undefined4 *)(param_2 + 0xc)" identifier = (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) ;) (do_statement "do {\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);" do (compound_statement "{\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    }" { (expression_statement "uVar3 = puVar9[-3];" (assignment_expression "uVar3 = puVar9[-3]" identifier = (subscript_expression "puVar9[-3]" identifier [ number_literal ])) ;) (expression_statement "puVar6[1] = puVar6 + 3;" (assignment_expression "puVar6[1] = puVar6 + 3" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = (binary_expression "puVar6 + 3" identifier + number_literal)) ;) (expression_statement "*puVar6 = uVar3;" (assignment_expression "*puVar6 = uVar3" (pointer_expression "*puVar6" * identifier) = identifier) ;) (if_statement "if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }" if (parenthesized_expression "((undefined4 *)puVar9[-2] == puVar9)" ( (binary_expression "(undefined4 *)puVar9[-2] == puVar9" (cast_expression "(undefined4 *)puVar9[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }" { (expression_statement "puVar6[3] = *puVar9;" (assignment_expression "puVar6[3] = *puVar9" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar6[4] = puVar9[1];" (assignment_expression "puVar6[4] = puVar9[1]" (subscript_expression "puVar6[4]" identifier [ number_literal ]) = (subscript_expression "puVar9[1]" identifier [ number_literal ])) ;) (expression_statement "puVar6[5] = puVar9[2];" (assignment_expression "puVar6[5] = puVar9[2]" (subscript_expression "puVar6[5]" identifier [ number_literal ]) = (subscript_expression "puVar9[2]" identifier [ number_literal ])) ;) (expression_statement "puVar6[6] = puVar9[3];" (assignment_expression "puVar6[6] = puVar9[3]" (subscript_expression "puVar6[6]" identifier [ number_literal ]) = (subscript_expression "puVar9[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }" else (compound_statement "{\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }" { (expression_statement "puVar6[1] = (undefined4 *)puVar9[-2];" (assignment_expression "puVar6[1] = (undefined4 *)puVar9[-2]" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = (cast_expression "(undefined4 *)puVar9[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar6[3] = *puVar9;" (assignment_expression "puVar6[3] = *puVar9" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = (pointer_expression "*puVar9" * identifier)) ;) }))) (expression_statement "uVar3 = puVar9[-1];" (assignment_expression "uVar3 = puVar9[-1]" identifier = (subscript_expression "puVar9[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = puVar6 + 7;" (assignment_expression "puVar5 = puVar6 + 7" identifier = (binary_expression "puVar6 + 7" identifier + number_literal)) ;) (expression_statement "puVar9[-2] = puVar9;" (assignment_expression "puVar9[-2] = puVar9" (subscript_expression "puVar9[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[-1] = 0;" (assignment_expression "puVar9[-1] = 0" (subscript_expression "puVar9[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[2] = uVar3;" (assignment_expression "puVar6[2] = uVar3" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)puVar9 = 0;" (assignment_expression "*(undefined1 *)puVar9 = 0" (pointer_expression "*(undefined1 *)puVar9" * (cast_expression "(undefined1 *)puVar9" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" identifier = identifier) ;) (expression_statement "puVar9 = puVar9 + 7;" (assignment_expression "puVar9 = puVar9 + 7" identifier = (binary_expression "puVar9 + 7" identifier + number_literal)) ;) (expression_statement "puVar7 = puVar10;" (assignment_expression "puVar7 = puVar10" identifier = identifier) ;) }) while (parenthesized_expression "(puVar5 != puVar10)" ( (binary_expression "puVar5 != puVar10" identifier != identifier) )) ;) })) (for_statement "for (; iVar4 != iVar1; iVar4 = iVar4 + 0x1c) {\n    if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }\n  }" for ( ; (binary_expression "iVar4 != iVar1" identifier != identifier) ; (assignment_expression "iVar4 = iVar4 + 0x1c" identifier = (binary_expression "iVar4 + 0x1c" identifier + number_literal)) ) (compound_statement "{\n    if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }\n  }" { (if_statement "if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }" if (parenthesized_expression "(*(int *)(iVar4 + 4) != iVar4 + 0xc)" ( (binary_expression "*(int *)(iVar4 + 4) != iVar4 + 0xc" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) != (binary_expression "iVar4 + 0xc" identifier + number_literal)) )) (compound_statement "{\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }" { (expression_statement "FUN_001807a0(*(int *)(iVar4 + 4));" (call_expression "FUN_001807a0(*(int *)(iVar4 + 4))" identifier (argument_list "(*(int *)(iVar4 + 4))" ( (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) ))) ;) })) })) (if_statement "if (iVar2 != 0) {\n    FUN_001807a0(iVar2);\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_001807a0(iVar2);\n  }" { (expression_statement "FUN_001807a0(iVar2);" (call_expression "FUN_001807a0(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) })) (expression_statement "*param_1 = (int)local_24;" (assignment_expression "*param_1 = (int)local_24" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[1] = (int)puVar7;" (assignment_expression "param_1[1] = (int)puVar7" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[2] = local_20;" (assignment_expression "param_1[2] = local_20" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) ))) < IDENT) || (binary_expression (binary_expression IDENT * LIT) == LIT)) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) )))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_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 (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT) ))) >> LIT) )) * LIT) & LIT) )) + LIT) )) * LIT))) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - LIT) >> LIT) )) * LIT) & LIT) )) + LIT) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (for_statement for ( ; (binary_expression IDENT != IDENT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_00056fb0(int *param_1,int param_2,undefined4 *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *local_24;\n  int local_20;\n  \n  iVar1 = param_1[1];\n  iVar2 = *param_1;\n  iVar4 = iVar1 - iVar2 >> 2;\n  if (iVar4 * -0x49249249 == 0) {\n    uVar8 = 1;\nLAB_00057235:\n    local_20 = uVar8 * 0x1c;\n  }\n  else {\n    uVar8 = iVar4 * 0x6db6db6e;\n    local_20 = -4;\n    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }\n  local_24 = (undefined4 *)FUN_0017ebf0(local_20);\n  local_20 = local_20 + (int)local_24;\n  puVar7 = local_24 + 7;\nLAB_00057025:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));\n  puVar9 = (undefined4 *)param_3[1];\n  *puVar6 = *param_3;\n  puVar6[1] = puVar6 + 3;\n  if (puVar9 == param_3 + 3) {\n    puVar6[3] = param_3[3];\n    puVar6[4] = param_3[4];\n    puVar6[5] = param_3[5];\n    puVar6[6] = param_3[6];\n  }\n  else {\n    puVar6[1] = puVar9;\n    puVar6[3] = param_3[3];\n  }\n  uVar3 = param_3[2];\n  param_3[1] = param_3 + 3;\n  param_3[2] = 0;\n  *(undefined1 *)(param_3 + 3) = 0;\n  puVar6[2] = uVar3;\n  if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0xc);\n    do {\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    } while (puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);\n    puVar7 = puVar7 + 0xe;\n  }\n  iVar4 = iVar2;\n  if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0xc);\n    do {\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }\n  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x1c) {\n    if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }\n  }\n  if (iVar2 != 0) {\n    FUN_001807a0(iVar2);\n  }\n  *param_1 = (int)local_24;\n  param_1[1] = (int)puVar7;\n  param_1[2] = local_20;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00056fb0(int *param_1,int param_2,undefined4 *param_3)" (identifier "FUN_00056fb0") (parameter_list "(int *param_1,int param_2,undefined4 *param_3)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined4 *local_24;\n  int local_20;\n  \n  iVar1 = param_1[1];\n  iVar2 = *param_1;\n  iVar4 = iVar1 - iVar2 >> 2;\n  if (iVar4 * -0x49249249 == 0) {\n    uVar8 = 1;\nLAB_00057235:\n    local_20 = uVar8 * 0x1c;\n  }\n  else {\n    uVar8 = iVar4 * 0x6db6db6e;\n    local_20 = -4;\n    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }\n  local_24 = (undefined4 *)FUN_0017ebf0(local_20);\n  local_20 = local_20 + (int)local_24;\n  puVar7 = local_24 + 7;\nLAB_00057025:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));\n  puVar9 = (undefined4 *)param_3[1];\n  *puVar6 = *param_3;\n  puVar6[1] = puVar6 + 3;\n  if (puVar9 == param_3 + 3) {\n    puVar6[3] = param_3[3];\n    puVar6[4] = param_3[4];\n    puVar6[5] = param_3[5];\n    puVar6[6] = param_3[6];\n  }\n  else {\n    puVar6[1] = puVar9;\n    puVar6[3] = param_3[3];\n  }\n  uVar3 = param_3[2];\n  param_3[1] = param_3 + 3;\n  param_3[2] = 0;\n  *(undefined1 *)(param_3 + 3) = 0;\n  puVar6[2] = uVar3;\n  if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0xc);\n    do {\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    } while (puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);\n    puVar7 = puVar7 + 0xe;\n  }\n  iVar4 = iVar2;\n  if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0xc);\n    do {\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }\n  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x1c) {\n    if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }\n  }\n  if (iVar2 != 0) {\n    FUN_001807a0(iVar2);\n  }\n  *param_1 = (int)local_24;\n  param_1[1] = (int)puVar7;\n  param_1[2] = local_20;\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "undefined4 *puVar9;" (type_identifier "undefined4") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined4 *puVar10;" (type_identifier "undefined4") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "undefined4 *local_24;" (type_identifier "undefined4") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "iVar1 = param_1[1];" (assignment_expression "iVar1 = param_1[1]" (identifier "iVar1") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar2 = *param_1;" (assignment_expression "iVar2 = *param_1" (identifier "iVar2") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "iVar4 = iVar1 - iVar2 >> 2;" (assignment_expression "iVar4 = iVar1 - iVar2 >> 2" (identifier "iVar4") (= "=") (binary_expression "iVar1 - iVar2 >> 2" (binary_expression "iVar1 - iVar2" (identifier "iVar1") (- "-") (identifier "iVar2")) (>> ">>") (number_literal "2"))) (; ";")) (if_statement "if (iVar4 * -0x49249249 == 0) {\n    uVar8 = 1;\nLAB_00057235:\n    local_20 = uVar8 * 0x1c;\n  }\n  else {\n    uVar8 = iVar4 * 0x6db6db6e;\n    local_20 = -4;\n    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }" (if "if") (parenthesized_expression "(iVar4 * -0x49249249 == 0)" (( "(") (binary_expression "iVar4 * -0x49249249 == 0" (binary_expression "iVar4 * -0x49249249" (identifier "iVar4") (* "*") (number_literal "-0x49249249")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar8 = 1;\nLAB_00057235:\n    local_20 = uVar8 * 0x1c;\n  }" ({ "{") (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" (identifier "uVar8") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_00057235:\n    local_20 = uVar8 * 0x1c;" (statement_identifier "LAB_00057235") (: ":") (expression_statement "local_20 = uVar8 * 0x1c;" (assignment_expression "local_20 = uVar8 * 0x1c" (identifier "local_20") (= "=") (binary_expression "uVar8 * 0x1c" (identifier "uVar8") (* "*") (number_literal "0x1c"))) (; ";"))) (} "}")) (else_clause "else {\n    uVar8 = iVar4 * 0x6db6db6e;\n    local_20 = -4;\n    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }" (else "else") (compound_statement "{\n    uVar8 = iVar4 * 0x6db6db6e;\n    local_20 = -4;\n    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }\n  }" ({ "{") (expression_statement "uVar8 = iVar4 * 0x6db6db6e;" (assignment_expression "uVar8 = iVar4 * 0x6db6db6e" (identifier "uVar8") (= "=") (binary_expression "iVar4 * 0x6db6db6e" (identifier "iVar4") (* "*") (number_literal "0x6db6db6e"))) (; ";")) (expression_statement "local_20 = -4;" (assignment_expression "local_20 = -4" (identifier "local_20") (= "=") (number_literal "-4")) (; ";")) (if_statement "if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }" (if "if") (parenthesized_expression "(((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a))" (( "(") (binary_expression "((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)" (parenthesized_expression "((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0)" (( "(") (binary_expression "(uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0" (binary_expression "(uint)(iVar4 * -0x49249249) < uVar8" (call_expression "(uint)(iVar4 * -0x49249249)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar4 * -0x49249249)" (( "(") (binary_expression "iVar4 * -0x49249249" (identifier "iVar4") (* "*") (number_literal "-0x49249249")) () ")"))) (< "<") (identifier "uVar8")) (|| "||") (binary_expression "iVar4 * 0x49249249 == 0" (binary_expression "iVar4 * 0x49249249" (identifier "iVar4") (* "*") (number_literal "0x49249249")) (== "==") (number_literal "0"))) () ")")) (&& "&&") (parenthesized_expression "(uVar8 < 0x924924a)" (( "(") (binary_expression "uVar8 < 0x924924a" (identifier "uVar8") (< "<") (number_literal "0x924924a")) () ")"))) () ")")) (compound_statement "{\n      if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }\n      goto LAB_00057235;\n    }" ({ "{") (if_statement "if (uVar8 == 0) {\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        puVar7 = (undefined4 *)0x1c;\n        local_20 = 0;\n        local_24 = (undefined4 *)0x0;\n        goto LAB_00057025;\n      }" ({ "{") (expression_statement "puVar7 = (undefined4 *)0x1c;" (assignment_expression "puVar7 = (undefined4 *)0x1c" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)0x1c" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1c"))) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_24 = (undefined4 *)0x0;" (assignment_expression "local_24 = (undefined4 *)0x0" (identifier "local_24") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_00057025;" (goto "goto") (statement_identifier "LAB_00057025") (; ";")) (} "}"))) (goto_statement "goto LAB_00057235;" (goto "goto") (statement_identifier "LAB_00057235") (; ";")) (} "}"))) (} "}")))) (expression_statement "local_24 = (undefined4 *)FUN_0017ebf0(local_20);" (assignment_expression "local_24 = (undefined4 *)FUN_0017ebf0(local_20)" (identifier "local_24") (= "=") (cast_expression "(undefined4 *)FUN_0017ebf0(local_20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017ebf0(local_20)" (identifier "FUN_0017ebf0") (argument_list "(local_20)" (( "(") (identifier "local_20") () ")"))))) (; ";")) (expression_statement "local_20 = local_20 + (int)local_24;" (assignment_expression "local_20 = local_20 + (int)local_24" (identifier "local_20") (= "=") (binary_expression "local_20 + (int)local_24" (identifier "local_20") (+ "+") (cast_expression "(int)local_24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_24")))) (; ";")) (expression_statement "puVar7 = local_24 + 7;" (assignment_expression "puVar7 = local_24 + 7" (identifier "puVar7") (= "=") (binary_expression "local_24 + 7" (identifier "local_24") (+ "+") (number_literal "7"))) (; ";")) (labeled_statement "LAB_00057025:\n  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));" (statement_identifier "LAB_00057025") (: ":") (expression_statement "puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));" (assignment_expression "puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2))" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)((int)local_24 + (param_2 - iVar2))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_24 + (param_2 - iVar2))" (( "(") (binary_expression "(int)local_24 + (param_2 - iVar2)" (cast_expression "(int)local_24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_24")) (+ "+") (parenthesized_expression "(param_2 - iVar2)" (( "(") (binary_expression "param_2 - iVar2" (identifier "param_2") (- "-") (identifier "iVar2")) () ")"))) () ")")))) (; ";"))) (expression_statement "puVar9 = (undefined4 *)param_3[1];" (assignment_expression "puVar9 = (undefined4 *)param_3[1]" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)param_3[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "*puVar6 = *param_3;" (assignment_expression "*puVar6 = *param_3" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "puVar6[1] = puVar6 + 3;" (assignment_expression "puVar6[1] = puVar6 + 3" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar6 + 3" (identifier "puVar6") (+ "+") (number_literal "3"))) (; ";")) (if_statement "if (puVar9 == param_3 + 3) {\n    puVar6[3] = param_3[3];\n    puVar6[4] = param_3[4];\n    puVar6[5] = param_3[5];\n    puVar6[6] = param_3[6];\n  }\n  else {\n    puVar6[1] = puVar9;\n    puVar6[3] = param_3[3];\n  }" (if "if") (parenthesized_expression "(puVar9 == param_3 + 3)" (( "(") (binary_expression "puVar9 == param_3 + 3" (identifier "puVar9") (== "==") (binary_expression "param_3 + 3" (identifier "param_3") (+ "+") (number_literal "3"))) () ")")) (compound_statement "{\n    puVar6[3] = param_3[3];\n    puVar6[4] = param_3[4];\n    puVar6[5] = param_3[5];\n    puVar6[6] = param_3[6];\n  }" ({ "{") (expression_statement "puVar6[3] = param_3[3];" (assignment_expression "puVar6[3] = param_3[3]" (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar6[4] = param_3[4];" (assignment_expression "puVar6[4] = param_3[4]" (subscript_expression "puVar6[4]" (identifier "puVar6") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "puVar6[5] = param_3[5];" (assignment_expression "puVar6[5] = param_3[5]" (subscript_expression "puVar6[5]" (identifier "puVar6") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "param_3[5]" (identifier "param_3") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar6[6] = param_3[6];" (assignment_expression "puVar6[6] = param_3[6]" (subscript_expression "puVar6[6]" (identifier "puVar6") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "param_3[6]" (identifier "param_3") ([ "[") (number_literal "6") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    puVar6[1] = puVar9;\n    puVar6[3] = param_3[3];\n  }" (else "else") (compound_statement "{\n    puVar6[1] = puVar9;\n    puVar6[3] = param_3[3];\n  }" ({ "{") (expression_statement "puVar6[1] = puVar9;" (assignment_expression "puVar6[1] = puVar9" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "puVar9")) (; ";")) (expression_statement "puVar6[3] = param_3[3];" (assignment_expression "puVar6[3] = param_3[3]" (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")))) (expression_statement "uVar3 = param_3[2];" (assignment_expression "uVar3 = param_3[2]" (identifier "uVar3") (= "=") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "param_3[1] = param_3 + 3;" (assignment_expression "param_3[1] = param_3 + 3" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "param_3 + 3" (identifier "param_3") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "param_3[2] = 0;" (assignment_expression "param_3[2] = 0" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(param_3 + 3) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 3) = 0" (pointer_expression "*(undefined1 *)(param_3 + 3)" (* "*") (cast_expression "(undefined1 *)(param_3 + 3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 3)" (( "(") (binary_expression "param_3 + 3" (identifier "param_3") (+ "+") (number_literal "3")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6[2] = uVar3;" (assignment_expression "puVar6[2] = uVar3" (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (if_statement "if (param_2 != iVar2) {\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0xc);\n    do {\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    } while (puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);\n    puVar7 = puVar7 + 0xe;\n  }" (if "if") (parenthesized_expression "(param_2 != iVar2)" (( "(") (binary_expression "param_2 != iVar2" (identifier "param_2") (!= "!=") (identifier "iVar2")) () ")")) (compound_statement "{\n    puVar6 = local_24;\n    puVar9 = (undefined4 *)(iVar2 + 0xc);\n    do {\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    } while (puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);\n    puVar7 = puVar7 + 0xe;\n  }" ({ "{") (expression_statement "puVar6 = local_24;" (assignment_expression "puVar6 = local_24" (identifier "puVar6") (= "=") (identifier "local_24")) (; ";")) (expression_statement "puVar9 = (undefined4 *)(iVar2 + 0xc);" (assignment_expression "puVar9 = (undefined4 *)(iVar2 + 0xc)" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)(iVar2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (; ";")) (do_statement "do {\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    } while (puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);" (do "do") (compound_statement "{\n      puVar7 = puVar6;\n      uVar3 = puVar9[-3];\n      puVar7[1] = puVar7 + 3;\n      *puVar7 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }\n      puVar7[2] = puVar9[-1];\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar7 + 7;\n      puVar9 = puVar9 + 7;\n    }" ({ "{") (expression_statement "puVar7 = puVar6;" (assignment_expression "puVar7 = puVar6" (identifier "puVar7") (= "=") (identifier "puVar6")) (; ";")) (expression_statement "uVar3 = puVar9[-3];" (assignment_expression "uVar3 = puVar9[-3]" (identifier "uVar3") (= "=") (subscript_expression "puVar9[-3]" (identifier "puVar9") ([ "[") (number_literal "-3") (] "]"))) (; ";")) (expression_statement "puVar7[1] = puVar7 + 3;" (assignment_expression "puVar7[1] = puVar7 + 3" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar7 + 3" (identifier "puVar7") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "*puVar7 = uVar3;" (assignment_expression "*puVar7 = uVar3" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (identifier "uVar3")) (; ";")) (if_statement "if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }\n      else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }" (if "if") (parenthesized_expression "((undefined4 *)puVar9[-2] == puVar9)" (( "(") (binary_expression "(undefined4 *)puVar9[-2] == puVar9" (cast_expression "(undefined4 *)puVar9[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[-2]" (identifier "puVar9") ([ "[") (number_literal "-2") (] "]"))) (== "==") (identifier "puVar9")) () ")")) (compound_statement "{\n        puVar7[3] = *puVar9;\n        puVar7[4] = puVar9[1];\n        puVar7[5] = puVar9[2];\n        puVar7[6] = puVar9[3];\n      }" ({ "{") (expression_statement "puVar7[3] = *puVar9;" (assignment_expression "puVar7[3] = *puVar9" (subscript_expression "puVar7[3]" (identifier "puVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (expression_statement "puVar7[4] = puVar9[1];" (assignment_expression "puVar7[4] = puVar9[1]" (subscript_expression "puVar7[4]" (identifier "puVar7") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar7[5] = puVar9[2];" (assignment_expression "puVar7[5] = puVar9[2]" (subscript_expression "puVar7[5]" (identifier "puVar7") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar7[6] = puVar9[3];" (assignment_expression "puVar7[6] = puVar9[3]" (subscript_expression "puVar7[6]" (identifier "puVar7") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }" (else "else") (compound_statement "{\n        puVar7[1] = (undefined4 *)puVar9[-2];\n        puVar7[3] = *puVar9;\n      }" ({ "{") (expression_statement "puVar7[1] = (undefined4 *)puVar9[-2];" (assignment_expression "puVar7[1] = (undefined4 *)puVar9[-2]" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(undefined4 *)puVar9[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[-2]" (identifier "puVar9") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "puVar7[3] = *puVar9;" (assignment_expression "puVar7[3] = *puVar9" (subscript_expression "puVar7[3]" (identifier "puVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (} "}")))) (expression_statement "puVar7[2] = puVar9[-1];" (assignment_expression "puVar7[2] = puVar9[-1]" (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar9[-1]" (identifier "puVar9") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar9[-2] = puVar9;" (assignment_expression "puVar9[-2] = puVar9" (subscript_expression "puVar9[-2]" (identifier "puVar9") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar9")) (; ";")) (expression_statement "puVar9[-1] = 0;" (assignment_expression "puVar9[-1] = 0" (subscript_expression "puVar9[-1]" (identifier "puVar9") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)puVar9 = 0;" (assignment_expression "*(undefined1 *)puVar9 = 0" (pointer_expression "*(undefined1 *)puVar9" (* "*") (cast_expression "(undefined1 *)puVar9" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar9"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6 = puVar7 + 7;" (assignment_expression "puVar6 = puVar7 + 7" (identifier "puVar6") (= "=") (binary_expression "puVar7 + 7" (identifier "puVar7") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "puVar9 = puVar9 + 7;" (assignment_expression "puVar9 = puVar9 + 7" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 7" (identifier "puVar9") (+ "+") (number_literal "7"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7)" (( "(") (binary_expression "puVar7 + 7 !=\n             local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7" (binary_expression "puVar7 + 7" (identifier "puVar7") (+ "+") (number_literal "7")) (!= "!=") (binary_expression "local_24 +\n             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7" (identifier "local_24") (+ "+") (binary_expression "((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7" (parenthesized_expression "((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1)" (( "(") (binary_expression "(((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1" (parenthesized_expression "(((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff)" (( "(") (binary_expression "((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff" (binary_expression "((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7" (parenthesized_expression "((uint)((param_2 + -0x1c) - iVar2) >> 2)" (( "(") (binary_expression "(uint)((param_2 + -0x1c) - iVar2) >> 2" (call_expression "(uint)((param_2 + -0x1c) - iVar2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((param_2 + -0x1c) - iVar2)" (( "(") (binary_expression "(param_2 + -0x1c) - iVar2" (parenthesized_expression "(param_2 + -0x1c)" (( "(") (binary_expression "param_2 + -0x1c" (identifier "param_2") (+ "+") (number_literal "-0x1c")) () ")")) (- "-") (identifier "iVar2")) () ")"))) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "0x36db6db7")) (& "&") (number_literal "0x3fffffff")) () ")")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "7")))) () ")")) (; ";")) (expression_statement "puVar7 = puVar7 + 0xe;" (assignment_expression "puVar7 = puVar7 + 0xe" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 0xe" (identifier "puVar7") (+ "+") (number_literal "0xe"))) (; ";")) (} "}"))) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" (identifier "iVar4") (= "=") (identifier "iVar2")) (; ";")) (if_statement "if (param_2 != iVar1) {\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0xc);\n    do {\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }" (if "if") (parenthesized_expression "(param_2 != iVar1)" (( "(") (binary_expression "param_2 != iVar1" (identifier "param_2") (!= "!=") (identifier "iVar1")) () ")")) (compound_statement "{\n    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;\n    puVar6 = puVar7;\n    puVar9 = (undefined4 *)(param_2 + 0xc);\n    do {\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);\n  }" ({ "{") (expression_statement "puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;" (assignment_expression "puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7" (identifier "puVar10") (= "=") (binary_expression "puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7" (identifier "puVar7") (+ "+") (binary_expression "((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7" (parenthesized_expression "((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1)" (( "(") (binary_expression "(((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1" (parenthesized_expression "(((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff)" (( "(") (binary_expression "((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff" (binary_expression "((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7" (parenthesized_expression "((iVar1 - param_2) - 0x1cU >> 2)" (( "(") (binary_expression "(iVar1 - param_2) - 0x1cU >> 2" (binary_expression "(iVar1 - param_2) - 0x1cU" (parenthesized_expression "(iVar1 - param_2)" (( "(") (binary_expression "iVar1 - param_2" (identifier "iVar1") (- "-") (identifier "param_2")) () ")")) (- "-") (number_literal "0x1cU")) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "0x36db6db7")) (& "&") (number_literal "0x3fffffff")) () ")")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "7")))) (; ";")) (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" (identifier "puVar6") (= "=") (identifier "puVar7")) (; ";")) (expression_statement "puVar9 = (undefined4 *)(param_2 + 0xc);" (assignment_expression "puVar9 = (undefined4 *)(param_2 + 0xc)" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)(param_2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (; ";")) (do_statement "do {\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    } while (puVar5 != puVar10);" (do "do") (compound_statement "{\n      uVar3 = puVar9[-3];\n      puVar6[1] = puVar6 + 3;\n      *puVar6 = uVar3;\n      if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }\n      uVar3 = puVar9[-1];\n      puVar5 = puVar6 + 7;\n      puVar9[-2] = puVar9;\n      puVar9[-1] = 0;\n      puVar6[2] = uVar3;\n      *(undefined1 *)puVar9 = 0;\n      puVar6 = puVar5;\n      puVar9 = puVar9 + 7;\n      puVar7 = puVar10;\n    }" ({ "{") (expression_statement "uVar3 = puVar9[-3];" (assignment_expression "uVar3 = puVar9[-3]" (identifier "uVar3") (= "=") (subscript_expression "puVar9[-3]" (identifier "puVar9") ([ "[") (number_literal "-3") (] "]"))) (; ";")) (expression_statement "puVar6[1] = puVar6 + 3;" (assignment_expression "puVar6[1] = puVar6 + 3" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar6 + 3" (identifier "puVar6") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "*puVar6 = uVar3;" (assignment_expression "*puVar6 = uVar3" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (identifier "uVar3")) (; ";")) (if_statement "if ((undefined4 *)puVar9[-2] == puVar9) {\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }\n      else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }" (if "if") (parenthesized_expression "((undefined4 *)puVar9[-2] == puVar9)" (( "(") (binary_expression "(undefined4 *)puVar9[-2] == puVar9" (cast_expression "(undefined4 *)puVar9[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[-2]" (identifier "puVar9") ([ "[") (number_literal "-2") (] "]"))) (== "==") (identifier "puVar9")) () ")")) (compound_statement "{\n        puVar6[3] = *puVar9;\n        puVar6[4] = puVar9[1];\n        puVar6[5] = puVar9[2];\n        puVar6[6] = puVar9[3];\n      }" ({ "{") (expression_statement "puVar6[3] = *puVar9;" (assignment_expression "puVar6[3] = *puVar9" (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]")) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (expression_statement "puVar6[4] = puVar9[1];" (assignment_expression "puVar6[4] = puVar9[1]" (subscript_expression "puVar6[4]" (identifier "puVar6") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar6[5] = puVar9[2];" (assignment_expression "puVar6[5] = puVar9[2]" (subscript_expression "puVar6[5]" (identifier "puVar6") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar6[6] = puVar9[3];" (assignment_expression "puVar6[6] = puVar9[3]" (subscript_expression "puVar6[6]" (identifier "puVar6") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }" (else "else") (compound_statement "{\n        puVar6[1] = (undefined4 *)puVar9[-2];\n        puVar6[3] = *puVar9;\n      }" ({ "{") (expression_statement "puVar6[1] = (undefined4 *)puVar9[-2];" (assignment_expression "puVar6[1] = (undefined4 *)puVar9[-2]" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(undefined4 *)puVar9[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[-2]" (identifier "puVar9") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "puVar6[3] = *puVar9;" (assignment_expression "puVar6[3] = *puVar9" (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]")) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (} "}")))) (expression_statement "uVar3 = puVar9[-1];" (assignment_expression "uVar3 = puVar9[-1]" (identifier "uVar3") (= "=") (subscript_expression "puVar9[-1]" (identifier "puVar9") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar5 = puVar6 + 7;" (assignment_expression "puVar5 = puVar6 + 7" (identifier "puVar5") (= "=") (binary_expression "puVar6 + 7" (identifier "puVar6") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "puVar9[-2] = puVar9;" (assignment_expression "puVar9[-2] = puVar9" (subscript_expression "puVar9[-2]" (identifier "puVar9") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar9")) (; ";")) (expression_statement "puVar9[-1] = 0;" (assignment_expression "puVar9[-1] = 0" (subscript_expression "puVar9[-1]" (identifier "puVar9") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6[2] = uVar3;" (assignment_expression "puVar6[2] = uVar3" (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*(undefined1 *)puVar9 = 0;" (assignment_expression "*(undefined1 *)puVar9 = 0" (pointer_expression "*(undefined1 *)puVar9" (* "*") (cast_expression "(undefined1 *)puVar9" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar9"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" (identifier "puVar6") (= "=") (identifier "puVar5")) (; ";")) (expression_statement "puVar9 = puVar9 + 7;" (assignment_expression "puVar9 = puVar9 + 7" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 7" (identifier "puVar9") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "puVar7 = puVar10;" (assignment_expression "puVar7 = puVar10" (identifier "puVar7") (= "=") (identifier "puVar10")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar5 != puVar10)" (( "(") (binary_expression "puVar5 != puVar10" (identifier "puVar5") (!= "!=") (identifier "puVar10")) () ")")) (; ";")) (} "}"))) (for_statement "for (; iVar4 != iVar1; iVar4 = iVar4 + 0x1c) {\n    if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }\n  }" (for "for") (( "(") (; ";") (binary_expression "iVar4 != iVar1" (identifier "iVar4") (!= "!=") (identifier "iVar1")) (; ";") (assignment_expression "iVar4 = iVar4 + 0x1c" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 0x1c" (identifier "iVar4") (+ "+") (number_literal "0x1c"))) () ")") (compound_statement "{\n    if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }\n  }" ({ "{") (if_statement "if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar4 + 4) != iVar4 + 0xc)" (( "(") (binary_expression "*(int *)(iVar4 + 4) != iVar4 + 0xc" (pointer_expression "*(int *)(iVar4 + 4)" (* "*") (cast_expression "(int *)(iVar4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (binary_expression "iVar4 + 0xc" (identifier "iVar4") (+ "+") (number_literal "0xc"))) () ")")) (compound_statement "{\n      FUN_001807a0(*(int *)(iVar4 + 4));\n    }" ({ "{") (expression_statement "FUN_001807a0(*(int *)(iVar4 + 4));" (call_expression "FUN_001807a0(*(int *)(iVar4 + 4))" (identifier "FUN_001807a0") (argument_list "(*(int *)(iVar4 + 4))" (( "(") (pointer_expression "*(int *)(iVar4 + 4)" (* "*") (cast_expression "(int *)(iVar4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (iVar2 != 0) {\n    FUN_001807a0(iVar2);\n  }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_001807a0(iVar2);\n  }" ({ "{") (expression_statement "FUN_001807a0(iVar2);" (call_expression "FUN_001807a0(iVar2)" (identifier "FUN_001807a0") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (} "}"))) (expression_statement "*param_1 = (int)local_24;" (assignment_expression "*param_1 = (int)local_24" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)local_24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_24"))) (; ";")) (expression_statement "param_1[1] = (int)puVar7;" (assignment_expression "param_1[1] = (int)puVar7" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7"))) (; ";")) (expression_statement "param_1[2] = local_20;" (assignment_expression "param_1[2] = local_20" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_20")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original 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;
  type_1 var_16;
  type_1 var_14;
  type_1 var_13;
  type_2 sVar5;
  type_2 *var_17;
  type_1 var_21;
  int var_7;
  type_1 var_19;
  type_1 var_18;
  type_1 var_15;
  type_3 var_8;
  type_3 var_10;
  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_20;
  type_1 var_11;
  type_1 local_20;
  
  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_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 = (int)var_16 - (int)var_14 >> 2;
  if (var_7 * -0x49249249 == 0) {
    var_8 = 1;
LAB_00057235:
    var_10 = var_8 * 0x1c;
  }
  else {
    var_8 = var_7 * 0x6db6db6e;
    var_10 = 0xfffffffc;
    if (((type_3)(var_7 * -0x49249249) < var_8 || var_7 * 0x49249249 == 0) && (var_8 < 0x924924a)) {
      if (var_8 == 0) {
        var_15 = (type_1)0x1c;
        local_20 = (type_1)0x0;
        var_11 = (type_1)0x0;
        goto LAB_00057025;
      }
      goto LAB_00057235;
    }
  }
  var_11 = (type_1)var_9(var_10);
  local_20 = (type_1)((int)&var_11->first + var_10);
  var_15 = var_11 + 1;
LAB_00057025:
  var_12 = (int *)((int)var_11 + ((int)__position._M_current - (int)var_14));
  var_13 = (__args_0->second)._M_dataplus._M_p;
  *var_12 = __args_0->first;
  var_5 = &(__args_0->second).field_2;
  var_12[1] = (int)(var_12 + 3);
  if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
       *)var_13 == var_5) {
    var_12[3] = (__args_0->second).field_2._M_allocated_capacity;
    var_12[4] = *(int *)((int)&(__args_0->second).field_2 + 4);
    var_12[5] = *(int *)((int)&(__args_0->second).field_2 + 8);
    var_12[6] = *(int *)((int)&(__args_0->second).field_2 + 0xc);
  }
  else {
    var_12[1] = (int)var_13;
    var_12[3] = (__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;
  (__args_0->second).field_2._M_local_buf[0] = '\0';
  var_12[2] = sVar5;
  if (__position._M_current != var_14) {
    var_21 = var_11;
    var_5 = &(var_14->second).field_2;
    do {
      var_15 = var_21;
      var_7 = *(int *)((int)var_5 + -0xc);
      (var_15->second)._M_dataplus._M_p = (type_1)&(var_15->second).field_2;
      var_15->first = var_7;
      var_13 = (((basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *var_6)
                ((int)var_5 + -8))->_M_dataplus)._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
           *)var_13 == var_5) {
        (var_15->second).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
        *(type_4 *)((int)&(var_15->second).field_2 + 4) = *(type_4 *)((int)var_5 + 4);
        *(type_4 *)((int)&(var_15->second).field_2 + 8) = *(type_4 *)((int)var_5 + 8);
        *(type_4 *)((int)&(var_15->second).field_2 + 0xc) = *(type_4 *)((int)var_5 + 0xc)
        ;
      }
      else {
        (var_15->second)._M_dataplus._M_p = var_13;
        (var_15->second).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
      }
      (var_15->second)._M_string_length = *(type_2 *)((int)var_5 + -4);
      (((basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *var_6)((int)var_5 + -8))->
      _M_dataplus)._M_p = (type_1)var_5;
      *(type_2 *)((int)var_5 + -4) = 0;
      var_5->_M_local_buf[0] = '\0';
      var_21 = var_15 + 1;
      var_5 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                 *)((int)var_5 + 0x1c);
    } while (var_15 + 1 !=
             var_11 +
             (((type_3)((int)__position._M_current + (-0x1c - (int)var_14)) >> 2) * 0x36db6db7 &
             0x3fffffff) + 1);
    var_15 = var_15 + 2;
  }
  var_21 = var_14;
  if (__position._M_current != var_16) {
    var_20 = var_15 + (((type_3)((int)var_16 + (-0x1c - (int)__position._M_current)) >> 2) *
                         0x36db6db7 & 0x3fffffff) + 1;
    var_18 = var_15;
    var_5 = &((__position._M_current)->second).field_2;
    do {
      sVar5 = *(type_2 *)((int)var_5 + -0xc);
      (var_18->second)._M_dataplus._M_p = (type_1)&(var_18->second).field_2;
      var_18->first = sVar5;
      var_17 = (type_2 *)
               (((basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *var_6)
                ((int)var_5 + -8))->_M_dataplus)._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
           *)var_17 == var_5) {
        (var_18->second).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
        *(type_2 *)((int)&(var_18->second).field_2 + 4) = *(type_2 *)((int)var_5 + 4);
        *(type_2 *)((int)&(var_18->second).field_2 + 8) = *(type_2 *)((int)var_5 + 8);
        *(type_2 *)((int)&(var_18->second).field_2 + 0xc) = *(type_2 *)((int)var_5 + 0xc);
      }
      else {
        (var_18->second)._M_dataplus._M_p = (type_1)var_17;
        (var_18->second).field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
      }
      sVar5 = *(type_2 *)((int)var_5 + -4);
      var_19 = var_18 + 1;
      (((basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *var_6)((int)var_5 + -8))->
      _M_dataplus)._M_p = (type_1)var_5;
      *(type_2 *)((int)var_5 + -4) = 0;
      (var_18->second)._M_string_length = sVar5;
      var_5->_M_local_buf[0] = '\0';
      var_18 = var_19;
      var_5 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                 *)((int)var_5 + 0x1c);
      var_15 = var_20;
    } while (var_19 != var_20);
  }
  for (; var_21 != var_16; var_21 = var_21 + 1) {
    var_13 = (var_21->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_21->second).field_2) {
      var_22(var_13);
    }
  }
  if (var_14 != (type_1)0x0) {
    var_22(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_15;
  (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_20;
  return;
}


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

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

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

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  uint uVar8;
  undefined4 *puVar9;
  undefined4 *puVar10;
  undefined4 *local_24;
  int local_20;
  
  iVar1 = param_1[1];
  iVar2 = *param_1;
  iVar4 = iVar1 - iVar2 >> 2;
  if (iVar4 * -0x49249249 == 0) {
    uVar8 = 1;
LAB_00057235:
    local_20 = uVar8 * 0x1c;
  }
  else {
    uVar8 = iVar4 * 0x6db6db6e;
    local_20 = -4;
    if (((uint)(iVar4 * -0x49249249) < uVar8 || iVar4 * 0x49249249 == 0) && (uVar8 < 0x924924a)) {
      if (uVar8 == 0) {
        puVar7 = (undefined4 *)0x1c;
        local_20 = 0;
        local_24 = (undefined4 *)0x0;
        goto LAB_00057025;
      }
      goto LAB_00057235;
    }
  }
  local_24 = (undefined4 *)FUN_0017ebf0(local_20);
  local_20 = local_20 + (int)local_24;
  puVar7 = local_24 + 7;
LAB_00057025:
  puVar6 = (undefined4 *)((int)local_24 + (param_2 - iVar2));
  puVar9 = (undefined4 *)param_3[1];
  *puVar6 = *param_3;
  puVar6[1] = puVar6 + 3;
  if (puVar9 == param_3 + 3) {
    puVar6[3] = param_3[3];
    puVar6[4] = param_3[4];
    puVar6[5] = param_3[5];
    puVar6[6] = param_3[6];
  }
  else {
    puVar6[1] = puVar9;
    puVar6[3] = param_3[3];
  }
  uVar3 = param_3[2];
  param_3[1] = param_3 + 3;
  param_3[2] = 0;
  *(undefined1 *)(param_3 + 3) = 0;
  puVar6[2] = uVar3;
  if (param_2 != iVar2) {
    puVar6 = local_24;
    puVar9 = (undefined4 *)(iVar2 + 0xc);
    do {
      puVar7 = puVar6;
      uVar3 = puVar9[-3];
      puVar7[1] = puVar7 + 3;
      *puVar7 = uVar3;
      if ((undefined4 *)puVar9[-2] == puVar9) {
        puVar7[3] = *puVar9;
        puVar7[4] = puVar9[1];
        puVar7[5] = puVar9[2];
        puVar7[6] = puVar9[3];
      }
      else {
        puVar7[1] = (undefined4 *)puVar9[-2];
        puVar7[3] = *puVar9;
      }
      puVar7[2] = puVar9[-1];
      puVar9[-2] = puVar9;
      puVar9[-1] = 0;
      *(undefined1 *)puVar9 = 0;
      puVar6 = puVar7 + 7;
      puVar9 = puVar9 + 7;
    } while (puVar7 + 7 !=
             local_24 +
             ((((uint)((param_2 + -0x1c) - iVar2) >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7);
    puVar7 = puVar7 + 0xe;
  }
  iVar4 = iVar2;
  if (param_2 != iVar1) {
    puVar10 = puVar7 + ((((iVar1 - param_2) - 0x1cU >> 2) * 0x36db6db7 & 0x3fffffff) + 1) * 7;
    puVar6 = puVar7;
    puVar9 = (undefined4 *)(param_2 + 0xc);
    do {
      uVar3 = puVar9[-3];
      puVar6[1] = puVar6 + 3;
      *puVar6 = uVar3;
      if ((undefined4 *)puVar9[-2] == puVar9) {
        puVar6[3] = *puVar9;
        puVar6[4] = puVar9[1];
        puVar6[5] = puVar9[2];
        puVar6[6] = puVar9[3];
      }
      else {
        puVar6[1] = (undefined4 *)puVar9[-2];
        puVar6[3] = *puVar9;
      }
      uVar3 = puVar9[-1];
      puVar5 = puVar6 + 7;
      puVar9[-2] = puVar9;
      puVar9[-1] = 0;
      puVar6[2] = uVar3;
      *(undefined1 *)puVar9 = 0;
      puVar6 = puVar5;
      puVar9 = puVar9 + 7;
      puVar7 = puVar10;
    } while (puVar5 != puVar10);
  }
  for (; iVar4 != iVar1; iVar4 = iVar4 + 0x1c) {
    if (*(int *)(iVar4 + 4) != iVar4 + 0xc) {
      FUN_001807a0(*(int *)(iVar4 + 4));
    }
  }
  if (iVar2 != 0) {
    FUN_001807a0(iVar2);
  }
  *param_1 = (int)local_24;
  param_1[1] = (int)puVar7;
  param_1[2] = local_20;
  return;
}

