
/* DWARF original prototype: void copy_unused_symbols(Incremental_library * this) */

void __thiscall gold::Incremental_library::copy_unused_symbols(Incremental_library *this)

{
  pointer *ppbVar1;
  iterator __position;
  uint uVar2;
  int iVar3;
  undefined4 extraout_var;
  size_t __n;
  _Alloc_hider __dest;
  uint uVar4;
  size_type __dnew;
  string name;
  char *__s;
  
  uVar2 = (*this->input_reader_->_vptr_Input_reader[6])();
  std::
  vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
  ::reserve(&this->unused_symbols_,(ulong)uVar2);
  if (uVar2 != 0) {
    uVar4 = 0;
    do {
      __dest._M_p = (pointer)&name.field_2;
      iVar3 = (*this->input_reader_->_vptr_Input_reader[7])(this->input_reader_,(ulong)uVar4);
      __s = (char *)CONCAT44(extraout_var,iVar3);
      name._M_dataplus._M_p = __dest._M_p;
      if (__s == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
        std::__throw_logic_error("basic_string::_M_construct null not valid");
      }
      __n = strlen(__s);
      __dnew = __n;
      if (__n < 0x10) {
        if (__n == 1) {
          name.field_2._M_local_buf[0] = *__s;
        }
        else if (__n != 0) goto LAB_001840be;
      }
      else {
        __dest._M_p = (pointer)std::string::_M_create((string *)&name,&__dnew,0);
        name.field_2._M_allocated_capacity = __dnew;
        name._M_dataplus._M_p = __dest._M_p;
LAB_001840be:
        memcpy(__dest._M_p,__s,__n);
        __dest = name._M_dataplus;
      }
      __dest._M_p[__dnew] = '\0';
      __position._M_current =
           (this->unused_symbols_).
           super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
           ._M_impl._M_finish;
      name._M_string_length = __dnew;
      if (__position._M_current ==
          (this->unused_symbols_).
          super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
          ._M_impl._M_end_of_storage) {
                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */
        std::
        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
        ::
        _M_realloc_insert<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>
                  (&this->unused_symbols_,__position,&name);
      }
      else {
        ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;
                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */
        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
        _M_construct<char*>(__position._M_current,name._M_dataplus._M_p,
                            name._M_dataplus._M_p + __dnew);
        ppbVar1 = &(this->unused_symbols_).
                   super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
                   ._M_impl._M_finish;
        *ppbVar1 = *ppbVar1 + 1;
      }
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)name._M_dataplus._M_p != &name.field_2) {
        operator_delete(name._M_dataplus._M_p);
      }
      uVar4 = uVar4 + 1;
    } while (uVar2 != uVar4);
  }
  return;
}



void FUN_00183fa0(long param_1)

{
  long *plVar1;
  int iVar2;
  char *__s;
  size_t __n;
  size_t *__dest;
  int iVar3;
  size_t local_60;
  size_t *local_58;
  size_t local_50;
  size_t local_48 [3];
  
  iVar2 = (**(code **)(**(long **)(param_1 + 0x40) + 0x30))();
  FUN_0018e930(param_1 + 0x48);
  if (iVar2 != 0) {
    iVar3 = 0;
    do {
      __dest = local_48;
      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))
                              (*(long **)(param_1 + 0x40),iVar3);
      local_58 = __dest;
      if (__s == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
        FUN_003194d0("basic_string::_M_construct null not valid");
      }
      __n = strlen(__s);
      local_60 = __n;
      if (__n < 0x10) {
        if (__n == 1) {
          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);
        }
        else if (__n != 0) goto LAB_001840be;
      }
      else {
        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);
        local_48[0] = local_60;
        local_58 = __dest;
LAB_001840be:
        memcpy(__dest,__s,__n);
        __dest = local_58;
      }
      *(undefined1 *)((long)__dest + local_60) = 0;
      plVar1 = *(long **)(param_1 + 0x50);
      local_50 = local_60;
      if (plVar1 == *(long **)(param_1 + 0x58)) {
                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */
        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);
      }
      else {
        *plVar1 = (long)(plVar1 + 2);
                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */
        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);
        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;
      }
      if (local_58 != local_48) {
        FUN_002dac60();
      }
      iVar3 = iVar3 + 1;
    } while (iVar2 != iVar3);
  }
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
MOV RBX,RDI
SUB RSP,0x58
MOV RDI,qword ptr [RDI + 0x40]
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x30]
MOV ESI,EAX
LEA RAX,[RBX + 0x48]
MOV RDI,RAX
MOV qword ptr [RSP + 0x18],RAX
MOV R13,RSI
CALL 0x0018e930
LEA RAX,[RSP + 0x28]
MOV qword ptr [RSP + 0x10],RAX
TEST R13D,R13D
JZ 0x00184118
XOR EBP,EBP
LEA R12,[RSP + 0x30]
JMP 0x0018405a
CMP RAX,0x1
JNZ 0x001840e0
MOVZX ECX,byte ptr [R14]
MOV RDX,R15
MOV byte ptr [RSP + 0x40],CL
MOV qword ptr [RSP + 0x38],RAX
MOV byte ptr [RDX + RAX*0x1],0x0
MOV RDI,qword ptr [RBX + 0x50]
CMP RDI,qword ptr [RBX + 0x58]
JZ 0x001840f0
LEA RAX,[RDI + 0x10]
MOV qword ptr [RDI],RAX
MOV RSI,qword ptr [RSP + 0x30]
MOV RDX,qword ptr [RSP + 0x38]
ADD RDX,RSI
CALL 0x00166a10
ADD qword ptr [RBX + 0x50],0x20
MOV RDI,qword ptr [RSP + 0x30]
LEA RAX,[R12 + 0x10]
CMP RDI,RAX
JZ 0x0018404e
CALL 0x002dac60
ADD EBP,0x1
CMP R13D,EBP
JZ 0x00184118
MOV RDI,qword ptr [RBX + 0x40]
MOV ESI,EBP
LEA R15,[R12 + 0x10]
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x38]
MOV qword ptr [RSP + 0x30],R15
MOV R14,RAX
TEST RAX,RAX
JZ 0x00184108
MOV RDI,RAX
CALL 0x00147490
MOV RCX,RAX
MOV qword ptr [RSP + 0x28],RAX
CMP RAX,0xf
JBE 0x00183ff0
MOV RSI,qword ptr [RSP + 0x10]
XOR EDX,EDX
MOV RDI,R12
MOV qword ptr [RSP + 0x8],RAX
CALL 0x002e1590
MOV RDX,qword ptr [RSP + 0x28]
MOV RCX,qword ptr [RSP + 0x8]
MOV qword ptr [RSP + 0x30],RAX
MOV qword ptr [RSP + 0x40],RDX
MOV RDX,RCX
MOV RSI,R14
MOV RDI,RAX
CALL 0x00147aa0
MOV RAX,qword ptr [RSP + 0x28]
MOV RDX,qword ptr [RSP + 0x30]
JMP 0x00184005
TEST RAX,RAX
JNZ 0x00184127
MOV RDX,R15
JMP 0x00184005
MOV RSI,RDI
MOV RDI,qword ptr [RSP + 0x18]
MOV RDX,R12
CALL 0x001982e0
JMP 0x0018403a
LEA RDI,[0x36b870]
CALL 0x003194d0
ADD RSP,0x58
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RAX,R15
JMP 0x001840be
(translation_unit "void FUN_00183fa0(long param_1)\n\n{\n  long *plVar1;\n  int iVar2;\n  char *__s;\n  size_t __n;\n  size_t *__dest;\n  int iVar3;\n  size_t local_60;\n  size_t *local_58;\n  size_t local_50;\n  size_t local_48 [3];\n  \n  iVar2 = (**(code **)(**(long **)(param_1 + 0x40) + 0x30))();\n  FUN_0018e930(param_1 + 0x48);\n  if (iVar2 != 0) {\n    iVar3 = 0;\n    do {\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */\n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    } while (iVar2 != iVar3);\n  }\n  return;\n}\n\n" (function_definition "void FUN_00183fa0(long param_1)\n\n{\n  long *plVar1;\n  int iVar2;\n  char *__s;\n  size_t __n;\n  size_t *__dest;\n  int iVar3;\n  size_t local_60;\n  size_t *local_58;\n  size_t local_50;\n  size_t local_48 [3];\n  \n  iVar2 = (**(code **)(**(long **)(param_1 + 0x40) + 0x30))();\n  FUN_0018e930(param_1 + 0x48);\n  if (iVar2 != 0) {\n    iVar3 = 0;\n    do {\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */\n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    } while (iVar2 != iVar3);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00183fa0(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long *plVar1;\n  int iVar2;\n  char *__s;\n  size_t __n;\n  size_t *__dest;\n  int iVar3;\n  size_t local_60;\n  size_t *local_58;\n  size_t local_50;\n  size_t local_48 [3];\n  \n  iVar2 = (**(code **)(**(long **)(param_1 + 0x40) + 0x30))();\n  FUN_0018e930(param_1 + 0x48);\n  if (iVar2 != 0) {\n    iVar3 = 0;\n    do {\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */\n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    } while (iVar2 != iVar3);\n  }\n  return;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "size_t *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "size_t local_60;" primitive_type identifier ;) (declaration "size_t *local_58;" primitive_type (pointer_declarator "*local_58" * identifier) ;) (declaration "size_t local_50;" primitive_type identifier ;) (declaration "size_t local_48 [3];" primitive_type (array_declarator "local_48 [3]" identifier [ number_literal ]) ;) (expression_statement "iVar2 = (**(code **)(**(long **)(param_1 + 0x40) + 0x30))();" (assignment_expression "iVar2 = (**(code **)(**(long **)(param_1 + 0x40) + 0x30))()" identifier = (call_expression "(**(code **)(**(long **)(param_1 + 0x40) + 0x30))()" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x40) + 0x30))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 0x40) + 0x30)" * (pointer_expression "*(code **)(**(long **)(param_1 + 0x40) + 0x30)" * (cast_expression "(code **)(**(long **)(param_1 + 0x40) + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 0x40) + 0x30)" ( (binary_expression "**(long **)(param_1 + 0x40) + 0x30" (pointer_expression "**(long **)(param_1 + 0x40)" * (pointer_expression "*(long **)(param_1 + 0x40)" * (cast_expression "(long **)(param_1 + 0x40)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "FUN_0018e930(param_1 + 0x48);" (call_expression "FUN_0018e930(param_1 + 0x48)" identifier (argument_list "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))) ;) (if_statement "if (iVar2 != 0) {\n    iVar3 = 0;\n    do {\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */\n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    } while (iVar2 != iVar3);\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar3 = 0;\n    do {\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */\n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    } while (iVar2 != iVar3);\n  }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */\n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    } while (iVar2 != iVar3);" do (compound_statement "{\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */\n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    }" { (expression_statement "__dest = local_48;" (assignment_expression "__dest = local_48" identifier = identifier) ;) (expression_statement "__s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);" (assignment_expression "__s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3)" identifier = (cast_expression "(char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3)" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x40) + 0x38))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 0x40) + 0x38)" * (pointer_expression "*(code **)(**(long **)(param_1 + 0x40) + 0x38)" * (cast_expression "(code **)(**(long **)(param_1 + 0x40) + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 0x40) + 0x38)" ( (binary_expression "**(long **)(param_1 + 0x40) + 0x38" (pointer_expression "**(long **)(param_1 + 0x40)" * (pointer_expression "*(long **)(param_1 + 0x40)" * (cast_expression "(long **)(param_1 + 0x40)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(long **)(param_1 + 0x40),iVar3)" ( (pointer_expression "*(long **)(param_1 + 0x40)" * (cast_expression "(long **)(param_1 + 0x40)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) , identifier ))))) ;) (expression_statement "local_58 = __dest;" (assignment_expression "local_58 = __dest" identifier = identifier) ;) (if_statement "if (__s == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }" { comment (expression_statement "FUN_003194d0("basic_string::_M_construct null not valid");" (call_expression "FUN_003194d0("basic_string::_M_construct null not valid")" identifier (argument_list "("basic_string::_M_construct null not valid")" ( (string_literal ""basic_string::_M_construct null not valid"" " string_content ") ))) ;) })) (expression_statement "__n = strlen(__s);" (assignment_expression "__n = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "local_60 = __n;" (assignment_expression "local_60 = __n" identifier = identifier) ;) (if_statement "if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }" if (parenthesized_expression "(__n < 0x10)" ( (binary_expression "__n < 0x10" identifier < number_literal) )) (compound_statement "{\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }" { (if_statement "if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;" if (parenthesized_expression "(__n == 1)" ( (binary_expression "__n == 1" identifier == number_literal) )) (compound_statement "{\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }" { (expression_statement "local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);" (assignment_expression "local_48[0] = CONCAT71(local_48[0]._1_7_,*__s)" (subscript_expression "local_48[0]" identifier [ number_literal ]) = (call_expression "CONCAT71(local_48[0]._1_7_,*__s)" identifier (argument_list "(local_48[0]._1_7_,*__s)" ( (field_expression "local_48[0]._1_7_" (subscript_expression "local_48[0]" identifier [ number_literal ]) . field_identifier) , (pointer_expression "*__s" * identifier) )))) ;) }) (else_clause "else if (__n != 0) goto LAB_001840be;" else (if_statement "if (__n != 0) goto LAB_001840be;" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (goto_statement "goto LAB_001840be;" goto statement_identifier ;)))) }) (else_clause "else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }" else (compound_statement "{\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }" { (expression_statement "__dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);" (assignment_expression "__dest = (size_t *)FUN_002e1590(&local_58,&local_60,0)" identifier = (cast_expression "(size_t *)FUN_002e1590(&local_58,&local_60,0)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002e1590(&local_58,&local_60,0)" identifier (argument_list "(&local_58,&local_60,0)" ( (pointer_expression "&local_58" & identifier) , (pointer_expression "&local_60" & identifier) , number_literal ))))) ;) (expression_statement "local_48[0] = local_60;" (assignment_expression "local_48[0] = local_60" (subscript_expression "local_48[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_58 = __dest;" (assignment_expression "local_58 = __dest" identifier = identifier) ;) (labeled_statement "LAB_001840be:\n        memcpy(__dest,__s,__n);" statement_identifier : (expression_statement "memcpy(__dest,__s,__n);" (call_expression "memcpy(__dest,__s,__n)" identifier (argument_list "(__dest,__s,__n)" ( identifier , identifier , identifier ))) ;)) (expression_statement "__dest = local_58;" (assignment_expression "__dest = local_58" identifier = identifier) ;) }))) (expression_statement "*(undefined1 *)((long)__dest + local_60) = 0;" (assignment_expression "*(undefined1 *)((long)__dest + local_60) = 0" (pointer_expression "*(undefined1 *)((long)__dest + local_60)" * (cast_expression "(undefined1 *)((long)__dest + local_60)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + local_60)" ( (binary_expression "(long)__dest + local_60" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "plVar1 = *(long **)(param_1 + 0x50);" (assignment_expression "plVar1 = *(long **)(param_1 + 0x50)" identifier = (pointer_expression "*(long **)(param_1 + 0x50)" * (cast_expression "(long **)(param_1 + 0x50)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "local_50 = local_60;" (assignment_expression "local_50 = local_60" identifier = identifier) ;) (if_statement "if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */\n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }" if (parenthesized_expression "(plVar1 == *(long **)(param_1 + 0x58))" ( (binary_expression "plVar1 == *(long **)(param_1 + 0x58)" identifier == (pointer_expression "*(long **)(param_1 + 0x58)" * (cast_expression "(long **)(param_1 + 0x58)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */\n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }" { comment (expression_statement "FUN_001982e0(param_1 + 0x48,plVar1,&local_58);" (call_expression "FUN_001982e0(param_1 + 0x48,plVar1,&local_58)" identifier (argument_list "(param_1 + 0x48,plVar1,&local_58)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) , identifier , (pointer_expression "&local_58" & identifier) ))) ;) }) (else_clause "else {\n        *plVar1 = (long)(plVar1 + 2);\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }" else (compound_statement "{\n        *plVar1 = (long)(plVar1 + 2);\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }" { (expression_statement "*plVar1 = (long)(plVar1 + 2);" (assignment_expression "*plVar1 = (long)(plVar1 + 2)" (pointer_expression "*plVar1" * identifier) = (cast_expression "(long)(plVar1 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(plVar1 + 2)" ( (binary_expression "plVar1 + 2" identifier + number_literal) )))) ;) comment (expression_statement "FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);" (call_expression "FUN_00166a10(plVar1,local_58,local_60 + (long)local_58)" identifier (argument_list "(plVar1,local_58,local_60 + (long)local_58)" ( identifier , identifier , (binary_expression "local_60 + (long)local_58" identifier + (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ;) (expression_statement "*(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;" (assignment_expression "*(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20" (pointer_expression "*(long *)(param_1 + 0x50)" * (cast_expression "(long *)(param_1 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x50) + 0x20" (pointer_expression "*(long *)(param_1 + 0x50)" * (cast_expression "(long *)(param_1 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) + number_literal)) ;) }))) (if_statement "if (local_58 != local_48) {\n        FUN_002dac60();\n      }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n        FUN_002dac60();\n      }" { (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != iVar3)" ( (binary_expression "iVar2 != iVar3" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void copy_unused_symbols(Incremental_library * this) */\n\nvoid __thiscall gold::Incremental_library::copy_unused_symbols(Incremental_library *this)\n\n{\n  pointer *ppbVar1;\n  iterator __position;\n  uint uVar2;\n  int iVar3;\n  undefined4 extraout_var;\n  size_t __n;\n  _Alloc_hider __dest;\n  uint uVar4;\n  size_type __dnew;\n  string name;\n  char *__s;\n  \n  uVar2 = (*this->input_reader_->_vptr_Input_reader[6])();\n  std::\n  vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  ::reserve(&this->unused_symbols_,(ulong)uVar2);\n  if (uVar2 != 0) {\n    uVar4 = 0;\n    do {\n      __dest._M_p = (pointer)&name.field_2;\n      iVar3 = (*this->input_reader_->_vptr_Input_reader[7])(this->input_reader_,(ulong)uVar4);\n      __s = (char *)CONCAT44(extraout_var,iVar3);\n      name._M_dataplus._M_p = __dest._M_p;\n      if (__s == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        std::__throw_logic_error("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      __dnew = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          name.field_2._M_local_buf[0] = *__s;\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest._M_p = (pointer)std::string::_M_create((string *)&name,&__dnew,0);\n        name.field_2._M_allocated_capacity = __dnew;\n        name._M_dataplus._M_p = __dest._M_p;\nLAB_001840be:\n        memcpy(__dest._M_p,__s,__n);\n        __dest = name._M_dataplus;\n      }\n      __dest._M_p[__dnew] = '\0';\n      __position._M_current =\n           (this->unused_symbols_).\n           super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           ._M_impl._M_finish;\n      name._M_string_length = __dnew;\n      if (__position._M_current ==\n          (this->unused_symbols_).\n          super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n          ._M_impl._M_end_of_storage) {\n                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */\n        std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                  (&this->unused_symbols_,__position,&name);\n      }\n      else {\n        ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(__position._M_current,name._M_dataplus._M_p,\n                            name._M_dataplus._M_p + __dnew);\n        ppbVar1 = &(this->unused_symbols_).\n                   super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                   ._M_impl._M_finish;\n        *ppbVar1 = *ppbVar1 + 1;\n      }\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)name._M_dataplus._M_p != &name.field_2) {\n        operator_delete(name._M_dataplus._M_p);\n      }\n      uVar4 = uVar4 + 1;\n    } while (uVar2 != uVar4);\n  }\n  return;\n}\n\n" comment (function_definition "void __thiscall gold::Incremental_library::copy_unused_symbols(Incremental_library *this)\n\n{\n  pointer *ppbVar1;\n  iterator __position;\n  uint uVar2;\n  int iVar3;\n  undefined4 extraout_var;\n  size_t __n;\n  _Alloc_hider __dest;\n  uint uVar4;\n  size_type __dnew;\n  string name;\n  char *__s;\n  \n  uVar2 = (*this->input_reader_->_vptr_Input_reader[6])();\n  std::\n  vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  ::reserve(&this->unused_symbols_,(ulong)uVar2);\n  if (uVar2 != 0) {\n    uVar4 = 0;\n    do {\n      __dest._M_p = (pointer)&name.field_2;\n      iVar3 = (*this->input_reader_->_vptr_Input_reader[7])(this->input_reader_,(ulong)uVar4);\n      __s = (char *)CONCAT44(extraout_var,iVar3);\n      name._M_dataplus._M_p = __dest._M_p;\n      if (__s == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        std::__throw_logic_error("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      __dnew = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          name.field_2._M_local_buf[0] = *__s;\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest._M_p = (pointer)std::string::_M_create((string *)&name,&__dnew,0);\n        name.field_2._M_allocated_capacity = __dnew;\n        name._M_dataplus._M_p = __dest._M_p;\nLAB_001840be:\n        memcpy(__dest._M_p,__s,__n);\n        __dest = name._M_dataplus;\n      }\n      __dest._M_p[__dnew] = '\0';\n      __position._M_current =\n           (this->unused_symbols_).\n           super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           ._M_impl._M_finish;\n      name._M_string_length = __dnew;\n      if (__position._M_current ==\n          (this->unused_symbols_).\n          super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n          ._M_impl._M_end_of_storage) {\n                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */\n        std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                  (&this->unused_symbols_,__position,&name);\n      }\n      else {\n        ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(__position._M_current,name._M_dataplus._M_p,\n                            name._M_dataplus._M_p + __dnew);\n        ppbVar1 = &(this->unused_symbols_).\n                   super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                   ._M_impl._M_finish;\n        *ppbVar1 = *ppbVar1 + 1;\n      }\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)name._M_dataplus._M_p != &name.field_2) {\n        operator_delete(name._M_dataplus._M_p);\n      }\n      uVar4 = uVar4 + 1;\n    } while (uVar2 != uVar4);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Incremental_library::" identifier : : identifier : :) (function_declarator "copy_unused_symbols(Incremental_library *this)" identifier (parameter_list "(Incremental_library *this)" ( (parameter_declaration "Incremental_library *this" type_identifier (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  pointer *ppbVar1;\n  iterator __position;\n  uint uVar2;\n  int iVar3;\n  undefined4 extraout_var;\n  size_t __n;\n  _Alloc_hider __dest;\n  uint uVar4;\n  size_type __dnew;\n  string name;\n  char *__s;\n  \n  uVar2 = (*this->input_reader_->_vptr_Input_reader[6])();\n  std::\n  vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  ::reserve(&this->unused_symbols_,(ulong)uVar2);\n  if (uVar2 != 0) {\n    uVar4 = 0;\n    do {\n      __dest._M_p = (pointer)&name.field_2;\n      iVar3 = (*this->input_reader_->_vptr_Input_reader[7])(this->input_reader_,(ulong)uVar4);\n      __s = (char *)CONCAT44(extraout_var,iVar3);\n      name._M_dataplus._M_p = __dest._M_p;\n      if (__s == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        std::__throw_logic_error("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      __dnew = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          name.field_2._M_local_buf[0] = *__s;\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest._M_p = (pointer)std::string::_M_create((string *)&name,&__dnew,0);\n        name.field_2._M_allocated_capacity = __dnew;\n        name._M_dataplus._M_p = __dest._M_p;\nLAB_001840be:\n        memcpy(__dest._M_p,__s,__n);\n        __dest = name._M_dataplus;\n      }\n      __dest._M_p[__dnew] = '\0';\n      __position._M_current =\n           (this->unused_symbols_).\n           super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           ._M_impl._M_finish;\n      name._M_string_length = __dnew;\n      if (__position._M_current ==\n          (this->unused_symbols_).\n          super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n          ._M_impl._M_end_of_storage) {\n                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */\n        std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                  (&this->unused_symbols_,__position,&name);\n      }\n      else {\n        ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(__position._M_current,name._M_dataplus._M_p,\n                            name._M_dataplus._M_p + __dnew);\n        ppbVar1 = &(this->unused_symbols_).\n                   super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                   ._M_impl._M_finish;\n        *ppbVar1 = *ppbVar1 + 1;\n      }\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)name._M_dataplus._M_p != &name.field_2) {\n        operator_delete(name._M_dataplus._M_p);\n      }\n      uVar4 = uVar4 + 1;\n    } while (uVar2 != uVar4);\n  }\n  return;\n}" { (declaration "pointer *ppbVar1;" type_identifier (pointer_declarator "*ppbVar1" * identifier) ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 extraout_var;" type_identifier identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "_Alloc_hider __dest;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "size_type __dnew;" type_identifier identifier ;) (declaration "string name;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (expression_statement "uVar2 = (*this->input_reader_->_vptr_Input_reader[6])();" (assignment_expression "uVar2 = (*this->input_reader_->_vptr_Input_reader[6])()" identifier = (call_expression "(*this->input_reader_->_vptr_Input_reader[6])()" (parenthesized_expression "(*this->input_reader_->_vptr_Input_reader[6])" ( (pointer_expression "*this->input_reader_->_vptr_Input_reader[6]" * (subscript_expression "this->input_reader_->_vptr_Input_reader[6]" (field_expression "this->input_reader_->_vptr_Input_reader" (field_expression "this->input_reader_" identifier -> field_identifier) -> field_identifier) [ number_literal ])) )) (argument_list "()" ( )))) ;) (ERROR "std::\n  vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "std::\n  vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std" identifier (ERROR "::\n  vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>" : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>\n  ::reserve(&this->unused_symbols_,(ulong)uVar2);" (binary_expression "allocator<char>_>_>_>\n  ::reserve(&this->unused_symbols_,(ulong)uVar2)" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > (ERROR "::" : :) (call_expression "reserve(&this->unused_symbols_,(ulong)uVar2)" identifier (argument_list "(&this->unused_symbols_,(ulong)uVar2)" ( (pointer_expression "&this->unused_symbols_" & (field_expression "this->unused_symbols_" identifier -> field_identifier)) , (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) )))) ;) (if_statement "if (uVar2 != 0) {\n    uVar4 = 0;\n    do {\n      __dest._M_p = (pointer)&name.field_2;\n      iVar3 = (*this->input_reader_->_vptr_Input_reader[7])(this->input_reader_,(ulong)uVar4);\n      __s = (char *)CONCAT44(extraout_var,iVar3);\n      name._M_dataplus._M_p = __dest._M_p;\n      if (__s == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        std::__throw_logic_error("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      __dnew = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          name.field_2._M_local_buf[0] = *__s;\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest._M_p = (pointer)std::string::_M_create((string *)&name,&__dnew,0);\n        name.field_2._M_allocated_capacity = __dnew;\n        name._M_dataplus._M_p = __dest._M_p;\nLAB_001840be:\n        memcpy(__dest._M_p,__s,__n);\n        __dest = name._M_dataplus;\n      }\n      __dest._M_p[__dnew] = '\0';\n      __position._M_current =\n           (this->unused_symbols_).\n           super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           ._M_impl._M_finish;\n      name._M_string_length = __dnew;\n      if (__position._M_current ==\n          (this->unused_symbols_).\n          super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n          ._M_impl._M_end_of_storage) {\n                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */\n        std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                  (&this->unused_symbols_,__position,&name);\n      }\n      else {\n        ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(__position._M_current,name._M_dataplus._M_p,\n                            name._M_dataplus._M_p + __dnew);\n        ppbVar1 = &(this->unused_symbols_).\n                   super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                   ._M_impl._M_finish;\n        *ppbVar1 = *ppbVar1 + 1;\n      }\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)name._M_dataplus._M_p != &name.field_2) {\n        operator_delete(name._M_dataplus._M_p);\n      }\n      uVar4 = uVar4 + 1;\n    } while (uVar2 != uVar4);\n  }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar4 = 0;\n    do {\n      __dest._M_p = (pointer)&name.field_2;\n      iVar3 = (*this->input_reader_->_vptr_Input_reader[7])(this->input_reader_,(ulong)uVar4);\n      __s = (char *)CONCAT44(extraout_var,iVar3);\n      name._M_dataplus._M_p = __dest._M_p;\n      if (__s == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        std::__throw_logic_error("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      __dnew = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          name.field_2._M_local_buf[0] = *__s;\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest._M_p = (pointer)std::string::_M_create((string *)&name,&__dnew,0);\n        name.field_2._M_allocated_capacity = __dnew;\n        name._M_dataplus._M_p = __dest._M_p;\nLAB_001840be:\n        memcpy(__dest._M_p,__s,__n);\n        __dest = name._M_dataplus;\n      }\n      __dest._M_p[__dnew] = '\0';\n      __position._M_current =\n           (this->unused_symbols_).\n           super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           ._M_impl._M_finish;\n      name._M_string_length = __dnew;\n      if (__position._M_current ==\n          (this->unused_symbols_).\n          super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n          ._M_impl._M_end_of_storage) {\n                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */\n        std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                  (&this->unused_symbols_,__position,&name);\n      }\n      else {\n        ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(__position._M_current,name._M_dataplus._M_p,\n                            name._M_dataplus._M_p + __dnew);\n        ppbVar1 = &(this->unused_symbols_).\n                   super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                   ._M_impl._M_finish;\n        *ppbVar1 = *ppbVar1 + 1;\n      }\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)name._M_dataplus._M_p != &name.field_2) {\n        operator_delete(name._M_dataplus._M_p);\n      }\n      uVar4 = uVar4 + 1;\n    } while (uVar2 != uVar4);\n  }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n      __dest._M_p = (pointer)&name.field_2;\n      iVar3 = (*this->input_reader_->_vptr_Input_reader[7])(this->input_reader_,(ulong)uVar4);\n      __s = (char *)CONCAT44(extraout_var,iVar3);\n      name._M_dataplus._M_p = __dest._M_p;\n      if (__s == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        std::__throw_logic_error("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      __dnew = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          name.field_2._M_local_buf[0] = *__s;\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest._M_p = (pointer)std::string::_M_create((string *)&name,&__dnew,0);\n        name.field_2._M_allocated_capacity = __dnew;\n        name._M_dataplus._M_p = __dest._M_p;\nLAB_001840be:\n        memcpy(__dest._M_p,__s,__n);\n        __dest = name._M_dataplus;\n      }\n      __dest._M_p[__dnew] = '\0';\n      __position._M_current =\n           (this->unused_symbols_).\n           super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           ._M_impl._M_finish;\n      name._M_string_length = __dnew;\n      if (__position._M_current ==\n          (this->unused_symbols_).\n          super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n          ._M_impl._M_end_of_storage) {\n                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */\n        std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                  (&this->unused_symbols_,__position,&name);\n      }\n      else {\n        ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(__position._M_current,name._M_dataplus._M_p,\n                            name._M_dataplus._M_p + __dnew);\n        ppbVar1 = &(this->unused_symbols_).\n                   super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                   ._M_impl._M_finish;\n        *ppbVar1 = *ppbVar1 + 1;\n      }\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)name._M_dataplus._M_p != &name.field_2) {\n        operator_delete(name._M_dataplus._M_p);\n      }\n      uVar4 = uVar4 + 1;\n    } while (uVar2 != uVar4);" do (compound_statement "{\n      __dest._M_p = (pointer)&name.field_2;\n      iVar3 = (*this->input_reader_->_vptr_Input_reader[7])(this->input_reader_,(ulong)uVar4);\n      __s = (char *)CONCAT44(extraout_var,iVar3);\n      name._M_dataplus._M_p = __dest._M_p;\n      if (__s == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        std::__throw_logic_error("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      __dnew = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          name.field_2._M_local_buf[0] = *__s;\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest._M_p = (pointer)std::string::_M_create((string *)&name,&__dnew,0);\n        name.field_2._M_allocated_capacity = __dnew;\n        name._M_dataplus._M_p = __dest._M_p;\nLAB_001840be:\n        memcpy(__dest._M_p,__s,__n);\n        __dest = name._M_dataplus;\n      }\n      __dest._M_p[__dnew] = '\0';\n      __position._M_current =\n           (this->unused_symbols_).\n           super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           ._M_impl._M_finish;\n      name._M_string_length = __dnew;\n      if (__position._M_current ==\n          (this->unused_symbols_).\n          super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n          ._M_impl._M_end_of_storage) {\n                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */\n        std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                  (&this->unused_symbols_,__position,&name);\n      }\n      else {\n        ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(__position._M_current,name._M_dataplus._M_p,\n                            name._M_dataplus._M_p + __dnew);\n        ppbVar1 = &(this->unused_symbols_).\n                   super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                   ._M_impl._M_finish;\n        *ppbVar1 = *ppbVar1 + 1;\n      }\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)name._M_dataplus._M_p != &name.field_2) {\n        operator_delete(name._M_dataplus._M_p);\n      }\n      uVar4 = uVar4 + 1;\n    }" { (expression_statement "__dest._M_p = (pointer)&name.field_2;" (assignment_expression "__dest._M_p = (pointer)&name.field_2" (field_expression "__dest._M_p" identifier . field_identifier) = (binary_expression "(pointer)&name.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "name.field_2" identifier . field_identifier))) ;) (expression_statement "iVar3 = (*this->input_reader_->_vptr_Input_reader[7])(this->input_reader_,(ulong)uVar4);" (assignment_expression "iVar3 = (*this->input_reader_->_vptr_Input_reader[7])(this->input_reader_,(ulong)uVar4)" identifier = (call_expression "(*this->input_reader_->_vptr_Input_reader[7])(this->input_reader_,(ulong)uVar4)" (parenthesized_expression "(*this->input_reader_->_vptr_Input_reader[7])" ( (pointer_expression "*this->input_reader_->_vptr_Input_reader[7]" * (subscript_expression "this->input_reader_->_vptr_Input_reader[7]" (field_expression "this->input_reader_->_vptr_Input_reader" (field_expression "this->input_reader_" identifier -> field_identifier) -> field_identifier) [ number_literal ])) )) (argument_list "(this->input_reader_,(ulong)uVar4)" ( (field_expression "this->input_reader_" identifier -> field_identifier) , (cast_expression "(ulong)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) )))) ;) (expression_statement "__s = (char *)CONCAT44(extraout_var,iVar3);" (assignment_expression "__s = (char *)CONCAT44(extraout_var,iVar3)" identifier = (cast_expression "(char *)CONCAT44(extraout_var,iVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(extraout_var,iVar3)" identifier (argument_list "(extraout_var,iVar3)" ( identifier , identifier ))))) ;) (expression_statement "name._M_dataplus._M_p = __dest._M_p;" (assignment_expression "name._M_dataplus._M_p = __dest._M_p" (field_expression "name._M_dataplus._M_p" (field_expression "name._M_dataplus" identifier . field_identifier) . field_identifier) = (field_expression "__dest._M_p" identifier . field_identifier)) ;) (if_statement "if (__s == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        std::__throw_logic_error("basic_string::_M_construct null not valid");\n      }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        std::__throw_logic_error("basic_string::_M_construct null not valid");\n      }" { comment (labeled_statement "std::__throw_logic_error("basic_string::_M_construct null not valid");" statement_identifier : (ERROR ":" :) (expression_statement "__throw_logic_error("basic_string::_M_construct null not valid");" (call_expression "__throw_logic_error("basic_string::_M_construct null not valid")" identifier (argument_list "("basic_string::_M_construct null not valid")" ( (string_literal ""basic_string::_M_construct null not valid"" " string_content ") ))) ;)) })) (expression_statement "__n = strlen(__s);" (assignment_expression "__n = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "__dnew = __n;" (assignment_expression "__dnew = __n" identifier = identifier) ;) (if_statement "if (__n < 0x10) {\n        if (__n == 1) {\n          name.field_2._M_local_buf[0] = *__s;\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest._M_p = (pointer)std::string::_M_create((string *)&name,&__dnew,0);\n        name.field_2._M_allocated_capacity = __dnew;\n        name._M_dataplus._M_p = __dest._M_p;\nLAB_001840be:\n        memcpy(__dest._M_p,__s,__n);\n        __dest = name._M_dataplus;\n      }" if (parenthesized_expression "(__n < 0x10)" ( (binary_expression "__n < 0x10" identifier < number_literal) )) (compound_statement "{\n        if (__n == 1) {\n          name.field_2._M_local_buf[0] = *__s;\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }" { (if_statement "if (__n == 1) {\n          name.field_2._M_local_buf[0] = *__s;\n        }\n        else if (__n != 0) goto LAB_001840be;" if (parenthesized_expression "(__n == 1)" ( (binary_expression "__n == 1" identifier == number_literal) )) (compound_statement "{\n          name.field_2._M_local_buf[0] = *__s;\n        }" { (expression_statement "name.field_2._M_local_buf[0] = *__s;" (assignment_expression "name.field_2._M_local_buf[0] = *__s" (subscript_expression "name.field_2._M_local_buf[0]" (field_expression "name.field_2._M_local_buf" (field_expression "name.field_2" identifier . field_identifier) . field_identifier) [ number_literal ]) = (pointer_expression "*__s" * identifier)) ;) }) (else_clause "else if (__n != 0) goto LAB_001840be;" else (if_statement "if (__n != 0) goto LAB_001840be;" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (goto_statement "goto LAB_001840be;" goto statement_identifier ;)))) }) (else_clause "else {\n        __dest._M_p = (pointer)std::string::_M_create((string *)&name,&__dnew,0);\n        name.field_2._M_allocated_capacity = __dnew;\n        name._M_dataplus._M_p = __dest._M_p;\nLAB_001840be:\n        memcpy(__dest._M_p,__s,__n);\n        __dest = name._M_dataplus;\n      }" else (compound_statement "{\n        __dest._M_p = (pointer)std::string::_M_create((string *)&name,&__dnew,0);\n        name.field_2._M_allocated_capacity = __dnew;\n        name._M_dataplus._M_p = __dest._M_p;\nLAB_001840be:\n        memcpy(__dest._M_p,__s,__n);\n        __dest = name._M_dataplus;\n      }" { (ERROR "__dest._M_p = (pointer)std::" (assignment_expression "__dest._M_p = (pointer)std" (field_expression "__dest._M_p" identifier . field_identifier) = (cast_expression "(pointer)std" ( (type_descriptor "pointer" type_identifier) ) identifier)) : :) (labeled_statement "string::_M_create((string *)&name,&__dnew,0);" statement_identifier : (ERROR ":" :) (expression_statement "_M_create((string *)&name,&__dnew,0);" (call_expression "_M_create((string *)&name,&__dnew,0)" identifier (argument_list "((string *)&name,&__dnew,0)" ( (cast_expression "(string *)&name" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&name" & identifier)) , (pointer_expression "&__dnew" & identifier) , number_literal ))) ;)) (expression_statement "name.field_2._M_allocated_capacity = __dnew;" (assignment_expression "name.field_2._M_allocated_capacity = __dnew" (field_expression "name.field_2._M_allocated_capacity" (field_expression "name.field_2" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "name._M_dataplus._M_p = __dest._M_p;" (assignment_expression "name._M_dataplus._M_p = __dest._M_p" (field_expression "name._M_dataplus._M_p" (field_expression "name._M_dataplus" identifier . field_identifier) . field_identifier) = (field_expression "__dest._M_p" identifier . field_identifier)) ;) (labeled_statement "LAB_001840be:\n        memcpy(__dest._M_p,__s,__n);" statement_identifier : (expression_statement "memcpy(__dest._M_p,__s,__n);" (call_expression "memcpy(__dest._M_p,__s,__n)" identifier (argument_list "(__dest._M_p,__s,__n)" ( (field_expression "__dest._M_p" identifier . field_identifier) , identifier , identifier ))) ;)) (expression_statement "__dest = name._M_dataplus;" (assignment_expression "__dest = name._M_dataplus" identifier = (field_expression "name._M_dataplus" identifier . field_identifier)) ;) }))) (expression_statement "__dest._M_p[__dnew] = '\0';" (assignment_expression "__dest._M_p[__dnew] = '\0'" (subscript_expression "__dest._M_p[__dnew]" (field_expression "__dest._M_p" identifier . field_identifier) [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (ERROR "__position._M_current =\n           (this->unused_symbols_).\n           super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "__position._M_current =\n           (this->unused_symbols_).\n           super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "__position._M_current =\n           (this->unused_symbols_).\n           super__Vector_base<std::__cxx11::basic_string<char" (assignment_expression "__position._M_current =\n           (this->unused_symbols_).\n           super__Vector_base<std" (field_expression "__position._M_current" identifier . field_identifier) = (binary_expression "(this->unused_symbols_).\n           super__Vector_base<std" (field_expression "(this->unused_symbols_).\n           super__Vector_base" (parenthesized_expression "(this->unused_symbols_)" ( (field_expression "this->unused_symbols_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>\n           ._M_impl._M_finish;" (field_expression "allocator<char>_>_>_>\n           ._M_impl._M_finish" (field_expression "allocator<char>_>_>_>\n           ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "name._M_string_length = __dnew;" (assignment_expression "name._M_string_length = __dnew" (field_expression "name._M_string_length" identifier . field_identifier) = identifier) ;) (if_statement "if (__position._M_current ==\n          (this->unused_symbols_).\n          super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n          ._M_impl._M_end_of_storage) {\n                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */\n        std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                  (&this->unused_symbols_,__position,&name);\n      }\n      else {\n        ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(__position._M_current,name._M_dataplus._M_p,\n                            name._M_dataplus._M_p + __dnew);\n        ppbVar1 = &(this->unused_symbols_).\n                   super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                   ._M_impl._M_finish;\n        *ppbVar1 = *ppbVar1 + 1;\n      }" if (parenthesized_expression "(__position._M_current ==\n          (this->unused_symbols_).\n          super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n          ._M_impl._M_end_of_storage)" ( (ERROR "__position._M_current ==\n          (this->unused_symbols_).\n          super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "__position._M_current ==\n          (this->unused_symbols_).\n          super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "__position._M_current ==\n          (this->unused_symbols_).\n          super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "__position._M_current ==\n          (this->unused_symbols_).\n          super__Vector_base<std" (field_expression "__position._M_current" identifier . field_identifier) == (binary_expression "(this->unused_symbols_).\n          super__Vector_base<std" (field_expression "(this->unused_symbols_).\n          super__Vector_base" (parenthesized_expression "(this->unused_symbols_)" ( (field_expression "this->unused_symbols_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (field_expression "allocator<char>_>_>_>\n          ._M_impl._M_end_of_storage" (field_expression "allocator<char>_>_>_>\n          ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */\n        std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                  (&this->unused_symbols_,__position,&name);\n      }" { comment (ERROR "std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std" identifier (ERROR "::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>" : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<const_std" (binary_expression "allocator<char>_>_>_>\n        ::\n        _M_realloc_insert" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > (ERROR "::" : :) identifier) < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>&>\n                  (&this->unused_symbols_,__position,&name);" (binary_expression "allocator<char>_>&>\n                  (&this->unused_symbols_,__position,&name)" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "&>\n                  (&this->unused_symbols_,__position,&name)" & (ERROR ">" >) (parenthesized_expression "(&this->unused_symbols_,__position,&name)" ( (comma_expression "&this->unused_symbols_,__position,&name" (pointer_expression "&this->unused_symbols_" & (field_expression "this->unused_symbols_" identifier -> field_identifier)) , (comma_expression "__position,&name" identifier , (pointer_expression "&name" & identifier))) )))) ;) }) (else_clause "else {\n        ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(__position._M_current,name._M_dataplus._M_p,\n                            name._M_dataplus._M_p + __dnew);\n        ppbVar1 = &(this->unused_symbols_).\n                   super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                   ._M_impl._M_finish;\n        *ppbVar1 = *ppbVar1 + 1;\n      }" else (compound_statement "{\n        ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(__position._M_current,name._M_dataplus._M_p,\n                            name._M_dataplus._M_p + __dnew);\n        ppbVar1 = &(this->unused_symbols_).\n                   super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                   ._M_impl._M_finish;\n        *ppbVar1 = *ppbVar1 + 1;\n      }" { (expression_statement "((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;" (assignment_expression "((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2" (field_expression "((__position._M_current)->_M_dataplus)._M_p" (parenthesized_expression "((__position._M_current)->_M_dataplus)" ( (field_expression "(__position._M_current)->_M_dataplus" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) )) . field_identifier) = (binary_expression "(pointer)&(__position._M_current)->field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(__position._M_current)->field_2" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier))) ;) comment (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(__position._M_current,name._M_dataplus._M_p,\n                            name._M_dataplus._M_p + __dnew);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char*>(__position._M_current,name._M_dataplus._M_p,\n                            name._M_dataplus._M_p + __dnew);" (binary_expression "_M_construct<char*>(__position._M_current,name._M_dataplus._M_p,\n                            name._M_dataplus._M_p + __dnew)" (binary_expression "_M_construct<char" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(__position._M_current,name._M_dataplus._M_p,\n                            name._M_dataplus._M_p + __dnew)" ( (comma_expression "__position._M_current,name._M_dataplus._M_p,\n                            name._M_dataplus._M_p + __dnew" (field_expression "__position._M_current" identifier . field_identifier) , (comma_expression "name._M_dataplus._M_p,\n                            name._M_dataplus._M_p + __dnew" (field_expression "name._M_dataplus._M_p" (field_expression "name._M_dataplus" identifier . field_identifier) . field_identifier) , (binary_expression "name._M_dataplus._M_p + __dnew" (field_expression "name._M_dataplus._M_p" (field_expression "name._M_dataplus" identifier . field_identifier) . field_identifier) + identifier))) ))) ;)) (ERROR "ppbVar1 = &(this->unused_symbols_).\n                   super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (assignment_expression "ppbVar1 = &(this->unused_symbols_).\n                   super__Vector_base<std" identifier = (binary_expression "&(this->unused_symbols_).\n                   super__Vector_base<std" (pointer_expression "&(this->unused_symbols_).\n                   super__Vector_base" & (field_expression "(this->unused_symbols_).\n                   super__Vector_base" (parenthesized_expression "(this->unused_symbols_)" ( (field_expression "this->unused_symbols_" identifier -> field_identifier) )) . field_identifier)) < identifier)) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>\n                   ._M_impl._M_finish;" (field_expression "allocator<char>_>_>_>\n                   ._M_impl._M_finish" (field_expression "allocator<char>_>_>_>\n                   ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "*ppbVar1 = *ppbVar1 + 1;" (assignment_expression "*ppbVar1 = *ppbVar1 + 1" (pointer_expression "*ppbVar1" * identifier) = (binary_expression "*ppbVar1 + 1" (pointer_expression "*ppbVar1" * identifier) + number_literal)) ;) }))) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)name._M_dataplus._M_p != &name.field_2) {\n        operator_delete(name._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           *)name._M_dataplus._M_p != &name.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)name._M_dataplus._M_p != &name.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n           *)name._M_dataplus._M_p != &name.field_2" (binary_expression "allocator<char>_>_9\n           *)name._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)name._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "name._M_dataplus._M_p" (field_expression "name._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&name.field_2" & (field_expression "name.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n        operator_delete(name._M_dataplus._M_p);\n      }" { (expression_statement "operator_delete(name._M_dataplus._M_p);" (call_expression "operator_delete(name._M_dataplus._M_p)" identifier (argument_list "(name._M_dataplus._M_p)" ( (field_expression "name._M_dataplus._M_p" (field_expression "name._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 != uVar4)" ( (binary_expression "uVar2 != uVar4" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00183fa0(long param_1)\n\n{\n  long *plVar1;\n  int iVar2;\n  char *__s;\n  size_t __n;\n  size_t *__dest;\n  int iVar3;\n  size_t local_60;\n  size_t *local_58;\n  size_t local_50;\n  size_t local_48 [3];\n  \n  iVar2 = (**(code **)(**(long **)(param_1 + 0x40) + 0x30))();\n  FUN_0018e930(param_1 + 0x48);\n  if (iVar2 != 0) {\n    iVar3 = 0;\n    do {\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    \n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    \n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    } while (iVar2 != iVar3);\n  }\n  return;\n}\n\n" (function_definition "void FUN_00183fa0(long param_1)\n\n{\n  long *plVar1;\n  int iVar2;\n  char *__s;\n  size_t __n;\n  size_t *__dest;\n  int iVar3;\n  size_t local_60;\n  size_t *local_58;\n  size_t local_50;\n  size_t local_48 [3];\n  \n  iVar2 = (**(code **)(**(long **)(param_1 + 0x40) + 0x30))();\n  FUN_0018e930(param_1 + 0x48);\n  if (iVar2 != 0) {\n    iVar3 = 0;\n    do {\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    \n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    \n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    } while (iVar2 != iVar3);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00183fa0(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long *plVar1;\n  int iVar2;\n  char *__s;\n  size_t __n;\n  size_t *__dest;\n  int iVar3;\n  size_t local_60;\n  size_t *local_58;\n  size_t local_50;\n  size_t local_48 [3];\n  \n  iVar2 = (**(code **)(**(long **)(param_1 + 0x40) + 0x30))();\n  FUN_0018e930(param_1 + 0x48);\n  if (iVar2 != 0) {\n    iVar3 = 0;\n    do {\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    \n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    \n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    } while (iVar2 != iVar3);\n  }\n  return;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "size_t *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "size_t local_60;" primitive_type identifier ;) (declaration "size_t *local_58;" primitive_type (pointer_declarator "*local_58" * identifier) ;) (declaration "size_t local_50;" primitive_type identifier ;) (declaration "size_t local_48 [3];" primitive_type (array_declarator "local_48 [3]" identifier [ number_literal ]) ;) (expression_statement "iVar2 = (**(code **)(**(long **)(param_1 + 0x40) + 0x30))();" (assignment_expression "iVar2 = (**(code **)(**(long **)(param_1 + 0x40) + 0x30))()" identifier = (call_expression "(**(code **)(**(long **)(param_1 + 0x40) + 0x30))()" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x40) + 0x30))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 0x40) + 0x30)" * (pointer_expression "*(code **)(**(long **)(param_1 + 0x40) + 0x30)" * (cast_expression "(code **)(**(long **)(param_1 + 0x40) + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 0x40) + 0x30)" ( (binary_expression "**(long **)(param_1 + 0x40) + 0x30" (pointer_expression "**(long **)(param_1 + 0x40)" * (pointer_expression "*(long **)(param_1 + 0x40)" * (cast_expression "(long **)(param_1 + 0x40)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "FUN_0018e930(param_1 + 0x48);" (call_expression "FUN_0018e930(param_1 + 0x48)" identifier (argument_list "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))) ;) (if_statement "if (iVar2 != 0) {\n    iVar3 = 0;\n    do {\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    \n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    \n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    } while (iVar2 != iVar3);\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar3 = 0;\n    do {\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    \n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    \n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    } while (iVar2 != iVar3);\n  }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    \n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    \n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    } while (iVar2 != iVar3);" do (compound_statement "{\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    \n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    \n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    }" { (expression_statement "__dest = local_48;" (assignment_expression "__dest = local_48" identifier = identifier) ;) (expression_statement "__s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);" (assignment_expression "__s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3)" identifier = (cast_expression "(char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3)" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x40) + 0x38))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 0x40) + 0x38)" * (pointer_expression "*(code **)(**(long **)(param_1 + 0x40) + 0x38)" * (cast_expression "(code **)(**(long **)(param_1 + 0x40) + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 0x40) + 0x38)" ( (binary_expression "**(long **)(param_1 + 0x40) + 0x38" (pointer_expression "**(long **)(param_1 + 0x40)" * (pointer_expression "*(long **)(param_1 + 0x40)" * (cast_expression "(long **)(param_1 + 0x40)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(long **)(param_1 + 0x40),iVar3)" ( (pointer_expression "*(long **)(param_1 + 0x40)" * (cast_expression "(long **)(param_1 + 0x40)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) , identifier ))))) ;) (expression_statement "local_58 = __dest;" (assignment_expression "local_58 = __dest" identifier = identifier) ;) (if_statement "if (__s == (char *)0x0) {\n                    \n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }" { (expression_statement "FUN_003194d0("basic_string::_M_construct null not valid");" (call_expression "FUN_003194d0("basic_string::_M_construct null not valid")" identifier (argument_list "("basic_string::_M_construct null not valid")" ( (string_literal ""basic_string::_M_construct null not valid"" " string_content ") ))) ;) })) (expression_statement "__n = strlen(__s);" (assignment_expression "__n = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "local_60 = __n;" (assignment_expression "local_60 = __n" identifier = identifier) ;) (if_statement "if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }" if (parenthesized_expression "(__n < 0x10)" ( (binary_expression "__n < 0x10" identifier < number_literal) )) (compound_statement "{\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }" { (if_statement "if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;" if (parenthesized_expression "(__n == 1)" ( (binary_expression "__n == 1" identifier == number_literal) )) (compound_statement "{\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }" { (expression_statement "local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);" (assignment_expression "local_48[0] = CONCAT71(local_48[0]._1_7_,*__s)" (subscript_expression "local_48[0]" identifier [ number_literal ]) = (call_expression "CONCAT71(local_48[0]._1_7_,*__s)" identifier (argument_list "(local_48[0]._1_7_,*__s)" ( (field_expression "local_48[0]._1_7_" (subscript_expression "local_48[0]" identifier [ number_literal ]) . field_identifier) , (pointer_expression "*__s" * identifier) )))) ;) }) (else_clause "else if (__n != 0) goto LAB_001840be;" else (if_statement "if (__n != 0) goto LAB_001840be;" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (goto_statement "goto LAB_001840be;" goto statement_identifier ;)))) }) (else_clause "else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }" else (compound_statement "{\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }" { (expression_statement "__dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);" (assignment_expression "__dest = (size_t *)FUN_002e1590(&local_58,&local_60,0)" identifier = (cast_expression "(size_t *)FUN_002e1590(&local_58,&local_60,0)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002e1590(&local_58,&local_60,0)" identifier (argument_list "(&local_58,&local_60,0)" ( (pointer_expression "&local_58" & identifier) , (pointer_expression "&local_60" & identifier) , number_literal ))))) ;) (expression_statement "local_48[0] = local_60;" (assignment_expression "local_48[0] = local_60" (subscript_expression "local_48[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_58 = __dest;" (assignment_expression "local_58 = __dest" identifier = identifier) ;) (labeled_statement "LAB_001840be:\n        memcpy(__dest,__s,__n);" statement_identifier : (expression_statement "memcpy(__dest,__s,__n);" (call_expression "memcpy(__dest,__s,__n)" identifier (argument_list "(__dest,__s,__n)" ( identifier , identifier , identifier ))) ;)) (expression_statement "__dest = local_58;" (assignment_expression "__dest = local_58" identifier = identifier) ;) }))) (expression_statement "*(undefined1 *)((long)__dest + local_60) = 0;" (assignment_expression "*(undefined1 *)((long)__dest + local_60) = 0" (pointer_expression "*(undefined1 *)((long)__dest + local_60)" * (cast_expression "(undefined1 *)((long)__dest + local_60)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + local_60)" ( (binary_expression "(long)__dest + local_60" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "plVar1 = *(long **)(param_1 + 0x50);" (assignment_expression "plVar1 = *(long **)(param_1 + 0x50)" identifier = (pointer_expression "*(long **)(param_1 + 0x50)" * (cast_expression "(long **)(param_1 + 0x50)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "local_50 = local_60;" (assignment_expression "local_50 = local_60" identifier = identifier) ;) (if_statement "if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    \n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }" if (parenthesized_expression "(plVar1 == *(long **)(param_1 + 0x58))" ( (binary_expression "plVar1 == *(long **)(param_1 + 0x58)" identifier == (pointer_expression "*(long **)(param_1 + 0x58)" * (cast_expression "(long **)(param_1 + 0x58)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }" { (expression_statement "FUN_001982e0(param_1 + 0x48,plVar1,&local_58);" (call_expression "FUN_001982e0(param_1 + 0x48,plVar1,&local_58)" identifier (argument_list "(param_1 + 0x48,plVar1,&local_58)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) , identifier , (pointer_expression "&local_58" & identifier) ))) ;) }) (else_clause "else {\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }" else (compound_statement "{\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }" { (expression_statement "*plVar1 = (long)(plVar1 + 2);" (assignment_expression "*plVar1 = (long)(plVar1 + 2)" (pointer_expression "*plVar1" * identifier) = (cast_expression "(long)(plVar1 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(plVar1 + 2)" ( (binary_expression "plVar1 + 2" identifier + number_literal) )))) ;) (expression_statement "FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);" (call_expression "FUN_00166a10(plVar1,local_58,local_60 + (long)local_58)" identifier (argument_list "(plVar1,local_58,local_60 + (long)local_58)" ( identifier , identifier , (binary_expression "local_60 + (long)local_58" identifier + (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ;) (expression_statement "*(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;" (assignment_expression "*(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20" (pointer_expression "*(long *)(param_1 + 0x50)" * (cast_expression "(long *)(param_1 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x50) + 0x20" (pointer_expression "*(long *)(param_1 + 0x50)" * (cast_expression "(long *)(param_1 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) + number_literal)) ;) }))) (if_statement "if (local_58 != local_48) {\n        FUN_002dac60();\n      }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n        FUN_002dac60();\n      }" { (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != iVar3)" ( (binary_expression "iVar2 != iVar3" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_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)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier) , (pointer_expression * IDENT) )))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) , LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = 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 = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , (pointer_expression & IDENT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_00183fa0(long param_1)\n\n{\n  long *plVar1;\n  int iVar2;\n  char *__s;\n  size_t __n;\n  size_t *__dest;\n  int iVar3;\n  size_t local_60;\n  size_t *local_58;\n  size_t local_50;\n  size_t local_48 [3];\n  \n  iVar2 = (**(code **)(**(long **)(param_1 + 0x40) + 0x30))();\n  FUN_0018e930(param_1 + 0x48);\n  if (iVar2 != 0) {\n    iVar3 = 0;\n    do {\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    \n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    \n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    } while (iVar2 != iVar3);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00183fa0(long param_1)" (identifier "FUN_00183fa0") (parameter_list "(long param_1)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) () ")"))) (compound_statement "{\n  long *plVar1;\n  int iVar2;\n  char *__s;\n  size_t __n;\n  size_t *__dest;\n  int iVar3;\n  size_t local_60;\n  size_t *local_58;\n  size_t local_50;\n  size_t local_48 [3];\n  \n  iVar2 = (**(code **)(**(long **)(param_1 + 0x40) + 0x30))();\n  FUN_0018e930(param_1 + 0x48);\n  if (iVar2 != 0) {\n    iVar3 = 0;\n    do {\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    \n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    \n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    } while (iVar2 != iVar3);\n  }\n  return;\n}" ({ "{") (declaration "long *plVar1;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "size_t *__dest;" (primitive_type "size_t") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "size_t local_60;" (primitive_type "size_t") (identifier "local_60") (; ";")) (declaration "size_t *local_58;" (primitive_type "size_t") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "size_t local_50;" (primitive_type "size_t") (identifier "local_50") (; ";")) (declaration "size_t local_48 [3];" (primitive_type "size_t") (array_declarator "local_48 [3]" (identifier "local_48") ([ "[") (number_literal "3") (] "]")) (; ";")) (expression_statement "iVar2 = (**(code **)(**(long **)(param_1 + 0x40) + 0x30))();" (assignment_expression "iVar2 = (**(code **)(**(long **)(param_1 + 0x40) + 0x30))()" (identifier "iVar2") (= "=") (call_expression "(**(code **)(**(long **)(param_1 + 0x40) + 0x30))()" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x40) + 0x30))" (( "(") (pointer_expression "**(code **)(**(long **)(param_1 + 0x40) + 0x30)" (* "*") (pointer_expression "*(code **)(**(long **)(param_1 + 0x40) + 0x30)" (* "*") (cast_expression "(code **)(**(long **)(param_1 + 0x40) + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(long **)(param_1 + 0x40) + 0x30)" (( "(") (binary_expression "**(long **)(param_1 + 0x40) + 0x30" (pointer_expression "**(long **)(param_1 + 0x40)" (* "*") (pointer_expression "*(long **)(param_1 + 0x40)" (* "*") (cast_expression "(long **)(param_1 + 0x40)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")"))))) (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_0018e930(param_1 + 0x48);" (call_expression "FUN_0018e930(param_1 + 0x48)" (identifier "FUN_0018e930") (argument_list "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")"))) (; ";")) (if_statement "if (iVar2 != 0) {\n    iVar3 = 0;\n    do {\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    \n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    \n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    } while (iVar2 != iVar3);\n  }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar3 = 0;\n    do {\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    \n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    \n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    } while (iVar2 != iVar3);\n  }" ({ "{") (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    \n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    \n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    } while (iVar2 != iVar3);" (do "do") (compound_statement "{\n      __dest = local_48;\n      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);\n      local_58 = __dest;\n      if (__s == (char *)0x0) {\n                    \n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }\n      __n = strlen(__s);\n      local_60 = __n;\n      if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }\n      *(undefined1 *)((long)__dest + local_60) = 0;\n      plVar1 = *(long **)(param_1 + 0x50);\n      local_50 = local_60;\n      if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    \n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }\n      if (local_58 != local_48) {\n        FUN_002dac60();\n      }\n      iVar3 = iVar3 + 1;\n    }" ({ "{") (expression_statement "__dest = local_48;" (assignment_expression "__dest = local_48" (identifier "__dest") (= "=") (identifier "local_48")) (; ";")) (expression_statement "__s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3);" (assignment_expression "__s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3)" (identifier "__s") (= "=") (cast_expression "(char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(**(long **)(param_1 + 0x40) + 0x38))\n                              (*(long **)(param_1 + 0x40),iVar3)" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x40) + 0x38))" (( "(") (pointer_expression "**(code **)(**(long **)(param_1 + 0x40) + 0x38)" (* "*") (pointer_expression "*(code **)(**(long **)(param_1 + 0x40) + 0x38)" (* "*") (cast_expression "(code **)(**(long **)(param_1 + 0x40) + 0x38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(long **)(param_1 + 0x40) + 0x38)" (( "(") (binary_expression "**(long **)(param_1 + 0x40) + 0x38" (pointer_expression "**(long **)(param_1 + 0x40)" (* "*") (pointer_expression "*(long **)(param_1 + 0x40)" (* "*") (cast_expression "(long **)(param_1 + 0x40)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")"))))) (+ "+") (number_literal "0x38")) () ")"))))) () ")")) (argument_list "(*(long **)(param_1 + 0x40),iVar3)" (( "(") (pointer_expression "*(long **)(param_1 + 0x40)" (* "*") (cast_expression "(long **)(param_1 + 0x40)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (, ",") (identifier "iVar3") () ")"))))) (; ";")) (expression_statement "local_58 = __dest;" (assignment_expression "local_58 = __dest" (identifier "local_58") (= "=") (identifier "__dest")) (; ";")) (if_statement "if (__s == (char *)0x0) {\n                    \n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }" (if "if") (parenthesized_expression "(__s == (char *)0x0)" (( "(") (binary_expression "__s == (char *)0x0" (identifier "__s") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n        FUN_003194d0("basic_string::_M_construct null not valid");\n      }" ({ "{") (expression_statement "FUN_003194d0("basic_string::_M_construct null not valid");" (call_expression "FUN_003194d0("basic_string::_M_construct null not valid")" (identifier "FUN_003194d0") (argument_list "("basic_string::_M_construct null not valid")" (( "(") (string_literal ""basic_string::_M_construct null not valid"" (" """) (string_content "basic_string::_M_construct null not valid") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "__n = strlen(__s);" (assignment_expression "__n = strlen(__s)" (identifier "__n") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (expression_statement "local_60 = __n;" (assignment_expression "local_60 = __n" (identifier "local_60") (= "=") (identifier "__n")) (; ";")) (if_statement "if (__n < 0x10) {\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }\n      else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }" (if "if") (parenthesized_expression "(__n < 0x10)" (( "(") (binary_expression "__n < 0x10" (identifier "__n") (< "<") (number_literal "0x10")) () ")")) (compound_statement "{\n        if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;\n      }" ({ "{") (if_statement "if (__n == 1) {\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }\n        else if (__n != 0) goto LAB_001840be;" (if "if") (parenthesized_expression "(__n == 1)" (( "(") (binary_expression "__n == 1" (identifier "__n") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);\n        }" ({ "{") (expression_statement "local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);" (assignment_expression "local_48[0] = CONCAT71(local_48[0]._1_7_,*__s)" (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]")) (= "=") (call_expression "CONCAT71(local_48[0]._1_7_,*__s)" (identifier "CONCAT71") (argument_list "(local_48[0]._1_7_,*__s)" (( "(") (field_expression "local_48[0]._1_7_" (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]")) (. ".") (field_identifier "_1_7_")) (, ",") (pointer_expression "*__s" (* "*") (identifier "__s")) () ")")))) (; ";")) (} "}")) (else_clause "else if (__n != 0) goto LAB_001840be;" (else "else") (if_statement "if (__n != 0) goto LAB_001840be;" (if "if") (parenthesized_expression "(__n != 0)" (( "(") (binary_expression "__n != 0" (identifier "__n") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001840be;" (goto "goto") (statement_identifier "LAB_001840be") (; ";"))))) (} "}")) (else_clause "else {\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }" (else "else") (compound_statement "{\n        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);\n        local_48[0] = local_60;\n        local_58 = __dest;\nLAB_001840be:\n        memcpy(__dest,__s,__n);\n        __dest = local_58;\n      }" ({ "{") (expression_statement "__dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);" (assignment_expression "__dest = (size_t *)FUN_002e1590(&local_58,&local_60,0)" (identifier "__dest") (= "=") (cast_expression "(size_t *)FUN_002e1590(&local_58,&local_60,0)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002e1590(&local_58,&local_60,0)" (identifier "FUN_002e1590") (argument_list "(&local_58,&local_60,0)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (pointer_expression "&local_60" (& "&") (identifier "local_60")) (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "local_48[0] = local_60;" (assignment_expression "local_48[0] = local_60" (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_60")) (; ";")) (expression_statement "local_58 = __dest;" (assignment_expression "local_58 = __dest" (identifier "local_58") (= "=") (identifier "__dest")) (; ";")) (labeled_statement "LAB_001840be:\n        memcpy(__dest,__s,__n);" (statement_identifier "LAB_001840be") (: ":") (expression_statement "memcpy(__dest,__s,__n);" (call_expression "memcpy(__dest,__s,__n)" (identifier "memcpy") (argument_list "(__dest,__s,__n)" (( "(") (identifier "__dest") (, ",") (identifier "__s") (, ",") (identifier "__n") () ")"))) (; ";"))) (expression_statement "__dest = local_58;" (assignment_expression "__dest = local_58" (identifier "__dest") (= "=") (identifier "local_58")) (; ";")) (} "}")))) (expression_statement "*(undefined1 *)((long)__dest + local_60) = 0;" (assignment_expression "*(undefined1 *)((long)__dest + local_60) = 0" (pointer_expression "*(undefined1 *)((long)__dest + local_60)" (* "*") (cast_expression "(undefined1 *)((long)__dest + local_60)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__dest + local_60)" (( "(") (binary_expression "(long)__dest + local_60" (cast_expression "(long)__dest" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest")) (+ "+") (identifier "local_60")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar1 = *(long **)(param_1 + 0x50);" (assignment_expression "plVar1 = *(long **)(param_1 + 0x50)" (identifier "plVar1") (= "=") (pointer_expression "*(long **)(param_1 + 0x50)" (* "*") (cast_expression "(long **)(param_1 + 0x50)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (expression_statement "local_50 = local_60;" (assignment_expression "local_50 = local_60" (identifier "local_50") (= "=") (identifier "local_60")) (; ";")) (if_statement "if (plVar1 == *(long **)(param_1 + 0x58)) {\n                    \n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }\n      else {\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }" (if "if") (parenthesized_expression "(plVar1 == *(long **)(param_1 + 0x58))" (( "(") (binary_expression "plVar1 == *(long **)(param_1 + 0x58)" (identifier "plVar1") (== "==") (pointer_expression "*(long **)(param_1 + 0x58)" (* "*") (cast_expression "(long **)(param_1 + 0x58)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")"))))) () ")")) (compound_statement "{\n                    \n        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);\n      }" ({ "{") (expression_statement "FUN_001982e0(param_1 + 0x48,plVar1,&local_58);" (call_expression "FUN_001982e0(param_1 + 0x48,plVar1,&local_58)" (identifier "FUN_001982e0") (argument_list "(param_1 + 0x48,plVar1,&local_58)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) (, ",") (identifier "plVar1") (, ",") (pointer_expression "&local_58" (& "&") (identifier "local_58")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }" (else "else") (compound_statement "{\n        *plVar1 = (long)(plVar1 + 2);\n                    \n        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);\n        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;\n      }" ({ "{") (expression_statement "*plVar1 = (long)(plVar1 + 2);" (assignment_expression "*plVar1 = (long)(plVar1 + 2)" (pointer_expression "*plVar1" (* "*") (identifier "plVar1")) (= "=") (cast_expression "(long)(plVar1 + 2)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(plVar1 + 2)" (( "(") (binary_expression "plVar1 + 2" (identifier "plVar1") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);" (call_expression "FUN_00166a10(plVar1,local_58,local_60 + (long)local_58)" (identifier "FUN_00166a10") (argument_list "(plVar1,local_58,local_60 + (long)local_58)" (( "(") (identifier "plVar1") (, ",") (identifier "local_58") (, ",") (binary_expression "local_60 + (long)local_58" (identifier "local_60") (+ "+") (cast_expression "(long)local_58" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_58"))) () ")"))) (; ";")) (expression_statement "*(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;" (assignment_expression "*(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20" (pointer_expression "*(long *)(param_1 + 0x50)" (* "*") (cast_expression "(long *)(param_1 + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (binary_expression "*(long *)(param_1 + 0x50) + 0x20" (pointer_expression "*(long *)(param_1 + 0x50)" (* "*") (cast_expression "(long *)(param_1 + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (+ "+") (number_literal "0x20"))) (; ";")) (} "}")))) (if_statement "if (local_58 != local_48) {\n        FUN_002dac60();\n      }" (if "if") (parenthesized_expression "(local_58 != local_48)" (( "(") (binary_expression "local_58 != local_48" (identifier "local_58") (!= "!=") (identifier "local_48")) () ")")) (compound_statement "{\n        FUN_002dac60();\n      }" ({ "{") (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" (identifier "FUN_002dac60") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar2 != iVar3)" (( "(") (binary_expression "iVar2 != iVar3" (identifier "iVar2") (!= "!=") (identifier "iVar3")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void copy_unused_symbols(Incremental_library * this) */

void __thiscall gold::type_1::function_1(type_1 *this)

{
  type_2 *ppbVar1;
  type_3 __position;
  type_4 var_5;
  int iVar3;
  type_5 extraout_var;
  size_t var_10;
  type_6 __dest;
  type_4 var_17;
  type_7 var_14;
  type_8 name;
  char *var_7;
  
  var_5 = (*this->input_reader_->_vptr_Input_reader[6])();
  std::
  vector<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>
  ::var_4(&this->unused_symbols_,(type_9)var_5);
  if (var_5 != 0) {
    var_17 = 0;
    do {
      __dest._M_p = (type_2)&name.field_2;
      iVar3 = (*this->input_reader_->_vptr_Input_reader[7])(this->input_reader_,(type_9)var_17);
      var_7 = (char *)var_6(extraout_var,iVar3);
      name._M_dataplus._M_p = __dest._M_p;
      if (var_7 == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
        std::var_8("basic_string::_M_construct null not valid");
      }
      var_10 = var_9(var_7);
      var_14 = var_10;
      if (var_10 < 0x10) {
        if (var_10 == 1) {
          name.field_2._M_local_buf[0] = *var_7;
        }
        else if (var_10 != 0) goto LAB_001840be;
      }
      else {
        __dest._M_p = (type_2)std::string::var_11((type_8 *)&name,&var_14,0);
        name.field_2._M_allocated_capacity = var_14;
        name._M_dataplus._M_p = __dest._M_p;
LAB_001840be:
        var_12(__dest._M_p,var_7,var_10);
        __dest = name._M_dataplus;
      }
      __dest._M_p[var_14] = '\0';
      __position._M_current =
           (this->unused_symbols_).
           super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>
           ._M_impl._M_finish;
      name._M_string_length = var_14;
      if (__position._M_current ==
          (this->unused_symbols_).
          super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>
          ._M_impl._M_end_of_storage) {
                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */
        std::
        vector<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>
        ::
        _M_realloc_insert<const_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>&>
                  (&this->unused_symbols_,__position,&name);
      }
      else {
        ((__position._M_current)->_M_dataplus)._M_p = (type_2)&(__position._M_current)->field_2;
                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */
        std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::
        var_13<var_2*>(__position._M_current,name._M_dataplus._M_p,
                            name._M_dataplus._M_p + var_14);
        ppbVar1 = &(this->unused_symbols_).
                   super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>
                   ._M_impl._M_finish;
        *ppbVar1 = *ppbVar1 + 1;
      }
      if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_15
           *)name._M_dataplus._M_p != &name.field_2) {
        var_16(name._M_dataplus._M_p);
      }
      var_17 = var_17 + 1;
    } while (var_5 != var_17);
  }
  return;
}


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

void MASKED(long param_1)

{
  long *plVar1;
  int iVar2;
  char *__s;
  size_t __n;
  size_t *__dest;
  int iVar3;
  size_t local_60;
  size_t *local_58;
  size_t local_50;
  size_t local_48 [3];
  
  iVar2 = (**(code **)(**(long **)(param_1 + 0x40) + 0x30))();
  FUN_0018e930(param_1 + 0x48);
  if (iVar2 != 0) {
    iVar3 = 0;
    do {
      __dest = local_48;
      __s = (char *)(**(code **)(**(long **)(param_1 + 0x40) + 0x38))
                              (*(long **)(param_1 + 0x40),iVar3);
      local_58 = __dest;
      if (__s == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
        FUN_003194d0("basic_string::_M_construct null not valid");
      }
      __n = strlen(__s);
      local_60 = __n;
      if (__n < 0x10) {
        if (__n == 1) {
          local_48[0] = CONCAT71(local_48[0]._1_7_,*__s);
        }
        else if (__n != 0) goto LAB_001840be;
      }
      else {
        __dest = (size_t *)FUN_002e1590(&local_58,&local_60,0);
        local_48[0] = local_60;
        local_58 = __dest;
LAB_001840be:
        memcpy(__dest,__s,__n);
        __dest = local_58;
      }
      *(undefined1 *)((long)__dest + local_60) = 0;
      plVar1 = *(long **)(param_1 + 0x50);
      local_50 = local_60;
      if (plVar1 == *(long **)(param_1 + 0x58)) {
                    /* try { // try from 001840fb to 001840ff has its CatchHandler @ 0018412c */
        FUN_001982e0(param_1 + 0x48,plVar1,&local_58);
      }
      else {
        *plVar1 = (long)(plVar1 + 2);
                    /* try { // try from 00184030 to 00184034 has its CatchHandler @ 0018412c */
        FUN_00166a10(plVar1,local_58,local_60 + (long)local_58);
        *(long *)(param_1 + 0x50) = *(long *)(param_1 + 0x50) + 0x20;
      }
      if (local_58 != local_48) {
        FUN_002dac60();
      }
      iVar3 = iVar3 + 1;
    } while (iVar2 != iVar3);
  }
  return;
}

