
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name:
   __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,
   std::vector<std::__cxx11::basic_string<char> > >,
   __gnu_cxx::__ops::_Val_comp_iter<gold::Odr_violation_compare> > */

void std::
     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Odr_violation_compare>_>
               (long *__last)

{
  long lVar1;
  long *plVar2;
  undefined8 uVar3;
  int iVar4;
  ulong uVar5;
  ulong uVar6;
  size_t __n;
  long *__src;
  long *__dest;
  value_type __val;
  
  __val._M_dataplus._M_p = (pointer)&__val.field_2;
  if (__last + 2 == (long *)*__last) {
    __val.field_2._M_allocated_capacity = __last[2];
    __val.field_2._8_8_ = __last[3];
  }
  else {
    __val.field_2._M_allocated_capacity = __last[2];
    __val._M_dataplus._M_p = (pointer)*__last;
  }
  __val._M_string_length = __last[1];
  *__last = (long)(__last + 2);
  __src = __last + -2;
  __last[1] = 0;
  *(undefined1 *)(__last + 2) = 0;
  while( true ) {
    plVar2 = __src + 2;
    uVar5 = string::rfind((string *)&__val,'/',0xffffffffffffffff);
    uVar6 = string::rfind((string *)(__src + -2),'/',0xffffffffffffffff);
    if (uVar5 == 0xffffffffffffffff) {
      uVar5 = 0;
    }
    if (uVar6 == 0xffffffffffffffff) {
      uVar6 = 0;
    }
                    /* try { // try from 002262d9 to 002262dd has its CatchHandler @ 0022645a */
    iVar4 = string::compare((string *)&__val,uVar5,0xffffffffffffffff,(string *)(__src + -2),uVar6,
                            0xffffffffffffffff);
    __dest = (long *)__src[2];
    if (-1 < iVar4) break;
    plVar2 = (long *)__src[-2];
    if (plVar2 == __src) {
      __n = __src[-1];
      if (__n != 0) {
        if (__n == 1) {
          *(char *)__dest = (char)*__src;
          __n = __src[-1];
          __dest = (long *)__src[2];
        }
        else {
          memcpy(__dest,__src,__n);
          __n = __src[-1];
          __dest = (long *)__src[2];
        }
      }
      __src[3] = __n;
      *(undefined1 *)((long)__dest + __n) = 0;
      __dest = (long *)__src[-2];
    }
    else {
      if (__dest == __src + 4) {
        __src[2] = (long)plVar2;
        __src[3] = __src[-1];
        __src[4] = *__src;
      }
      else {
        __src[2] = (long)plVar2;
        lVar1 = __src[4];
        __src[3] = __src[-1];
        __src[4] = *__src;
        if (__dest != (long *)0x0) {
          __src[-2] = (long)__dest;
          *__src = lVar1;
          goto LAB_00226278;
        }
      }
      __src[-2] = (long)__src;
      __dest = __src;
    }
LAB_00226278:
    __src[-1] = 0;
    __src = __src + -4;
    *(undefined1 *)__dest = 0;
  }
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)__val._M_dataplus._M_p == &__val.field_2) {
    if (__val._M_string_length != 0) {
      if (__val._M_string_length == 1) {
        *(char *)__dest = __val.field_2._M_local_buf[0];
        __dest = (long *)*plVar2;
      }
      else {
        memcpy(__dest,__val._M_dataplus._M_p,__val._M_string_length);
        __dest = (long *)*plVar2;
      }
    }
    __src[3] = __val._M_string_length;
    *(undefined1 *)((long)__dest + __val._M_string_length) = 0;
    uVar3 = __val.field_2._M_allocated_capacity;
  }
  else {
    if (__dest == __src + 4) {
      *plVar2 = (long)__val._M_dataplus._M_p;
      __src[3] = __val._M_string_length;
      __src[4] = __val.field_2._M_allocated_capacity;
    }
    else {
      uVar3 = __src[4];
      *plVar2 = (long)__val._M_dataplus._M_p;
      __src[3] = __val._M_string_length;
      __src[4] = __val.field_2._M_allocated_capacity;
      __val._M_dataplus._M_p = (pointer)__dest;
      if (__dest != (long *)0x0) goto LAB_00226394;
    }
    __val._M_dataplus._M_p = (pointer)&__val.field_2;
    uVar3 = __val.field_2._M_allocated_capacity;
  }
LAB_00226394:
  __val.field_2._M_allocated_capacity = uVar3;
  __val._M_string_length = 0;
  *__val._M_dataplus._M_p = '\0';
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)__val._M_dataplus._M_p != &__val.field_2) {
    operator_delete(__val._M_dataplus._M_p);
  }
  return;
}



void FUN_002261e0(undefined8 *param_1)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  int iVar3;
  long lVar4;
  long lVar5;
  size_t __n;
  undefined8 *__src;
  undefined8 *__dest;
  undefined8 *local_58;
  size_t local_50;
  undefined8 local_48;
  undefined8 uStack_40;
  
  local_58 = &local_48;
  if (param_1 + 2 == (undefined8 *)*param_1) {
    local_48 = param_1[2];
    uStack_40 = param_1[3];
  }
  else {
    local_48 = param_1[2];
    local_58 = (undefined8 *)*param_1;
  }
  local_50 = param_1[1];
  *param_1 = param_1 + 2;
  __src = param_1 + -2;
  param_1[1] = 0;
  *(undefined1 *)(param_1 + 2) = 0;
  while( true ) {
    puVar2 = __src + 2;
    lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);
    lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);
    if (lVar4 == -1) {
      lVar4 = 0;
    }
    if (lVar5 == -1) {
      lVar5 = 0;
    }
                    /* try { // try from 002262d9 to 002262dd has its CatchHandler @ 0022645a */
    iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);
    __dest = (undefined8 *)__src[2];
    if (-1 < iVar3) break;
    puVar2 = (undefined8 *)__src[-2];
    if (puVar2 == __src) {
      __n = __src[-1];
      if (__n != 0) {
        if (__n == 1) {
          *(undefined1 *)__dest = *(undefined1 *)__src;
          __n = __src[-1];
          __dest = (undefined8 *)__src[2];
        }
        else {
          memcpy(__dest,__src,__n);
          __n = __src[-1];
          __dest = (undefined8 *)__src[2];
        }
      }
      __src[3] = __n;
      *(undefined1 *)((long)__dest + __n) = 0;
      __dest = (undefined8 *)__src[-2];
    }
    else {
      if (__dest == __src + 4) {
        __src[2] = puVar2;
        __src[3] = __src[-1];
        __src[4] = *__src;
      }
      else {
        __src[2] = puVar2;
        uVar1 = __src[4];
        __src[3] = __src[-1];
        __src[4] = *__src;
        if (__dest != (undefined8 *)0x0) {
          __src[-2] = __dest;
          *__src = uVar1;
          goto LAB_00226278;
        }
      }
      __src[-2] = __src;
      __dest = __src;
    }
LAB_00226278:
    __src[-1] = 0;
    __src = __src + -4;
    *(undefined1 *)__dest = 0;
  }
  if (local_58 == &local_48) {
    if (local_50 != 0) {
      if (local_50 == 1) {
        *(undefined1 *)__dest = (undefined1)local_48;
        __dest = (undefined8 *)*puVar2;
      }
      else {
        memcpy(__dest,local_58,local_50);
        __dest = (undefined8 *)*puVar2;
      }
    }
    __src[3] = local_50;
    *(undefined1 *)((long)__dest + local_50) = 0;
    uVar1 = local_48;
  }
  else {
    if (__dest == __src + 4) {
      *puVar2 = local_58;
      __src[3] = local_50;
      __src[4] = local_48;
    }
    else {
      uVar1 = __src[4];
      *puVar2 = local_58;
      __src[3] = local_50;
      __src[4] = local_48;
      local_58 = __dest;
      if (__dest != (undefined8 *)0x0) goto LAB_00226394;
    }
    local_58 = &local_48;
    uVar1 = local_48;
  }
LAB_00226394:
  local_48 = uVar1;
  local_50 = 0;
  *(undefined1 *)local_58 = 0;
  if (local_58 != &local_48) {
    FUN_00276d20();
  }
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x38
MOV RDX,qword ptr [RDI]
LEA R13,[RSP + 0x10]
LEA RAX,[R13 + 0x10]
MOV qword ptr [RSP + 0x10],RAX
LEA RAX,[RDI + 0x10]
CMP RAX,RDX
JZ 0x00226400
MOV qword ptr [RSP + 0x10],RDX
MOV RDX,qword ptr [RDI + 0x10]
MOV qword ptr [RSP + 0x20],RDX
MOV RDX,qword ptr [RDI + 0x8]
MOV qword ptr [RDI],RAX
LEA RBX,[RDI + -0x10]
XOR R14D,R14D
MOV qword ptr [RDI + 0x8],0x0
MOV RBP,-0x1
MOV qword ptr [RSP + 0x18],RDX
MOV byte ptr [RDI + 0x10],0x0
JMP 0x00226287
CMP RDI,RCX
JZ 0x00226330
MOV qword ptr [RBX + 0x10],RAX
MOV RAX,qword ptr [RBX + -0x8]
MOV RDX,qword ptr [RBX + 0x20]
MOV qword ptr [RBX + 0x18],RAX
MOV RAX,qword ptr [RBX]
MOV qword ptr [RBX + 0x20],RAX
TEST RDI,RDI
JZ 0x00226343
MOV qword ptr [RBX + -0x10],RDI
MOV qword ptr [RBX],RDX
MOV qword ptr [RBX + -0x8],0x0
SUB RBX,0x20
MOV byte ptr [RDI],0x0
LEA RAX,[RBX + 0x10]
MOV RDX,RBP
MOV ESI,0x2f
MOV RDI,R13
LEA R12,[RBX + -0x10]
MOV qword ptr [RSP + 0x8],RAX
CALL 0x0027f5a0
MOV RDX,RBP
MOV ESI,0x2f
MOV RDI,R12
MOV R15,RAX
CALL 0x0027f5a0
CMP R15,-0x1
MOV R9,RBP
MOV RCX,R12
CMOVZ R15,R14
MOV R8,RAX
CMP RAX,-0x1
MOV RDX,RBP
CMOVZ R8,R14
MOV RDI,R13
MOV RSI,R15
CALL 0x0027fa50
MOV RDI,qword ptr [RBX + 0x10]
LEA RCX,[RBX + 0x20]
TEST EAX,EAX
JNS 0x00226350
MOV RAX,qword ptr [RBX + -0x10]
CMP RAX,RBX
JNZ 0x00226248
MOV RDX,qword ptr [RBX + -0x8]
TEST RDX,RDX
JZ 0x0022631a
CMP RDX,0x1
JZ 0x002263e8
MOV RSI,RBX
CALL 0x0013eaa0
MOV RDX,qword ptr [RBX + -0x8]
MOV RDI,qword ptr [RBX + 0x10]
MOV qword ptr [RBX + 0x18],RDX
MOV byte ptr [RDI + RDX*0x1],0x0
MOV RDI,qword ptr [RBX + -0x10]
JMP 0x00226278
MOV qword ptr [RBX + 0x10],RAX
MOV RAX,qword ptr [RBX + -0x8]
MOV qword ptr [RBX + 0x18],RAX
MOV RAX,qword ptr [RBX]
MOV qword ptr [RBX + 0x20],RAX
MOV qword ptr [RBX + -0x10],RBX
MOV RDI,RBX
JMP 0x00226278
MOV RSI,qword ptr [RSP + 0x10]
LEA RAX,[R13 + 0x10]
MOV RDX,qword ptr [RSP + 0x18]
CMP RSI,RAX
JZ 0x00226410
MOV RAX,qword ptr [RSP + 0x20]
CMP RDI,RCX
JZ 0x002263c8
MOV RBX,qword ptr [RSP + 0x8]
MOV RCX,qword ptr [RBX + 0x10]
MOV qword ptr [RBX],RSI
MOV qword ptr [RBX + 0x8],RDX
MOV qword ptr [RBX + 0x10],RAX
TEST RDI,RDI
JZ 0x002263d8
MOV qword ptr [RSP + 0x10],RDI
MOV qword ptr [RSP + 0x20],RCX
MOV qword ptr [RSP + 0x18],0x0
ADD R13,0x10
MOV byte ptr [RDI],0x0
MOV RDI,qword ptr [RSP + 0x10]
CMP RDI,R13
JZ 0x002263b3
CALL 0x00276d20
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RCX,qword ptr [RSP + 0x8]
MOV qword ptr [RCX],RSI
MOV qword ptr [RCX + 0x8],RDX
MOV qword ptr [RCX + 0x10],RAX
LEA RDI,[R13 + 0x10]
MOV qword ptr [RSP + 0x10],RDI
JMP 0x00226394
MOVZX EAX,byte ptr [RBX]
MOV byte ptr [RDI],AL
MOV RDX,qword ptr [RBX + -0x8]
MOV RDI,qword ptr [RBX + 0x10]
JMP 0x0022631a
MOVDQU XMM0,xmmword ptr [RDI + 0x10]
MOVAPS xmmword ptr [RSP + 0x20],XMM0
JMP 0x0022621a
TEST RDX,RDX
JZ 0x0022642d
CMP RDX,0x1
JZ 0x00226444
CALL 0x0013eaa0
MOV RAX,qword ptr [RSP + 0x8]
MOV RDX,qword ptr [RSP + 0x18]
MOV RDI,qword ptr [RAX]
MOV RAX,qword ptr [RSP + 0x8]
MOV qword ptr [RAX + 0x8],RDX
MOV byte ptr [RDI + RDX*0x1],0x0
MOV RDI,qword ptr [RSP + 0x10]
JMP 0x00226394
MOVZX EAX,byte ptr [RSP + 0x20]
MOV byte ptr [RDI],AL
MOV RAX,qword ptr [RSP + 0x8]
MOV RDX,qword ptr [RSP + 0x18]
MOV RDI,qword ptr [RAX]
JMP 0x0022642d
(translation_unit "void FUN_002261e0(undefined8 *param_1)\n\n{\n  undefined8 uVar1;\n  undefined8 *puVar2;\n  int iVar3;\n  long lVar4;\n  long lVar5;\n  size_t __n;\n  undefined8 *__src;\n  undefined8 *__dest;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48;\n  undefined8 uStack_40;\n  \n  local_58 = &local_48;\n  if (param_1 + 2 == (undefined8 *)*param_1) {\n    local_48 = param_1[2];\n    uStack_40 = param_1[3];\n  }\n  else {\n    local_48 = param_1[2];\n    local_58 = (undefined8 *)*param_1;\n  }\n  local_50 = param_1[1];\n  *param_1 = param_1 + 2;\n  __src = param_1 + -2;\n  param_1[1] = 0;\n  *(undefined1 *)(param_1 + 2) = 0;\n  while( true ) {\n    puVar2 = __src + 2;\n    lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);\n    lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);\n    if (lVar4 == -1) {\n      lVar4 = 0;\n    }\n    if (lVar5 == -1) {\n      lVar5 = 0;\n    }\n                    /* try { // try from 002262d9 to 002262dd has its CatchHandler @ 0022645a */\n    iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);\n    __dest = (undefined8 *)__src[2];\n    if (-1 < iVar3) break;\n    puVar2 = (undefined8 *)__src[-2];\n    if (puVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }\nLAB_00226278:\n    __src[-1] = 0;\n    __src = __src + -4;\n    *(undefined1 *)__dest = 0;\n  }\n  if (local_58 == &local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }\n    __src[3] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar1 = local_48;\n  }\n  else {\n    if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }\n    local_58 = &local_48;\n    uVar1 = local_48;\n  }\nLAB_00226394:\n  local_48 = uVar1;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != &local_48) {\n    FUN_00276d20();\n  }\n  return;\n}\n\n" (function_definition "void FUN_002261e0(undefined8 *param_1)\n\n{\n  undefined8 uVar1;\n  undefined8 *puVar2;\n  int iVar3;\n  long lVar4;\n  long lVar5;\n  size_t __n;\n  undefined8 *__src;\n  undefined8 *__dest;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48;\n  undefined8 uStack_40;\n  \n  local_58 = &local_48;\n  if (param_1 + 2 == (undefined8 *)*param_1) {\n    local_48 = param_1[2];\n    uStack_40 = param_1[3];\n  }\n  else {\n    local_48 = param_1[2];\n    local_58 = (undefined8 *)*param_1;\n  }\n  local_50 = param_1[1];\n  *param_1 = param_1 + 2;\n  __src = param_1 + -2;\n  param_1[1] = 0;\n  *(undefined1 *)(param_1 + 2) = 0;\n  while( true ) {\n    puVar2 = __src + 2;\n    lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);\n    lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);\n    if (lVar4 == -1) {\n      lVar4 = 0;\n    }\n    if (lVar5 == -1) {\n      lVar5 = 0;\n    }\n                    /* try { // try from 002262d9 to 002262dd has its CatchHandler @ 0022645a */\n    iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);\n    __dest = (undefined8 *)__src[2];\n    if (-1 < iVar3) break;\n    puVar2 = (undefined8 *)__src[-2];\n    if (puVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }\nLAB_00226278:\n    __src[-1] = 0;\n    __src = __src + -4;\n    *(undefined1 *)__dest = 0;\n  }\n  if (local_58 == &local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }\n    __src[3] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar1 = local_48;\n  }\n  else {\n    if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }\n    local_58 = &local_48;\n    uVar1 = local_48;\n  }\nLAB_00226394:\n  local_48 = uVar1;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != &local_48) {\n    FUN_00276d20();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_002261e0(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined8 uVar1;\n  undefined8 *puVar2;\n  int iVar3;\n  long lVar4;\n  long lVar5;\n  size_t __n;\n  undefined8 *__src;\n  undefined8 *__dest;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48;\n  undefined8 uStack_40;\n  \n  local_58 = &local_48;\n  if (param_1 + 2 == (undefined8 *)*param_1) {\n    local_48 = param_1[2];\n    uStack_40 = param_1[3];\n  }\n  else {\n    local_48 = param_1[2];\n    local_58 = (undefined8 *)*param_1;\n  }\n  local_50 = param_1[1];\n  *param_1 = param_1 + 2;\n  __src = param_1 + -2;\n  param_1[1] = 0;\n  *(undefined1 *)(param_1 + 2) = 0;\n  while( true ) {\n    puVar2 = __src + 2;\n    lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);\n    lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);\n    if (lVar4 == -1) {\n      lVar4 = 0;\n    }\n    if (lVar5 == -1) {\n      lVar5 = 0;\n    }\n                    /* try { // try from 002262d9 to 002262dd has its CatchHandler @ 0022645a */\n    iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);\n    __dest = (undefined8 *)__src[2];\n    if (-1 < iVar3) break;\n    puVar2 = (undefined8 *)__src[-2];\n    if (puVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }\nLAB_00226278:\n    __src[-1] = 0;\n    __src = __src + -4;\n    *(undefined1 *)__dest = 0;\n  }\n  if (local_58 == &local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }\n    __src[3] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar1 = local_48;\n  }\n  else {\n    if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }\n    local_58 = &local_48;\n    uVar1 = local_48;\n  }\nLAB_00226394:\n  local_48 = uVar1;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != &local_48) {\n    FUN_00276d20();\n  }\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "undefined8 *__src;" type_identifier (pointer_declarator "*__src" * identifier) ;) (declaration "undefined8 *__dest;" type_identifier (pointer_declarator "*__dest" * identifier) ;) (declaration "undefined8 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "size_t local_50;" primitive_type identifier ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "undefined8 uStack_40;" type_identifier identifier ;) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (if_statement "if (param_1 + 2 == (undefined8 *)*param_1) {\n    local_48 = param_1[2];\n    uStack_40 = param_1[3];\n  }\n  else {\n    local_48 = param_1[2];\n    local_58 = (undefined8 *)*param_1;\n  }" if (parenthesized_expression "(param_1 + 2 == (undefined8 *)*param_1)" ( (binary_expression "param_1 + 2 == (undefined8 *)*param_1" (binary_expression "param_1 + 2" identifier + number_literal) == (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) )) (compound_statement "{\n    local_48 = param_1[2];\n    uStack_40 = param_1[3];\n  }" { (expression_statement "local_48 = param_1[2];" (assignment_expression "local_48 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uStack_40 = param_1[3];" (assignment_expression "uStack_40 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    local_48 = param_1[2];\n    local_58 = (undefined8 *)*param_1;\n  }" else (compound_statement "{\n    local_48 = param_1[2];\n    local_58 = (undefined8 *)*param_1;\n  }" { (expression_statement "local_48 = param_1[2];" (assignment_expression "local_48 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "local_58 = (undefined8 *)*param_1;" (assignment_expression "local_58 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) }))) (expression_statement "local_50 = param_1[1];" (assignment_expression "local_50 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "*param_1 = param_1 + 2;" (assignment_expression "*param_1 = param_1 + 2" (pointer_expression "*param_1" * identifier) = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (expression_statement "__src = param_1 + -2;" (assignment_expression "__src = param_1 + -2" identifier = (binary_expression "param_1 + -2" identifier + number_literal)) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 2) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 2) = 0" (pointer_expression "*(undefined1 *)(param_1 + 2)" * (cast_expression "(undefined1 *)(param_1 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = number_literal) ;) (while_statement "while( true ) {\n    puVar2 = __src + 2;\n    lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);\n    lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);\n    if (lVar4 == -1) {\n      lVar4 = 0;\n    }\n    if (lVar5 == -1) {\n      lVar5 = 0;\n    }\n                    /* try { // try from 002262d9 to 002262dd has its CatchHandler @ 0022645a */\n    iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);\n    __dest = (undefined8 *)__src[2];\n    if (-1 < iVar3) break;\n    puVar2 = (undefined8 *)__src[-2];\n    if (puVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }\nLAB_00226278:\n    __src[-1] = 0;\n    __src = __src + -4;\n    *(undefined1 *)__dest = 0;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    puVar2 = __src + 2;\n    lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);\n    lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);\n    if (lVar4 == -1) {\n      lVar4 = 0;\n    }\n    if (lVar5 == -1) {\n      lVar5 = 0;\n    }\n                    /* try { // try from 002262d9 to 002262dd has its CatchHandler @ 0022645a */\n    iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);\n    __dest = (undefined8 *)__src[2];\n    if (-1 < iVar3) break;\n    puVar2 = (undefined8 *)__src[-2];\n    if (puVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }\nLAB_00226278:\n    __src[-1] = 0;\n    __src = __src + -4;\n    *(undefined1 *)__dest = 0;\n  }" { (expression_statement "puVar2 = __src + 2;" (assignment_expression "puVar2 = __src + 2" identifier = (binary_expression "__src + 2" identifier + number_literal)) ;) (expression_statement "lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff)" identifier (argument_list "(&local_58,0x2f,0xffffffffffffffff)" ( (pointer_expression "&local_58" & identifier) , number_literal , number_literal )))) ;) (expression_statement "lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff)" identifier (argument_list "(__src + -2,0x2f,0xffffffffffffffff)" ( (binary_expression "__src + -2" identifier + number_literal) , number_literal , number_literal )))) ;) (if_statement "if (lVar4 == -1) {\n      lVar4 = 0;\n    }" if (parenthesized_expression "(lVar4 == -1)" ( (binary_expression "lVar4 == -1" identifier == number_literal) )) (compound_statement "{\n      lVar4 = 0;\n    }" { (expression_statement "lVar4 = 0;" (assignment_expression "lVar4 = 0" identifier = number_literal) ;) })) (if_statement "if (lVar5 == -1) {\n      lVar5 = 0;\n    }" if (parenthesized_expression "(lVar5 == -1)" ( (binary_expression "lVar5 == -1" identifier == number_literal) )) (compound_statement "{\n      lVar5 = 0;\n    }" { (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" identifier = number_literal) ;) })) comment (expression_statement "iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff)" identifier = (call_expression "FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff)" identifier (argument_list "(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , (binary_expression "__src + -2" identifier + number_literal) , identifier , number_literal )))) ;) (expression_statement "__dest = (undefined8 *)__src[2];" (assignment_expression "__dest = (undefined8 *)__src[2]" identifier = (cast_expression "(undefined8 *)__src[2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "__src[2]" identifier [ number_literal ]))) ;) (if_statement "if (-1 < iVar3) break;" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "puVar2 = (undefined8 *)__src[-2];" (assignment_expression "puVar2 = (undefined8 *)__src[-2]" identifier = (cast_expression "(undefined8 *)__src[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "__src[-2]" identifier [ number_literal ]))) ;) (if_statement "if (puVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }" if (parenthesized_expression "(puVar2 == __src)" ( (binary_expression "puVar2 == __src" identifier == identifier) )) (compound_statement "{\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }" { (expression_statement "__n = __src[-1];" (assignment_expression "__n = __src[-1]" identifier = (subscript_expression "__src[-1]" identifier [ number_literal ])) ;) (if_statement "if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (compound_statement "{\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }" { (if_statement "if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }" if (parenthesized_expression "(__n == 1)" ( (binary_expression "__n == 1" identifier == number_literal) )) (compound_statement "{\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }" { (expression_statement "*(undefined1 *)__dest = *(undefined1 *)__src;" (assignment_expression "*(undefined1 *)__dest = *(undefined1 *)__src" (pointer_expression "*(undefined1 *)__dest" * (cast_expression "(undefined1 *)__dest" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined1 *)__src" * (cast_expression "(undefined1 *)__src" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "__n = __src[-1];" (assignment_expression "__n = __src[-1]" identifier = (subscript_expression "__src[-1]" identifier [ number_literal ])) ;) (expression_statement "__dest = (undefined8 *)__src[2];" (assignment_expression "__dest = (undefined8 *)__src[2]" identifier = (cast_expression "(undefined8 *)__src[2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "__src[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }" else (compound_statement "{\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }" { (expression_statement "memcpy(__dest,__src,__n);" (call_expression "memcpy(__dest,__src,__n)" identifier (argument_list "(__dest,__src,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "__n = __src[-1];" (assignment_expression "__n = __src[-1]" identifier = (subscript_expression "__src[-1]" identifier [ number_literal ])) ;) (expression_statement "__dest = (undefined8 *)__src[2];" (assignment_expression "__dest = (undefined8 *)__src[2]" identifier = (cast_expression "(undefined8 *)__src[2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "__src[2]" identifier [ number_literal ]))) ;) }))) })) (expression_statement "__src[3] = __n;" (assignment_expression "__src[3] = __n" (subscript_expression "__src[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((long)__dest + __n) = 0;" (assignment_expression "*(undefined1 *)((long)__dest + __n) = 0" (pointer_expression "*(undefined1 *)((long)__dest + __n)" * (cast_expression "(undefined1 *)((long)__dest + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + __n)" ( (binary_expression "(long)__dest + __n" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "__dest = (undefined8 *)__src[-2];" (assignment_expression "__dest = (undefined8 *)__src[-2]" identifier = (cast_expression "(undefined8 *)__src[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "__src[-2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }" else (compound_statement "{\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }" { (if_statement "if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }" if (parenthesized_expression "(__dest == __src + 4)" ( (binary_expression "__dest == __src + 4" identifier == (binary_expression "__src + 4" identifier + number_literal)) )) (compound_statement "{\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }" { (expression_statement "__src[2] = puVar2;" (assignment_expression "__src[2] = puVar2" (subscript_expression "__src[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__src[3] = __src[-1];" (assignment_expression "__src[3] = __src[-1]" (subscript_expression "__src[3]" identifier [ number_literal ]) = (subscript_expression "__src[-1]" identifier [ number_literal ])) ;) (expression_statement "__src[4] = *__src;" (assignment_expression "__src[4] = *__src" (subscript_expression "__src[4]" identifier [ number_literal ]) = (pointer_expression "*__src" * identifier)) ;) }) (else_clause "else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }" else (compound_statement "{\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }" { (expression_statement "__src[2] = puVar2;" (assignment_expression "__src[2] = puVar2" (subscript_expression "__src[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = __src[4];" (assignment_expression "uVar1 = __src[4]" identifier = (subscript_expression "__src[4]" identifier [ number_literal ])) ;) (expression_statement "__src[3] = __src[-1];" (assignment_expression "__src[3] = __src[-1]" (subscript_expression "__src[3]" identifier [ number_literal ]) = (subscript_expression "__src[-1]" identifier [ number_literal ])) ;) (expression_statement "__src[4] = *__src;" (assignment_expression "__src[4] = *__src" (subscript_expression "__src[4]" identifier [ number_literal ]) = (pointer_expression "*__src" * identifier)) ;) (if_statement "if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }" if (parenthesized_expression "(__dest != (undefined8 *)0x0)" ( (binary_expression "__dest != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }" { (expression_statement "__src[-2] = __dest;" (assignment_expression "__src[-2] = __dest" (subscript_expression "__src[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*__src = uVar1;" (assignment_expression "*__src = uVar1" (pointer_expression "*__src" * identifier) = identifier) ;) (goto_statement "goto LAB_00226278;" goto statement_identifier ;) })) }))) (expression_statement "__src[-2] = __src;" (assignment_expression "__src[-2] = __src" (subscript_expression "__src[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__dest = __src;" (assignment_expression "__dest = __src" identifier = identifier) ;) }))) (labeled_statement "LAB_00226278:\n    __src[-1] = 0;" statement_identifier : (expression_statement "__src[-1] = 0;" (assignment_expression "__src[-1] = 0" (subscript_expression "__src[-1]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "__src = __src + -4;" (assignment_expression "__src = __src + -4" identifier = (binary_expression "__src + -4" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)__dest = 0;" (assignment_expression "*(undefined1 *)__dest = 0" (pointer_expression "*(undefined1 *)__dest" * (cast_expression "(undefined1 *)__dest" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) })) (if_statement "if (local_58 == &local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }\n    __src[3] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar1 = local_48;\n  }\n  else {\n    if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }\n    local_58 = &local_48;\n    uVar1 = local_48;\n  }" if (parenthesized_expression "(local_58 == &local_48)" ( (binary_expression "local_58 == &local_48" identifier == (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }\n    __src[3] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar1 = local_48;\n  }" { (if_statement "if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (compound_statement "{\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }" { (if_statement "if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }" if (parenthesized_expression "(local_50 == 1)" ( (binary_expression "local_50 == 1" identifier == number_literal) )) (compound_statement "{\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }" { (expression_statement "*(undefined1 *)__dest = (undefined1)local_48;" (assignment_expression "*(undefined1 *)__dest = (undefined1)local_48" (pointer_expression "*(undefined1 *)__dest" * (cast_expression "(undefined1 *)__dest" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(undefined1)local_48" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "__dest = (undefined8 *)*puVar2;" (assignment_expression "__dest = (undefined8 *)*puVar2" identifier = (cast_expression "(undefined8 *)*puVar2" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;) }) (else_clause "else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }" else (compound_statement "{\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }" { (expression_statement "memcpy(__dest,local_58,local_50);" (call_expression "memcpy(__dest,local_58,local_50)" identifier (argument_list "(__dest,local_58,local_50)" ( identifier , identifier , identifier ))) ;) (expression_statement "__dest = (undefined8 *)*puVar2;" (assignment_expression "__dest = (undefined8 *)*puVar2" identifier = (cast_expression "(undefined8 *)*puVar2" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;) }))) })) (expression_statement "__src[3] = local_50;" (assignment_expression "__src[3] = local_50" (subscript_expression "__src[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((long)__dest + local_50) = 0;" (assignment_expression "*(undefined1 *)((long)__dest + local_50) = 0" (pointer_expression "*(undefined1 *)((long)__dest + local_50)" * (cast_expression "(undefined1 *)((long)__dest + local_50)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + local_50)" ( (binary_expression "(long)__dest + local_50" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar1 = local_48;" (assignment_expression "uVar1 = local_48" identifier = identifier) ;) }) (else_clause "else {\n    if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }\n    local_58 = &local_48;\n    uVar1 = local_48;\n  }" else (compound_statement "{\n    if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }\n    local_58 = &local_48;\n    uVar1 = local_48;\n  }" { (if_statement "if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }" if (parenthesized_expression "(__dest == __src + 4)" ( (binary_expression "__dest == __src + 4" identifier == (binary_expression "__src + 4" identifier + number_literal)) )) (compound_statement "{\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }" { (expression_statement "*puVar2 = local_58;" (assignment_expression "*puVar2 = local_58" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "__src[3] = local_50;" (assignment_expression "__src[3] = local_50" (subscript_expression "__src[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__src[4] = local_48;" (assignment_expression "__src[4] = local_48" (subscript_expression "__src[4]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }" else (compound_statement "{\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }" { (expression_statement "uVar1 = __src[4];" (assignment_expression "uVar1 = __src[4]" identifier = (subscript_expression "__src[4]" identifier [ number_literal ])) ;) (expression_statement "*puVar2 = local_58;" (assignment_expression "*puVar2 = local_58" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "__src[3] = local_50;" (assignment_expression "__src[3] = local_50" (subscript_expression "__src[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__src[4] = local_48;" (assignment_expression "__src[4] = local_48" (subscript_expression "__src[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_58 = __dest;" (assignment_expression "local_58 = __dest" identifier = identifier) ;) (if_statement "if (__dest != (undefined8 *)0x0) goto LAB_00226394;" if (parenthesized_expression "(__dest != (undefined8 *)0x0)" ( (binary_expression "__dest != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00226394;" goto statement_identifier ;)) }))) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (expression_statement "uVar1 = local_48;" (assignment_expression "uVar1 = local_48" identifier = identifier) ;) }))) (labeled_statement "LAB_00226394:\n  local_48 = uVar1;" statement_identifier : (expression_statement "local_48 = uVar1;" (assignment_expression "local_48 = uVar1" identifier = identifier) ;)) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "*(undefined1 *)local_58 = 0;" (assignment_expression "*(undefined1 *)local_58 = 0" (pointer_expression "*(undefined1 *)local_58" * (cast_expression "(undefined1 *)local_58" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if (local_58 != &local_48) {\n    FUN_00276d20();\n  }" if (parenthesized_expression "(local_58 != &local_48)" ( (binary_expression "local_58 != &local_48" identifier != (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n    FUN_00276d20();\n  }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* DWARF original name:\n   __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,\n   std::vector<std::__cxx11::basic_string<char> > >,\n   __gnu_cxx::__ops::_Val_comp_iter<gold::Odr_violation_compare> > */\n\nvoid std::\n     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Odr_violation_compare>_>\n               (long *__last)\n\n{\n  long lVar1;\n  long *plVar2;\n  undefined8 uVar3;\n  int iVar4;\n  ulong uVar5;\n  ulong uVar6;\n  size_t __n;\n  long *__src;\n  long *__dest;\n  value_type __val;\n  \n  __val._M_dataplus._M_p = (pointer)&__val.field_2;\n  if (__last + 2 == (long *)*__last) {\n    __val.field_2._M_allocated_capacity = __last[2];\n    __val.field_2._8_8_ = __last[3];\n  }\n  else {\n    __val.field_2._M_allocated_capacity = __last[2];\n    __val._M_dataplus._M_p = (pointer)*__last;\n  }\n  __val._M_string_length = __last[1];\n  *__last = (long)(__last + 2);\n  __src = __last + -2;\n  __last[1] = 0;\n  *(undefined1 *)(__last + 2) = 0;\n  while( true ) {\n    plVar2 = __src + 2;\n    uVar5 = string::rfind((string *)&__val,'/',0xffffffffffffffff);\n    uVar6 = string::rfind((string *)(__src + -2),'/',0xffffffffffffffff);\n    if (uVar5 == 0xffffffffffffffff) {\n      uVar5 = 0;\n    }\n    if (uVar6 == 0xffffffffffffffff) {\n      uVar6 = 0;\n    }\n                    /* try { // try from 002262d9 to 002262dd has its CatchHandler @ 0022645a */\n    iVar4 = string::compare((string *)&__val,uVar5,0xffffffffffffffff,(string *)(__src + -2),uVar6,\n                            0xffffffffffffffff);\n    __dest = (long *)__src[2];\n    if (-1 < iVar4) break;\n    plVar2 = (long *)__src[-2];\n    if (plVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(char *)__dest = (char)*__src;\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (long *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = (long)plVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = (long)plVar2;\n        lVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (long *)0x0) {\n          __src[-2] = (long)__dest;\n          *__src = lVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = (long)__src;\n      __dest = __src;\n    }\nLAB_00226278:\n    __src[-1] = 0;\n    __src = __src + -4;\n    *(undefined1 *)__dest = 0;\n  }\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)__val._M_dataplus._M_p == &__val.field_2) {\n    if (__val._M_string_length != 0) {\n      if (__val._M_string_length == 1) {\n        *(char *)__dest = __val.field_2._M_local_buf[0];\n        __dest = (long *)*plVar2;\n      }\n      else {\n        memcpy(__dest,__val._M_dataplus._M_p,__val._M_string_length);\n        __dest = (long *)*plVar2;\n      }\n    }\n    __src[3] = __val._M_string_length;\n    *(undefined1 *)((long)__dest + __val._M_string_length) = 0;\n    uVar3 = __val.field_2._M_allocated_capacity;\n  }\n  else {\n    if (__dest == __src + 4) {\n      *plVar2 = (long)__val._M_dataplus._M_p;\n      __src[3] = __val._M_string_length;\n      __src[4] = __val.field_2._M_allocated_capacity;\n    }\n    else {\n      uVar3 = __src[4];\n      *plVar2 = (long)__val._M_dataplus._M_p;\n      __src[3] = __val._M_string_length;\n      __src[4] = __val.field_2._M_allocated_capacity;\n      __val._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (long *)0x0) goto LAB_00226394;\n    }\n    __val._M_dataplus._M_p = (pointer)&__val.field_2;\n    uVar3 = __val.field_2._M_allocated_capacity;\n  }\nLAB_00226394:\n  __val.field_2._M_allocated_capacity = uVar3;\n  __val._M_string_length = 0;\n  *__val._M_dataplus._M_p = '\0';\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)__val._M_dataplus._M_p != &__val.field_2) {\n    operator_delete(__val._M_dataplus._M_p);\n  }\n  return;\n}\n\n" comment comment (declaration "void std::\n     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Odr_violation_compare>_>\n               (long *__last)\n\n{\n  long lVar1;" primitive_type (ERROR "std::\n     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>" identifier : : identifier < identifier : : identifier < identifier : : identifier : : identifier < primitive_type >) (pointer_declarator "*,_std::vector<std::__cxx11::basic_string<char>_>_" * (ERROR ",_std::vector<std::__cxx11::basic_string<char>_>" , identifier : : identifier < identifier : : identifier : : identifier < primitive_type > identifier >) identifier) (ERROR ">" >) , (ERROR "___gnu_cxx::__ops::_Val_comp_iter<gold::Odr_violation_compare>_>\n               (long *__last)\n\n{\n  long" identifier : : identifier : : identifier < identifier : : identifier > (function_declarator "_>\n               (long *__last)" identifier (ERROR ">" >) (parameter_list "(long *__last)" ( (parameter_declaration "long *__last" (sized_type_specifier "long" long) (pointer_declarator "*__last" * identifier)) ))) { long) identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "long *__src;" (sized_type_specifier "long" long) (pointer_declarator "*__src" * identifier) ;) (declaration "long *__dest;" (sized_type_specifier "long" long) (pointer_declarator "*__dest" * identifier) ;) (declaration "value_type __val;" type_identifier identifier ;) (expression_statement "__val._M_dataplus._M_p = (pointer)&__val.field_2;" (assignment_expression "__val._M_dataplus._M_p = (pointer)&__val.field_2" (field_expression "__val._M_dataplus._M_p" (field_expression "__val._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&__val.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "__val.field_2" identifier . field_identifier))) ;) (if_statement "if (__last + 2 == (long *)*__last) {\n    __val.field_2._M_allocated_capacity = __last[2];\n    __val.field_2._8_8_ = __last[3];\n  }\n  else {\n    __val.field_2._M_allocated_capacity = __last[2];\n    __val._M_dataplus._M_p = (pointer)*__last;\n  }" if (parenthesized_expression "(__last + 2 == (long *)*__last)" ( (binary_expression "__last + 2 == (long *)*__last" (binary_expression "__last + 2" identifier + number_literal) == (cast_expression "(long *)*__last" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*__last" * identifier))) )) (compound_statement "{\n    __val.field_2._M_allocated_capacity = __last[2];\n    __val.field_2._8_8_ = __last[3];\n  }" { (expression_statement "__val.field_2._M_allocated_capacity = __last[2];" (assignment_expression "__val.field_2._M_allocated_capacity = __last[2]" (field_expression "__val.field_2._M_allocated_capacity" (field_expression "__val.field_2" identifier . field_identifier) . field_identifier) = (subscript_expression "__last[2]" identifier [ number_literal ])) ;) (expression_statement "__val.field_2._8_8_ = __last[3];" (assignment_expression "__val.field_2._8_8_ = __last[3]" (field_expression "__val.field_2._8_8_" (field_expression "__val.field_2" identifier . field_identifier) . field_identifier) = (subscript_expression "__last[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    __val.field_2._M_allocated_capacity = __last[2];\n    __val._M_dataplus._M_p = (pointer)*__last;\n  }" else (compound_statement "{\n    __val.field_2._M_allocated_capacity = __last[2];\n    __val._M_dataplus._M_p = (pointer)*__last;\n  }" { (expression_statement "__val.field_2._M_allocated_capacity = __last[2];" (assignment_expression "__val.field_2._M_allocated_capacity = __last[2]" (field_expression "__val.field_2._M_allocated_capacity" (field_expression "__val.field_2" identifier . field_identifier) . field_identifier) = (subscript_expression "__last[2]" identifier [ number_literal ])) ;) (expression_statement "__val._M_dataplus._M_p = (pointer)*__last;" (assignment_expression "__val._M_dataplus._M_p = (pointer)*__last" (field_expression "__val._M_dataplus._M_p" (field_expression "__val._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)*__last" (parenthesized_expression "(pointer)" ( identifier )) * identifier)) ;) }))) (expression_statement "__val._M_string_length = __last[1];" (assignment_expression "__val._M_string_length = __last[1]" (field_expression "__val._M_string_length" identifier . field_identifier) = (subscript_expression "__last[1]" identifier [ number_literal ])) ;) (expression_statement "*__last = (long)(__last + 2);" (assignment_expression "*__last = (long)(__last + 2)" (pointer_expression "*__last" * identifier) = (cast_expression "(long)(__last + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(__last + 2)" ( (binary_expression "__last + 2" identifier + number_literal) )))) ;) (expression_statement "__src = __last + -2;" (assignment_expression "__src = __last + -2" identifier = (binary_expression "__last + -2" identifier + number_literal)) ;) (expression_statement "__last[1] = 0;" (assignment_expression "__last[1] = 0" (subscript_expression "__last[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(__last + 2) = 0;" (assignment_expression "*(undefined1 *)(__last + 2) = 0" (pointer_expression "*(undefined1 *)(__last + 2)" * (cast_expression "(undefined1 *)(__last + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__last + 2)" ( (binary_expression "__last + 2" identifier + number_literal) )))) = number_literal) ;) (while_statement "while( true ) {\n    plVar2 = __src + 2;\n    uVar5 = string::rfind((string *)&__val,'/',0xffffffffffffffff);\n    uVar6 = string::rfind((string *)(__src + -2),'/',0xffffffffffffffff);\n    if (uVar5 == 0xffffffffffffffff) {\n      uVar5 = 0;\n    }\n    if (uVar6 == 0xffffffffffffffff) {\n      uVar6 = 0;\n    }\n                    /* try { // try from 002262d9 to 002262dd has its CatchHandler @ 0022645a */\n    iVar4 = string::compare((string *)&__val,uVar5,0xffffffffffffffff,(string *)(__src + -2),uVar6,\n                            0xffffffffffffffff);\n    __dest = (long *)__src[2];\n    if (-1 < iVar4) break;\n    plVar2 = (long *)__src[-2];\n    if (plVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(char *)__dest = (char)*__src;\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (long *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = (long)plVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = (long)plVar2;\n        lVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (long *)0x0) {\n          __src[-2] = (long)__dest;\n          *__src = lVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = (long)__src;\n      __dest = __src;\n    }\nLAB_00226278:\n    __src[-1] = 0;\n    __src = __src + -4;\n    *(undefined1 *)__dest = 0;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    plVar2 = __src + 2;\n    uVar5 = string::rfind((string *)&__val,'/',0xffffffffffffffff);\n    uVar6 = string::rfind((string *)(__src + -2),'/',0xffffffffffffffff);\n    if (uVar5 == 0xffffffffffffffff) {\n      uVar5 = 0;\n    }\n    if (uVar6 == 0xffffffffffffffff) {\n      uVar6 = 0;\n    }\n                    /* try { // try from 002262d9 to 002262dd has its CatchHandler @ 0022645a */\n    iVar4 = string::compare((string *)&__val,uVar5,0xffffffffffffffff,(string *)(__src + -2),uVar6,\n                            0xffffffffffffffff);\n    __dest = (long *)__src[2];\n    if (-1 < iVar4) break;\n    plVar2 = (long *)__src[-2];\n    if (plVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(char *)__dest = (char)*__src;\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (long *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = (long)plVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = (long)plVar2;\n        lVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (long *)0x0) {\n          __src[-2] = (long)__dest;\n          *__src = lVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = (long)__src;\n      __dest = __src;\n    }\nLAB_00226278:\n    __src[-1] = 0;\n    __src = __src + -4;\n    *(undefined1 *)__dest = 0;\n  }" { (expression_statement "plVar2 = __src + 2;" (assignment_expression "plVar2 = __src + 2" identifier = (binary_expression "__src + 2" identifier + number_literal)) ;) (ERROR "uVar5 = string::" (assignment_expression "uVar5 = string" identifier = identifier) : :) (expression_statement "rfind((string *)&__val,'/',0xffffffffffffffff);" (call_expression "rfind((string *)&__val,'/',0xffffffffffffffff)" identifier (argument_list "((string *)&__val,'/',0xffffffffffffffff)" ( (cast_expression "(string *)&__val" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&__val" & identifier)) , (char_literal "'/'" ' character ') , number_literal ))) ;) (ERROR "uVar6 = string::" (assignment_expression "uVar6 = string" identifier = identifier) : :) (expression_statement "rfind((string *)(__src + -2),'/',0xffffffffffffffff);" (call_expression "rfind((string *)(__src + -2),'/',0xffffffffffffffff)" identifier (argument_list "((string *)(__src + -2),'/',0xffffffffffffffff)" ( (cast_expression "(string *)(__src + -2)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__src + -2)" ( (binary_expression "__src + -2" identifier + number_literal) ))) , (char_literal "'/'" ' character ') , number_literal ))) ;) (if_statement "if (uVar5 == 0xffffffffffffffff) {\n      uVar5 = 0;\n    }" if (parenthesized_expression "(uVar5 == 0xffffffffffffffff)" ( (binary_expression "uVar5 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n      uVar5 = 0;\n    }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) })) (if_statement "if (uVar6 == 0xffffffffffffffff) {\n      uVar6 = 0;\n    }" if (parenthesized_expression "(uVar6 == 0xffffffffffffffff)" ( (binary_expression "uVar6 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n      uVar6 = 0;\n    }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) })) comment (ERROR "iVar4 = string::" (assignment_expression "iVar4 = string" identifier = identifier) : :) (expression_statement "compare((string *)&__val,uVar5,0xffffffffffffffff,(string *)(__src + -2),uVar6,\n                            0xffffffffffffffff);" (call_expression "compare((string *)&__val,uVar5,0xffffffffffffffff,(string *)(__src + -2),uVar6,\n                            0xffffffffffffffff)" identifier (argument_list "((string *)&__val,uVar5,0xffffffffffffffff,(string *)(__src + -2),uVar6,\n                            0xffffffffffffffff)" ( (cast_expression "(string *)&__val" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&__val" & identifier)) , identifier , number_literal , (cast_expression "(string *)(__src + -2)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__src + -2)" ( (binary_expression "__src + -2" identifier + number_literal) ))) , identifier , number_literal ))) ;) (expression_statement "__dest = (long *)__src[2];" (assignment_expression "__dest = (long *)__src[2]" identifier = (cast_expression "(long *)__src[2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "__src[2]" identifier [ number_literal ]))) ;) (if_statement "if (-1 < iVar4) break;" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "plVar2 = (long *)__src[-2];" (assignment_expression "plVar2 = (long *)__src[-2]" identifier = (cast_expression "(long *)__src[-2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "__src[-2]" identifier [ number_literal ]))) ;) (if_statement "if (plVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(char *)__dest = (char)*__src;\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (long *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = (long)plVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = (long)plVar2;\n        lVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (long *)0x0) {\n          __src[-2] = (long)__dest;\n          *__src = lVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = (long)__src;\n      __dest = __src;\n    }" if (parenthesized_expression "(plVar2 == __src)" ( (binary_expression "plVar2 == __src" identifier == identifier) )) (compound_statement "{\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(char *)__dest = (char)*__src;\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (long *)__src[-2];\n    }" { (expression_statement "__n = __src[-1];" (assignment_expression "__n = __src[-1]" identifier = (subscript_expression "__src[-1]" identifier [ number_literal ])) ;) (if_statement "if (__n != 0) {\n        if (__n == 1) {\n          *(char *)__dest = (char)*__src;\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }\n      }" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (compound_statement "{\n        if (__n == 1) {\n          *(char *)__dest = (char)*__src;\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }\n      }" { (if_statement "if (__n == 1) {\n          *(char *)__dest = (char)*__src;\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }" if (parenthesized_expression "(__n == 1)" ( (binary_expression "__n == 1" identifier == number_literal) )) (compound_statement "{\n          *(char *)__dest = (char)*__src;\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }" { (expression_statement "*(char *)__dest = (char)*__src;" (assignment_expression "*(char *)__dest = (char)*__src" (pointer_expression "*(char *)__dest" * (cast_expression "(char *)__dest" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(char)*__src" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*__src" * identifier))) ;) (expression_statement "__n = __src[-1];" (assignment_expression "__n = __src[-1]" identifier = (subscript_expression "__src[-1]" identifier [ number_literal ])) ;) (expression_statement "__dest = (long *)__src[2];" (assignment_expression "__dest = (long *)__src[2]" identifier = (cast_expression "(long *)__src[2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "__src[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }" else (compound_statement "{\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (long *)__src[2];\n        }" { (expression_statement "memcpy(__dest,__src,__n);" (call_expression "memcpy(__dest,__src,__n)" identifier (argument_list "(__dest,__src,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "__n = __src[-1];" (assignment_expression "__n = __src[-1]" identifier = (subscript_expression "__src[-1]" identifier [ number_literal ])) ;) (expression_statement "__dest = (long *)__src[2];" (assignment_expression "__dest = (long *)__src[2]" identifier = (cast_expression "(long *)__src[2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "__src[2]" identifier [ number_literal ]))) ;) }))) })) (expression_statement "__src[3] = __n;" (assignment_expression "__src[3] = __n" (subscript_expression "__src[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((long)__dest + __n) = 0;" (assignment_expression "*(undefined1 *)((long)__dest + __n) = 0" (pointer_expression "*(undefined1 *)((long)__dest + __n)" * (cast_expression "(undefined1 *)((long)__dest + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + __n)" ( (binary_expression "(long)__dest + __n" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "__dest = (long *)__src[-2];" (assignment_expression "__dest = (long *)__src[-2]" identifier = (cast_expression "(long *)__src[-2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "__src[-2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n      if (__dest == __src + 4) {\n        __src[2] = (long)plVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = (long)plVar2;\n        lVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (long *)0x0) {\n          __src[-2] = (long)__dest;\n          *__src = lVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = (long)__src;\n      __dest = __src;\n    }" else (compound_statement "{\n      if (__dest == __src + 4) {\n        __src[2] = (long)plVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = (long)plVar2;\n        lVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (long *)0x0) {\n          __src[-2] = (long)__dest;\n          *__src = lVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = (long)__src;\n      __dest = __src;\n    }" { (if_statement "if (__dest == __src + 4) {\n        __src[2] = (long)plVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = (long)plVar2;\n        lVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (long *)0x0) {\n          __src[-2] = (long)__dest;\n          *__src = lVar1;\n          goto LAB_00226278;\n        }\n      }" if (parenthesized_expression "(__dest == __src + 4)" ( (binary_expression "__dest == __src + 4" identifier == (binary_expression "__src + 4" identifier + number_literal)) )) (compound_statement "{\n        __src[2] = (long)plVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }" { (expression_statement "__src[2] = (long)plVar2;" (assignment_expression "__src[2] = (long)plVar2" (subscript_expression "__src[2]" identifier [ number_literal ]) = (cast_expression "(long)plVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "__src[3] = __src[-1];" (assignment_expression "__src[3] = __src[-1]" (subscript_expression "__src[3]" identifier [ number_literal ]) = (subscript_expression "__src[-1]" identifier [ number_literal ])) ;) (expression_statement "__src[4] = *__src;" (assignment_expression "__src[4] = *__src" (subscript_expression "__src[4]" identifier [ number_literal ]) = (pointer_expression "*__src" * identifier)) ;) }) (else_clause "else {\n        __src[2] = (long)plVar2;\n        lVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (long *)0x0) {\n          __src[-2] = (long)__dest;\n          *__src = lVar1;\n          goto LAB_00226278;\n        }\n      }" else (compound_statement "{\n        __src[2] = (long)plVar2;\n        lVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (long *)0x0) {\n          __src[-2] = (long)__dest;\n          *__src = lVar1;\n          goto LAB_00226278;\n        }\n      }" { (expression_statement "__src[2] = (long)plVar2;" (assignment_expression "__src[2] = (long)plVar2" (subscript_expression "__src[2]" identifier [ number_literal ]) = (cast_expression "(long)plVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "lVar1 = __src[4];" (assignment_expression "lVar1 = __src[4]" identifier = (subscript_expression "__src[4]" identifier [ number_literal ])) ;) (expression_statement "__src[3] = __src[-1];" (assignment_expression "__src[3] = __src[-1]" (subscript_expression "__src[3]" identifier [ number_literal ]) = (subscript_expression "__src[-1]" identifier [ number_literal ])) ;) (expression_statement "__src[4] = *__src;" (assignment_expression "__src[4] = *__src" (subscript_expression "__src[4]" identifier [ number_literal ]) = (pointer_expression "*__src" * identifier)) ;) (if_statement "if (__dest != (long *)0x0) {\n          __src[-2] = (long)__dest;\n          *__src = lVar1;\n          goto LAB_00226278;\n        }" if (parenthesized_expression "(__dest != (long *)0x0)" ( (binary_expression "__dest != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          __src[-2] = (long)__dest;\n          *__src = lVar1;\n          goto LAB_00226278;\n        }" { (expression_statement "__src[-2] = (long)__dest;" (assignment_expression "__src[-2] = (long)__dest" (subscript_expression "__src[-2]" identifier [ number_literal ]) = (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "*__src = lVar1;" (assignment_expression "*__src = lVar1" (pointer_expression "*__src" * identifier) = identifier) ;) (goto_statement "goto LAB_00226278;" goto statement_identifier ;) })) }))) (expression_statement "__src[-2] = (long)__src;" (assignment_expression "__src[-2] = (long)__src" (subscript_expression "__src[-2]" identifier [ number_literal ]) = (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "__dest = __src;" (assignment_expression "__dest = __src" identifier = identifier) ;) }))) (labeled_statement "LAB_00226278:\n    __src[-1] = 0;" statement_identifier : (expression_statement "__src[-1] = 0;" (assignment_expression "__src[-1] = 0" (subscript_expression "__src[-1]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "__src = __src + -4;" (assignment_expression "__src = __src + -4" identifier = (binary_expression "__src + -4" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)__dest = 0;" (assignment_expression "*(undefined1 *)__dest = 0" (pointer_expression "*(undefined1 *)__dest" * (cast_expression "(undefined1 *)__dest" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) })) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)__val._M_dataplus._M_p == &__val.field_2) {\n    if (__val._M_string_length != 0) {\n      if (__val._M_string_length == 1) {\n        *(char *)__dest = __val.field_2._M_local_buf[0];\n        __dest = (long *)*plVar2;\n      }\n      else {\n        memcpy(__dest,__val._M_dataplus._M_p,__val._M_string_length);\n        __dest = (long *)*plVar2;\n      }\n    }\n    __src[3] = __val._M_string_length;\n    *(undefined1 *)((long)__dest + __val._M_string_length) = 0;\n    uVar3 = __val.field_2._M_allocated_capacity;\n  }\n  else {\n    if (__dest == __src + 4) {\n      *plVar2 = (long)__val._M_dataplus._M_p;\n      __src[3] = __val._M_string_length;\n      __src[4] = __val.field_2._M_allocated_capacity;\n    }\n    else {\n      uVar3 = __src[4];\n      *plVar2 = (long)__val._M_dataplus._M_p;\n      __src[3] = __val._M_string_length;\n      __src[4] = __val.field_2._M_allocated_capacity;\n      __val._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (long *)0x0) goto LAB_00226394;\n    }\n    __val._M_dataplus._M_p = (pointer)&__val.field_2;\n    uVar3 = __val.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       *)__val._M_dataplus._M_p == &__val.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)__val._M_dataplus._M_p == &__val.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       *)__val._M_dataplus._M_p == &__val.field_2" (binary_expression "allocator<char>_>_9\n       *)__val._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)__val._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "__val._M_dataplus._M_p" (field_expression "__val._M_dataplus" identifier . field_identifier) . field_identifier))) == (pointer_expression "&__val.field_2" & (field_expression "__val.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n    if (__val._M_string_length != 0) {\n      if (__val._M_string_length == 1) {\n        *(char *)__dest = __val.field_2._M_local_buf[0];\n        __dest = (long *)*plVar2;\n      }\n      else {\n        memcpy(__dest,__val._M_dataplus._M_p,__val._M_string_length);\n        __dest = (long *)*plVar2;\n      }\n    }\n    __src[3] = __val._M_string_length;\n    *(undefined1 *)((long)__dest + __val._M_string_length) = 0;\n    uVar3 = __val.field_2._M_allocated_capacity;\n  }" { (if_statement "if (__val._M_string_length != 0) {\n      if (__val._M_string_length == 1) {\n        *(char *)__dest = __val.field_2._M_local_buf[0];\n        __dest = (long *)*plVar2;\n      }\n      else {\n        memcpy(__dest,__val._M_dataplus._M_p,__val._M_string_length);\n        __dest = (long *)*plVar2;\n      }\n    }" if (parenthesized_expression "(__val._M_string_length != 0)" ( (binary_expression "__val._M_string_length != 0" (field_expression "__val._M_string_length" identifier . field_identifier) != number_literal) )) (compound_statement "{\n      if (__val._M_string_length == 1) {\n        *(char *)__dest = __val.field_2._M_local_buf[0];\n        __dest = (long *)*plVar2;\n      }\n      else {\n        memcpy(__dest,__val._M_dataplus._M_p,__val._M_string_length);\n        __dest = (long *)*plVar2;\n      }\n    }" { (if_statement "if (__val._M_string_length == 1) {\n        *(char *)__dest = __val.field_2._M_local_buf[0];\n        __dest = (long *)*plVar2;\n      }\n      else {\n        memcpy(__dest,__val._M_dataplus._M_p,__val._M_string_length);\n        __dest = (long *)*plVar2;\n      }" if (parenthesized_expression "(__val._M_string_length == 1)" ( (binary_expression "__val._M_string_length == 1" (field_expression "__val._M_string_length" identifier . field_identifier) == number_literal) )) (compound_statement "{\n        *(char *)__dest = __val.field_2._M_local_buf[0];\n        __dest = (long *)*plVar2;\n      }" { (expression_statement "*(char *)__dest = __val.field_2._M_local_buf[0];" (assignment_expression "*(char *)__dest = __val.field_2._M_local_buf[0]" (pointer_expression "*(char *)__dest" * (cast_expression "(char *)__dest" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (subscript_expression "__val.field_2._M_local_buf[0]" (field_expression "__val.field_2._M_local_buf" (field_expression "__val.field_2" identifier . field_identifier) . field_identifier) [ number_literal ])) ;) (expression_statement "__dest = (long *)*plVar2;" (assignment_expression "__dest = (long *)*plVar2" identifier = (cast_expression "(long *)*plVar2" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar2" * identifier))) ;) }) (else_clause "else {\n        memcpy(__dest,__val._M_dataplus._M_p,__val._M_string_length);\n        __dest = (long *)*plVar2;\n      }" else (compound_statement "{\n        memcpy(__dest,__val._M_dataplus._M_p,__val._M_string_length);\n        __dest = (long *)*plVar2;\n      }" { (expression_statement "memcpy(__dest,__val._M_dataplus._M_p,__val._M_string_length);" (call_expression "memcpy(__dest,__val._M_dataplus._M_p,__val._M_string_length)" identifier (argument_list "(__dest,__val._M_dataplus._M_p,__val._M_string_length)" ( identifier , (field_expression "__val._M_dataplus._M_p" (field_expression "__val._M_dataplus" identifier . field_identifier) . field_identifier) , (field_expression "__val._M_string_length" identifier . field_identifier) ))) ;) (expression_statement "__dest = (long *)*plVar2;" (assignment_expression "__dest = (long *)*plVar2" identifier = (cast_expression "(long *)*plVar2" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar2" * identifier))) ;) }))) })) (expression_statement "__src[3] = __val._M_string_length;" (assignment_expression "__src[3] = __val._M_string_length" (subscript_expression "__src[3]" identifier [ number_literal ]) = (field_expression "__val._M_string_length" identifier . field_identifier)) ;) (expression_statement "*(undefined1 *)((long)__dest + __val._M_string_length) = 0;" (assignment_expression "*(undefined1 *)((long)__dest + __val._M_string_length) = 0" (pointer_expression "*(undefined1 *)((long)__dest + __val._M_string_length)" * (cast_expression "(undefined1 *)((long)__dest + __val._M_string_length)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + __val._M_string_length)" ( (binary_expression "(long)__dest + __val._M_string_length" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (field_expression "__val._M_string_length" identifier . field_identifier)) )))) = number_literal) ;) (expression_statement "uVar3 = __val.field_2._M_allocated_capacity;" (assignment_expression "uVar3 = __val.field_2._M_allocated_capacity" identifier = (field_expression "__val.field_2._M_allocated_capacity" (field_expression "__val.field_2" identifier . field_identifier) . field_identifier)) ;) }) (else_clause "else {\n    if (__dest == __src + 4) {\n      *plVar2 = (long)__val._M_dataplus._M_p;\n      __src[3] = __val._M_string_length;\n      __src[4] = __val.field_2._M_allocated_capacity;\n    }\n    else {\n      uVar3 = __src[4];\n      *plVar2 = (long)__val._M_dataplus._M_p;\n      __src[3] = __val._M_string_length;\n      __src[4] = __val.field_2._M_allocated_capacity;\n      __val._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (long *)0x0) goto LAB_00226394;\n    }\n    __val._M_dataplus._M_p = (pointer)&__val.field_2;\n    uVar3 = __val.field_2._M_allocated_capacity;\n  }" else (compound_statement "{\n    if (__dest == __src + 4) {\n      *plVar2 = (long)__val._M_dataplus._M_p;\n      __src[3] = __val._M_string_length;\n      __src[4] = __val.field_2._M_allocated_capacity;\n    }\n    else {\n      uVar3 = __src[4];\n      *plVar2 = (long)__val._M_dataplus._M_p;\n      __src[3] = __val._M_string_length;\n      __src[4] = __val.field_2._M_allocated_capacity;\n      __val._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (long *)0x0) goto LAB_00226394;\n    }\n    __val._M_dataplus._M_p = (pointer)&__val.field_2;\n    uVar3 = __val.field_2._M_allocated_capacity;\n  }" { (if_statement "if (__dest == __src + 4) {\n      *plVar2 = (long)__val._M_dataplus._M_p;\n      __src[3] = __val._M_string_length;\n      __src[4] = __val.field_2._M_allocated_capacity;\n    }\n    else {\n      uVar3 = __src[4];\n      *plVar2 = (long)__val._M_dataplus._M_p;\n      __src[3] = __val._M_string_length;\n      __src[4] = __val.field_2._M_allocated_capacity;\n      __val._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (long *)0x0) goto LAB_00226394;\n    }" if (parenthesized_expression "(__dest == __src + 4)" ( (binary_expression "__dest == __src + 4" identifier == (binary_expression "__src + 4" identifier + number_literal)) )) (compound_statement "{\n      *plVar2 = (long)__val._M_dataplus._M_p;\n      __src[3] = __val._M_string_length;\n      __src[4] = __val.field_2._M_allocated_capacity;\n    }" { (expression_statement "*plVar2 = (long)__val._M_dataplus._M_p;" (assignment_expression "*plVar2 = (long)__val._M_dataplus._M_p" (pointer_expression "*plVar2" * identifier) = (cast_expression "(long)__val._M_dataplus._M_p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__val._M_dataplus._M_p" (field_expression "__val._M_dataplus" identifier . field_identifier) . field_identifier))) ;) (expression_statement "__src[3] = __val._M_string_length;" (assignment_expression "__src[3] = __val._M_string_length" (subscript_expression "__src[3]" identifier [ number_literal ]) = (field_expression "__val._M_string_length" identifier . field_identifier)) ;) (expression_statement "__src[4] = __val.field_2._M_allocated_capacity;" (assignment_expression "__src[4] = __val.field_2._M_allocated_capacity" (subscript_expression "__src[4]" identifier [ number_literal ]) = (field_expression "__val.field_2._M_allocated_capacity" (field_expression "__val.field_2" identifier . field_identifier) . field_identifier)) ;) }) (else_clause "else {\n      uVar3 = __src[4];\n      *plVar2 = (long)__val._M_dataplus._M_p;\n      __src[3] = __val._M_string_length;\n      __src[4] = __val.field_2._M_allocated_capacity;\n      __val._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (long *)0x0) goto LAB_00226394;\n    }" else (compound_statement "{\n      uVar3 = __src[4];\n      *plVar2 = (long)__val._M_dataplus._M_p;\n      __src[3] = __val._M_string_length;\n      __src[4] = __val.field_2._M_allocated_capacity;\n      __val._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (long *)0x0) goto LAB_00226394;\n    }" { (expression_statement "uVar3 = __src[4];" (assignment_expression "uVar3 = __src[4]" identifier = (subscript_expression "__src[4]" identifier [ number_literal ])) ;) (expression_statement "*plVar2 = (long)__val._M_dataplus._M_p;" (assignment_expression "*plVar2 = (long)__val._M_dataplus._M_p" (pointer_expression "*plVar2" * identifier) = (cast_expression "(long)__val._M_dataplus._M_p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__val._M_dataplus._M_p" (field_expression "__val._M_dataplus" identifier . field_identifier) . field_identifier))) ;) (expression_statement "__src[3] = __val._M_string_length;" (assignment_expression "__src[3] = __val._M_string_length" (subscript_expression "__src[3]" identifier [ number_literal ]) = (field_expression "__val._M_string_length" identifier . field_identifier)) ;) (expression_statement "__src[4] = __val.field_2._M_allocated_capacity;" (assignment_expression "__src[4] = __val.field_2._M_allocated_capacity" (subscript_expression "__src[4]" identifier [ number_literal ]) = (field_expression "__val.field_2._M_allocated_capacity" (field_expression "__val.field_2" identifier . field_identifier) . field_identifier)) ;) (expression_statement "__val._M_dataplus._M_p = (pointer)__dest;" (assignment_expression "__val._M_dataplus._M_p = (pointer)__dest" (field_expression "__val._M_dataplus._M_p" (field_expression "__val._M_dataplus" identifier . field_identifier) . field_identifier) = (cast_expression "(pointer)__dest" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (if_statement "if (__dest != (long *)0x0) goto LAB_00226394;" if (parenthesized_expression "(__dest != (long *)0x0)" ( (binary_expression "__dest != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00226394;" goto statement_identifier ;)) }))) (expression_statement "__val._M_dataplus._M_p = (pointer)&__val.field_2;" (assignment_expression "__val._M_dataplus._M_p = (pointer)&__val.field_2" (field_expression "__val._M_dataplus._M_p" (field_expression "__val._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&__val.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "__val.field_2" identifier . field_identifier))) ;) (expression_statement "uVar3 = __val.field_2._M_allocated_capacity;" (assignment_expression "uVar3 = __val.field_2._M_allocated_capacity" identifier = (field_expression "__val.field_2._M_allocated_capacity" (field_expression "__val.field_2" identifier . field_identifier) . field_identifier)) ;) }))) (labeled_statement "LAB_00226394:\n  __val.field_2._M_allocated_capacity = uVar3;" statement_identifier : (expression_statement "__val.field_2._M_allocated_capacity = uVar3;" (assignment_expression "__val.field_2._M_allocated_capacity = uVar3" (field_expression "__val.field_2._M_allocated_capacity" (field_expression "__val.field_2" identifier . field_identifier) . field_identifier) = identifier) ;)) (expression_statement "__val._M_string_length = 0;" (assignment_expression "__val._M_string_length = 0" (field_expression "__val._M_string_length" identifier . field_identifier) = number_literal) ;) (expression_statement "*__val._M_dataplus._M_p = '\0';" (assignment_expression "*__val._M_dataplus._M_p = '\0'" (pointer_expression "*__val._M_dataplus._M_p" * (field_expression "__val._M_dataplus._M_p" (field_expression "__val._M_dataplus" identifier . field_identifier) . field_identifier)) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)__val._M_dataplus._M_p != &__val.field_2) {\n    operator_delete(__val._M_dataplus._M_p);\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)__val._M_dataplus._M_p != &__val.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)__val._M_dataplus._M_p != &__val.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       *)__val._M_dataplus._M_p != &__val.field_2" (binary_expression "allocator<char>_>_9\n       *)__val._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)__val._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "__val._M_dataplus._M_p" (field_expression "__val._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&__val.field_2" & (field_expression "__val.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n    operator_delete(__val._M_dataplus._M_p);\n  }" { (expression_statement "operator_delete(__val._M_dataplus._M_p);" (call_expression "operator_delete(__val._M_dataplus._M_p)" identifier (argument_list "(__val._M_dataplus._M_p)" ( (field_expression "__val._M_dataplus._M_p" (field_expression "__val._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_002261e0(undefined8 *param_1)\n\n{\n  undefined8 uVar1;\n  undefined8 *puVar2;\n  int iVar3;\n  long lVar4;\n  long lVar5;\n  size_t __n;\n  undefined8 *__src;\n  undefined8 *__dest;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48;\n  undefined8 uStack_40;\n  \n  local_58 = &local_48;\n  if (param_1 + 2 == (undefined8 *)*param_1) {\n    local_48 = param_1[2];\n    uStack_40 = param_1[3];\n  }\n  else {\n    local_48 = param_1[2];\n    local_58 = (undefined8 *)*param_1;\n  }\n  local_50 = param_1[1];\n  *param_1 = param_1 + 2;\n  __src = param_1 + -2;\n  param_1[1] = 0;\n  *(undefined1 *)(param_1 + 2) = 0;\n  while( true ) {\n    puVar2 = __src + 2;\n    lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);\n    lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);\n    if (lVar4 == -1) {\n      lVar4 = 0;\n    }\n    if (lVar5 == -1) {\n      lVar5 = 0;\n    }\n                    \n    iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);\n    __dest = (undefined8 *)__src[2];\n    if (-1 < iVar3) break;\n    puVar2 = (undefined8 *)__src[-2];\n    if (puVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }\nLAB_00226278:\n    __src[-1] = 0;\n    __src = __src + -4;\n    *(undefined1 *)__dest = 0;\n  }\n  if (local_58 == &local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }\n    __src[3] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar1 = local_48;\n  }\n  else {\n    if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }\n    local_58 = &local_48;\n    uVar1 = local_48;\n  }\nLAB_00226394:\n  local_48 = uVar1;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != &local_48) {\n    FUN_00276d20();\n  }\n  return;\n}\n\n" (function_definition "void FUN_002261e0(undefined8 *param_1)\n\n{\n  undefined8 uVar1;\n  undefined8 *puVar2;\n  int iVar3;\n  long lVar4;\n  long lVar5;\n  size_t __n;\n  undefined8 *__src;\n  undefined8 *__dest;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48;\n  undefined8 uStack_40;\n  \n  local_58 = &local_48;\n  if (param_1 + 2 == (undefined8 *)*param_1) {\n    local_48 = param_1[2];\n    uStack_40 = param_1[3];\n  }\n  else {\n    local_48 = param_1[2];\n    local_58 = (undefined8 *)*param_1;\n  }\n  local_50 = param_1[1];\n  *param_1 = param_1 + 2;\n  __src = param_1 + -2;\n  param_1[1] = 0;\n  *(undefined1 *)(param_1 + 2) = 0;\n  while( true ) {\n    puVar2 = __src + 2;\n    lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);\n    lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);\n    if (lVar4 == -1) {\n      lVar4 = 0;\n    }\n    if (lVar5 == -1) {\n      lVar5 = 0;\n    }\n                    \n    iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);\n    __dest = (undefined8 *)__src[2];\n    if (-1 < iVar3) break;\n    puVar2 = (undefined8 *)__src[-2];\n    if (puVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }\nLAB_00226278:\n    __src[-1] = 0;\n    __src = __src + -4;\n    *(undefined1 *)__dest = 0;\n  }\n  if (local_58 == &local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }\n    __src[3] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar1 = local_48;\n  }\n  else {\n    if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }\n    local_58 = &local_48;\n    uVar1 = local_48;\n  }\nLAB_00226394:\n  local_48 = uVar1;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != &local_48) {\n    FUN_00276d20();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_002261e0(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined8 uVar1;\n  undefined8 *puVar2;\n  int iVar3;\n  long lVar4;\n  long lVar5;\n  size_t __n;\n  undefined8 *__src;\n  undefined8 *__dest;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48;\n  undefined8 uStack_40;\n  \n  local_58 = &local_48;\n  if (param_1 + 2 == (undefined8 *)*param_1) {\n    local_48 = param_1[2];\n    uStack_40 = param_1[3];\n  }\n  else {\n    local_48 = param_1[2];\n    local_58 = (undefined8 *)*param_1;\n  }\n  local_50 = param_1[1];\n  *param_1 = param_1 + 2;\n  __src = param_1 + -2;\n  param_1[1] = 0;\n  *(undefined1 *)(param_1 + 2) = 0;\n  while( true ) {\n    puVar2 = __src + 2;\n    lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);\n    lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);\n    if (lVar4 == -1) {\n      lVar4 = 0;\n    }\n    if (lVar5 == -1) {\n      lVar5 = 0;\n    }\n                    \n    iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);\n    __dest = (undefined8 *)__src[2];\n    if (-1 < iVar3) break;\n    puVar2 = (undefined8 *)__src[-2];\n    if (puVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }\nLAB_00226278:\n    __src[-1] = 0;\n    __src = __src + -4;\n    *(undefined1 *)__dest = 0;\n  }\n  if (local_58 == &local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }\n    __src[3] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar1 = local_48;\n  }\n  else {\n    if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }\n    local_58 = &local_48;\n    uVar1 = local_48;\n  }\nLAB_00226394:\n  local_48 = uVar1;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != &local_48) {\n    FUN_00276d20();\n  }\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "undefined8 *__src;" type_identifier (pointer_declarator "*__src" * identifier) ;) (declaration "undefined8 *__dest;" type_identifier (pointer_declarator "*__dest" * identifier) ;) (declaration "undefined8 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "size_t local_50;" primitive_type identifier ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "undefined8 uStack_40;" type_identifier identifier ;) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (if_statement "if (param_1 + 2 == (undefined8 *)*param_1) {\n    local_48 = param_1[2];\n    uStack_40 = param_1[3];\n  }\n  else {\n    local_48 = param_1[2];\n    local_58 = (undefined8 *)*param_1;\n  }" if (parenthesized_expression "(param_1 + 2 == (undefined8 *)*param_1)" ( (binary_expression "param_1 + 2 == (undefined8 *)*param_1" (binary_expression "param_1 + 2" identifier + number_literal) == (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) )) (compound_statement "{\n    local_48 = param_1[2];\n    uStack_40 = param_1[3];\n  }" { (expression_statement "local_48 = param_1[2];" (assignment_expression "local_48 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uStack_40 = param_1[3];" (assignment_expression "uStack_40 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    local_48 = param_1[2];\n    local_58 = (undefined8 *)*param_1;\n  }" else (compound_statement "{\n    local_48 = param_1[2];\n    local_58 = (undefined8 *)*param_1;\n  }" { (expression_statement "local_48 = param_1[2];" (assignment_expression "local_48 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "local_58 = (undefined8 *)*param_1;" (assignment_expression "local_58 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) }))) (expression_statement "local_50 = param_1[1];" (assignment_expression "local_50 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "*param_1 = param_1 + 2;" (assignment_expression "*param_1 = param_1 + 2" (pointer_expression "*param_1" * identifier) = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (expression_statement "__src = param_1 + -2;" (assignment_expression "__src = param_1 + -2" identifier = (binary_expression "param_1 + -2" identifier + number_literal)) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 2) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 2) = 0" (pointer_expression "*(undefined1 *)(param_1 + 2)" * (cast_expression "(undefined1 *)(param_1 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = number_literal) ;) (while_statement "while( true ) {\n    puVar2 = __src + 2;\n    lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);\n    lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);\n    if (lVar4 == -1) {\n      lVar4 = 0;\n    }\n    if (lVar5 == -1) {\n      lVar5 = 0;\n    }\n                    \n    iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);\n    __dest = (undefined8 *)__src[2];\n    if (-1 < iVar3) break;\n    puVar2 = (undefined8 *)__src[-2];\n    if (puVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }\nLAB_00226278:\n    __src[-1] = 0;\n    __src = __src + -4;\n    *(undefined1 *)__dest = 0;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    puVar2 = __src + 2;\n    lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);\n    lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);\n    if (lVar4 == -1) {\n      lVar4 = 0;\n    }\n    if (lVar5 == -1) {\n      lVar5 = 0;\n    }\n                    \n    iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);\n    __dest = (undefined8 *)__src[2];\n    if (-1 < iVar3) break;\n    puVar2 = (undefined8 *)__src[-2];\n    if (puVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }\nLAB_00226278:\n    __src[-1] = 0;\n    __src = __src + -4;\n    *(undefined1 *)__dest = 0;\n  }" { (expression_statement "puVar2 = __src + 2;" (assignment_expression "puVar2 = __src + 2" identifier = (binary_expression "__src + 2" identifier + number_literal)) ;) (expression_statement "lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff)" identifier (argument_list "(&local_58,0x2f,0xffffffffffffffff)" ( (pointer_expression "&local_58" & identifier) , number_literal , number_literal )))) ;) (expression_statement "lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff)" identifier (argument_list "(__src + -2,0x2f,0xffffffffffffffff)" ( (binary_expression "__src + -2" identifier + number_literal) , number_literal , number_literal )))) ;) (if_statement "if (lVar4 == -1) {\n      lVar4 = 0;\n    }" if (parenthesized_expression "(lVar4 == -1)" ( (binary_expression "lVar4 == -1" identifier == number_literal) )) (compound_statement "{\n      lVar4 = 0;\n    }" { (expression_statement "lVar4 = 0;" (assignment_expression "lVar4 = 0" identifier = number_literal) ;) })) (if_statement "if (lVar5 == -1) {\n      lVar5 = 0;\n    }" if (parenthesized_expression "(lVar5 == -1)" ( (binary_expression "lVar5 == -1" identifier == number_literal) )) (compound_statement "{\n      lVar5 = 0;\n    }" { (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" identifier = number_literal) ;) })) (expression_statement "iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff)" identifier = (call_expression "FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff)" identifier (argument_list "(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , (binary_expression "__src + -2" identifier + number_literal) , identifier , number_literal )))) ;) (expression_statement "__dest = (undefined8 *)__src[2];" (assignment_expression "__dest = (undefined8 *)__src[2]" identifier = (cast_expression "(undefined8 *)__src[2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "__src[2]" identifier [ number_literal ]))) ;) (if_statement "if (-1 < iVar3) break;" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "puVar2 = (undefined8 *)__src[-2];" (assignment_expression "puVar2 = (undefined8 *)__src[-2]" identifier = (cast_expression "(undefined8 *)__src[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "__src[-2]" identifier [ number_literal ]))) ;) (if_statement "if (puVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }" if (parenthesized_expression "(puVar2 == __src)" ( (binary_expression "puVar2 == __src" identifier == identifier) )) (compound_statement "{\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }" { (expression_statement "__n = __src[-1];" (assignment_expression "__n = __src[-1]" identifier = (subscript_expression "__src[-1]" identifier [ number_literal ])) ;) (if_statement "if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (compound_statement "{\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }" { (if_statement "if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }" if (parenthesized_expression "(__n == 1)" ( (binary_expression "__n == 1" identifier == number_literal) )) (compound_statement "{\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }" { (expression_statement "*(undefined1 *)__dest = *(undefined1 *)__src;" (assignment_expression "*(undefined1 *)__dest = *(undefined1 *)__src" (pointer_expression "*(undefined1 *)__dest" * (cast_expression "(undefined1 *)__dest" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined1 *)__src" * (cast_expression "(undefined1 *)__src" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "__n = __src[-1];" (assignment_expression "__n = __src[-1]" identifier = (subscript_expression "__src[-1]" identifier [ number_literal ])) ;) (expression_statement "__dest = (undefined8 *)__src[2];" (assignment_expression "__dest = (undefined8 *)__src[2]" identifier = (cast_expression "(undefined8 *)__src[2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "__src[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }" else (compound_statement "{\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }" { (expression_statement "memcpy(__dest,__src,__n);" (call_expression "memcpy(__dest,__src,__n)" identifier (argument_list "(__dest,__src,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "__n = __src[-1];" (assignment_expression "__n = __src[-1]" identifier = (subscript_expression "__src[-1]" identifier [ number_literal ])) ;) (expression_statement "__dest = (undefined8 *)__src[2];" (assignment_expression "__dest = (undefined8 *)__src[2]" identifier = (cast_expression "(undefined8 *)__src[2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "__src[2]" identifier [ number_literal ]))) ;) }))) })) (expression_statement "__src[3] = __n;" (assignment_expression "__src[3] = __n" (subscript_expression "__src[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((long)__dest + __n) = 0;" (assignment_expression "*(undefined1 *)((long)__dest + __n) = 0" (pointer_expression "*(undefined1 *)((long)__dest + __n)" * (cast_expression "(undefined1 *)((long)__dest + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + __n)" ( (binary_expression "(long)__dest + __n" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "__dest = (undefined8 *)__src[-2];" (assignment_expression "__dest = (undefined8 *)__src[-2]" identifier = (cast_expression "(undefined8 *)__src[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "__src[-2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }" else (compound_statement "{\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }" { (if_statement "if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }" if (parenthesized_expression "(__dest == __src + 4)" ( (binary_expression "__dest == __src + 4" identifier == (binary_expression "__src + 4" identifier + number_literal)) )) (compound_statement "{\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }" { (expression_statement "__src[2] = puVar2;" (assignment_expression "__src[2] = puVar2" (subscript_expression "__src[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__src[3] = __src[-1];" (assignment_expression "__src[3] = __src[-1]" (subscript_expression "__src[3]" identifier [ number_literal ]) = (subscript_expression "__src[-1]" identifier [ number_literal ])) ;) (expression_statement "__src[4] = *__src;" (assignment_expression "__src[4] = *__src" (subscript_expression "__src[4]" identifier [ number_literal ]) = (pointer_expression "*__src" * identifier)) ;) }) (else_clause "else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }" else (compound_statement "{\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }" { (expression_statement "__src[2] = puVar2;" (assignment_expression "__src[2] = puVar2" (subscript_expression "__src[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = __src[4];" (assignment_expression "uVar1 = __src[4]" identifier = (subscript_expression "__src[4]" identifier [ number_literal ])) ;) (expression_statement "__src[3] = __src[-1];" (assignment_expression "__src[3] = __src[-1]" (subscript_expression "__src[3]" identifier [ number_literal ]) = (subscript_expression "__src[-1]" identifier [ number_literal ])) ;) (expression_statement "__src[4] = *__src;" (assignment_expression "__src[4] = *__src" (subscript_expression "__src[4]" identifier [ number_literal ]) = (pointer_expression "*__src" * identifier)) ;) (if_statement "if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }" if (parenthesized_expression "(__dest != (undefined8 *)0x0)" ( (binary_expression "__dest != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }" { (expression_statement "__src[-2] = __dest;" (assignment_expression "__src[-2] = __dest" (subscript_expression "__src[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*__src = uVar1;" (assignment_expression "*__src = uVar1" (pointer_expression "*__src" * identifier) = identifier) ;) (goto_statement "goto LAB_00226278;" goto statement_identifier ;) })) }))) (expression_statement "__src[-2] = __src;" (assignment_expression "__src[-2] = __src" (subscript_expression "__src[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__dest = __src;" (assignment_expression "__dest = __src" identifier = identifier) ;) }))) (labeled_statement "LAB_00226278:\n    __src[-1] = 0;" statement_identifier : (expression_statement "__src[-1] = 0;" (assignment_expression "__src[-1] = 0" (subscript_expression "__src[-1]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "__src = __src + -4;" (assignment_expression "__src = __src + -4" identifier = (binary_expression "__src + -4" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)__dest = 0;" (assignment_expression "*(undefined1 *)__dest = 0" (pointer_expression "*(undefined1 *)__dest" * (cast_expression "(undefined1 *)__dest" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) })) (if_statement "if (local_58 == &local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }\n    __src[3] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar1 = local_48;\n  }\n  else {\n    if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }\n    local_58 = &local_48;\n    uVar1 = local_48;\n  }" if (parenthesized_expression "(local_58 == &local_48)" ( (binary_expression "local_58 == &local_48" identifier == (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }\n    __src[3] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar1 = local_48;\n  }" { (if_statement "if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (compound_statement "{\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }" { (if_statement "if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }" if (parenthesized_expression "(local_50 == 1)" ( (binary_expression "local_50 == 1" identifier == number_literal) )) (compound_statement "{\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }" { (expression_statement "*(undefined1 *)__dest = (undefined1)local_48;" (assignment_expression "*(undefined1 *)__dest = (undefined1)local_48" (pointer_expression "*(undefined1 *)__dest" * (cast_expression "(undefined1 *)__dest" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(undefined1)local_48" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "__dest = (undefined8 *)*puVar2;" (assignment_expression "__dest = (undefined8 *)*puVar2" identifier = (cast_expression "(undefined8 *)*puVar2" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;) }) (else_clause "else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }" else (compound_statement "{\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }" { (expression_statement "memcpy(__dest,local_58,local_50);" (call_expression "memcpy(__dest,local_58,local_50)" identifier (argument_list "(__dest,local_58,local_50)" ( identifier , identifier , identifier ))) ;) (expression_statement "__dest = (undefined8 *)*puVar2;" (assignment_expression "__dest = (undefined8 *)*puVar2" identifier = (cast_expression "(undefined8 *)*puVar2" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;) }))) })) (expression_statement "__src[3] = local_50;" (assignment_expression "__src[3] = local_50" (subscript_expression "__src[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((long)__dest + local_50) = 0;" (assignment_expression "*(undefined1 *)((long)__dest + local_50) = 0" (pointer_expression "*(undefined1 *)((long)__dest + local_50)" * (cast_expression "(undefined1 *)((long)__dest + local_50)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + local_50)" ( (binary_expression "(long)__dest + local_50" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar1 = local_48;" (assignment_expression "uVar1 = local_48" identifier = identifier) ;) }) (else_clause "else {\n    if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }\n    local_58 = &local_48;\n    uVar1 = local_48;\n  }" else (compound_statement "{\n    if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }\n    local_58 = &local_48;\n    uVar1 = local_48;\n  }" { (if_statement "if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }" if (parenthesized_expression "(__dest == __src + 4)" ( (binary_expression "__dest == __src + 4" identifier == (binary_expression "__src + 4" identifier + number_literal)) )) (compound_statement "{\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }" { (expression_statement "*puVar2 = local_58;" (assignment_expression "*puVar2 = local_58" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "__src[3] = local_50;" (assignment_expression "__src[3] = local_50" (subscript_expression "__src[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__src[4] = local_48;" (assignment_expression "__src[4] = local_48" (subscript_expression "__src[4]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }" else (compound_statement "{\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }" { (expression_statement "uVar1 = __src[4];" (assignment_expression "uVar1 = __src[4]" identifier = (subscript_expression "__src[4]" identifier [ number_literal ])) ;) (expression_statement "*puVar2 = local_58;" (assignment_expression "*puVar2 = local_58" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "__src[3] = local_50;" (assignment_expression "__src[3] = local_50" (subscript_expression "__src[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__src[4] = local_48;" (assignment_expression "__src[4] = local_48" (subscript_expression "__src[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_58 = __dest;" (assignment_expression "local_58 = __dest" identifier = identifier) ;) (if_statement "if (__dest != (undefined8 *)0x0) goto LAB_00226394;" if (parenthesized_expression "(__dest != (undefined8 *)0x0)" ( (binary_expression "__dest != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00226394;" goto statement_identifier ;)) }))) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (expression_statement "uVar1 = local_48;" (assignment_expression "uVar1 = local_48" identifier = identifier) ;) }))) (labeled_statement "LAB_00226394:\n  local_48 = uVar1;" statement_identifier : (expression_statement "local_48 = uVar1;" (assignment_expression "local_48 = uVar1" identifier = identifier) ;)) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "*(undefined1 *)local_58 = 0;" (assignment_expression "*(undefined1 *)local_58 = 0" (pointer_expression "*(undefined1 *)local_58" * (cast_expression "(undefined1 *)local_58" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if (local_58 != &local_48) {\n    FUN_00276d20();\n  }" if (parenthesized_expression "(local_58 != &local_48)" ( (binary_expression "local_58 != &local_48" identifier != (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n    FUN_00276d20();\n  }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (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) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , LIT , (binary_expression IDENT + LIT) , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + LIT)) )) (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 (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression & IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return ;) })))
(function_definition "void FUN_002261e0(undefined8 *param_1)\n\n{\n  undefined8 uVar1;\n  undefined8 *puVar2;\n  int iVar3;\n  long lVar4;\n  long lVar5;\n  size_t __n;\n  undefined8 *__src;\n  undefined8 *__dest;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48;\n  undefined8 uStack_40;\n  \n  local_58 = &local_48;\n  if (param_1 + 2 == (undefined8 *)*param_1) {\n    local_48 = param_1[2];\n    uStack_40 = param_1[3];\n  }\n  else {\n    local_48 = param_1[2];\n    local_58 = (undefined8 *)*param_1;\n  }\n  local_50 = param_1[1];\n  *param_1 = param_1 + 2;\n  __src = param_1 + -2;\n  param_1[1] = 0;\n  *(undefined1 *)(param_1 + 2) = 0;\n  while( true ) {\n    puVar2 = __src + 2;\n    lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);\n    lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);\n    if (lVar4 == -1) {\n      lVar4 = 0;\n    }\n    if (lVar5 == -1) {\n      lVar5 = 0;\n    }\n                    \n    iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);\n    __dest = (undefined8 *)__src[2];\n    if (-1 < iVar3) break;\n    puVar2 = (undefined8 *)__src[-2];\n    if (puVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }\nLAB_00226278:\n    __src[-1] = 0;\n    __src = __src + -4;\n    *(undefined1 *)__dest = 0;\n  }\n  if (local_58 == &local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }\n    __src[3] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar1 = local_48;\n  }\n  else {\n    if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }\n    local_58 = &local_48;\n    uVar1 = local_48;\n  }\nLAB_00226394:\n  local_48 = uVar1;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != &local_48) {\n    FUN_00276d20();\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002261e0(undefined8 *param_1)" (identifier "FUN_002261e0") (parameter_list "(undefined8 *param_1)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  undefined8 *puVar2;\n  int iVar3;\n  long lVar4;\n  long lVar5;\n  size_t __n;\n  undefined8 *__src;\n  undefined8 *__dest;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48;\n  undefined8 uStack_40;\n  \n  local_58 = &local_48;\n  if (param_1 + 2 == (undefined8 *)*param_1) {\n    local_48 = param_1[2];\n    uStack_40 = param_1[3];\n  }\n  else {\n    local_48 = param_1[2];\n    local_58 = (undefined8 *)*param_1;\n  }\n  local_50 = param_1[1];\n  *param_1 = param_1 + 2;\n  __src = param_1 + -2;\n  param_1[1] = 0;\n  *(undefined1 *)(param_1 + 2) = 0;\n  while( true ) {\n    puVar2 = __src + 2;\n    lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);\n    lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);\n    if (lVar4 == -1) {\n      lVar4 = 0;\n    }\n    if (lVar5 == -1) {\n      lVar5 = 0;\n    }\n                    \n    iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);\n    __dest = (undefined8 *)__src[2];\n    if (-1 < iVar3) break;\n    puVar2 = (undefined8 *)__src[-2];\n    if (puVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }\nLAB_00226278:\n    __src[-1] = 0;\n    __src = __src + -4;\n    *(undefined1 *)__dest = 0;\n  }\n  if (local_58 == &local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }\n    __src[3] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar1 = local_48;\n  }\n  else {\n    if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }\n    local_58 = &local_48;\n    uVar1 = local_48;\n  }\nLAB_00226394:\n  local_48 = uVar1;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != &local_48) {\n    FUN_00276d20();\n  }\n  return;\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (declaration "undefined8 *puVar2;" (type_identifier "undefined8") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "undefined8 *__src;" (type_identifier "undefined8") (pointer_declarator "*__src" (* "*") (identifier "__src")) (; ";")) (declaration "undefined8 *__dest;" (type_identifier "undefined8") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "undefined8 *local_58;" (type_identifier "undefined8") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "size_t local_50;" (primitive_type "size_t") (identifier "local_50") (; ";")) (declaration "undefined8 local_48;" (type_identifier "undefined8") (identifier "local_48") (; ";")) (declaration "undefined8 uStack_40;" (type_identifier "undefined8") (identifier "uStack_40") (; ";")) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" (identifier "local_58") (= "=") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) (; ";")) (if_statement "if (param_1 + 2 == (undefined8 *)*param_1) {\n    local_48 = param_1[2];\n    uStack_40 = param_1[3];\n  }\n  else {\n    local_48 = param_1[2];\n    local_58 = (undefined8 *)*param_1;\n  }" (if "if") (parenthesized_expression "(param_1 + 2 == (undefined8 *)*param_1)" (( "(") (binary_expression "param_1 + 2 == (undefined8 *)*param_1" (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) (== "==") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) () ")")) (compound_statement "{\n    local_48 = param_1[2];\n    uStack_40 = param_1[3];\n  }" ({ "{") (expression_statement "local_48 = param_1[2];" (assignment_expression "local_48 = param_1[2]" (identifier "local_48") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uStack_40 = param_1[3];" (assignment_expression "uStack_40 = param_1[3]" (identifier "uStack_40") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    local_48 = param_1[2];\n    local_58 = (undefined8 *)*param_1;\n  }" (else "else") (compound_statement "{\n    local_48 = param_1[2];\n    local_58 = (undefined8 *)*param_1;\n  }" ({ "{") (expression_statement "local_48 = param_1[2];" (assignment_expression "local_48 = param_1[2]" (identifier "local_48") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_58 = (undefined8 *)*param_1;" (assignment_expression "local_58 = (undefined8 *)*param_1" (identifier "local_58") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (} "}")))) (expression_statement "local_50 = param_1[1];" (assignment_expression "local_50 = param_1[1]" (identifier "local_50") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*param_1 = param_1 + 2;" (assignment_expression "*param_1 = param_1 + 2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "__src = param_1 + -2;" (assignment_expression "__src = param_1 + -2" (identifier "__src") (= "=") (binary_expression "param_1 + -2" (identifier "param_1") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 2) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 2) = 0" (pointer_expression "*(undefined1 *)(param_1 + 2)" (* "*") (cast_expression "(undefined1 *)(param_1 + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "0")) (; ";")) (while_statement "while( true ) {\n    puVar2 = __src + 2;\n    lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);\n    lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);\n    if (lVar4 == -1) {\n      lVar4 = 0;\n    }\n    if (lVar5 == -1) {\n      lVar5 = 0;\n    }\n                    \n    iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);\n    __dest = (undefined8 *)__src[2];\n    if (-1 < iVar3) break;\n    puVar2 = (undefined8 *)__src[-2];\n    if (puVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }\nLAB_00226278:\n    __src[-1] = 0;\n    __src = __src + -4;\n    *(undefined1 *)__dest = 0;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    puVar2 = __src + 2;\n    lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);\n    lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);\n    if (lVar4 == -1) {\n      lVar4 = 0;\n    }\n    if (lVar5 == -1) {\n      lVar5 = 0;\n    }\n                    \n    iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);\n    __dest = (undefined8 *)__src[2];\n    if (-1 < iVar3) break;\n    puVar2 = (undefined8 *)__src[-2];\n    if (puVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }\nLAB_00226278:\n    __src[-1] = 0;\n    __src = __src + -4;\n    *(undefined1 *)__dest = 0;\n  }" ({ "{") (expression_statement "puVar2 = __src + 2;" (assignment_expression "puVar2 = __src + 2" (identifier "puVar2") (= "=") (binary_expression "__src + 2" (identifier "__src") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff)" (identifier "lVar4") (= "=") (call_expression "FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff)" (identifier "FUN_0027f5a0") (argument_list "(&local_58,0x2f,0xffffffffffffffff)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (number_literal "0x2f") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (expression_statement "lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff)" (identifier "lVar5") (= "=") (call_expression "FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff)" (identifier "FUN_0027f5a0") (argument_list "(__src + -2,0x2f,0xffffffffffffffff)" (( "(") (binary_expression "__src + -2" (identifier "__src") (+ "+") (number_literal "-2")) (, ",") (number_literal "0x2f") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (if_statement "if (lVar4 == -1) {\n      lVar4 = 0;\n    }" (if "if") (parenthesized_expression "(lVar4 == -1)" (( "(") (binary_expression "lVar4 == -1" (identifier "lVar4") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      lVar4 = 0;\n    }" ({ "{") (expression_statement "lVar4 = 0;" (assignment_expression "lVar4 = 0" (identifier "lVar4") (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if (lVar5 == -1) {\n      lVar5 = 0;\n    }" (if "if") (parenthesized_expression "(lVar5 == -1)" (( "(") (binary_expression "lVar5 == -1" (identifier "lVar5") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      lVar5 = 0;\n    }" ({ "{") (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" (identifier "lVar5") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff)" (identifier "iVar3") (= "=") (call_expression "FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff)" (identifier "FUN_0027fa50") (argument_list "(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "lVar4") (, ",") (number_literal "0xffffffffffffffff") (, ",") (binary_expression "__src + -2" (identifier "__src") (+ "+") (number_literal "-2")) (, ",") (identifier "lVar5") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (expression_statement "__dest = (undefined8 *)__src[2];" (assignment_expression "__dest = (undefined8 *)__src[2]" (identifier "__dest") (= "=") (cast_expression "(undefined8 *)__src[2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "__src[2]" (identifier "__src") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (-1 < iVar3) break;" (if "if") (parenthesized_expression "(-1 < iVar3)" (( "(") (binary_expression "-1 < iVar3" (number_literal "-1") (< "<") (identifier "iVar3")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar2 = (undefined8 *)__src[-2];" (assignment_expression "puVar2 = (undefined8 *)__src[-2]" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)__src[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "__src[-2]" (identifier "__src") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (if_statement "if (puVar2 == __src) {\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }\n    else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }" (if "if") (parenthesized_expression "(puVar2 == __src)" (( "(") (binary_expression "puVar2 == __src" (identifier "puVar2") (== "==") (identifier "__src")) () ")")) (compound_statement "{\n      __n = __src[-1];\n      if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }\n      __src[3] = __n;\n      *(undefined1 *)((long)__dest + __n) = 0;\n      __dest = (undefined8 *)__src[-2];\n    }" ({ "{") (expression_statement "__n = __src[-1];" (assignment_expression "__n = __src[-1]" (identifier "__n") (= "=") (subscript_expression "__src[-1]" (identifier "__src") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (if_statement "if (__n != 0) {\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }" (if "if") (parenthesized_expression "(__n != 0)" (( "(") (binary_expression "__n != 0" (identifier "__n") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n      }" ({ "{") (if_statement "if (__n == 1) {\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }\n        else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }" (if "if") (parenthesized_expression "(__n == 1)" (( "(") (binary_expression "__n == 1" (identifier "__n") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          *(undefined1 *)__dest = *(undefined1 *)__src;\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }" ({ "{") (expression_statement "*(undefined1 *)__dest = *(undefined1 *)__src;" (assignment_expression "*(undefined1 *)__dest = *(undefined1 *)__src" (pointer_expression "*(undefined1 *)__dest" (* "*") (cast_expression "(undefined1 *)__dest" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__dest"))) (= "=") (pointer_expression "*(undefined1 *)__src" (* "*") (cast_expression "(undefined1 *)__src" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__src")))) (; ";")) (expression_statement "__n = __src[-1];" (assignment_expression "__n = __src[-1]" (identifier "__n") (= "=") (subscript_expression "__src[-1]" (identifier "__src") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "__dest = (undefined8 *)__src[2];" (assignment_expression "__dest = (undefined8 *)__src[2]" (identifier "__dest") (= "=") (cast_expression "(undefined8 *)__src[2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "__src[2]" (identifier "__src") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }" (else "else") (compound_statement "{\n          memcpy(__dest,__src,__n);\n          __n = __src[-1];\n          __dest = (undefined8 *)__src[2];\n        }" ({ "{") (expression_statement "memcpy(__dest,__src,__n);" (call_expression "memcpy(__dest,__src,__n)" (identifier "memcpy") (argument_list "(__dest,__src,__n)" (( "(") (identifier "__dest") (, ",") (identifier "__src") (, ",") (identifier "__n") () ")"))) (; ";")) (expression_statement "__n = __src[-1];" (assignment_expression "__n = __src[-1]" (identifier "__n") (= "=") (subscript_expression "__src[-1]" (identifier "__src") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "__dest = (undefined8 *)__src[2];" (assignment_expression "__dest = (undefined8 *)__src[2]" (identifier "__dest") (= "=") (cast_expression "(undefined8 *)__src[2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "__src[2]" (identifier "__src") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")))) (} "}"))) (expression_statement "__src[3] = __n;" (assignment_expression "__src[3] = __n" (subscript_expression "__src[3]" (identifier "__src") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "__n")) (; ";")) (expression_statement "*(undefined1 *)((long)__dest + __n) = 0;" (assignment_expression "*(undefined1 *)((long)__dest + __n) = 0" (pointer_expression "*(undefined1 *)((long)__dest + __n)" (* "*") (cast_expression "(undefined1 *)((long)__dest + __n)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__dest + __n)" (( "(") (binary_expression "(long)__dest + __n" (cast_expression "(long)__dest" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest")) (+ "+") (identifier "__n")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "__dest = (undefined8 *)__src[-2];" (assignment_expression "__dest = (undefined8 *)__src[-2]" (identifier "__dest") (= "=") (cast_expression "(undefined8 *)__src[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "__src[-2]" (identifier "__src") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }" (else "else") (compound_statement "{\n      if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }\n      __src[-2] = __src;\n      __dest = __src;\n    }" ({ "{") (if_statement "if (__dest == __src + 4) {\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }\n      else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }" (if "if") (parenthesized_expression "(__dest == __src + 4)" (( "(") (binary_expression "__dest == __src + 4" (identifier "__dest") (== "==") (binary_expression "__src + 4" (identifier "__src") (+ "+") (number_literal "4"))) () ")")) (compound_statement "{\n        __src[2] = puVar2;\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n      }" ({ "{") (expression_statement "__src[2] = puVar2;" (assignment_expression "__src[2] = puVar2" (subscript_expression "__src[2]" (identifier "__src") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "__src[3] = __src[-1];" (assignment_expression "__src[3] = __src[-1]" (subscript_expression "__src[3]" (identifier "__src") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "__src[-1]" (identifier "__src") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "__src[4] = *__src;" (assignment_expression "__src[4] = *__src" (subscript_expression "__src[4]" (identifier "__src") ([ "[") (number_literal "4") (] "]")) (= "=") (pointer_expression "*__src" (* "*") (identifier "__src"))) (; ";")) (} "}")) (else_clause "else {\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }" (else "else") (compound_statement "{\n        __src[2] = puVar2;\n        uVar1 = __src[4];\n        __src[3] = __src[-1];\n        __src[4] = *__src;\n        if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }\n      }" ({ "{") (expression_statement "__src[2] = puVar2;" (assignment_expression "__src[2] = puVar2" (subscript_expression "__src[2]" (identifier "__src") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "uVar1 = __src[4];" (assignment_expression "uVar1 = __src[4]" (identifier "uVar1") (= "=") (subscript_expression "__src[4]" (identifier "__src") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "__src[3] = __src[-1];" (assignment_expression "__src[3] = __src[-1]" (subscript_expression "__src[3]" (identifier "__src") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "__src[-1]" (identifier "__src") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "__src[4] = *__src;" (assignment_expression "__src[4] = *__src" (subscript_expression "__src[4]" (identifier "__src") ([ "[") (number_literal "4") (] "]")) (= "=") (pointer_expression "*__src" (* "*") (identifier "__src"))) (; ";")) (if_statement "if (__dest != (undefined8 *)0x0) {\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }" (if "if") (parenthesized_expression "(__dest != (undefined8 *)0x0)" (( "(") (binary_expression "__dest != (undefined8 *)0x0" (identifier "__dest") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          __src[-2] = __dest;\n          *__src = uVar1;\n          goto LAB_00226278;\n        }" ({ "{") (expression_statement "__src[-2] = __dest;" (assignment_expression "__src[-2] = __dest" (subscript_expression "__src[-2]" (identifier "__src") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "__dest")) (; ";")) (expression_statement "*__src = uVar1;" (assignment_expression "*__src = uVar1" (pointer_expression "*__src" (* "*") (identifier "__src")) (= "=") (identifier "uVar1")) (; ";")) (goto_statement "goto LAB_00226278;" (goto "goto") (statement_identifier "LAB_00226278") (; ";")) (} "}"))) (} "}")))) (expression_statement "__src[-2] = __src;" (assignment_expression "__src[-2] = __src" (subscript_expression "__src[-2]" (identifier "__src") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "__src")) (; ";")) (expression_statement "__dest = __src;" (assignment_expression "__dest = __src" (identifier "__dest") (= "=") (identifier "__src")) (; ";")) (} "}")))) (labeled_statement "LAB_00226278:\n    __src[-1] = 0;" (statement_identifier "LAB_00226278") (: ":") (expression_statement "__src[-1] = 0;" (assignment_expression "__src[-1] = 0" (subscript_expression "__src[-1]" (identifier "__src") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "__src = __src + -4;" (assignment_expression "__src = __src + -4" (identifier "__src") (= "=") (binary_expression "__src + -4" (identifier "__src") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "*(undefined1 *)__dest = 0;" (assignment_expression "*(undefined1 *)__dest = 0" (pointer_expression "*(undefined1 *)__dest" (* "*") (cast_expression "(undefined1 *)__dest" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__dest"))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if (local_58 == &local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }\n    __src[3] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar1 = local_48;\n  }\n  else {\n    if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }\n    local_58 = &local_48;\n    uVar1 = local_48;\n  }" (if "if") (parenthesized_expression "(local_58 == &local_48)" (( "(") (binary_expression "local_58 == &local_48" (identifier "local_58") (== "==") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) () ")")) (compound_statement "{\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }\n    __src[3] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar1 = local_48;\n  }" ({ "{") (if_statement "if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }" (if "if") (parenthesized_expression "(local_50 != 0)" (( "(") (binary_expression "local_50 != 0" (identifier "local_50") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }\n    }" ({ "{") (if_statement "if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }" (if "if") (parenthesized_expression "(local_50 == 1)" (( "(") (binary_expression "local_50 == 1" (identifier "local_50") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        *(undefined1 *)__dest = (undefined1)local_48;\n        __dest = (undefined8 *)*puVar2;\n      }" ({ "{") (expression_statement "*(undefined1 *)__dest = (undefined1)local_48;" (assignment_expression "*(undefined1 *)__dest = (undefined1)local_48" (pointer_expression "*(undefined1 *)__dest" (* "*") (cast_expression "(undefined1 *)__dest" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__dest"))) (= "=") (cast_expression "(undefined1)local_48" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (identifier "local_48"))) (; ";")) (expression_statement "__dest = (undefined8 *)*puVar2;" (assignment_expression "__dest = (undefined8 *)*puVar2" (identifier "__dest") (= "=") (cast_expression "(undefined8 *)*puVar2" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")))) (; ";")) (} "}")) (else_clause "else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }" (else "else") (compound_statement "{\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*puVar2;\n      }" ({ "{") (expression_statement "memcpy(__dest,local_58,local_50);" (call_expression "memcpy(__dest,local_58,local_50)" (identifier "memcpy") (argument_list "(__dest,local_58,local_50)" (( "(") (identifier "__dest") (, ",") (identifier "local_58") (, ",") (identifier "local_50") () ")"))) (; ";")) (expression_statement "__dest = (undefined8 *)*puVar2;" (assignment_expression "__dest = (undefined8 *)*puVar2" (identifier "__dest") (= "=") (cast_expression "(undefined8 *)*puVar2" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")))) (; ";")) (} "}")))) (} "}"))) (expression_statement "__src[3] = local_50;" (assignment_expression "__src[3] = local_50" (subscript_expression "__src[3]" (identifier "__src") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_50")) (; ";")) (expression_statement "*(undefined1 *)((long)__dest + local_50) = 0;" (assignment_expression "*(undefined1 *)((long)__dest + local_50) = 0" (pointer_expression "*(undefined1 *)((long)__dest + local_50)" (* "*") (cast_expression "(undefined1 *)((long)__dest + local_50)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__dest + local_50)" (( "(") (binary_expression "(long)__dest + local_50" (cast_expression "(long)__dest" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest")) (+ "+") (identifier "local_50")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar1 = local_48;" (assignment_expression "uVar1 = local_48" (identifier "uVar1") (= "=") (identifier "local_48")) (; ";")) (} "}")) (else_clause "else {\n    if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }\n    local_58 = &local_48;\n    uVar1 = local_48;\n  }" (else "else") (compound_statement "{\n    if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }\n    local_58 = &local_48;\n    uVar1 = local_48;\n  }" ({ "{") (if_statement "if (__dest == __src + 4) {\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }\n    else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }" (if "if") (parenthesized_expression "(__dest == __src + 4)" (( "(") (binary_expression "__dest == __src + 4" (identifier "__dest") (== "==") (binary_expression "__src + 4" (identifier "__src") (+ "+") (number_literal "4"))) () ")")) (compound_statement "{\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n    }" ({ "{") (expression_statement "*puVar2 = local_58;" (assignment_expression "*puVar2 = local_58" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "local_58")) (; ";")) (expression_statement "__src[3] = local_50;" (assignment_expression "__src[3] = local_50" (subscript_expression "__src[3]" (identifier "__src") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_50")) (; ";")) (expression_statement "__src[4] = local_48;" (assignment_expression "__src[4] = local_48" (subscript_expression "__src[4]" (identifier "__src") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_48")) (; ";")) (} "}")) (else_clause "else {\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }" (else "else") (compound_statement "{\n      uVar1 = __src[4];\n      *puVar2 = local_58;\n      __src[3] = local_50;\n      __src[4] = local_48;\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_00226394;\n    }" ({ "{") (expression_statement "uVar1 = __src[4];" (assignment_expression "uVar1 = __src[4]" (identifier "uVar1") (= "=") (subscript_expression "__src[4]" (identifier "__src") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "*puVar2 = local_58;" (assignment_expression "*puVar2 = local_58" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "local_58")) (; ";")) (expression_statement "__src[3] = local_50;" (assignment_expression "__src[3] = local_50" (subscript_expression "__src[3]" (identifier "__src") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_50")) (; ";")) (expression_statement "__src[4] = local_48;" (assignment_expression "__src[4] = local_48" (subscript_expression "__src[4]" (identifier "__src") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_48")) (; ";")) (expression_statement "local_58 = __dest;" (assignment_expression "local_58 = __dest" (identifier "local_58") (= "=") (identifier "__dest")) (; ";")) (if_statement "if (__dest != (undefined8 *)0x0) goto LAB_00226394;" (if "if") (parenthesized_expression "(__dest != (undefined8 *)0x0)" (( "(") (binary_expression "__dest != (undefined8 *)0x0" (identifier "__dest") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00226394;" (goto "goto") (statement_identifier "LAB_00226394") (; ";"))) (} "}")))) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" (identifier "local_58") (= "=") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) (; ";")) (expression_statement "uVar1 = local_48;" (assignment_expression "uVar1 = local_48" (identifier "uVar1") (= "=") (identifier "local_48")) (; ";")) (} "}")))) (labeled_statement "LAB_00226394:\n  local_48 = uVar1;" (statement_identifier "LAB_00226394") (: ":") (expression_statement "local_48 = uVar1;" (assignment_expression "local_48 = uVar1" (identifier "local_48") (= "=") (identifier "uVar1")) (; ";"))) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)local_58 = 0;" (assignment_expression "*(undefined1 *)local_58 = 0" (pointer_expression "*(undefined1 *)local_58" (* "*") (cast_expression "(undefined1 *)local_58" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_58"))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_58 != &local_48) {\n    FUN_00276d20();\n  }" (if "if") (parenthesized_expression "(local_58 != &local_48)" (( "(") (binary_expression "local_58 != &local_48" (identifier "local_58") (!= "!=") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) () ")")) (compound_statement "{\n    FUN_00276d20();\n  }" ({ "{") (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" (identifier "FUN_00276d20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name:
   __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,
   std::vector<std::__cxx11::basic_string<char> > >,
   __gnu_cxx::__ops::_Val_comp_iter<gold::Odr_violation_compare> > */

void std::
     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>var_14>var_14>,___gnu_cxx::__ops::_Val_comp_iter<gold::Odr_violation_compare>var_14>
               (long *var_1)

{
  long lVar1;
  long *var_8;
  type_1 uVar3;
  int var_7;
  type_2 var_4;
  type_2 var_5;
  size_t var_9;
  long *var_2;
  long *var_11;
  type_3 __val;
  
  __val._M_dataplus._M_p = (type_6)&__val.field_2;
  if (var_1 + 2 == (long *)*var_1) {
    __val.field_2._M_allocated_capacity = var_1[2];
    __val.field_2._8_8_ = var_1[3];
  }
  else {
    __val.field_2._M_allocated_capacity = var_1[2];
    __val._M_dataplus._M_p = (type_6)*var_1;
  }
  __val._M_string_length = var_1[1];
  *var_1 = (long)(var_1 + 2);
  var_2 = var_1 + -2;
  var_1[1] = 0;
  *(type_4 *)(var_1 + 2) = 0;
  while( true ) {
    var_8 = var_2 + 2;
    var_4 = type_5::var_3((type_5 *)&__val,'/',0xffffffffffffffff);
    var_5 = type_5::var_3((type_5 *)(var_2 + -2),'/',0xffffffffffffffff);
    if (var_4 == 0xffffffffffffffff) {
      var_4 = 0;
    }
    if (var_5 == 0xffffffffffffffff) {
      var_5 = 0;
    }
                    /* try { // try from 002262d9 to 002262dd has its CatchHandler @ 0022645a */
    var_7 = type_5::var_6((type_5 *)&__val,var_4,0xffffffffffffffff,(type_5 *)(var_2 + -2),var_5,
                            0xffffffffffffffff);
    var_11 = (long *)var_2[2];
    if (-1 < var_7) break;
    var_8 = (long *)var_2[-2];
    if (var_8 == var_2) {
      var_9 = var_2[-1];
      if (var_9 != 0) {
        if (var_9 == 1) {
          *(char *)var_11 = (char)*var_2;
          var_9 = var_2[-1];
          var_11 = (long *)var_2[2];
        }
        else {
          var_10(var_11,var_2,var_9);
          var_9 = var_2[-1];
          var_11 = (long *)var_2[2];
        }
      }
      var_2[3] = var_9;
      *(type_4 *)((long)var_11 + var_9) = 0;
      var_11 = (long *)var_2[-2];
    }
    else {
      if (var_11 == var_2 + 4) {
        var_2[2] = (long)var_8;
        var_2[3] = var_2[-1];
        var_2[4] = *var_2;
      }
      else {
        var_2[2] = (long)var_8;
        lVar1 = var_2[4];
        var_2[3] = var_2[-1];
        var_2[4] = *var_2;
        if (var_11 != (long *)0x0) {
          var_2[-2] = (long)var_11;
          *var_2 = lVar1;
          goto LAB_00226278;
        }
      }
      var_2[-2] = (long)var_2;
      var_11 = var_2;
    }
LAB_00226278:
    var_2[-1] = 0;
    var_2 = var_2 + -4;
    *(type_4 *)var_11 = 0;
  }
  if ((anon_union_16_2_edb7204a_for_basic_string<var_13,_std::char_traits<var_13>,_std::var_12<var_13>var_14>var_15
       *)__val._M_dataplus._M_p == &__val.field_2) {
    if (__val._M_string_length != 0) {
      if (__val._M_string_length == 1) {
        *(char *)var_11 = __val.field_2._M_local_buf[0];
        var_11 = (long *)*var_8;
      }
      else {
        var_10(var_11,__val._M_dataplus._M_p,__val._M_string_length);
        var_11 = (long *)*var_8;
      }
    }
    var_2[3] = __val._M_string_length;
    *(type_4 *)((long)var_11 + __val._M_string_length) = 0;
    uVar3 = __val.field_2._M_allocated_capacity;
  }
  else {
    if (var_11 == var_2 + 4) {
      *var_8 = (long)__val._M_dataplus._M_p;
      var_2[3] = __val._M_string_length;
      var_2[4] = __val.field_2._M_allocated_capacity;
    }
    else {
      uVar3 = var_2[4];
      *var_8 = (long)__val._M_dataplus._M_p;
      var_2[3] = __val._M_string_length;
      var_2[4] = __val.field_2._M_allocated_capacity;
      __val._M_dataplus._M_p = (type_6)var_11;
      if (var_11 != (long *)0x0) goto LAB_00226394;
    }
    __val._M_dataplus._M_p = (type_6)&__val.field_2;
    uVar3 = __val.field_2._M_allocated_capacity;
  }
LAB_00226394:
  __val.field_2._M_allocated_capacity = uVar3;
  __val._M_string_length = 0;
  *__val._M_dataplus._M_p = '\0';
  if ((anon_union_16_2_edb7204a_for_basic_string<var_13,_std::char_traits<var_13>,_std::var_12<var_13>var_14>var_15
       *)__val._M_dataplus._M_p != &__val.field_2) {
    var_16(__val._M_dataplus._M_p);
  }
  return;
}


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

void MASKED(undefined8 *param_1)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  int iVar3;
  long lVar4;
  long lVar5;
  size_t __n;
  undefined8 *__src;
  undefined8 *__dest;
  undefined8 *local_58;
  size_t local_50;
  undefined8 local_48;
  undefined8 uStack_40;
  
  local_58 = &local_48;
  if (param_1 + 2 == (undefined8 *)*param_1) {
    local_48 = param_1[2];
    uStack_40 = param_1[3];
  }
  else {
    local_48 = param_1[2];
    local_58 = (undefined8 *)*param_1;
  }
  local_50 = param_1[1];
  *param_1 = param_1 + 2;
  __src = param_1 + -2;
  param_1[1] = 0;
  *(undefined1 *)(param_1 + 2) = 0;
  while( true ) {
    puVar2 = __src + 2;
    lVar4 = FUN_0027f5a0(&local_58,0x2f,0xffffffffffffffff);
    lVar5 = FUN_0027f5a0(__src + -2,0x2f,0xffffffffffffffff);
    if (lVar4 == -1) {
      lVar4 = 0;
    }
    if (lVar5 == -1) {
      lVar5 = 0;
    }
                    /* try { // try from 002262d9 to 002262dd has its CatchHandler @ 0022645a */
    iVar3 = FUN_0027fa50(&local_58,lVar4,0xffffffffffffffff,__src + -2,lVar5,0xffffffffffffffff);
    __dest = (undefined8 *)__src[2];
    if (-1 < iVar3) break;
    puVar2 = (undefined8 *)__src[-2];
    if (puVar2 == __src) {
      __n = __src[-1];
      if (__n != 0) {
        if (__n == 1) {
          *(undefined1 *)__dest = *(undefined1 *)__src;
          __n = __src[-1];
          __dest = (undefined8 *)__src[2];
        }
        else {
          memcpy(__dest,__src,__n);
          __n = __src[-1];
          __dest = (undefined8 *)__src[2];
        }
      }
      __src[3] = __n;
      *(undefined1 *)((long)__dest + __n) = 0;
      __dest = (undefined8 *)__src[-2];
    }
    else {
      if (__dest == __src + 4) {
        __src[2] = puVar2;
        __src[3] = __src[-1];
        __src[4] = *__src;
      }
      else {
        __src[2] = puVar2;
        uVar1 = __src[4];
        __src[3] = __src[-1];
        __src[4] = *__src;
        if (__dest != (undefined8 *)0x0) {
          __src[-2] = __dest;
          *__src = uVar1;
          goto LAB_00226278;
        }
      }
      __src[-2] = __src;
      __dest = __src;
    }
LAB_00226278:
    __src[-1] = 0;
    __src = __src + -4;
    *(undefined1 *)__dest = 0;
  }
  if (local_58 == &local_48) {
    if (local_50 != 0) {
      if (local_50 == 1) {
        *(undefined1 *)__dest = (undefined1)local_48;
        __dest = (undefined8 *)*puVar2;
      }
      else {
        memcpy(__dest,local_58,local_50);
        __dest = (undefined8 *)*puVar2;
      }
    }
    __src[3] = local_50;
    *(undefined1 *)((long)__dest + local_50) = 0;
    uVar1 = local_48;
  }
  else {
    if (__dest == __src + 4) {
      *puVar2 = local_58;
      __src[3] = local_50;
      __src[4] = local_48;
    }
    else {
      uVar1 = __src[4];
      *puVar2 = local_58;
      __src[3] = local_50;
      __src[4] = local_48;
      local_58 = __dest;
      if (__dest != (undefined8 *)0x0) goto LAB_00226394;
    }
    local_58 = &local_48;
    uVar1 = local_48;
  }
LAB_00226394:
  local_48 = uVar1;
  local_50 = 0;
  *(undefined1 *)local_58 = 0;
  if (local_58 != &local_48) {
    FUN_00276d20();
  }
  return;
}

