
/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */
/* DWARF original prototype: void Dynobj(Dynobj * this, string * name, Input_file * input_file,
   off_t offset) */

void __thiscall gold::Dynobj::Dynobj(Dynobj *this,string *name,Input_file *input_file,off_t offset)

{
  string *this_00;
  int *piVar1;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar2;
  uint uVar3;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *__src;
  byte bVar4;
  uint uVar5;
  size_type sVar6;
  bool bVar7;
  Position_dependent_options *pPVar8;
  int iVar9;
  int iVar10;
  uint uVar11;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *__dest;
  pointer pcVar12;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_34;
  
  (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_0038897c;
  (this->super_Object).name_._M_dataplus._M_p = (pointer)&(this->super_Object).name_.field_2;
  pcVar12 = (name->_M_dataplus)._M_p;
  this_00 = &(this->super_Object).name_;
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char*>(this_00,pcVar12,pcVar12 + name->_M_string_length,0);
  (this->super_Object).input_file_ = input_file;
  (this->super_Object).shnum_ = 0xffffffff;
  (this->super_Object).offset_ = offset;
  (this->super_Object).xindex_ = (Xindex *)0x0;
  (this->super_Object).compressed_sections_ = (Compressed_section_map *)0x0;
  (this->super_Object).field_0x2c = (this->super_Object).field_0x2c & 0x80 | 1;
  if (input_file == (Input_file *)0x0) {
    (this->soname_)._M_string_length = 0;
    (this->soname_)._M_dataplus._M_p = (pointer)&(this->soname_).field_2;
    (this->soname_).field_2._M_local_buf[0] = '\0';
    (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003895e8;
    (this->needed_).
    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_start = (pointer)0x0;
    (this->needed_).
    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 = (pointer)0x0;
    (this->needed_).
    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 = (pointer)0x0;
    this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;
                    /* try { // try from 001a369d to 001a36a1 has its CatchHandler @ 001a372c */
    std::string::_M_assign((string *)&this->soname_,(string *)name);
    return;
  }
  piVar1 = &(input_file->file_).object_count_;
  *piVar1 = *piVar1 + 1;
                    /* try { // try from 001a34de to 001a3501 has its CatchHandler @ 001a3725 */
  bVar7 = Input_file::is_in_system_directory(input_file);
  (this->super_Object).field_0x2c = (this->super_Object).field_0x2c & 0xdf | bVar7 << 5;
  pPVar8 = Input_file::options(input_file);
  bVar7 = pPVar8->as_needed_;
  paVar2 = &(this->soname_).field_2;
  (this->soname_)._M_string_length = 0;
  (this->soname_)._M_dataplus._M_p = (pointer)paVar2;
  (this->soname_).field_2._M_local_buf[0] = '\0';
  bVar4 = (this->super_Object).field_0x2c;
  (this->needed_).
  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_start = (pointer)0x0;
  (this->needed_).
  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 = (pointer)0x0;
  (this->needed_).
  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 = (pointer)0x0;
  this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;
  (this->super_Object).field_0x2c = bVar4 & 0xbf | (byte)((bVar7 & 1) << 6);
  (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003895e8;
                    /* try { // try from 001a3564 to 001a35e8 has its CatchHandler @ 001a3733 */
  std::string::_M_assign((string *)&this->soname_,(string *)&input_file->found_name_);
  if (*(int *)((int)&(this->super_Object).offset_ + 4) != 0 ||
      (int)(this->super_Object).offset_ != 0) {
    iVar9 = std::string::find((string *)this_00,'(',0);
    iVar10 = std::string::find((string *)this_00,')',0);
    if ((iVar9 != -1) && (iVar10 != -1)) {
      uVar5 = (this->super_Object).name_._M_string_length;
      uVar3 = iVar9 + 1;
      if (uVar5 < uVar3) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */
        std::__throw_out_of_range_fmt
                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",
                   uVar3,uVar5);
      }
      __src = &local_34.field_2;
      pcVar12 = (this->super_Object).name_._M_dataplus._M_p + uVar3;
      uVar11 = iVar10 - uVar3;
      if (uVar5 - uVar3 <= iVar10 - uVar3) {
        uVar11 = uVar5 - uVar3;
      }
      local_34._M_dataplus._M_p = (pointer)__src;
      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
      _M_construct<char_const*>(&local_34,pcVar12,pcVar12 + uVar11,0);
      __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                *)(this->soname_)._M_dataplus._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)local_34._M_dataplus._M_p == __src) {
        if (local_34._M_string_length != 0) {
          if (local_34._M_string_length == 1) {
            __dest->_M_local_buf[0] = local_34.field_2._M_local_buf[0];
            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                      *)(this->soname_)._M_dataplus._M_p;
          }
          else {
            memcpy(__dest,__src,local_34._M_string_length);
            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                      *)(this->soname_)._M_dataplus._M_p;
          }
        }
        (this->soname_)._M_string_length = local_34._M_string_length;
        __dest->_M_local_buf[local_34._M_string_length] = '\0';
      }
      else if (__dest == paVar2) {
        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;
        (this->soname_)._M_string_length = local_34._M_string_length;
        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;
        local_34._M_dataplus._M_p = (pointer)__src;
      }
      else {
        (this->soname_)._M_string_length = local_34._M_string_length;
        sVar6 = (this->soname_).field_2._M_allocated_capacity;
        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;
        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;
        local_34._M_dataplus._M_p = (pointer)__src;
        if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                       *)0x0) {
          local_34._M_dataplus._M_p = (pointer)__dest;
          local_34.field_2._M_allocated_capacity = sVar6;
        }
      }
      local_34._M_string_length = 0;
      *local_34._M_dataplus._M_p = '\0';
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)local_34._M_dataplus._M_p != &local_34.field_2) {
        operator_delete(local_34._M_dataplus._M_p);
      }
    }
  }
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

void FUN_001a3440(undefined4 *param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5
                 )

{
  byte bVar1;
  uint uVar2;
  undefined4 uVar3;
  uint uVar4;
  byte *pbVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  undefined4 *puVar9;
  undefined4 *local_34;
  size_t local_30;
  undefined4 local_2c [7];
  
  *param_1 = &DAT_0038897c;
  param_1[1] = param_1 + 3;
  puVar9 = param_1 + 1;
  FUN_000513a0(puVar9,*param_2,param_2[1] + *param_2,0);
  param_1[7] = param_3;
  param_1[10] = 0xffffffff;
  param_1[8] = param_4;
  param_1[9] = param_5;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0x80 | 1;
  if (param_3 == 0) {
    param_1[0xf] = 0;
    param_1[0xe] = param_1 + 0x10;
    *(undefined1 *)(param_1 + 0x10) = 0;
    *param_1 = &DAT_003895e8;
    param_1[0x14] = 0;
    param_1[0x15] = 0;
    param_1[0x16] = 0;
    param_1[0x17] = 0;
                    /* try { // try from 001a369d to 001a36a1 has its CatchHandler @ 001a372c */
    FUN_001ee9c0(param_1 + 0xe,param_2);
    return;
  }
  *(int *)(param_3 + 0x3c) = *(int *)(param_3 + 0x3c) + 1;
                    /* try { // try from 001a34de to 001a3501 has its CatchHandler @ 001a3725 */
  uVar4 = FUN_00067b80(param_3);
  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5);
  pbVar5 = (byte *)FUN_00067b60(param_3);
  bVar1 = *pbVar5;
  param_1[0xf] = 0;
  param_1[0xe] = param_1 + 0x10;
  *(undefined1 *)(param_1 + 0x10) = 0;
  param_1[0x14] = 0;
  param_1[0x15] = 0;
  param_1[0x16] = 0;
  param_1[0x17] = 0;
  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6);
  *param_1 = &DAT_003895e8;
                    /* try { // try from 001a3564 to 001a35e8 has its CatchHandler @ 001a3733 */
  FUN_001ee9c0(param_1 + 0xe,param_3 + 4);
  if (param_1[9] != 0 || param_1[8] != 0) {
    iVar6 = FUN_001f0c10(puVar9,0x28,0);
    iVar7 = FUN_001f0c10(puVar9,0x29,0);
    if ((iVar6 != -1) && (iVar7 != -1)) {
      uVar2 = param_1[2];
      uVar4 = iVar6 + 1;
      if (uVar2 < uVar4) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */
        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"
                     ,uVar4,uVar2);
      }
      uVar8 = iVar7 - uVar4;
      if (uVar2 - uVar4 <= iVar7 - uVar4) {
        uVar8 = uVar2 - uVar4;
      }
      local_34 = local_2c;
      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);
      puVar9 = (undefined4 *)param_1[0xe];
      if (local_34 == local_2c) {
        if (local_30 != 0) {
          if (local_30 == 1) {
            *(undefined1 *)puVar9 = (undefined1)local_2c[0];
            puVar9 = (undefined4 *)param_1[0xe];
          }
          else {
            memcpy(puVar9,local_2c,local_30);
            puVar9 = (undefined4 *)param_1[0xe];
          }
        }
        param_1[0xf] = local_30;
        *(undefined1 *)((int)puVar9 + local_30) = 0;
      }
      else if (puVar9 == param_1 + 0x10) {
        param_1[0xe] = local_34;
        param_1[0xf] = local_30;
        param_1[0x10] = local_2c[0];
        local_34 = local_2c;
      }
      else {
        param_1[0xf] = local_30;
        uVar3 = param_1[0x10];
        param_1[0xe] = local_34;
        param_1[0x10] = local_2c[0];
        local_34 = local_2c;
        if (puVar9 != (undefined4 *)0x0) {
          local_34 = puVar9;
          local_2c[0] = uVar3;
        }
      }
      local_30 = 0;
      *(undefined1 *)local_34 = 0;
      if (local_34 != local_2c) {
        FUN_001e6db0(local_34);
      }
    }
  }
  return;
}


CALL 0x000650b8
ADD ECX,0x1ebbbb
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x4c
MOV ESI,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EBP + 0x14]
MOV dword ptr [EBP + -0x3c],ECX
MOV EDX,dword ptr [EBP + 0x18]
MOV EBX,dword ptr [EBP + 0xc]
MOV dword ptr [EBP + -0x48],EAX
LEA EAX,[ESI + 0xc]
MOV EDI,dword ptr [EBP + 0x10]
MOV dword ptr [EBP + -0x44],EDX
LEA EDX,[ECX + 0xffff997c]
MOV dword ptr [ESI],EDX
MOV dword ptr [ESI + 0x4],EAX
MOV ECX,dword ptr [EBX]
MOV dword ptr [EBP + -0x4c],EAX
PUSH 0x0
MOV EAX,dword ptr [EBX + 0x4]
MOV dword ptr [EBP + -0x50],EDX
LEA EDX,[ESI + 0x4]
ADD EAX,ECX
MOV dword ptr [EBP + -0x40],EDX
PUSH EAX
PUSH ECX
PUSH EDX
CALL 0x000513a0
MOV EAX,dword ptr [EBP + -0x48]
MOV EDX,dword ptr [EBP + -0x44]
MOV dword ptr [ESI + 0x1c],EDI
MOV dword ptr [ESI + 0x28],0xffffffff
ADD ESP,0x10
MOV dword ptr [ESI + 0x20],EAX
MOVZX EAX,byte ptr [ESI + 0x2c]
MOV dword ptr [ESI + 0x24],EDX
AND EAX,0xffffff80
MOV dword ptr [ESI + 0x30],0x0
OR EAX,0x1
MOV dword ptr [ESI + 0x34],0x0
MOV byte ptr [ESI + 0x2c],AL
TEST EDI,EDI
JZ 0x001a3658
ADD dword ptr [EDI + 0x3c],0x1
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x3c]
PUSH EDI
CALL 0x00067b80
AND EAX,0x1
MOV EBX,dword ptr [EBP + -0x3c]
SHL EAX,0x5
MOV EDX,EAX
MOVZX EAX,byte ptr [ESI + 0x2c]
AND EAX,0xffffffdf
OR EAX,EDX
MOV byte ptr [ESI + 0x2c],AL
MOV dword ptr [ESP],EDI
CALL 0x00067b60
MOVZX EAX,byte ptr [EAX]
POP EDX
ADD EDI,0x4
MOV EBX,dword ptr [EBP + -0x3c]
POP ECX
LEA ECX,[ESI + 0x40]
MOV dword ptr [ESI + 0x3c],0x0
AND EAX,0x1
MOV dword ptr [ESI + 0x38],ECX
SHL EAX,0x6
MOV byte ptr [ESI + 0x40],0x0
MOV EDX,EAX
MOVZX EAX,byte ptr [ESI + 0x2c]
MOV dword ptr [ESI + 0x50],0x0
MOV dword ptr [ESI + 0x54],0x0
AND EAX,0xffffffbf
MOV dword ptr [ESI + 0x58],0x0
OR EAX,EDX
MOV dword ptr [ESI + 0x5c],0x0
MOV byte ptr [ESI + 0x2c],AL
LEA EAX,[EBX + 0xffffa5e8]
MOV dword ptr [ESI],EAX
LEA EAX,[ESI + 0x38]
PUSH EDI
PUSH EAX
MOV dword ptr [EBP + -0x48],ECX
LEA ECX,[ESI + 0x50]
MOV dword ptr [EBP + -0x54],ECX
CALL 0x001ee9c0
ADD ESP,0x10
MOV EAX,dword ptr [ESI + 0x24]
OR EAX,dword ptr [ESI + 0x20]
JNZ 0x001a3580
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x4
MOV EBX,dword ptr [EBP + -0x3c]
PUSH 0x0
PUSH 0x28
PUSH dword ptr [EBP + -0x40]
CALL 0x001f0c10
ADD ESP,0xc
MOV EBX,dword ptr [EBP + -0x3c]
PUSH 0x0
MOV EDI,EAX
PUSH 0x29
PUSH dword ptr [EBP + -0x40]
CALL 0x001f0c10
ADD ESP,0x10
CMP EDI,-0x1
JZ 0x001a3574
CMP EAX,-0x1
JZ 0x001a3574
MOV ECX,dword ptr [ESI + 0x8]
LEA EDX,[EDI + 0x1]
SUB EAX,EDX
CMP EDX,ECX
JA 0x001a370d
MOV EBX,dword ptr [ESI + 0x4]
SUB ECX,EDX
LEA EDI,[EBP + -0x30]
PUSH 0x0
MOV dword ptr [EBP + -0x40],EDI
LEA EDI,[EBP + -0x28]
ADD EBX,EDX
CMP ECX,EAX
MOV dword ptr [EBP + -0x30],EDI
CMOVBE EAX,ECX
ADD EAX,EBX
PUSH EAX
PUSH EBX
PUSH dword ptr [EBP + -0x40]
CALL 0x00050e40
MOV ECX,dword ptr [EBP + -0x30]
ADD ESP,0x10
MOV EAX,dword ptr [ESI + 0x38]
MOV EDX,dword ptr [EBP + -0x2c]
CMP ECX,EDI
JZ 0x001a36d0
MOV EBX,dword ptr [EBP + -0x28]
MOV dword ptr [EBP + -0x40],EBX
CMP EAX,dword ptr [EBP + -0x48]
JZ 0x001a36b0
MOV dword ptr [ESI + 0x3c],EDX
MOV EDX,dword ptr [EBP + -0x40]
MOV EBX,dword ptr [ESI + 0x40]
MOV dword ptr [ESI + 0x38],ECX
MOV dword ptr [ESI + 0x40],EDX
TEST EAX,EAX
JZ 0x001a36b9
MOV dword ptr [EBP + -0x30],EAX
MOV dword ptr [EBP + -0x28],EBX
MOV dword ptr [EBP + -0x2c],0x0
MOV byte ptr [EAX],0x0
MOV EAX,dword ptr [EBP + -0x30]
CMP EAX,EDI
JZ 0x001a3574
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x3c]
PUSH EAX
CALL 0x001e6db0
ADD ESP,0x10
JMP 0x001a3574
MOV EDI,dword ptr [EBP + -0x3c]
LEA ECX,[ESI + 0x40]
SUB ESP,0x8
MOV dword ptr [ESI + 0x3c],0x0
MOV dword ptr [ESI + 0x38],ECX
LEA EAX,[EDI + 0xffffa5e8]
MOV byte ptr [ESI + 0x40],0x0
MOV dword ptr [ESI],EAX
LEA EAX,[ESI + 0x38]
MOV dword ptr [ESI + 0x50],0x0
MOV dword ptr [ESI + 0x54],0x0
MOV dword ptr [ESI + 0x58],0x0
MOV dword ptr [ESI + 0x5c],0x0
PUSH EBX
MOV EBX,EDI
PUSH EAX
MOV dword ptr [EBP + -0x48],ECX
CALL 0x001ee9c0
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESI + 0x38],ECX
MOV dword ptr [ESI + 0x3c],EDX
MOV dword ptr [ESI + 0x40],EBX
MOV dword ptr [EBP + -0x30],EDI
LEA EDI,[EBP + -0x28]
MOV EAX,EDI
JMP 0x001a3629
TEST EDX,EDX
JZ 0x001a36f0
CMP EDX,0x1
JZ 0x001a36ff
SUB ESP,0x4
MOV EBX,dword ptr [EBP + -0x3c]
PUSH EDX
PUSH EDI
PUSH EAX
CALL 0x000295c0
MOV EDX,dword ptr [EBP + -0x2c]
MOV EAX,dword ptr [ESI + 0x38]
ADD ESP,0x10
MOV dword ptr [ESI + 0x3c],EDX
MOV byte ptr [EAX + EDX*0x1],0x0
MOV EAX,dword ptr [EBP + -0x30]
JMP 0x001a3629
MOVZX EDX,byte ptr [EBP + -0x28]
MOV byte ptr [EAX],DL
MOV EDX,dword ptr [EBP + -0x2c]
MOV EAX,dword ptr [ESI + 0x38]
JMP 0x001a36f0
MOV EBX,dword ptr [EBP + -0x3c]
PUSH ECX
PUSH EDX
LEA EAX,[EBX + 0xffeffc61]
PUSH EAX
LEA EAX,[EBX + 0xffefbec4]
PUSH EAX
CALL 0x0022c840
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */\n\nvoid FUN_001a3440(undefined4 *param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5\n                 )\n\n{\n  byte bVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *local_34;\n  size_t local_30;\n  undefined4 local_2c [7];\n  \n  *param_1 = &DAT_0038897c;\n  param_1[1] = param_1 + 3;\n  puVar9 = param_1 + 1;\n  FUN_000513a0(puVar9,*param_2,param_2[1] + *param_2,0);\n  param_1[7] = param_3;\n  param_1[10] = 0xffffffff;\n  param_1[8] = param_4;\n  param_1[9] = param_5;\n  param_1[0xc] = 0;\n  param_1[0xd] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0x80 | 1;\n  if (param_3 == 0) {\n    param_1[0xf] = 0;\n    param_1[0xe] = param_1 + 0x10;\n    *(undefined1 *)(param_1 + 0x10) = 0;\n    *param_1 = &DAT_003895e8;\n    param_1[0x14] = 0;\n    param_1[0x15] = 0;\n    param_1[0x16] = 0;\n    param_1[0x17] = 0;\n                    /* try { // try from 001a369d to 001a36a1 has its CatchHandler @ 001a372c */\n    FUN_001ee9c0(param_1 + 0xe,param_2);\n    return;\n  }\n  *(int *)(param_3 + 0x3c) = *(int *)(param_3 + 0x3c) + 1;\n                    /* try { // try from 001a34de to 001a3501 has its CatchHandler @ 001a3725 */\n  uVar4 = FUN_00067b80(param_3);\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5);\n  pbVar5 = (byte *)FUN_00067b60(param_3);\n  bVar1 = *pbVar5;\n  param_1[0xf] = 0;\n  param_1[0xe] = param_1 + 0x10;\n  *(undefined1 *)(param_1 + 0x10) = 0;\n  param_1[0x14] = 0;\n  param_1[0x15] = 0;\n  param_1[0x16] = 0;\n  param_1[0x17] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6);\n  *param_1 = &DAT_003895e8;\n                    /* try { // try from 001a3564 to 001a35e8 has its CatchHandler @ 001a3733 */\n  FUN_001ee9c0(param_1 + 0xe,param_3 + 4);\n  if (param_1[9] != 0 || param_1[8] != 0) {\n    iVar6 = FUN_001f0c10(puVar9,0x28,0);\n    iVar7 = FUN_001f0c10(puVar9,0x29,0);\n    if ((iVar6 != -1) && (iVar7 != -1)) {\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */\n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_001a3440(undefined4 *param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5\n                 )\n\n{\n  byte bVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *local_34;\n  size_t local_30;\n  undefined4 local_2c [7];\n  \n  *param_1 = &DAT_0038897c;\n  param_1[1] = param_1 + 3;\n  puVar9 = param_1 + 1;\n  FUN_000513a0(puVar9,*param_2,param_2[1] + *param_2,0);\n  param_1[7] = param_3;\n  param_1[10] = 0xffffffff;\n  param_1[8] = param_4;\n  param_1[9] = param_5;\n  param_1[0xc] = 0;\n  param_1[0xd] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0x80 | 1;\n  if (param_3 == 0) {\n    param_1[0xf] = 0;\n    param_1[0xe] = param_1 + 0x10;\n    *(undefined1 *)(param_1 + 0x10) = 0;\n    *param_1 = &DAT_003895e8;\n    param_1[0x14] = 0;\n    param_1[0x15] = 0;\n    param_1[0x16] = 0;\n    param_1[0x17] = 0;\n                    /* try { // try from 001a369d to 001a36a1 has its CatchHandler @ 001a372c */\n    FUN_001ee9c0(param_1 + 0xe,param_2);\n    return;\n  }\n  *(int *)(param_3 + 0x3c) = *(int *)(param_3 + 0x3c) + 1;\n                    /* try { // try from 001a34de to 001a3501 has its CatchHandler @ 001a3725 */\n  uVar4 = FUN_00067b80(param_3);\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5);\n  pbVar5 = (byte *)FUN_00067b60(param_3);\n  bVar1 = *pbVar5;\n  param_1[0xf] = 0;\n  param_1[0xe] = param_1 + 0x10;\n  *(undefined1 *)(param_1 + 0x10) = 0;\n  param_1[0x14] = 0;\n  param_1[0x15] = 0;\n  param_1[0x16] = 0;\n  param_1[0x17] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6);\n  *param_1 = &DAT_003895e8;\n                    /* try { // try from 001a3564 to 001a35e8 has its CatchHandler @ 001a3733 */\n  FUN_001ee9c0(param_1 + 0xe,param_3 + 4);\n  if (param_1[9] != 0 || param_1[8] != 0) {\n    iVar6 = FUN_001f0c10(puVar9,0x28,0);\n    iVar7 = FUN_001f0c10(puVar9,0x29,0);\n    if ((iVar6 != -1) && (iVar7 != -1)) {\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */\n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_001a3440(undefined4 *param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5\n                 )" identifier (parameter_list "(undefined4 *param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5\n                 )" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *local_34;\n  size_t local_30;\n  undefined4 local_2c [7];\n  \n  *param_1 = &DAT_0038897c;\n  param_1[1] = param_1 + 3;\n  puVar9 = param_1 + 1;\n  FUN_000513a0(puVar9,*param_2,param_2[1] + *param_2,0);\n  param_1[7] = param_3;\n  param_1[10] = 0xffffffff;\n  param_1[8] = param_4;\n  param_1[9] = param_5;\n  param_1[0xc] = 0;\n  param_1[0xd] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0x80 | 1;\n  if (param_3 == 0) {\n    param_1[0xf] = 0;\n    param_1[0xe] = param_1 + 0x10;\n    *(undefined1 *)(param_1 + 0x10) = 0;\n    *param_1 = &DAT_003895e8;\n    param_1[0x14] = 0;\n    param_1[0x15] = 0;\n    param_1[0x16] = 0;\n    param_1[0x17] = 0;\n                    /* try { // try from 001a369d to 001a36a1 has its CatchHandler @ 001a372c */\n    FUN_001ee9c0(param_1 + 0xe,param_2);\n    return;\n  }\n  *(int *)(param_3 + 0x3c) = *(int *)(param_3 + 0x3c) + 1;\n                    /* try { // try from 001a34de to 001a3501 has its CatchHandler @ 001a3725 */\n  uVar4 = FUN_00067b80(param_3);\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5);\n  pbVar5 = (byte *)FUN_00067b60(param_3);\n  bVar1 = *pbVar5;\n  param_1[0xf] = 0;\n  param_1[0xe] = param_1 + 0x10;\n  *(undefined1 *)(param_1 + 0x10) = 0;\n  param_1[0x14] = 0;\n  param_1[0x15] = 0;\n  param_1[0x16] = 0;\n  param_1[0x17] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6);\n  *param_1 = &DAT_003895e8;\n                    /* try { // try from 001a3564 to 001a35e8 has its CatchHandler @ 001a3733 */\n  FUN_001ee9c0(param_1 + 0xe,param_3 + 4);\n  if (param_1[9] != 0 || param_1[8] != 0) {\n    iVar6 = FUN_001f0c10(puVar9,0x28,0);\n    iVar7 = FUN_001f0c10(puVar9,0x29,0);\n    if ((iVar6 != -1) && (iVar7 != -1)) {\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */\n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "size_t local_30;" primitive_type identifier ;) (declaration "undefined4 local_2c [7];" type_identifier (array_declarator "local_2c [7]" identifier [ number_literal ]) ;) (expression_statement "*param_1 = &DAT_0038897c;" (assignment_expression "*param_1 = &DAT_0038897c" (pointer_expression "*param_1" * identifier) = (pointer_expression "&DAT_0038897c" & identifier)) ;) (expression_statement "param_1[1] = param_1 + 3;" (assignment_expression "param_1[1] = param_1 + 3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "param_1 + 3" identifier + number_literal)) ;) (expression_statement "puVar9 = param_1 + 1;" (assignment_expression "puVar9 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000513a0(puVar9,*param_2,param_2[1] + *param_2,0);" (call_expression "FUN_000513a0(puVar9,*param_2,param_2[1] + *param_2,0)" identifier (argument_list "(puVar9,*param_2,param_2[1] + *param_2,0)" ( identifier , (pointer_expression "*param_2" * identifier) , (binary_expression "param_2[1] + *param_2" (subscript_expression "param_2[1]" identifier [ number_literal ]) + (pointer_expression "*param_2" * identifier)) , number_literal ))) ;) (expression_statement "param_1[7] = param_3;" (assignment_expression "param_1[7] = param_3" (subscript_expression "param_1[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[10] = 0xffffffff;" (assignment_expression "param_1[10] = 0xffffffff" (subscript_expression "param_1[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[8] = param_4;" (assignment_expression "param_1[8] = param_4" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[9] = param_5;" (assignment_expression "param_1[9] = param_5" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xc] = 0;" (assignment_expression "param_1[0xc] = 0" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xd] = 0;" (assignment_expression "param_1[0xd] = 0" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0x80 | 1;" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0x80 | 1" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0xb) & 0x80 | 1" (binary_expression "*(byte *)(param_1 + 0xb) & 0x80" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (if_statement "if (param_3 == 0) {\n    param_1[0xf] = 0;\n    param_1[0xe] = param_1 + 0x10;\n    *(undefined1 *)(param_1 + 0x10) = 0;\n    *param_1 = &DAT_003895e8;\n    param_1[0x14] = 0;\n    param_1[0x15] = 0;\n    param_1[0x16] = 0;\n    param_1[0x17] = 0;\n                    /* try { // try from 001a369d to 001a36a1 has its CatchHandler @ 001a372c */\n    FUN_001ee9c0(param_1 + 0xe,param_2);\n    return;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    param_1[0xf] = 0;\n    param_1[0xe] = param_1 + 0x10;\n    *(undefined1 *)(param_1 + 0x10) = 0;\n    *param_1 = &DAT_003895e8;\n    param_1[0x14] = 0;\n    param_1[0x15] = 0;\n    param_1[0x16] = 0;\n    param_1[0x17] = 0;\n                    /* try { // try from 001a369d to 001a36a1 has its CatchHandler @ 001a372c */\n    FUN_001ee9c0(param_1 + 0xe,param_2);\n    return;\n  }" { (expression_statement "param_1[0xf] = 0;" (assignment_expression "param_1[0xf] = 0" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xe] = param_1 + 0x10;" (assignment_expression "param_1[0xe] = param_1 + 0x10" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = (binary_expression "param_1 + 0x10" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(param_1 + 0x10) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x10) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x10)" * (cast_expression "(undefined1 *)(param_1 + 0x10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*param_1 = &DAT_003895e8;" (assignment_expression "*param_1 = &DAT_003895e8" (pointer_expression "*param_1" * identifier) = (pointer_expression "&DAT_003895e8" & identifier)) ;) (expression_statement "param_1[0x14] = 0;" (assignment_expression "param_1[0x14] = 0" (subscript_expression "param_1[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x15] = 0;" (assignment_expression "param_1[0x15] = 0" (subscript_expression "param_1[0x15]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x16] = 0;" (assignment_expression "param_1[0x16] = 0" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x17] = 0;" (assignment_expression "param_1[0x17] = 0" (subscript_expression "param_1[0x17]" identifier [ number_literal ]) = number_literal) ;) comment (expression_statement "FUN_001ee9c0(param_1 + 0xe,param_2);" (call_expression "FUN_001ee9c0(param_1 + 0xe,param_2)" identifier (argument_list "(param_1 + 0xe,param_2)" ( (binary_expression "param_1 + 0xe" identifier + number_literal) , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "*(int *)(param_3 + 0x3c) = *(int *)(param_3 + 0x3c) + 1;" (assignment_expression "*(int *)(param_3 + 0x3c) = *(int *)(param_3 + 0x3c) + 1" (pointer_expression "*(int *)(param_3 + 0x3c)" * (cast_expression "(int *)(param_3 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3c)" ( (binary_expression "param_3 + 0x3c" identifier + number_literal) )))) = (binary_expression "*(int *)(param_3 + 0x3c) + 1" (pointer_expression "*(int *)(param_3 + 0x3c)" * (cast_expression "(int *)(param_3 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3c)" ( (binary_expression "param_3 + 0x3c" identifier + number_literal) )))) + number_literal)) ;) comment (expression_statement "uVar4 = FUN_00067b80(param_3);" (assignment_expression "uVar4 = FUN_00067b80(param_3)" identifier = (call_expression "FUN_00067b80(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5);" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5)" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5)" (binary_expression "*(byte *)(param_1 + 0xb) & 0xdf" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) | (call_expression "(byte)((uVar4 & 1) << 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar4 & 1) << 5)" ( (binary_expression "(uVar4 & 1) << 5" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) << number_literal) ))))) ;) (expression_statement "pbVar5 = (byte *)FUN_00067b60(param_3);" (assignment_expression "pbVar5 = (byte *)FUN_00067b60(param_3)" identifier = (cast_expression "(byte *)FUN_00067b60(param_3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00067b60(param_3)" identifier (argument_list "(param_3)" ( identifier ))))) ;) (expression_statement "bVar1 = *pbVar5;" (assignment_expression "bVar1 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) (expression_statement "param_1[0xf] = 0;" (assignment_expression "param_1[0xf] = 0" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xe] = param_1 + 0x10;" (assignment_expression "param_1[0xe] = param_1 + 0x10" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = (binary_expression "param_1 + 0x10" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(param_1 + 0x10) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x10) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x10)" * (cast_expression "(undefined1 *)(param_1 + 0x10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0x14] = 0;" (assignment_expression "param_1[0x14] = 0" (subscript_expression "param_1[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x15] = 0;" (assignment_expression "param_1[0x15] = 0" (subscript_expression "param_1[0x15]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x16] = 0;" (assignment_expression "param_1[0x16] = 0" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x17] = 0;" (assignment_expression "param_1[0x17] = 0" (subscript_expression "param_1[0x17]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6);" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6)" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6)" (binary_expression "*(byte *)(param_1 + 0xb) & 0xbf" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) | (call_expression "(byte)((bVar1 & 1) << 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((bVar1 & 1) << 6)" ( (binary_expression "(bVar1 & 1) << 6" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) << number_literal) ))))) ;) (expression_statement "*param_1 = &DAT_003895e8;" (assignment_expression "*param_1 = &DAT_003895e8" (pointer_expression "*param_1" * identifier) = (pointer_expression "&DAT_003895e8" & identifier)) ;) comment (expression_statement "FUN_001ee9c0(param_1 + 0xe,param_3 + 4);" (call_expression "FUN_001ee9c0(param_1 + 0xe,param_3 + 4)" identifier (argument_list "(param_1 + 0xe,param_3 + 4)" ( (binary_expression "param_1 + 0xe" identifier + number_literal) , (binary_expression "param_3 + 4" identifier + number_literal) ))) ;) (if_statement "if (param_1[9] != 0 || param_1[8] != 0) {\n    iVar6 = FUN_001f0c10(puVar9,0x28,0);\n    iVar7 = FUN_001f0c10(puVar9,0x29,0);\n    if ((iVar6 != -1) && (iVar7 != -1)) {\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */\n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }\n  }" if (parenthesized_expression "(param_1[9] != 0 || param_1[8] != 0)" ( (binary_expression "param_1[9] != 0 || param_1[8] != 0" (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) || (binary_expression "param_1[8] != 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) != number_literal)) )) (compound_statement "{\n    iVar6 = FUN_001f0c10(puVar9,0x28,0);\n    iVar7 = FUN_001f0c10(puVar9,0x29,0);\n    if ((iVar6 != -1) && (iVar7 != -1)) {\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */\n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }\n  }" { (expression_statement "iVar6 = FUN_001f0c10(puVar9,0x28,0);" (assignment_expression "iVar6 = FUN_001f0c10(puVar9,0x28,0)" identifier = (call_expression "FUN_001f0c10(puVar9,0x28,0)" identifier (argument_list "(puVar9,0x28,0)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "iVar7 = FUN_001f0c10(puVar9,0x29,0);" (assignment_expression "iVar7 = FUN_001f0c10(puVar9,0x29,0)" identifier = (call_expression "FUN_001f0c10(puVar9,0x29,0)" identifier (argument_list "(puVar9,0x29,0)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if ((iVar6 != -1) && (iVar7 != -1)) {\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */\n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }" if (parenthesized_expression "((iVar6 != -1) && (iVar7 != -1))" ( (binary_expression "(iVar6 != -1) && (iVar7 != -1)" (parenthesized_expression "(iVar6 != -1)" ( (binary_expression "iVar6 != -1" identifier != number_literal) )) && (parenthesized_expression "(iVar7 != -1)" ( (binary_expression "iVar7 != -1" identifier != number_literal) ))) )) (compound_statement "{\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */\n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }" { (expression_statement "uVar2 = param_1[2];" (assignment_expression "uVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = iVar6 + 1;" (assignment_expression "uVar4 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (uVar2 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */\n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }" if (parenthesized_expression "(uVar2 < uVar4)" ( (binary_expression "uVar2 < uVar4" identifier < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */\n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }" { comment comment (expression_statement "FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);" (call_expression "FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2)" identifier (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2)" ( (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" " string_content ") , (string_literal ""basic_string::substr"" " string_content ") , identifier , identifier ))) ;) })) (expression_statement "uVar8 = iVar7 - uVar4;" (assignment_expression "uVar8 = iVar7 - uVar4" identifier = (binary_expression "iVar7 - uVar4" identifier - identifier)) ;) (if_statement "if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }" if (parenthesized_expression "(uVar2 - uVar4 <= iVar7 - uVar4)" ( (binary_expression "uVar2 - uVar4 <= iVar7 - uVar4" (binary_expression "uVar2 - uVar4" identifier - identifier) <= (binary_expression "iVar7 - uVar4" identifier - identifier)) )) (compound_statement "{\n        uVar8 = uVar2 - uVar4;\n      }" { (expression_statement "uVar8 = uVar2 - uVar4;" (assignment_expression "uVar8 = uVar2 - uVar4" identifier = (binary_expression "uVar2 - uVar4" identifier - identifier)) ;) })) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) (expression_statement "FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);" (call_expression "FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0)" identifier (argument_list "(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0)" ( (pointer_expression "&local_34" & identifier) , (binary_expression "param_1[1] + uVar4" (subscript_expression "param_1[1]" identifier [ number_literal ]) + identifier) , (binary_expression "uVar8 + param_1[1] + uVar4" (binary_expression "uVar8 + param_1[1]" identifier + (subscript_expression "param_1[1]" identifier [ number_literal ])) + identifier) , number_literal ))) ;) (expression_statement "puVar9 = (undefined4 *)param_1[0xe];" (assignment_expression "puVar9 = (undefined4 *)param_1[0xe]" identifier = (cast_expression "(undefined4 *)param_1[0xe]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ]))) ;) (if_statement "if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }" if (parenthesized_expression "(local_34 == local_2c)" ( (binary_expression "local_34 == local_2c" identifier == identifier) )) (compound_statement "{\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }" { (if_statement "if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (compound_statement "{\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }" { (if_statement "if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }" if (parenthesized_expression "(local_30 == 1)" ( (binary_expression "local_30 == 1" identifier == number_literal) )) (compound_statement "{\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }" { (expression_statement "*(undefined1 *)puVar9 = (undefined1)local_2c[0];" (assignment_expression "*(undefined1 *)puVar9 = (undefined1)local_2c[0]" (pointer_expression "*(undefined1 *)puVar9" * (cast_expression "(undefined1 *)puVar9" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(undefined1)local_2c[0]" ( (type_descriptor "undefined1" type_identifier) ) (subscript_expression "local_2c[0]" identifier [ number_literal ]))) ;) (expression_statement "puVar9 = (undefined4 *)param_1[0xe];" (assignment_expression "puVar9 = (undefined4 *)param_1[0xe]" identifier = (cast_expression "(undefined4 *)param_1[0xe]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }" else (compound_statement "{\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }" { (expression_statement "memcpy(puVar9,local_2c,local_30);" (call_expression "memcpy(puVar9,local_2c,local_30)" identifier (argument_list "(puVar9,local_2c,local_30)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar9 = (undefined4 *)param_1[0xe];" (assignment_expression "puVar9 = (undefined4 *)param_1[0xe]" identifier = (cast_expression "(undefined4 *)param_1[0xe]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ]))) ;) }))) })) (expression_statement "param_1[0xf] = local_30;" (assignment_expression "param_1[0xf] = local_30" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((int)puVar9 + local_30) = 0;" (assignment_expression "*(undefined1 *)((int)puVar9 + local_30) = 0" (pointer_expression "*(undefined1 *)((int)puVar9 + local_30)" * (cast_expression "(undefined1 *)((int)puVar9 + local_30)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + local_30)" ( (binary_expression "(int)puVar9 + local_30" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) }) (else_clause "else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }" else (if_statement "if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }" if (parenthesized_expression "(puVar9 == param_1 + 0x10)" ( (binary_expression "puVar9 == param_1 + 0x10" identifier == (binary_expression "param_1 + 0x10" identifier + number_literal)) )) (compound_statement "{\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }" { (expression_statement "param_1[0xe] = local_34;" (assignment_expression "param_1[0xe] = local_34" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xf] = local_30;" (assignment_expression "param_1[0xf] = local_30" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0x10] = local_2c[0];" (assignment_expression "param_1[0x10] = local_2c[0]" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = (subscript_expression "local_2c[0]" identifier [ number_literal ])) ;) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) }) (else_clause "else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }" else (compound_statement "{\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }" { (expression_statement "param_1[0xf] = local_30;" (assignment_expression "param_1[0xf] = local_30" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar3 = param_1[0x10];" (assignment_expression "uVar3 = param_1[0x10]" identifier = (subscript_expression "param_1[0x10]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xe] = local_34;" (assignment_expression "param_1[0xe] = local_34" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0x10] = local_2c[0];" (assignment_expression "param_1[0x10] = local_2c[0]" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = (subscript_expression "local_2c[0]" identifier [ number_literal ])) ;) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) (if_statement "if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }" if (parenthesized_expression "(puVar9 != (undefined4 *)0x0)" ( (binary_expression "puVar9 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }" { (expression_statement "local_34 = puVar9;" (assignment_expression "local_34 = puVar9" identifier = identifier) ;) (expression_statement "local_2c[0] = uVar3;" (assignment_expression "local_2c[0] = uVar3" (subscript_expression "local_2c[0]" identifier [ number_literal ]) = identifier) ;) })) }))))) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "*(undefined1 *)local_34 = 0;" (assignment_expression "*(undefined1 *)local_34 = 0" (pointer_expression "*(undefined1 *)local_34" * (cast_expression "(undefined1 *)local_34" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n        FUN_001e6db0(local_34);\n      }" { (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) })) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */\n/* DWARF original prototype: void Dynobj(Dynobj * this, string * name, Input_file * input_file,\n   off_t offset) */\n\nvoid __thiscall gold::Dynobj::Dynobj(Dynobj *this,string *name,Input_file *input_file,off_t offset)\n\n{\n  string *this_00;\n  int *piVar1;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar2;\n  uint uVar3;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *__src;\n  byte bVar4;\n  uint uVar5;\n  size_type sVar6;\n  bool bVar7;\n  Position_dependent_options *pPVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *__dest;\n  pointer pcVar12;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_34;\n  \n  (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_0038897c;\n  (this->super_Object).name_._M_dataplus._M_p = (pointer)&(this->super_Object).name_.field_2;\n  pcVar12 = (name->_M_dataplus)._M_p;\n  this_00 = &(this->super_Object).name_;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(this_00,pcVar12,pcVar12 + name->_M_string_length,0);\n  (this->super_Object).input_file_ = input_file;\n  (this->super_Object).shnum_ = 0xffffffff;\n  (this->super_Object).offset_ = offset;\n  (this->super_Object).xindex_ = (Xindex *)0x0;\n  (this->super_Object).compressed_sections_ = (Compressed_section_map *)0x0;\n  (this->super_Object).field_0x2c = (this->super_Object).field_0x2c & 0x80 | 1;\n  if (input_file == (Input_file *)0x0) {\n    (this->soname_)._M_string_length = 0;\n    (this->soname_)._M_dataplus._M_p = (pointer)&(this->soname_).field_2;\n    (this->soname_).field_2._M_local_buf[0] = '\0';\n    (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003895e8;\n    (this->needed_).\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_start = (pointer)0x0;\n    (this->needed_).\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 = (pointer)0x0;\n    (this->needed_).\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 = (pointer)0x0;\n    this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;\n                    /* try { // try from 001a369d to 001a36a1 has its CatchHandler @ 001a372c */\n    std::string::_M_assign((string *)&this->soname_,(string *)name);\n    return;\n  }\n  piVar1 = &(input_file->file_).object_count_;\n  *piVar1 = *piVar1 + 1;\n                    /* try { // try from 001a34de to 001a3501 has its CatchHandler @ 001a3725 */\n  bVar7 = Input_file::is_in_system_directory(input_file);\n  (this->super_Object).field_0x2c = (this->super_Object).field_0x2c & 0xdf | bVar7 << 5;\n  pPVar8 = Input_file::options(input_file);\n  bVar7 = pPVar8->as_needed_;\n  paVar2 = &(this->soname_).field_2;\n  (this->soname_)._M_string_length = 0;\n  (this->soname_)._M_dataplus._M_p = (pointer)paVar2;\n  (this->soname_).field_2._M_local_buf[0] = '\0';\n  bVar4 = (this->super_Object).field_0x2c;\n  (this->needed_).\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_start = (pointer)0x0;\n  (this->needed_).\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 = (pointer)0x0;\n  (this->needed_).\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 = (pointer)0x0;\n  this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;\n  (this->super_Object).field_0x2c = bVar4 & 0xbf | (byte)((bVar7 & 1) << 6);\n  (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003895e8;\n                    /* try { // try from 001a3564 to 001a35e8 has its CatchHandler @ 001a3733 */\n  std::string::_M_assign((string *)&this->soname_,(string *)&input_file->found_name_);\n  if (*(int *)((int)&(this->super_Object).offset_ + 4) != 0 ||\n      (int)(this->super_Object).offset_ != 0) {\n    iVar9 = std::string::find((string *)this_00,'(',0);\n    iVar10 = std::string::find((string *)this_00,')',0);\n    if ((iVar9 != -1) && (iVar10 != -1)) {\n      uVar5 = (this->super_Object).name_._M_string_length;\n      uVar3 = iVar9 + 1;\n      if (uVar5 < uVar3) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */\n        std::__throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                   uVar3,uVar5);\n      }\n      __src = &local_34.field_2;\n      pcVar12 = (this->super_Object).name_._M_dataplus._M_p + uVar3;\n      uVar11 = iVar10 - uVar3;\n      if (uVar5 - uVar3 <= iVar10 - uVar3) {\n        uVar11 = uVar5 - uVar3;\n      }\n      local_34._M_dataplus._M_p = (pointer)__src;\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char_const*>(&local_34,pcVar12,pcVar12 + uVar11,0);\n      __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(this->soname_)._M_dataplus._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p == __src) {\n        if (local_34._M_string_length != 0) {\n          if (local_34._M_string_length == 1) {\n            __dest->_M_local_buf[0] = local_34.field_2._M_local_buf[0];\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n          else {\n            memcpy(__dest,__src,local_34._M_string_length);\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n        }\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        __dest->_M_local_buf[local_34._M_string_length] = '\0';\n      }\n      else if (__dest == paVar2) {\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n      }\n      else {\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        sVar6 = (this->soname_).field_2._M_allocated_capacity;\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n        if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                       *)0x0) {\n          local_34._M_dataplus._M_p = (pointer)__dest;\n          local_34.field_2._M_allocated_capacity = sVar6;\n        }\n      }\n      local_34._M_string_length = 0;\n      *local_34._M_dataplus._M_p = '\0';\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p != &local_34.field_2) {\n        operator_delete(local_34._M_dataplus._M_p);\n      }\n    }\n  }\n  return;\n}\n\n" comment comment (function_definition "void __thiscall gold::Dynobj::Dynobj(Dynobj *this,string *name,Input_file *input_file,off_t offset)\n\n{\n  string *this_00;\n  int *piVar1;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar2;\n  uint uVar3;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *__src;\n  byte bVar4;\n  uint uVar5;\n  size_type sVar6;\n  bool bVar7;\n  Position_dependent_options *pPVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *__dest;\n  pointer pcVar12;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_34;\n  \n  (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_0038897c;\n  (this->super_Object).name_._M_dataplus._M_p = (pointer)&(this->super_Object).name_.field_2;\n  pcVar12 = (name->_M_dataplus)._M_p;\n  this_00 = &(this->super_Object).name_;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(this_00,pcVar12,pcVar12 + name->_M_string_length,0);\n  (this->super_Object).input_file_ = input_file;\n  (this->super_Object).shnum_ = 0xffffffff;\n  (this->super_Object).offset_ = offset;\n  (this->super_Object).xindex_ = (Xindex *)0x0;\n  (this->super_Object).compressed_sections_ = (Compressed_section_map *)0x0;\n  (this->super_Object).field_0x2c = (this->super_Object).field_0x2c & 0x80 | 1;\n  if (input_file == (Input_file *)0x0) {\n    (this->soname_)._M_string_length = 0;\n    (this->soname_)._M_dataplus._M_p = (pointer)&(this->soname_).field_2;\n    (this->soname_).field_2._M_local_buf[0] = '\0';\n    (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003895e8;\n    (this->needed_).\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_start = (pointer)0x0;\n    (this->needed_).\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 = (pointer)0x0;\n    (this->needed_).\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 = (pointer)0x0;\n    this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;\n                    /* try { // try from 001a369d to 001a36a1 has its CatchHandler @ 001a372c */\n    std::string::_M_assign((string *)&this->soname_,(string *)name);\n    return;\n  }\n  piVar1 = &(input_file->file_).object_count_;\n  *piVar1 = *piVar1 + 1;\n                    /* try { // try from 001a34de to 001a3501 has its CatchHandler @ 001a3725 */\n  bVar7 = Input_file::is_in_system_directory(input_file);\n  (this->super_Object).field_0x2c = (this->super_Object).field_0x2c & 0xdf | bVar7 << 5;\n  pPVar8 = Input_file::options(input_file);\n  bVar7 = pPVar8->as_needed_;\n  paVar2 = &(this->soname_).field_2;\n  (this->soname_)._M_string_length = 0;\n  (this->soname_)._M_dataplus._M_p = (pointer)paVar2;\n  (this->soname_).field_2._M_local_buf[0] = '\0';\n  bVar4 = (this->super_Object).field_0x2c;\n  (this->needed_).\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_start = (pointer)0x0;\n  (this->needed_).\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 = (pointer)0x0;\n  (this->needed_).\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 = (pointer)0x0;\n  this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;\n  (this->super_Object).field_0x2c = bVar4 & 0xbf | (byte)((bVar7 & 1) << 6);\n  (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003895e8;\n                    /* try { // try from 001a3564 to 001a35e8 has its CatchHandler @ 001a3733 */\n  std::string::_M_assign((string *)&this->soname_,(string *)&input_file->found_name_);\n  if (*(int *)((int)&(this->super_Object).offset_ + 4) != 0 ||\n      (int)(this->super_Object).offset_ != 0) {\n    iVar9 = std::string::find((string *)this_00,'(',0);\n    iVar10 = std::string::find((string *)this_00,')',0);\n    if ((iVar9 != -1) && (iVar10 != -1)) {\n      uVar5 = (this->super_Object).name_._M_string_length;\n      uVar3 = iVar9 + 1;\n      if (uVar5 < uVar3) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */\n        std::__throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                   uVar3,uVar5);\n      }\n      __src = &local_34.field_2;\n      pcVar12 = (this->super_Object).name_._M_dataplus._M_p + uVar3;\n      uVar11 = iVar10 - uVar3;\n      if (uVar5 - uVar3 <= iVar10 - uVar3) {\n        uVar11 = uVar5 - uVar3;\n      }\n      local_34._M_dataplus._M_p = (pointer)__src;\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char_const*>(&local_34,pcVar12,pcVar12 + uVar11,0);\n      __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(this->soname_)._M_dataplus._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p == __src) {\n        if (local_34._M_string_length != 0) {\n          if (local_34._M_string_length == 1) {\n            __dest->_M_local_buf[0] = local_34.field_2._M_local_buf[0];\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n          else {\n            memcpy(__dest,__src,local_34._M_string_length);\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n        }\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        __dest->_M_local_buf[local_34._M_string_length] = '\0';\n      }\n      else if (__dest == paVar2) {\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n      }\n      else {\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        sVar6 = (this->soname_).field_2._M_allocated_capacity;\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n        if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                       *)0x0) {\n          local_34._M_dataplus._M_p = (pointer)__dest;\n          local_34.field_2._M_allocated_capacity = sVar6;\n        }\n      }\n      local_34._M_string_length = 0;\n      *local_34._M_dataplus._M_p = '\0';\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p != &local_34.field_2) {\n        operator_delete(local_34._M_dataplus._M_p);\n      }\n    }\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Dynobj::" identifier : : identifier : :) (function_declarator "Dynobj(Dynobj *this,string *name,Input_file *input_file,off_t offset)" identifier (parameter_list "(Dynobj *this,string *name,Input_file *input_file,off_t offset)" ( (parameter_declaration "Dynobj *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "string *name" type_identifier (pointer_declarator "*name" * identifier)) , (parameter_declaration "Input_file *input_file" type_identifier (pointer_declarator "*input_file" * identifier)) , (parameter_declaration "off_t offset" type_identifier identifier) ))) (compound_statement "{\n  string *this_00;\n  int *piVar1;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar2;\n  uint uVar3;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *__src;\n  byte bVar4;\n  uint uVar5;\n  size_type sVar6;\n  bool bVar7;\n  Position_dependent_options *pPVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *__dest;\n  pointer pcVar12;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_34;\n  \n  (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_0038897c;\n  (this->super_Object).name_._M_dataplus._M_p = (pointer)&(this->super_Object).name_.field_2;\n  pcVar12 = (name->_M_dataplus)._M_p;\n  this_00 = &(this->super_Object).name_;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(this_00,pcVar12,pcVar12 + name->_M_string_length,0);\n  (this->super_Object).input_file_ = input_file;\n  (this->super_Object).shnum_ = 0xffffffff;\n  (this->super_Object).offset_ = offset;\n  (this->super_Object).xindex_ = (Xindex *)0x0;\n  (this->super_Object).compressed_sections_ = (Compressed_section_map *)0x0;\n  (this->super_Object).field_0x2c = (this->super_Object).field_0x2c & 0x80 | 1;\n  if (input_file == (Input_file *)0x0) {\n    (this->soname_)._M_string_length = 0;\n    (this->soname_)._M_dataplus._M_p = (pointer)&(this->soname_).field_2;\n    (this->soname_).field_2._M_local_buf[0] = '\0';\n    (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003895e8;\n    (this->needed_).\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_start = (pointer)0x0;\n    (this->needed_).\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 = (pointer)0x0;\n    (this->needed_).\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 = (pointer)0x0;\n    this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;\n                    /* try { // try from 001a369d to 001a36a1 has its CatchHandler @ 001a372c */\n    std::string::_M_assign((string *)&this->soname_,(string *)name);\n    return;\n  }\n  piVar1 = &(input_file->file_).object_count_;\n  *piVar1 = *piVar1 + 1;\n                    /* try { // try from 001a34de to 001a3501 has its CatchHandler @ 001a3725 */\n  bVar7 = Input_file::is_in_system_directory(input_file);\n  (this->super_Object).field_0x2c = (this->super_Object).field_0x2c & 0xdf | bVar7 << 5;\n  pPVar8 = Input_file::options(input_file);\n  bVar7 = pPVar8->as_needed_;\n  paVar2 = &(this->soname_).field_2;\n  (this->soname_)._M_string_length = 0;\n  (this->soname_)._M_dataplus._M_p = (pointer)paVar2;\n  (this->soname_).field_2._M_local_buf[0] = '\0';\n  bVar4 = (this->super_Object).field_0x2c;\n  (this->needed_).\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_start = (pointer)0x0;\n  (this->needed_).\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 = (pointer)0x0;\n  (this->needed_).\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 = (pointer)0x0;\n  this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;\n  (this->super_Object).field_0x2c = bVar4 & 0xbf | (byte)((bVar7 & 1) << 6);\n  (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003895e8;\n                    /* try { // try from 001a3564 to 001a35e8 has its CatchHandler @ 001a3733 */\n  std::string::_M_assign((string *)&this->soname_,(string *)&input_file->found_name_);\n  if (*(int *)((int)&(this->super_Object).offset_ + 4) != 0 ||\n      (int)(this->super_Object).offset_ != 0) {\n    iVar9 = std::string::find((string *)this_00,'(',0);\n    iVar10 = std::string::find((string *)this_00,')',0);\n    if ((iVar9 != -1) && (iVar10 != -1)) {\n      uVar5 = (this->super_Object).name_._M_string_length;\n      uVar3 = iVar9 + 1;\n      if (uVar5 < uVar3) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */\n        std::__throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                   uVar3,uVar5);\n      }\n      __src = &local_34.field_2;\n      pcVar12 = (this->super_Object).name_._M_dataplus._M_p + uVar3;\n      uVar11 = iVar10 - uVar3;\n      if (uVar5 - uVar3 <= iVar10 - uVar3) {\n        uVar11 = uVar5 - uVar3;\n      }\n      local_34._M_dataplus._M_p = (pointer)__src;\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char_const*>(&local_34,pcVar12,pcVar12 + uVar11,0);\n      __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(this->soname_)._M_dataplus._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p == __src) {\n        if (local_34._M_string_length != 0) {\n          if (local_34._M_string_length == 1) {\n            __dest->_M_local_buf[0] = local_34.field_2._M_local_buf[0];\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n          else {\n            memcpy(__dest,__src,local_34._M_string_length);\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n        }\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        __dest->_M_local_buf[local_34._M_string_length] = '\0';\n      }\n      else if (__dest == paVar2) {\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n      }\n      else {\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        sVar6 = (this->soname_).field_2._M_allocated_capacity;\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n        if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                       *)0x0) {\n          local_34._M_dataplus._M_p = (pointer)__dest;\n          local_34.field_2._M_allocated_capacity = sVar6;\n        }\n      }\n      local_34._M_string_length = 0;\n      *local_34._M_dataplus._M_p = '\0';\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p != &local_34.field_2) {\n        operator_delete(local_34._M_dataplus._M_p);\n      }\n    }\n  }\n  return;\n}" { (declaration "string *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (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) : :) (expression_statement "allocator<char>_>_9\n  *paVar2;" (binary_expression "allocator<char>_>_9\n  *paVar2" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar2" identifier * identifier)) ;) (declaration "uint uVar3;" type_identifier identifier ;) (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) : :) (expression_statement "allocator<char>_>_9\n  *__src;" (binary_expression "allocator<char>_>_9\n  *__src" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *__src" identifier * identifier)) ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "size_type sVar6;" type_identifier identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "Position_dependent_options *pPVar8;" type_identifier (pointer_declarator "*pPVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (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) : :) (expression_statement "allocator<char>_>_9\n  *__dest;" (binary_expression "allocator<char>_>_9\n  *__dest" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *__dest" identifier * identifier)) ;) (declaration "pointer pcVar12;" type_identifier identifier ;) (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (expression_statement "allocator<char>_> local_34;" (binary_expression "allocator<char>_> local_34" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) ;) (expression_statement "(this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_0038897c;" (assignment_expression "(this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_0038897c" (field_expression "(this->super_Object)._vptr_Object" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(_func_int_varargs **)&DAT_0038897c" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_0038897c" & identifier))) ;) (expression_statement "(this->super_Object).name_._M_dataplus._M_p = (pointer)&(this->super_Object).name_.field_2;" (assignment_expression "(this->super_Object).name_._M_dataplus._M_p = (pointer)&(this->super_Object).name_.field_2" (field_expression "(this->super_Object).name_._M_dataplus._M_p" (field_expression "(this->super_Object).name_._M_dataplus" (field_expression "(this->super_Object).name_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(this->super_Object).name_.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(this->super_Object).name_.field_2" (field_expression "(this->super_Object).name_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "pcVar12 = (name->_M_dataplus)._M_p;" (assignment_expression "pcVar12 = (name->_M_dataplus)._M_p" identifier = (field_expression "(name->_M_dataplus)._M_p" (parenthesized_expression "(name->_M_dataplus)" ( (field_expression "name->_M_dataplus" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "this_00 = &(this->super_Object).name_;" (assignment_expression "this_00 = &(this->super_Object).name_" identifier = (pointer_expression "&(this->super_Object).name_" & (field_expression "(this->super_Object).name_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier))) ;) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(this_00,pcVar12,pcVar12 + name->_M_string_length,0);" 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*>(this_00,pcVar12,pcVar12 + name->_M_string_length,0);" (binary_expression "_M_construct<char*>(this_00,pcVar12,pcVar12 + name->_M_string_length,0)" (binary_expression "_M_construct<char" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(this_00,pcVar12,pcVar12 + name->_M_string_length,0)" ( (comma_expression "this_00,pcVar12,pcVar12 + name->_M_string_length,0" identifier , (comma_expression "pcVar12,pcVar12 + name->_M_string_length,0" identifier , (comma_expression "pcVar12 + name->_M_string_length,0" (binary_expression "pcVar12 + name->_M_string_length" identifier + (field_expression "name->_M_string_length" identifier -> field_identifier)) , number_literal))) ))) ;)) (expression_statement "(this->super_Object).input_file_ = input_file;" (assignment_expression "(this->super_Object).input_file_ = input_file" (field_expression "(this->super_Object).input_file_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(this->super_Object).shnum_ = 0xffffffff;" (assignment_expression "(this->super_Object).shnum_ = 0xffffffff" (field_expression "(this->super_Object).shnum_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(this->super_Object).offset_ = offset;" (assignment_expression "(this->super_Object).offset_ = offset" (field_expression "(this->super_Object).offset_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(this->super_Object).xindex_ = (Xindex *)0x0;" (assignment_expression "(this->super_Object).xindex_ = (Xindex *)0x0" (field_expression "(this->super_Object).xindex_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(Xindex *)0x0" ( (type_descriptor "Xindex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(this->super_Object).compressed_sections_ = (Compressed_section_map *)0x0;" (assignment_expression "(this->super_Object).compressed_sections_ = (Compressed_section_map *)0x0" (field_expression "(this->super_Object).compressed_sections_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(Compressed_section_map *)0x0" ( (type_descriptor "Compressed_section_map *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(this->super_Object).field_0x2c = (this->super_Object).field_0x2c & 0x80 | 1;" (assignment_expression "(this->super_Object).field_0x2c = (this->super_Object).field_0x2c & 0x80 | 1" (field_expression "(this->super_Object).field_0x2c" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(this->super_Object).field_0x2c & 0x80 | 1" (binary_expression "(this->super_Object).field_0x2c & 0x80" (field_expression "(this->super_Object).field_0x2c" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) & number_literal) | number_literal)) ;) (if_statement "if (input_file == (Input_file *)0x0) {\n    (this->soname_)._M_string_length = 0;\n    (this->soname_)._M_dataplus._M_p = (pointer)&(this->soname_).field_2;\n    (this->soname_).field_2._M_local_buf[0] = '\0';\n    (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003895e8;\n    (this->needed_).\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_start = (pointer)0x0;\n    (this->needed_).\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 = (pointer)0x0;\n    (this->needed_).\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 = (pointer)0x0;\n    this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;\n                    /* try { // try from 001a369d to 001a36a1 has its CatchHandler @ 001a372c */\n    std::string::_M_assign((string *)&this->soname_,(string *)name);\n    return;\n  }" if (parenthesized_expression "(input_file == (Input_file *)0x0)" ( (binary_expression "input_file == (Input_file *)0x0" identifier == (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (this->soname_)._M_string_length = 0;\n    (this->soname_)._M_dataplus._M_p = (pointer)&(this->soname_).field_2;\n    (this->soname_).field_2._M_local_buf[0] = '\0';\n    (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003895e8;\n    (this->needed_).\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_start = (pointer)0x0;\n    (this->needed_).\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 = (pointer)0x0;\n    (this->needed_).\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 = (pointer)0x0;\n    this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;\n                    /* try { // try from 001a369d to 001a36a1 has its CatchHandler @ 001a372c */\n    std::string::_M_assign((string *)&this->soname_,(string *)name);\n    return;\n  }" { (expression_statement "(this->soname_)._M_string_length = 0;" (assignment_expression "(this->soname_)._M_string_length = 0" (field_expression "(this->soname_)._M_string_length" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(this->soname_)._M_dataplus._M_p = (pointer)&(this->soname_).field_2;" (assignment_expression "(this->soname_)._M_dataplus._M_p = (pointer)&(this->soname_).field_2" (field_expression "(this->soname_)._M_dataplus._M_p" (field_expression "(this->soname_)._M_dataplus" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(this->soname_).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(this->soname_).field_2" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "(this->soname_).field_2._M_local_buf[0] = '\0';" (assignment_expression "(this->soname_).field_2._M_local_buf[0] = '\0'" (subscript_expression "(this->soname_).field_2._M_local_buf[0]" (field_expression "(this->soname_).field_2._M_local_buf" (field_expression "(this->soname_).field_2" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "(this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003895e8;" (assignment_expression "(this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003895e8" (field_expression "(this->super_Object)._vptr_Object" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(_func_int_varargs **)&DAT_003895e8" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_003895e8" & identifier))) ;) (ERROR "(this->needed_).\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::" (binary_expression "(this->needed_).\n    super__Vector_base<std" (field_expression "(this->needed_).\n    super__Vector_base" (parenthesized_expression "(this->needed_)" ( (field_expression "this->needed_" 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_start = (pointer)0x0;" (assignment_expression "allocator<char>_>_>_>\n    ._M_impl._M_start = (pointer)0x0" (field_expression "allocator<char>_>_>_>\n    ._M_impl._M_start" (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) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (ERROR "(this->needed_).\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::" (binary_expression "(this->needed_).\n    super__Vector_base<std" (field_expression "(this->needed_).\n    super__Vector_base" (parenthesized_expression "(this->needed_)" ( (field_expression "this->needed_" 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 = (pointer)0x0;" (assignment_expression "allocator<char>_>_>_>\n    ._M_impl._M_finish = (pointer)0x0" (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) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (ERROR "(this->needed_).\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::" (binary_expression "(this->needed_).\n    super__Vector_base<std" (field_expression "(this->needed_).\n    super__Vector_base" (parenthesized_expression "(this->needed_)" ( (field_expression "this->needed_" 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_end_of_storage = (pointer)0x0;" (assignment_expression "allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)0x0" (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) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;" (assignment_expression "this->unknown_needed_ = UNKNOWN_NEEDED_UNSET" (field_expression "this->unknown_needed_" identifier -> field_identifier) = identifier) ;) comment (labeled_statement "std::string::_M_assign((string *)&this->soname_,(string *)name);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_assign((string *)&this->soname_,(string *)name);" statement_identifier : (ERROR ":" :) (expression_statement "_M_assign((string *)&this->soname_,(string *)name);" (call_expression "_M_assign((string *)&this->soname_,(string *)name)" identifier (argument_list "((string *)&this->soname_,(string *)name)" ( (cast_expression "(string *)&this->soname_" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->soname_" & (field_expression "this->soname_" identifier -> field_identifier))) , (cast_expression "(string *)name" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (return_statement "return;" return ;) })) (expression_statement "piVar1 = &(input_file->file_).object_count_;" (assignment_expression "piVar1 = &(input_file->file_).object_count_" identifier = (pointer_expression "&(input_file->file_).object_count_" & (field_expression "(input_file->file_).object_count_" (parenthesized_expression "(input_file->file_)" ( (field_expression "input_file->file_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*piVar1 = *piVar1 + 1;" (assignment_expression "*piVar1 = *piVar1 + 1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) comment (ERROR "bVar7 = Input_file::" (assignment_expression "bVar7 = Input_file" identifier = identifier) : :) (expression_statement "is_in_system_directory(input_file);" (call_expression "is_in_system_directory(input_file)" identifier (argument_list "(input_file)" ( identifier ))) ;) (expression_statement "(this->super_Object).field_0x2c = (this->super_Object).field_0x2c & 0xdf | bVar7 << 5;" (assignment_expression "(this->super_Object).field_0x2c = (this->super_Object).field_0x2c & 0xdf | bVar7 << 5" (field_expression "(this->super_Object).field_0x2c" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(this->super_Object).field_0x2c & 0xdf | bVar7 << 5" (binary_expression "(this->super_Object).field_0x2c & 0xdf" (field_expression "(this->super_Object).field_0x2c" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) & number_literal) | (binary_expression "bVar7 << 5" identifier << number_literal))) ;) (ERROR "pPVar8 = Input_file::" (assignment_expression "pPVar8 = Input_file" identifier = identifier) : :) (expression_statement "options(input_file);" (call_expression "options(input_file)" identifier (argument_list "(input_file)" ( identifier ))) ;) (expression_statement "bVar7 = pPVar8->as_needed_;" (assignment_expression "bVar7 = pPVar8->as_needed_" identifier = (field_expression "pPVar8->as_needed_" identifier -> field_identifier)) ;) (expression_statement "paVar2 = &(this->soname_).field_2;" (assignment_expression "paVar2 = &(this->soname_).field_2" identifier = (pointer_expression "&(this->soname_).field_2" & (field_expression "(this->soname_).field_2" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "(this->soname_)._M_string_length = 0;" (assignment_expression "(this->soname_)._M_string_length = 0" (field_expression "(this->soname_)._M_string_length" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(this->soname_)._M_dataplus._M_p = (pointer)paVar2;" (assignment_expression "(this->soname_)._M_dataplus._M_p = (pointer)paVar2" (field_expression "(this->soname_)._M_dataplus._M_p" (field_expression "(this->soname_)._M_dataplus" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar2" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "(this->soname_).field_2._M_local_buf[0] = '\0';" (assignment_expression "(this->soname_).field_2._M_local_buf[0] = '\0'" (subscript_expression "(this->soname_).field_2._M_local_buf[0]" (field_expression "(this->soname_).field_2._M_local_buf" (field_expression "(this->soname_).field_2" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "bVar4 = (this->super_Object).field_0x2c;" (assignment_expression "bVar4 = (this->super_Object).field_0x2c" identifier = (field_expression "(this->super_Object).field_0x2c" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier)) ;) (ERROR "(this->needed_).\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::" (binary_expression "(this->needed_).\n  super__Vector_base<std" (field_expression "(this->needed_).\n  super__Vector_base" (parenthesized_expression "(this->needed_)" ( (field_expression "this->needed_" 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_start = (pointer)0x0;" (assignment_expression "allocator<char>_>_>_>\n  ._M_impl._M_start = (pointer)0x0" (field_expression "allocator<char>_>_>_>\n  ._M_impl._M_start" (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) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (ERROR "(this->needed_).\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::" (binary_expression "(this->needed_).\n  super__Vector_base<std" (field_expression "(this->needed_).\n  super__Vector_base" (parenthesized_expression "(this->needed_)" ( (field_expression "this->needed_" 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 = (pointer)0x0;" (assignment_expression "allocator<char>_>_>_>\n  ._M_impl._M_finish = (pointer)0x0" (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) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (ERROR "(this->needed_).\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::" (binary_expression "(this->needed_).\n  super__Vector_base<std" (field_expression "(this->needed_).\n  super__Vector_base" (parenthesized_expression "(this->needed_)" ( (field_expression "this->needed_" 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_end_of_storage = (pointer)0x0;" (assignment_expression "allocator<char>_>_>_>\n  ._M_impl._M_end_of_storage = (pointer)0x0" (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) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;" (assignment_expression "this->unknown_needed_ = UNKNOWN_NEEDED_UNSET" (field_expression "this->unknown_needed_" identifier -> field_identifier) = identifier) ;) (expression_statement "(this->super_Object).field_0x2c = bVar4 & 0xbf | (byte)((bVar7 & 1) << 6);" (assignment_expression "(this->super_Object).field_0x2c = bVar4 & 0xbf | (byte)((bVar7 & 1) << 6)" (field_expression "(this->super_Object).field_0x2c" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = (binary_expression "bVar4 & 0xbf | (byte)((bVar7 & 1) << 6)" (binary_expression "bVar4 & 0xbf" identifier & number_literal) | (call_expression "(byte)((bVar7 & 1) << 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((bVar7 & 1) << 6)" ( (binary_expression "(bVar7 & 1) << 6" (parenthesized_expression "(bVar7 & 1)" ( (binary_expression "bVar7 & 1" identifier & number_literal) )) << number_literal) ))))) ;) (expression_statement "(this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003895e8;" (assignment_expression "(this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003895e8" (field_expression "(this->super_Object)._vptr_Object" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(_func_int_varargs **)&DAT_003895e8" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_003895e8" & identifier))) ;) comment (labeled_statement "std::string::_M_assign((string *)&this->soname_,(string *)&input_file->found_name_);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_assign((string *)&this->soname_,(string *)&input_file->found_name_);" statement_identifier : (ERROR ":" :) (expression_statement "_M_assign((string *)&this->soname_,(string *)&input_file->found_name_);" (call_expression "_M_assign((string *)&this->soname_,(string *)&input_file->found_name_)" identifier (argument_list "((string *)&this->soname_,(string *)&input_file->found_name_)" ( (cast_expression "(string *)&this->soname_" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->soname_" & (field_expression "this->soname_" identifier -> field_identifier))) , (cast_expression "(string *)&input_file->found_name_" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&input_file->found_name_" & (field_expression "input_file->found_name_" identifier -> field_identifier))) ))) ;))) (if_statement "if (*(int *)((int)&(this->super_Object).offset_ + 4) != 0 ||\n      (int)(this->super_Object).offset_ != 0) {\n    iVar9 = std::string::find((string *)this_00,'(',0);\n    iVar10 = std::string::find((string *)this_00,')',0);\n    if ((iVar9 != -1) && (iVar10 != -1)) {\n      uVar5 = (this->super_Object).name_._M_string_length;\n      uVar3 = iVar9 + 1;\n      if (uVar5 < uVar3) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */\n        std::__throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                   uVar3,uVar5);\n      }\n      __src = &local_34.field_2;\n      pcVar12 = (this->super_Object).name_._M_dataplus._M_p + uVar3;\n      uVar11 = iVar10 - uVar3;\n      if (uVar5 - uVar3 <= iVar10 - uVar3) {\n        uVar11 = uVar5 - uVar3;\n      }\n      local_34._M_dataplus._M_p = (pointer)__src;\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char_const*>(&local_34,pcVar12,pcVar12 + uVar11,0);\n      __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(this->soname_)._M_dataplus._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p == __src) {\n        if (local_34._M_string_length != 0) {\n          if (local_34._M_string_length == 1) {\n            __dest->_M_local_buf[0] = local_34.field_2._M_local_buf[0];\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n          else {\n            memcpy(__dest,__src,local_34._M_string_length);\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n        }\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        __dest->_M_local_buf[local_34._M_string_length] = '\0';\n      }\n      else if (__dest == paVar2) {\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n      }\n      else {\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        sVar6 = (this->soname_).field_2._M_allocated_capacity;\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n        if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                       *)0x0) {\n          local_34._M_dataplus._M_p = (pointer)__dest;\n          local_34.field_2._M_allocated_capacity = sVar6;\n        }\n      }\n      local_34._M_string_length = 0;\n      *local_34._M_dataplus._M_p = '\0';\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p != &local_34.field_2) {\n        operator_delete(local_34._M_dataplus._M_p);\n      }\n    }\n  }" if (parenthesized_expression "(*(int *)((int)&(this->super_Object).offset_ + 4) != 0 ||\n      (int)(this->super_Object).offset_ != 0)" ( (binary_expression "*(int *)((int)&(this->super_Object).offset_ + 4) != 0 ||\n      (int)(this->super_Object).offset_ != 0" (binary_expression "*(int *)((int)&(this->super_Object).offset_ + 4) != 0" (pointer_expression "*(int *)((int)&(this->super_Object).offset_ + 4)" * (cast_expression "(int *)((int)&(this->super_Object).offset_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(this->super_Object).offset_ + 4)" ( (binary_expression "(int)&(this->super_Object).offset_ + 4" (cast_expression "(int)&(this->super_Object).offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(this->super_Object).offset_" & (field_expression "(this->super_Object).offset_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) != number_literal) || (binary_expression "(int)(this->super_Object).offset_ != 0" (cast_expression "(int)(this->super_Object).offset_" ( (type_descriptor "int" primitive_type) ) (field_expression "(this->super_Object).offset_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier)) != number_literal)) )) (compound_statement "{\n    iVar9 = std::string::find((string *)this_00,'(',0);\n    iVar10 = std::string::find((string *)this_00,')',0);\n    if ((iVar9 != -1) && (iVar10 != -1)) {\n      uVar5 = (this->super_Object).name_._M_string_length;\n      uVar3 = iVar9 + 1;\n      if (uVar5 < uVar3) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */\n        std::__throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                   uVar3,uVar5);\n      }\n      __src = &local_34.field_2;\n      pcVar12 = (this->super_Object).name_._M_dataplus._M_p + uVar3;\n      uVar11 = iVar10 - uVar3;\n      if (uVar5 - uVar3 <= iVar10 - uVar3) {\n        uVar11 = uVar5 - uVar3;\n      }\n      local_34._M_dataplus._M_p = (pointer)__src;\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char_const*>(&local_34,pcVar12,pcVar12 + uVar11,0);\n      __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(this->soname_)._M_dataplus._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p == __src) {\n        if (local_34._M_string_length != 0) {\n          if (local_34._M_string_length == 1) {\n            __dest->_M_local_buf[0] = local_34.field_2._M_local_buf[0];\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n          else {\n            memcpy(__dest,__src,local_34._M_string_length);\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n        }\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        __dest->_M_local_buf[local_34._M_string_length] = '\0';\n      }\n      else if (__dest == paVar2) {\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n      }\n      else {\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        sVar6 = (this->soname_).field_2._M_allocated_capacity;\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n        if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                       *)0x0) {\n          local_34._M_dataplus._M_p = (pointer)__dest;\n          local_34.field_2._M_allocated_capacity = sVar6;\n        }\n      }\n      local_34._M_string_length = 0;\n      *local_34._M_dataplus._M_p = '\0';\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p != &local_34.field_2) {\n        operator_delete(local_34._M_dataplus._M_p);\n      }\n    }\n  }" { (ERROR "iVar9 = std::" (assignment_expression "iVar9 = std" identifier = identifier) : :) (labeled_statement "string::find((string *)this_00,'(',0);" statement_identifier : (ERROR ":" :) (expression_statement "find((string *)this_00,'(',0);" (call_expression "find((string *)this_00,'(',0)" identifier (argument_list "((string *)this_00,'(',0)" ( (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "'('" ' character ') , number_literal ))) ;)) (ERROR "iVar10 = std::" (assignment_expression "iVar10 = std" identifier = identifier) : :) (labeled_statement "string::find((string *)this_00,')',0);" statement_identifier : (ERROR ":" :) (expression_statement "find((string *)this_00,')',0);" (call_expression "find((string *)this_00,')',0)" identifier (argument_list "((string *)this_00,')',0)" ( (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "')'" ' character ') , number_literal ))) ;)) (if_statement "if ((iVar9 != -1) && (iVar10 != -1)) {\n      uVar5 = (this->super_Object).name_._M_string_length;\n      uVar3 = iVar9 + 1;\n      if (uVar5 < uVar3) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */\n        std::__throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                   uVar3,uVar5);\n      }\n      __src = &local_34.field_2;\n      pcVar12 = (this->super_Object).name_._M_dataplus._M_p + uVar3;\n      uVar11 = iVar10 - uVar3;\n      if (uVar5 - uVar3 <= iVar10 - uVar3) {\n        uVar11 = uVar5 - uVar3;\n      }\n      local_34._M_dataplus._M_p = (pointer)__src;\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char_const*>(&local_34,pcVar12,pcVar12 + uVar11,0);\n      __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(this->soname_)._M_dataplus._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p == __src) {\n        if (local_34._M_string_length != 0) {\n          if (local_34._M_string_length == 1) {\n            __dest->_M_local_buf[0] = local_34.field_2._M_local_buf[0];\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n          else {\n            memcpy(__dest,__src,local_34._M_string_length);\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n        }\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        __dest->_M_local_buf[local_34._M_string_length] = '\0';\n      }\n      else if (__dest == paVar2) {\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n      }\n      else {\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        sVar6 = (this->soname_).field_2._M_allocated_capacity;\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n        if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                       *)0x0) {\n          local_34._M_dataplus._M_p = (pointer)__dest;\n          local_34.field_2._M_allocated_capacity = sVar6;\n        }\n      }\n      local_34._M_string_length = 0;\n      *local_34._M_dataplus._M_p = '\0';\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p != &local_34.field_2) {\n        operator_delete(local_34._M_dataplus._M_p);\n      }\n    }" if (parenthesized_expression "((iVar9 != -1) && (iVar10 != -1))" ( (binary_expression "(iVar9 != -1) && (iVar10 != -1)" (parenthesized_expression "(iVar9 != -1)" ( (binary_expression "iVar9 != -1" identifier != number_literal) )) && (parenthesized_expression "(iVar10 != -1)" ( (binary_expression "iVar10 != -1" identifier != number_literal) ))) )) (compound_statement "{\n      uVar5 = (this->super_Object).name_._M_string_length;\n      uVar3 = iVar9 + 1;\n      if (uVar5 < uVar3) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */\n        std::__throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                   uVar3,uVar5);\n      }\n      __src = &local_34.field_2;\n      pcVar12 = (this->super_Object).name_._M_dataplus._M_p + uVar3;\n      uVar11 = iVar10 - uVar3;\n      if (uVar5 - uVar3 <= iVar10 - uVar3) {\n        uVar11 = uVar5 - uVar3;\n      }\n      local_34._M_dataplus._M_p = (pointer)__src;\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char_const*>(&local_34,pcVar12,pcVar12 + uVar11,0);\n      __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(this->soname_)._M_dataplus._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p == __src) {\n        if (local_34._M_string_length != 0) {\n          if (local_34._M_string_length == 1) {\n            __dest->_M_local_buf[0] = local_34.field_2._M_local_buf[0];\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n          else {\n            memcpy(__dest,__src,local_34._M_string_length);\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n        }\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        __dest->_M_local_buf[local_34._M_string_length] = '\0';\n      }\n      else if (__dest == paVar2) {\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n      }\n      else {\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        sVar6 = (this->soname_).field_2._M_allocated_capacity;\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n        if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                       *)0x0) {\n          local_34._M_dataplus._M_p = (pointer)__dest;\n          local_34.field_2._M_allocated_capacity = sVar6;\n        }\n      }\n      local_34._M_string_length = 0;\n      *local_34._M_dataplus._M_p = '\0';\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p != &local_34.field_2) {\n        operator_delete(local_34._M_dataplus._M_p);\n      }\n    }" { (expression_statement "uVar5 = (this->super_Object).name_._M_string_length;" (assignment_expression "uVar5 = (this->super_Object).name_._M_string_length" identifier = (field_expression "(this->super_Object).name_._M_string_length" (field_expression "(this->super_Object).name_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar3 = iVar9 + 1;" (assignment_expression "uVar3 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (if_statement "if (uVar5 < uVar3) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */\n        std::__throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                   uVar3,uVar5);\n      }" if (parenthesized_expression "(uVar5 < uVar3)" ( (binary_expression "uVar5 < uVar3" identifier < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */\n        std::__throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                   uVar3,uVar5);\n      }" { comment comment (labeled_statement "std::__throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                   uVar3,uVar5);" statement_identifier : (ERROR ":" :) (expression_statement "__throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                   uVar3,uVar5);" (call_expression "__throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                   uVar3,uVar5)" identifier (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                   uVar3,uVar5)" ( (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" " string_content ") , (string_literal ""basic_string::substr"" " string_content ") , identifier , identifier ))) ;)) })) (expression_statement "__src = &local_34.field_2;" (assignment_expression "__src = &local_34.field_2" identifier = (pointer_expression "&local_34.field_2" & (field_expression "local_34.field_2" identifier . field_identifier))) ;) (expression_statement "pcVar12 = (this->super_Object).name_._M_dataplus._M_p + uVar3;" (assignment_expression "pcVar12 = (this->super_Object).name_._M_dataplus._M_p + uVar3" identifier = (binary_expression "(this->super_Object).name_._M_dataplus._M_p + uVar3" (field_expression "(this->super_Object).name_._M_dataplus._M_p" (field_expression "(this->super_Object).name_._M_dataplus" (field_expression "(this->super_Object).name_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) + identifier)) ;) (expression_statement "uVar11 = iVar10 - uVar3;" (assignment_expression "uVar11 = iVar10 - uVar3" identifier = (binary_expression "iVar10 - uVar3" identifier - identifier)) ;) (if_statement "if (uVar5 - uVar3 <= iVar10 - uVar3) {\n        uVar11 = uVar5 - uVar3;\n      }" if (parenthesized_expression "(uVar5 - uVar3 <= iVar10 - uVar3)" ( (binary_expression "uVar5 - uVar3 <= iVar10 - uVar3" (binary_expression "uVar5 - uVar3" identifier - identifier) <= (binary_expression "iVar10 - uVar3" identifier - identifier)) )) (compound_statement "{\n        uVar11 = uVar5 - uVar3;\n      }" { (expression_statement "uVar11 = uVar5 - uVar3;" (assignment_expression "uVar11 = uVar5 - uVar3" identifier = (binary_expression "uVar5 - uVar3" identifier - identifier)) ;) })) (expression_statement "local_34._M_dataplus._M_p = (pointer)__src;" (assignment_expression "local_34._M_dataplus._M_p = (pointer)__src" (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier) = (cast_expression "(pointer)__src" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char_const*>(&local_34,pcVar12,pcVar12 + uVar11,0);" 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_const*>(&local_34,pcVar12,pcVar12 + uVar11,0);" (binary_expression "_M_construct<char_const*>(&local_34,pcVar12,pcVar12 + uVar11,0)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&local_34,pcVar12,pcVar12 + uVar11,0)" ( (comma_expression "&local_34,pcVar12,pcVar12 + uVar11,0" (pointer_expression "&local_34" & identifier) , (comma_expression "pcVar12,pcVar12 + uVar11,0" identifier , (comma_expression "pcVar12 + uVar11,0" (binary_expression "pcVar12 + uVar11" identifier + identifier) , number_literal))) ))) ;)) (expression_statement "__dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(this->soname_)._M_dataplus._M_p;" (assignment_expression "__dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(this->soname_)._M_dataplus._M_p" identifier = (field_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(this->soname_)._M_dataplus._M_p" (field_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(this->soname_)._M_dataplus" (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(this->soname_)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) (ERROR "*" *) )) (argument_list "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) ))) . field_identifier) . field_identifier)) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p == __src) {\n        if (local_34._M_string_length != 0) {\n          if (local_34._M_string_length == 1) {\n            __dest->_M_local_buf[0] = local_34.field_2._M_local_buf[0];\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n          else {\n            memcpy(__dest,__src,local_34._M_string_length);\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n        }\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        __dest->_M_local_buf[local_34._M_string_length] = '\0';\n      }\n      else if (__dest == paVar2) {\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n      }\n      else {\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        sVar6 = (this->soname_).field_2._M_allocated_capacity;\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n        if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                       *)0x0) {\n          local_34._M_dataplus._M_p = (pointer)__dest;\n          local_34.field_2._M_allocated_capacity = sVar6;\n        }\n      }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p == __src)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p == __src)" ( (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           *)local_34._M_dataplus._M_p == __src" (binary_expression "allocator<char>_>_9\n           *)local_34._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)local_34._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier))) == identifier) )) )) (compound_statement "{\n        if (local_34._M_string_length != 0) {\n          if (local_34._M_string_length == 1) {\n            __dest->_M_local_buf[0] = local_34.field_2._M_local_buf[0];\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n          else {\n            memcpy(__dest,__src,local_34._M_string_length);\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n        }\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        __dest->_M_local_buf[local_34._M_string_length] = '\0';\n      }" { (if_statement "if (local_34._M_string_length != 0) {\n          if (local_34._M_string_length == 1) {\n            __dest->_M_local_buf[0] = local_34.field_2._M_local_buf[0];\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n          else {\n            memcpy(__dest,__src,local_34._M_string_length);\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n        }" if (parenthesized_expression "(local_34._M_string_length != 0)" ( (binary_expression "local_34._M_string_length != 0" (field_expression "local_34._M_string_length" identifier . field_identifier) != number_literal) )) (compound_statement "{\n          if (local_34._M_string_length == 1) {\n            __dest->_M_local_buf[0] = local_34.field_2._M_local_buf[0];\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n          else {\n            memcpy(__dest,__src,local_34._M_string_length);\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n        }" { (if_statement "if (local_34._M_string_length == 1) {\n            __dest->_M_local_buf[0] = local_34.field_2._M_local_buf[0];\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }\n          else {\n            memcpy(__dest,__src,local_34._M_string_length);\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }" if (parenthesized_expression "(local_34._M_string_length == 1)" ( (binary_expression "local_34._M_string_length == 1" (field_expression "local_34._M_string_length" identifier . field_identifier) == number_literal) )) (compound_statement "{\n            __dest->_M_local_buf[0] = local_34.field_2._M_local_buf[0];\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }" { (expression_statement "__dest->_M_local_buf[0] = local_34.field_2._M_local_buf[0];" (assignment_expression "__dest->_M_local_buf[0] = local_34.field_2._M_local_buf[0]" (subscript_expression "__dest->_M_local_buf[0]" (field_expression "__dest->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "local_34.field_2._M_local_buf[0]" (field_expression "local_34.field_2._M_local_buf" (field_expression "local_34.field_2" identifier . field_identifier) . field_identifier) [ number_literal ])) ;) (expression_statement "__dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;" (assignment_expression "__dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p" identifier = (field_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p" (field_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus" (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) (ERROR "*" *) )) (argument_list "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) ))) . field_identifier) . field_identifier)) ;) }) (else_clause "else {\n            memcpy(__dest,__src,local_34._M_string_length);\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }" else (compound_statement "{\n            memcpy(__dest,__src,local_34._M_string_length);\n            __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;\n          }" { (expression_statement "memcpy(__dest,__src,local_34._M_string_length);" (call_expression "memcpy(__dest,__src,local_34._M_string_length)" identifier (argument_list "(__dest,__src,local_34._M_string_length)" ( identifier , identifier , (field_expression "local_34._M_string_length" identifier . field_identifier) ))) ;) (expression_statement "__dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p;" (assignment_expression "__dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p" identifier = (field_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus._M_p" (field_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)._M_dataplus" (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)(this->soname_)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                      *)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) (ERROR "*" *) )) (argument_list "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) ))) . field_identifier) . field_identifier)) ;) }))) })) (expression_statement "(this->soname_)._M_string_length = local_34._M_string_length;" (assignment_expression "(this->soname_)._M_string_length = local_34._M_string_length" (field_expression "(this->soname_)._M_string_length" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) = (field_expression "local_34._M_string_length" identifier . field_identifier)) ;) (expression_statement "__dest->_M_local_buf[local_34._M_string_length] = '\0';" (assignment_expression "__dest->_M_local_buf[local_34._M_string_length] = '\0'" (subscript_expression "__dest->_M_local_buf[local_34._M_string_length]" (field_expression "__dest->_M_local_buf" identifier -> field_identifier) [ (field_expression "local_34._M_string_length" identifier . field_identifier) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else if (__dest == paVar2) {\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n      }\n      else {\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        sVar6 = (this->soname_).field_2._M_allocated_capacity;\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n        if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                       *)0x0) {\n          local_34._M_dataplus._M_p = (pointer)__dest;\n          local_34.field_2._M_allocated_capacity = sVar6;\n        }\n      }" else (if_statement "if (__dest == paVar2) {\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n      }\n      else {\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        sVar6 = (this->soname_).field_2._M_allocated_capacity;\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n        if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                       *)0x0) {\n          local_34._M_dataplus._M_p = (pointer)__dest;\n          local_34.field_2._M_allocated_capacity = sVar6;\n        }\n      }" if (parenthesized_expression "(__dest == paVar2)" ( (binary_expression "__dest == paVar2" identifier == identifier) )) (compound_statement "{\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n      }" { (expression_statement "(this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;" (assignment_expression "(this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p" (field_expression "(this->soname_)._M_dataplus._M_p" (field_expression "(this->soname_)._M_dataplus" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier)) ;) (expression_statement "(this->soname_)._M_string_length = local_34._M_string_length;" (assignment_expression "(this->soname_)._M_string_length = local_34._M_string_length" (field_expression "(this->soname_)._M_string_length" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) = (field_expression "local_34._M_string_length" identifier . field_identifier)) ;) (expression_statement "(this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;" (assignment_expression "(this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity" (field_expression "(this->soname_).field_2._M_allocated_capacity" (field_expression "(this->soname_).field_2" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "local_34.field_2._M_allocated_capacity" (field_expression "local_34.field_2" identifier . field_identifier) . field_identifier)) ;) (expression_statement "local_34._M_dataplus._M_p = (pointer)__src;" (assignment_expression "local_34._M_dataplus._M_p = (pointer)__src" (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier) = (cast_expression "(pointer)__src" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) }) (else_clause "else {\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        sVar6 = (this->soname_).field_2._M_allocated_capacity;\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n        if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                       *)0x0) {\n          local_34._M_dataplus._M_p = (pointer)__dest;\n          local_34.field_2._M_allocated_capacity = sVar6;\n        }\n      }" else (compound_statement "{\n        (this->soname_)._M_string_length = local_34._M_string_length;\n        sVar6 = (this->soname_).field_2._M_allocated_capacity;\n        (this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;\n        (this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;\n        local_34._M_dataplus._M_p = (pointer)__src;\n        if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                       *)0x0) {\n          local_34._M_dataplus._M_p = (pointer)__dest;\n          local_34.field_2._M_allocated_capacity = sVar6;\n        }\n      }" { (expression_statement "(this->soname_)._M_string_length = local_34._M_string_length;" (assignment_expression "(this->soname_)._M_string_length = local_34._M_string_length" (field_expression "(this->soname_)._M_string_length" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) = (field_expression "local_34._M_string_length" identifier . field_identifier)) ;) (expression_statement "sVar6 = (this->soname_).field_2._M_allocated_capacity;" (assignment_expression "sVar6 = (this->soname_).field_2._M_allocated_capacity" identifier = (field_expression "(this->soname_).field_2._M_allocated_capacity" (field_expression "(this->soname_).field_2" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "(this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p;" (assignment_expression "(this->soname_)._M_dataplus._M_p = local_34._M_dataplus._M_p" (field_expression "(this->soname_)._M_dataplus._M_p" (field_expression "(this->soname_)._M_dataplus" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier)) ;) (expression_statement "(this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity;" (assignment_expression "(this->soname_).field_2._M_allocated_capacity = local_34.field_2._M_allocated_capacity" (field_expression "(this->soname_).field_2._M_allocated_capacity" (field_expression "(this->soname_).field_2" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "local_34.field_2._M_allocated_capacity" (field_expression "local_34.field_2" identifier . field_identifier) . field_identifier)) ;) (expression_statement "local_34._M_dataplus._M_p = (pointer)__src;" (assignment_expression "local_34._M_dataplus._M_p = (pointer)__src" (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier) = (cast_expression "(pointer)__src" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (if_statement "if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                       *)0x0) {\n          local_34._M_dataplus._M_p = (pointer)__dest;\n          local_34.field_2._M_allocated_capacity = sVar6;\n        }" if (parenthesized_expression "(__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                       *)0x0)" ( (binary_expression "__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                       *)0x0)" identifier != (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                       *)0x0)" ( (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                       *)0x0" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n                       *)0x0" identifier * (ERROR ")" )) number_literal)) ))) )) (compound_statement "{\n          local_34._M_dataplus._M_p = (pointer)__dest;\n          local_34.field_2._M_allocated_capacity = sVar6;\n        }" { (expression_statement "local_34._M_dataplus._M_p = (pointer)__dest;" (assignment_expression "local_34._M_dataplus._M_p = (pointer)__dest" (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier) = (cast_expression "(pointer)__dest" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "local_34.field_2._M_allocated_capacity = sVar6;" (assignment_expression "local_34.field_2._M_allocated_capacity = sVar6" (field_expression "local_34.field_2._M_allocated_capacity" (field_expression "local_34.field_2" identifier . field_identifier) . field_identifier) = identifier) ;) })) }))))) (expression_statement "local_34._M_string_length = 0;" (assignment_expression "local_34._M_string_length = 0" (field_expression "local_34._M_string_length" identifier . field_identifier) = number_literal) ;) (expression_statement "*local_34._M_dataplus._M_p = '\0';" (assignment_expression "*local_34._M_dataplus._M_p = '\0'" (pointer_expression "*local_34._M_dataplus._M_p" * (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier)) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p != &local_34.field_2) {\n        operator_delete(local_34._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           *)local_34._M_dataplus._M_p != &local_34.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_34._M_dataplus._M_p != &local_34.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           *)local_34._M_dataplus._M_p != &local_34.field_2" (binary_expression "allocator<char>_>_9\n           *)local_34._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)local_34._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&local_34.field_2" & (field_expression "local_34.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n        operator_delete(local_34._M_dataplus._M_p);\n      }" { (expression_statement "operator_delete(local_34._M_dataplus._M_p);" (call_expression "operator_delete(local_34._M_dataplus._M_p)" identifier (argument_list "(local_34._M_dataplus._M_p)" ( (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) })) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001a3440(undefined4 *param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5\n                 )\n\n{\n  byte bVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *local_34;\n  size_t local_30;\n  undefined4 local_2c [7];\n  \n  *param_1 = &DAT_0038897c;\n  param_1[1] = param_1 + 3;\n  puVar9 = param_1 + 1;\n  FUN_000513a0(puVar9,*param_2,param_2[1] + *param_2,0);\n  param_1[7] = param_3;\n  param_1[10] = 0xffffffff;\n  param_1[8] = param_4;\n  param_1[9] = param_5;\n  param_1[0xc] = 0;\n  param_1[0xd] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0x80 | 1;\n  if (param_3 == 0) {\n    param_1[0xf] = 0;\n    param_1[0xe] = param_1 + 0x10;\n    *(undefined1 *)(param_1 + 0x10) = 0;\n    *param_1 = &DAT_003895e8;\n    param_1[0x14] = 0;\n    param_1[0x15] = 0;\n    param_1[0x16] = 0;\n    param_1[0x17] = 0;\n                    \n    FUN_001ee9c0(param_1 + 0xe,param_2);\n    return;\n  }\n  *(int *)(param_3 + 0x3c) = *(int *)(param_3 + 0x3c) + 1;\n                    \n  uVar4 = FUN_00067b80(param_3);\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5);\n  pbVar5 = (byte *)FUN_00067b60(param_3);\n  bVar1 = *pbVar5;\n  param_1[0xf] = 0;\n  param_1[0xe] = param_1 + 0x10;\n  *(undefined1 *)(param_1 + 0x10) = 0;\n  param_1[0x14] = 0;\n  param_1[0x15] = 0;\n  param_1[0x16] = 0;\n  param_1[0x17] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6);\n  *param_1 = &DAT_003895e8;\n                    \n  FUN_001ee9c0(param_1 + 0xe,param_3 + 4);\n  if (param_1[9] != 0 || param_1[8] != 0) {\n    iVar6 = FUN_001f0c10(puVar9,0x28,0);\n    iVar7 = FUN_001f0c10(puVar9,0x29,0);\n    if ((iVar6 != -1) && (iVar7 != -1)) {\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    \n                    \n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_001a3440(undefined4 *param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5\n                 )\n\n{\n  byte bVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *local_34;\n  size_t local_30;\n  undefined4 local_2c [7];\n  \n  *param_1 = &DAT_0038897c;\n  param_1[1] = param_1 + 3;\n  puVar9 = param_1 + 1;\n  FUN_000513a0(puVar9,*param_2,param_2[1] + *param_2,0);\n  param_1[7] = param_3;\n  param_1[10] = 0xffffffff;\n  param_1[8] = param_4;\n  param_1[9] = param_5;\n  param_1[0xc] = 0;\n  param_1[0xd] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0x80 | 1;\n  if (param_3 == 0) {\n    param_1[0xf] = 0;\n    param_1[0xe] = param_1 + 0x10;\n    *(undefined1 *)(param_1 + 0x10) = 0;\n    *param_1 = &DAT_003895e8;\n    param_1[0x14] = 0;\n    param_1[0x15] = 0;\n    param_1[0x16] = 0;\n    param_1[0x17] = 0;\n                    \n    FUN_001ee9c0(param_1 + 0xe,param_2);\n    return;\n  }\n  *(int *)(param_3 + 0x3c) = *(int *)(param_3 + 0x3c) + 1;\n                    \n  uVar4 = FUN_00067b80(param_3);\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5);\n  pbVar5 = (byte *)FUN_00067b60(param_3);\n  bVar1 = *pbVar5;\n  param_1[0xf] = 0;\n  param_1[0xe] = param_1 + 0x10;\n  *(undefined1 *)(param_1 + 0x10) = 0;\n  param_1[0x14] = 0;\n  param_1[0x15] = 0;\n  param_1[0x16] = 0;\n  param_1[0x17] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6);\n  *param_1 = &DAT_003895e8;\n                    \n  FUN_001ee9c0(param_1 + 0xe,param_3 + 4);\n  if (param_1[9] != 0 || param_1[8] != 0) {\n    iVar6 = FUN_001f0c10(puVar9,0x28,0);\n    iVar7 = FUN_001f0c10(puVar9,0x29,0);\n    if ((iVar6 != -1) && (iVar7 != -1)) {\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    \n                    \n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_001a3440(undefined4 *param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5\n                 )" identifier (parameter_list "(undefined4 *param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5\n                 )" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *local_34;\n  size_t local_30;\n  undefined4 local_2c [7];\n  \n  *param_1 = &DAT_0038897c;\n  param_1[1] = param_1 + 3;\n  puVar9 = param_1 + 1;\n  FUN_000513a0(puVar9,*param_2,param_2[1] + *param_2,0);\n  param_1[7] = param_3;\n  param_1[10] = 0xffffffff;\n  param_1[8] = param_4;\n  param_1[9] = param_5;\n  param_1[0xc] = 0;\n  param_1[0xd] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0x80 | 1;\n  if (param_3 == 0) {\n    param_1[0xf] = 0;\n    param_1[0xe] = param_1 + 0x10;\n    *(undefined1 *)(param_1 + 0x10) = 0;\n    *param_1 = &DAT_003895e8;\n    param_1[0x14] = 0;\n    param_1[0x15] = 0;\n    param_1[0x16] = 0;\n    param_1[0x17] = 0;\n                    \n    FUN_001ee9c0(param_1 + 0xe,param_2);\n    return;\n  }\n  *(int *)(param_3 + 0x3c) = *(int *)(param_3 + 0x3c) + 1;\n                    \n  uVar4 = FUN_00067b80(param_3);\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5);\n  pbVar5 = (byte *)FUN_00067b60(param_3);\n  bVar1 = *pbVar5;\n  param_1[0xf] = 0;\n  param_1[0xe] = param_1 + 0x10;\n  *(undefined1 *)(param_1 + 0x10) = 0;\n  param_1[0x14] = 0;\n  param_1[0x15] = 0;\n  param_1[0x16] = 0;\n  param_1[0x17] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6);\n  *param_1 = &DAT_003895e8;\n                    \n  FUN_001ee9c0(param_1 + 0xe,param_3 + 4);\n  if (param_1[9] != 0 || param_1[8] != 0) {\n    iVar6 = FUN_001f0c10(puVar9,0x28,0);\n    iVar7 = FUN_001f0c10(puVar9,0x29,0);\n    if ((iVar6 != -1) && (iVar7 != -1)) {\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    \n                    \n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "size_t local_30;" primitive_type identifier ;) (declaration "undefined4 local_2c [7];" type_identifier (array_declarator "local_2c [7]" identifier [ number_literal ]) ;) (expression_statement "*param_1 = &DAT_0038897c;" (assignment_expression "*param_1 = &DAT_0038897c" (pointer_expression "*param_1" * identifier) = (pointer_expression "&DAT_0038897c" & identifier)) ;) (expression_statement "param_1[1] = param_1 + 3;" (assignment_expression "param_1[1] = param_1 + 3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "param_1 + 3" identifier + number_literal)) ;) (expression_statement "puVar9 = param_1 + 1;" (assignment_expression "puVar9 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000513a0(puVar9,*param_2,param_2[1] + *param_2,0);" (call_expression "FUN_000513a0(puVar9,*param_2,param_2[1] + *param_2,0)" identifier (argument_list "(puVar9,*param_2,param_2[1] + *param_2,0)" ( identifier , (pointer_expression "*param_2" * identifier) , (binary_expression "param_2[1] + *param_2" (subscript_expression "param_2[1]" identifier [ number_literal ]) + (pointer_expression "*param_2" * identifier)) , number_literal ))) ;) (expression_statement "param_1[7] = param_3;" (assignment_expression "param_1[7] = param_3" (subscript_expression "param_1[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[10] = 0xffffffff;" (assignment_expression "param_1[10] = 0xffffffff" (subscript_expression "param_1[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[8] = param_4;" (assignment_expression "param_1[8] = param_4" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[9] = param_5;" (assignment_expression "param_1[9] = param_5" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xc] = 0;" (assignment_expression "param_1[0xc] = 0" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xd] = 0;" (assignment_expression "param_1[0xd] = 0" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0x80 | 1;" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0x80 | 1" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0xb) & 0x80 | 1" (binary_expression "*(byte *)(param_1 + 0xb) & 0x80" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (if_statement "if (param_3 == 0) {\n    param_1[0xf] = 0;\n    param_1[0xe] = param_1 + 0x10;\n    *(undefined1 *)(param_1 + 0x10) = 0;\n    *param_1 = &DAT_003895e8;\n    param_1[0x14] = 0;\n    param_1[0x15] = 0;\n    param_1[0x16] = 0;\n    param_1[0x17] = 0;\n                    \n    FUN_001ee9c0(param_1 + 0xe,param_2);\n    return;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    param_1[0xf] = 0;\n    param_1[0xe] = param_1 + 0x10;\n    *(undefined1 *)(param_1 + 0x10) = 0;\n    *param_1 = &DAT_003895e8;\n    param_1[0x14] = 0;\n    param_1[0x15] = 0;\n    param_1[0x16] = 0;\n    param_1[0x17] = 0;\n                    \n    FUN_001ee9c0(param_1 + 0xe,param_2);\n    return;\n  }" { (expression_statement "param_1[0xf] = 0;" (assignment_expression "param_1[0xf] = 0" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xe] = param_1 + 0x10;" (assignment_expression "param_1[0xe] = param_1 + 0x10" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = (binary_expression "param_1 + 0x10" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(param_1 + 0x10) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x10) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x10)" * (cast_expression "(undefined1 *)(param_1 + 0x10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*param_1 = &DAT_003895e8;" (assignment_expression "*param_1 = &DAT_003895e8" (pointer_expression "*param_1" * identifier) = (pointer_expression "&DAT_003895e8" & identifier)) ;) (expression_statement "param_1[0x14] = 0;" (assignment_expression "param_1[0x14] = 0" (subscript_expression "param_1[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x15] = 0;" (assignment_expression "param_1[0x15] = 0" (subscript_expression "param_1[0x15]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x16] = 0;" (assignment_expression "param_1[0x16] = 0" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x17] = 0;" (assignment_expression "param_1[0x17] = 0" (subscript_expression "param_1[0x17]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_001ee9c0(param_1 + 0xe,param_2);" (call_expression "FUN_001ee9c0(param_1 + 0xe,param_2)" identifier (argument_list "(param_1 + 0xe,param_2)" ( (binary_expression "param_1 + 0xe" identifier + number_literal) , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "*(int *)(param_3 + 0x3c) = *(int *)(param_3 + 0x3c) + 1;" (assignment_expression "*(int *)(param_3 + 0x3c) = *(int *)(param_3 + 0x3c) + 1" (pointer_expression "*(int *)(param_3 + 0x3c)" * (cast_expression "(int *)(param_3 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3c)" ( (binary_expression "param_3 + 0x3c" identifier + number_literal) )))) = (binary_expression "*(int *)(param_3 + 0x3c) + 1" (pointer_expression "*(int *)(param_3 + 0x3c)" * (cast_expression "(int *)(param_3 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3c)" ( (binary_expression "param_3 + 0x3c" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "uVar4 = FUN_00067b80(param_3);" (assignment_expression "uVar4 = FUN_00067b80(param_3)" identifier = (call_expression "FUN_00067b80(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5);" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5)" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5)" (binary_expression "*(byte *)(param_1 + 0xb) & 0xdf" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) | (call_expression "(byte)((uVar4 & 1) << 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar4 & 1) << 5)" ( (binary_expression "(uVar4 & 1) << 5" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) << number_literal) ))))) ;) (expression_statement "pbVar5 = (byte *)FUN_00067b60(param_3);" (assignment_expression "pbVar5 = (byte *)FUN_00067b60(param_3)" identifier = (cast_expression "(byte *)FUN_00067b60(param_3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00067b60(param_3)" identifier (argument_list "(param_3)" ( identifier ))))) ;) (expression_statement "bVar1 = *pbVar5;" (assignment_expression "bVar1 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) (expression_statement "param_1[0xf] = 0;" (assignment_expression "param_1[0xf] = 0" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xe] = param_1 + 0x10;" (assignment_expression "param_1[0xe] = param_1 + 0x10" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = (binary_expression "param_1 + 0x10" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(param_1 + 0x10) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x10) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x10)" * (cast_expression "(undefined1 *)(param_1 + 0x10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0x14] = 0;" (assignment_expression "param_1[0x14] = 0" (subscript_expression "param_1[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x15] = 0;" (assignment_expression "param_1[0x15] = 0" (subscript_expression "param_1[0x15]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x16] = 0;" (assignment_expression "param_1[0x16] = 0" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x17] = 0;" (assignment_expression "param_1[0x17] = 0" (subscript_expression "param_1[0x17]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6);" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6)" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6)" (binary_expression "*(byte *)(param_1 + 0xb) & 0xbf" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) | (call_expression "(byte)((bVar1 & 1) << 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((bVar1 & 1) << 6)" ( (binary_expression "(bVar1 & 1) << 6" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) << number_literal) ))))) ;) (expression_statement "*param_1 = &DAT_003895e8;" (assignment_expression "*param_1 = &DAT_003895e8" (pointer_expression "*param_1" * identifier) = (pointer_expression "&DAT_003895e8" & identifier)) ;) (expression_statement "FUN_001ee9c0(param_1 + 0xe,param_3 + 4);" (call_expression "FUN_001ee9c0(param_1 + 0xe,param_3 + 4)" identifier (argument_list "(param_1 + 0xe,param_3 + 4)" ( (binary_expression "param_1 + 0xe" identifier + number_literal) , (binary_expression "param_3 + 4" identifier + number_literal) ))) ;) (if_statement "if (param_1[9] != 0 || param_1[8] != 0) {\n    iVar6 = FUN_001f0c10(puVar9,0x28,0);\n    iVar7 = FUN_001f0c10(puVar9,0x29,0);\n    if ((iVar6 != -1) && (iVar7 != -1)) {\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    \n                    \n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }\n  }" if (parenthesized_expression "(param_1[9] != 0 || param_1[8] != 0)" ( (binary_expression "param_1[9] != 0 || param_1[8] != 0" (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) || (binary_expression "param_1[8] != 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) != number_literal)) )) (compound_statement "{\n    iVar6 = FUN_001f0c10(puVar9,0x28,0);\n    iVar7 = FUN_001f0c10(puVar9,0x29,0);\n    if ((iVar6 != -1) && (iVar7 != -1)) {\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    \n                    \n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }\n  }" { (expression_statement "iVar6 = FUN_001f0c10(puVar9,0x28,0);" (assignment_expression "iVar6 = FUN_001f0c10(puVar9,0x28,0)" identifier = (call_expression "FUN_001f0c10(puVar9,0x28,0)" identifier (argument_list "(puVar9,0x28,0)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "iVar7 = FUN_001f0c10(puVar9,0x29,0);" (assignment_expression "iVar7 = FUN_001f0c10(puVar9,0x29,0)" identifier = (call_expression "FUN_001f0c10(puVar9,0x29,0)" identifier (argument_list "(puVar9,0x29,0)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if ((iVar6 != -1) && (iVar7 != -1)) {\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    \n                    \n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }" if (parenthesized_expression "((iVar6 != -1) && (iVar7 != -1))" ( (binary_expression "(iVar6 != -1) && (iVar7 != -1)" (parenthesized_expression "(iVar6 != -1)" ( (binary_expression "iVar6 != -1" identifier != number_literal) )) && (parenthesized_expression "(iVar7 != -1)" ( (binary_expression "iVar7 != -1" identifier != number_literal) ))) )) (compound_statement "{\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    \n                    \n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }" { (expression_statement "uVar2 = param_1[2];" (assignment_expression "uVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = iVar6 + 1;" (assignment_expression "uVar4 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (uVar2 < uVar4) {\n                    \n                    \n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }" if (parenthesized_expression "(uVar2 < uVar4)" ( (binary_expression "uVar2 < uVar4" identifier < identifier) )) (compound_statement "{\n                    \n                    \n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }" { (expression_statement "FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);" (call_expression "FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2)" identifier (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2)" ( (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" " string_content ") , (string_literal ""basic_string::substr"" " string_content ") , identifier , identifier ))) ;) })) (expression_statement "uVar8 = iVar7 - uVar4;" (assignment_expression "uVar8 = iVar7 - uVar4" identifier = (binary_expression "iVar7 - uVar4" identifier - identifier)) ;) (if_statement "if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }" if (parenthesized_expression "(uVar2 - uVar4 <= iVar7 - uVar4)" ( (binary_expression "uVar2 - uVar4 <= iVar7 - uVar4" (binary_expression "uVar2 - uVar4" identifier - identifier) <= (binary_expression "iVar7 - uVar4" identifier - identifier)) )) (compound_statement "{\n        uVar8 = uVar2 - uVar4;\n      }" { (expression_statement "uVar8 = uVar2 - uVar4;" (assignment_expression "uVar8 = uVar2 - uVar4" identifier = (binary_expression "uVar2 - uVar4" identifier - identifier)) ;) })) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) (expression_statement "FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);" (call_expression "FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0)" identifier (argument_list "(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0)" ( (pointer_expression "&local_34" & identifier) , (binary_expression "param_1[1] + uVar4" (subscript_expression "param_1[1]" identifier [ number_literal ]) + identifier) , (binary_expression "uVar8 + param_1[1] + uVar4" (binary_expression "uVar8 + param_1[1]" identifier + (subscript_expression "param_1[1]" identifier [ number_literal ])) + identifier) , number_literal ))) ;) (expression_statement "puVar9 = (undefined4 *)param_1[0xe];" (assignment_expression "puVar9 = (undefined4 *)param_1[0xe]" identifier = (cast_expression "(undefined4 *)param_1[0xe]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ]))) ;) (if_statement "if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }" if (parenthesized_expression "(local_34 == local_2c)" ( (binary_expression "local_34 == local_2c" identifier == identifier) )) (compound_statement "{\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }" { (if_statement "if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (compound_statement "{\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }" { (if_statement "if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }" if (parenthesized_expression "(local_30 == 1)" ( (binary_expression "local_30 == 1" identifier == number_literal) )) (compound_statement "{\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }" { (expression_statement "*(undefined1 *)puVar9 = (undefined1)local_2c[0];" (assignment_expression "*(undefined1 *)puVar9 = (undefined1)local_2c[0]" (pointer_expression "*(undefined1 *)puVar9" * (cast_expression "(undefined1 *)puVar9" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(undefined1)local_2c[0]" ( (type_descriptor "undefined1" type_identifier) ) (subscript_expression "local_2c[0]" identifier [ number_literal ]))) ;) (expression_statement "puVar9 = (undefined4 *)param_1[0xe];" (assignment_expression "puVar9 = (undefined4 *)param_1[0xe]" identifier = (cast_expression "(undefined4 *)param_1[0xe]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }" else (compound_statement "{\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }" { (expression_statement "memcpy(puVar9,local_2c,local_30);" (call_expression "memcpy(puVar9,local_2c,local_30)" identifier (argument_list "(puVar9,local_2c,local_30)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar9 = (undefined4 *)param_1[0xe];" (assignment_expression "puVar9 = (undefined4 *)param_1[0xe]" identifier = (cast_expression "(undefined4 *)param_1[0xe]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ]))) ;) }))) })) (expression_statement "param_1[0xf] = local_30;" (assignment_expression "param_1[0xf] = local_30" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((int)puVar9 + local_30) = 0;" (assignment_expression "*(undefined1 *)((int)puVar9 + local_30) = 0" (pointer_expression "*(undefined1 *)((int)puVar9 + local_30)" * (cast_expression "(undefined1 *)((int)puVar9 + local_30)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + local_30)" ( (binary_expression "(int)puVar9 + local_30" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) }) (else_clause "else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }" else (if_statement "if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }" if (parenthesized_expression "(puVar9 == param_1 + 0x10)" ( (binary_expression "puVar9 == param_1 + 0x10" identifier == (binary_expression "param_1 + 0x10" identifier + number_literal)) )) (compound_statement "{\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }" { (expression_statement "param_1[0xe] = local_34;" (assignment_expression "param_1[0xe] = local_34" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xf] = local_30;" (assignment_expression "param_1[0xf] = local_30" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0x10] = local_2c[0];" (assignment_expression "param_1[0x10] = local_2c[0]" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = (subscript_expression "local_2c[0]" identifier [ number_literal ])) ;) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) }) (else_clause "else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }" else (compound_statement "{\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }" { (expression_statement "param_1[0xf] = local_30;" (assignment_expression "param_1[0xf] = local_30" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar3 = param_1[0x10];" (assignment_expression "uVar3 = param_1[0x10]" identifier = (subscript_expression "param_1[0x10]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xe] = local_34;" (assignment_expression "param_1[0xe] = local_34" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0x10] = local_2c[0];" (assignment_expression "param_1[0x10] = local_2c[0]" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = (subscript_expression "local_2c[0]" identifier [ number_literal ])) ;) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) (if_statement "if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }" if (parenthesized_expression "(puVar9 != (undefined4 *)0x0)" ( (binary_expression "puVar9 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }" { (expression_statement "local_34 = puVar9;" (assignment_expression "local_34 = puVar9" identifier = identifier) ;) (expression_statement "local_2c[0] = uVar3;" (assignment_expression "local_2c[0] = uVar3" (subscript_expression "local_2c[0]" identifier [ number_literal ]) = identifier) ;) })) }))))) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "*(undefined1 *)local_34 = 0;" (assignment_expression "*(undefined1 *)local_34 = 0" (pointer_expression "*(undefined1 *)local_34" * (cast_expression "(undefined1 *)local_34" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n        FUN_001e6db0(local_34);\n      }" { (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) })) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , (binary_expression (subscript_expression IDENT [ LIT ]) + (pointer_expression * IDENT)) , LIT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) || (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) <= (binary_expression IDENT - IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) , (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (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 (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) }))))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) })) })) (return_statement return ;) })))
(function_definition "void FUN_001a3440(undefined4 *param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5\n                 )\n\n{\n  byte bVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *local_34;\n  size_t local_30;\n  undefined4 local_2c [7];\n  \n  *param_1 = &DAT_0038897c;\n  param_1[1] = param_1 + 3;\n  puVar9 = param_1 + 1;\n  FUN_000513a0(puVar9,*param_2,param_2[1] + *param_2,0);\n  param_1[7] = param_3;\n  param_1[10] = 0xffffffff;\n  param_1[8] = param_4;\n  param_1[9] = param_5;\n  param_1[0xc] = 0;\n  param_1[0xd] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0x80 | 1;\n  if (param_3 == 0) {\n    param_1[0xf] = 0;\n    param_1[0xe] = param_1 + 0x10;\n    *(undefined1 *)(param_1 + 0x10) = 0;\n    *param_1 = &DAT_003895e8;\n    param_1[0x14] = 0;\n    param_1[0x15] = 0;\n    param_1[0x16] = 0;\n    param_1[0x17] = 0;\n                    \n    FUN_001ee9c0(param_1 + 0xe,param_2);\n    return;\n  }\n  *(int *)(param_3 + 0x3c) = *(int *)(param_3 + 0x3c) + 1;\n                    \n  uVar4 = FUN_00067b80(param_3);\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5);\n  pbVar5 = (byte *)FUN_00067b60(param_3);\n  bVar1 = *pbVar5;\n  param_1[0xf] = 0;\n  param_1[0xe] = param_1 + 0x10;\n  *(undefined1 *)(param_1 + 0x10) = 0;\n  param_1[0x14] = 0;\n  param_1[0x15] = 0;\n  param_1[0x16] = 0;\n  param_1[0x17] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6);\n  *param_1 = &DAT_003895e8;\n                    \n  FUN_001ee9c0(param_1 + 0xe,param_3 + 4);\n  if (param_1[9] != 0 || param_1[8] != 0) {\n    iVar6 = FUN_001f0c10(puVar9,0x28,0);\n    iVar7 = FUN_001f0c10(puVar9,0x29,0);\n    if ((iVar6 != -1) && (iVar7 != -1)) {\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    \n                    \n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001a3440(undefined4 *param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5\n                 )" (identifier "FUN_001a3440") (parameter_list "(undefined4 *param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5\n                 )" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) () ")"))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *local_34;\n  size_t local_30;\n  undefined4 local_2c [7];\n  \n  *param_1 = &DAT_0038897c;\n  param_1[1] = param_1 + 3;\n  puVar9 = param_1 + 1;\n  FUN_000513a0(puVar9,*param_2,param_2[1] + *param_2,0);\n  param_1[7] = param_3;\n  param_1[10] = 0xffffffff;\n  param_1[8] = param_4;\n  param_1[9] = param_5;\n  param_1[0xc] = 0;\n  param_1[0xd] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0x80 | 1;\n  if (param_3 == 0) {\n    param_1[0xf] = 0;\n    param_1[0xe] = param_1 + 0x10;\n    *(undefined1 *)(param_1 + 0x10) = 0;\n    *param_1 = &DAT_003895e8;\n    param_1[0x14] = 0;\n    param_1[0x15] = 0;\n    param_1[0x16] = 0;\n    param_1[0x17] = 0;\n                    \n    FUN_001ee9c0(param_1 + 0xe,param_2);\n    return;\n  }\n  *(int *)(param_3 + 0x3c) = *(int *)(param_3 + 0x3c) + 1;\n                    \n  uVar4 = FUN_00067b80(param_3);\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5);\n  pbVar5 = (byte *)FUN_00067b60(param_3);\n  bVar1 = *pbVar5;\n  param_1[0xf] = 0;\n  param_1[0xe] = param_1 + 0x10;\n  *(undefined1 *)(param_1 + 0x10) = 0;\n  param_1[0x14] = 0;\n  param_1[0x15] = 0;\n  param_1[0x16] = 0;\n  param_1[0x17] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6);\n  *param_1 = &DAT_003895e8;\n                    \n  FUN_001ee9c0(param_1 + 0xe,param_3 + 4);\n  if (param_1[9] != 0 || param_1[8] != 0) {\n    iVar6 = FUN_001f0c10(puVar9,0x28,0);\n    iVar7 = FUN_001f0c10(puVar9,0x29,0);\n    if ((iVar6 != -1) && (iVar7 != -1)) {\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    \n                    \n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }\n  }\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "undefined4 *puVar9;" (type_identifier "undefined4") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined4 *local_34;" (type_identifier "undefined4") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "size_t local_30;" (primitive_type "size_t") (identifier "local_30") (; ";")) (declaration "undefined4 local_2c [7];" (type_identifier "undefined4") (array_declarator "local_2c [7]" (identifier "local_2c") ([ "[") (number_literal "7") (] "]")) (; ";")) (expression_statement "*param_1 = &DAT_0038897c;" (assignment_expression "*param_1 = &DAT_0038897c" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (pointer_expression "&DAT_0038897c" (& "&") (identifier "DAT_0038897c"))) (; ";")) (expression_statement "param_1[1] = param_1 + 3;" (assignment_expression "param_1[1] = param_1 + 3" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "puVar9 = param_1 + 1;" (assignment_expression "puVar9 = param_1 + 1" (identifier "puVar9") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_000513a0(puVar9,*param_2,param_2[1] + *param_2,0);" (call_expression "FUN_000513a0(puVar9,*param_2,param_2[1] + *param_2,0)" (identifier "FUN_000513a0") (argument_list "(puVar9,*param_2,param_2[1] + *param_2,0)" (( "(") (identifier "puVar9") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (binary_expression "param_2[1] + *param_2" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (+ "+") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "param_1[7] = param_3;" (assignment_expression "param_1[7] = param_3" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "param_1[10] = 0xffffffff;" (assignment_expression "param_1[10] = 0xffffffff" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "param_1[8] = param_4;" (assignment_expression "param_1[8] = param_4" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "param_1[9] = param_5;" (assignment_expression "param_1[9] = param_5" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "param_5")) (; ";")) (expression_statement "param_1[0xc] = 0;" (assignment_expression "param_1[0xc] = 0" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0xd] = 0;" (assignment_expression "param_1[0xd] = 0" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0x80 | 1;" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0x80 | 1" (pointer_expression "*(byte *)(param_1 + 0xb)" (* "*") (cast_expression "(byte *)(param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (= "=") (binary_expression "*(byte *)(param_1 + 0xb) & 0x80 | 1" (binary_expression "*(byte *)(param_1 + 0xb) & 0x80" (pointer_expression "*(byte *)(param_1 + 0xb)" (* "*") (cast_expression "(byte *)(param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "0x80")) (| "|") (number_literal "1"))) (; ";")) (if_statement "if (param_3 == 0) {\n    param_1[0xf] = 0;\n    param_1[0xe] = param_1 + 0x10;\n    *(undefined1 *)(param_1 + 0x10) = 0;\n    *param_1 = &DAT_003895e8;\n    param_1[0x14] = 0;\n    param_1[0x15] = 0;\n    param_1[0x16] = 0;\n    param_1[0x17] = 0;\n                    \n    FUN_001ee9c0(param_1 + 0xe,param_2);\n    return;\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    param_1[0xf] = 0;\n    param_1[0xe] = param_1 + 0x10;\n    *(undefined1 *)(param_1 + 0x10) = 0;\n    *param_1 = &DAT_003895e8;\n    param_1[0x14] = 0;\n    param_1[0x15] = 0;\n    param_1[0x16] = 0;\n    param_1[0x17] = 0;\n                    \n    FUN_001ee9c0(param_1 + 0xe,param_2);\n    return;\n  }" ({ "{") (expression_statement "param_1[0xf] = 0;" (assignment_expression "param_1[0xf] = 0" (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0xe] = param_1 + 0x10;" (assignment_expression "param_1[0xe] = param_1 + 0x10" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x10) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x10) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_1 = &DAT_003895e8;" (assignment_expression "*param_1 = &DAT_003895e8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (pointer_expression "&DAT_003895e8" (& "&") (identifier "DAT_003895e8"))) (; ";")) (expression_statement "param_1[0x14] = 0;" (assignment_expression "param_1[0x14] = 0" (subscript_expression "param_1[0x14]" (identifier "param_1") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x15] = 0;" (assignment_expression "param_1[0x15] = 0" (subscript_expression "param_1[0x15]" (identifier "param_1") ([ "[") (number_literal "0x15") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x16] = 0;" (assignment_expression "param_1[0x16] = 0" (subscript_expression "param_1[0x16]" (identifier "param_1") ([ "[") (number_literal "0x16") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x17] = 0;" (assignment_expression "param_1[0x17] = 0" (subscript_expression "param_1[0x17]" (identifier "param_1") ([ "[") (number_literal "0x17") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_001ee9c0(param_1 + 0xe,param_2);" (call_expression "FUN_001ee9c0(param_1 + 0xe,param_2)" (identifier "FUN_001ee9c0") (argument_list "(param_1 + 0xe,param_2)" (( "(") (binary_expression "param_1 + 0xe" (identifier "param_1") (+ "+") (number_literal "0xe")) (, ",") (identifier "param_2") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*(int *)(param_3 + 0x3c) = *(int *)(param_3 + 0x3c) + 1;" (assignment_expression "*(int *)(param_3 + 0x3c) = *(int *)(param_3 + 0x3c) + 1" (pointer_expression "*(int *)(param_3 + 0x3c)" (* "*") (cast_expression "(int *)(param_3 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x3c)" (( "(") (binary_expression "param_3 + 0x3c" (identifier "param_3") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (binary_expression "*(int *)(param_3 + 0x3c) + 1" (pointer_expression "*(int *)(param_3 + 0x3c)" (* "*") (cast_expression "(int *)(param_3 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x3c)" (( "(") (binary_expression "param_3 + 0x3c" (identifier "param_3") (+ "+") (number_literal "0x3c")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar4 = FUN_00067b80(param_3);" (assignment_expression "uVar4 = FUN_00067b80(param_3)" (identifier "uVar4") (= "=") (call_expression "FUN_00067b80(param_3)" (identifier "FUN_00067b80") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";")) (expression_statement "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5);" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5)" (pointer_expression "*(byte *)(param_1 + 0xb)" (* "*") (cast_expression "(byte *)(param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (= "=") (binary_expression "*(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5)" (binary_expression "*(byte *)(param_1 + 0xb) & 0xdf" (pointer_expression "*(byte *)(param_1 + 0xb)" (* "*") (cast_expression "(byte *)(param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "0xdf")) (| "|") (call_expression "(byte)((uVar4 & 1) << 5)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar4 & 1) << 5)" (( "(") (binary_expression "(uVar4 & 1) << 5" (parenthesized_expression "(uVar4 & 1)" (( "(") (binary_expression "uVar4 & 1" (identifier "uVar4") (& "&") (number_literal "1")) () ")")) (<< "<<") (number_literal "5")) () ")"))))) (; ";")) (expression_statement "pbVar5 = (byte *)FUN_00067b60(param_3);" (assignment_expression "pbVar5 = (byte *)FUN_00067b60(param_3)" (identifier "pbVar5") (= "=") (cast_expression "(byte *)FUN_00067b60(param_3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00067b60(param_3)" (identifier "FUN_00067b60") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")"))))) (; ";")) (expression_statement "bVar1 = *pbVar5;" (assignment_expression "bVar1 = *pbVar5" (identifier "bVar1") (= "=") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5"))) (; ";")) (expression_statement "param_1[0xf] = 0;" (assignment_expression "param_1[0xf] = 0" (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0xe] = param_1 + 0x10;" (assignment_expression "param_1[0xe] = param_1 + 0x10" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x10) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x10) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x14] = 0;" (assignment_expression "param_1[0x14] = 0" (subscript_expression "param_1[0x14]" (identifier "param_1") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x15] = 0;" (assignment_expression "param_1[0x15] = 0" (subscript_expression "param_1[0x15]" (identifier "param_1") ([ "[") (number_literal "0x15") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x16] = 0;" (assignment_expression "param_1[0x16] = 0" (subscript_expression "param_1[0x16]" (identifier "param_1") ([ "[") (number_literal "0x16") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x17] = 0;" (assignment_expression "param_1[0x17] = 0" (subscript_expression "param_1[0x17]" (identifier "param_1") ([ "[") (number_literal "0x17") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6);" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6)" (pointer_expression "*(byte *)(param_1 + 0xb)" (* "*") (cast_expression "(byte *)(param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (= "=") (binary_expression "*(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6)" (binary_expression "*(byte *)(param_1 + 0xb) & 0xbf" (pointer_expression "*(byte *)(param_1 + 0xb)" (* "*") (cast_expression "(byte *)(param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "0xbf")) (| "|") (call_expression "(byte)((bVar1 & 1) << 6)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((bVar1 & 1) << 6)" (( "(") (binary_expression "(bVar1 & 1) << 6" (parenthesized_expression "(bVar1 & 1)" (( "(") (binary_expression "bVar1 & 1" (identifier "bVar1") (& "&") (number_literal "1")) () ")")) (<< "<<") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "*param_1 = &DAT_003895e8;" (assignment_expression "*param_1 = &DAT_003895e8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (pointer_expression "&DAT_003895e8" (& "&") (identifier "DAT_003895e8"))) (; ";")) (expression_statement "FUN_001ee9c0(param_1 + 0xe,param_3 + 4);" (call_expression "FUN_001ee9c0(param_1 + 0xe,param_3 + 4)" (identifier "FUN_001ee9c0") (argument_list "(param_1 + 0xe,param_3 + 4)" (( "(") (binary_expression "param_1 + 0xe" (identifier "param_1") (+ "+") (number_literal "0xe")) (, ",") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))) (; ";")) (if_statement "if (param_1[9] != 0 || param_1[8] != 0) {\n    iVar6 = FUN_001f0c10(puVar9,0x28,0);\n    iVar7 = FUN_001f0c10(puVar9,0x29,0);\n    if ((iVar6 != -1) && (iVar7 != -1)) {\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    \n                    \n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }\n  }" (if "if") (parenthesized_expression "(param_1[9] != 0 || param_1[8] != 0)" (( "(") (binary_expression "param_1[9] != 0 || param_1[8] != 0" (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "param_1[8] != 0" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n    iVar6 = FUN_001f0c10(puVar9,0x28,0);\n    iVar7 = FUN_001f0c10(puVar9,0x29,0);\n    if ((iVar6 != -1) && (iVar7 != -1)) {\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    \n                    \n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }\n  }" ({ "{") (expression_statement "iVar6 = FUN_001f0c10(puVar9,0x28,0);" (assignment_expression "iVar6 = FUN_001f0c10(puVar9,0x28,0)" (identifier "iVar6") (= "=") (call_expression "FUN_001f0c10(puVar9,0x28,0)" (identifier "FUN_001f0c10") (argument_list "(puVar9,0x28,0)" (( "(") (identifier "puVar9") (, ",") (number_literal "0x28") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "iVar7 = FUN_001f0c10(puVar9,0x29,0);" (assignment_expression "iVar7 = FUN_001f0c10(puVar9,0x29,0)" (identifier "iVar7") (= "=") (call_expression "FUN_001f0c10(puVar9,0x29,0)" (identifier "FUN_001f0c10") (argument_list "(puVar9,0x29,0)" (( "(") (identifier "puVar9") (, ",") (number_literal "0x29") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if ((iVar6 != -1) && (iVar7 != -1)) {\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    \n                    \n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }" (if "if") (parenthesized_expression "((iVar6 != -1) && (iVar7 != -1))" (( "(") (binary_expression "(iVar6 != -1) && (iVar7 != -1)" (parenthesized_expression "(iVar6 != -1)" (( "(") (binary_expression "iVar6 != -1" (identifier "iVar6") (!= "!=") (number_literal "-1")) () ")")) (&& "&&") (parenthesized_expression "(iVar7 != -1)" (( "(") (binary_expression "iVar7 != -1" (identifier "iVar7") (!= "!=") (number_literal "-1")) () ")"))) () ")")) (compound_statement "{\n      uVar2 = param_1[2];\n      uVar4 = iVar6 + 1;\n      if (uVar2 < uVar4) {\n                    \n                    \n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }\n      uVar8 = iVar7 - uVar4;\n      if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }\n      local_34 = local_2c;\n      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);\n      puVar9 = (undefined4 *)param_1[0xe];\n      if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }\n      local_30 = 0;\n      *(undefined1 *)local_34 = 0;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }\n    }" ({ "{") (expression_statement "uVar2 = param_1[2];" (assignment_expression "uVar2 = param_1[2]" (identifier "uVar2") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar4 = iVar6 + 1;" (assignment_expression "uVar4 = iVar6 + 1" (identifier "uVar4") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar2 < uVar4) {\n                    \n                    \n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }" (if "if") (parenthesized_expression "(uVar2 < uVar4)" (( "(") (binary_expression "uVar2 < uVar4" (identifier "uVar2") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\n                    \n                    \n        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);\n      }" ({ "{") (expression_statement "FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2);" (call_expression "FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2)" (identifier "FUN_0022c840") (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"\n                     ,uVar4,uVar2)" (( "(") (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" (" """) (string_content "%s: __pos (which is %zu) > this->size() (which is %zu)") (" """)) (, ",") (string_literal ""basic_string::substr"" (" """) (string_content "basic_string::substr") (" """)) (, ",") (identifier "uVar4") (, ",") (identifier "uVar2") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar8 = iVar7 - uVar4;" (assignment_expression "uVar8 = iVar7 - uVar4" (identifier "uVar8") (= "=") (binary_expression "iVar7 - uVar4" (identifier "iVar7") (- "-") (identifier "uVar4"))) (; ";")) (if_statement "if (uVar2 - uVar4 <= iVar7 - uVar4) {\n        uVar8 = uVar2 - uVar4;\n      }" (if "if") (parenthesized_expression "(uVar2 - uVar4 <= iVar7 - uVar4)" (( "(") (binary_expression "uVar2 - uVar4 <= iVar7 - uVar4" (binary_expression "uVar2 - uVar4" (identifier "uVar2") (- "-") (identifier "uVar4")) (<= "<=") (binary_expression "iVar7 - uVar4" (identifier "iVar7") (- "-") (identifier "uVar4"))) () ")")) (compound_statement "{\n        uVar8 = uVar2 - uVar4;\n      }" ({ "{") (expression_statement "uVar8 = uVar2 - uVar4;" (assignment_expression "uVar8 = uVar2 - uVar4" (identifier "uVar8") (= "=") (binary_expression "uVar2 - uVar4" (identifier "uVar2") (- "-") (identifier "uVar4"))) (; ";")) (} "}"))) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" (identifier "local_34") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);" (call_expression "FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0)" (identifier "FUN_00050e40") (argument_list "(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (binary_expression "param_1[1] + uVar4" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "uVar4")) (, ",") (binary_expression "uVar8 + param_1[1] + uVar4" (binary_expression "uVar8 + param_1[1]" (identifier "uVar8") (+ "+") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (+ "+") (identifier "uVar4")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "puVar9 = (undefined4 *)param_1[0xe];" (assignment_expression "puVar9 = (undefined4 *)param_1[0xe]" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)param_1[0xe]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")))) (; ";")) (if_statement "if (local_34 == local_2c) {\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }\n      else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }" (if "if") (parenthesized_expression "(local_34 == local_2c)" (( "(") (binary_expression "local_34 == local_2c" (identifier "local_34") (== "==") (identifier "local_2c")) () ")")) (compound_statement "{\n        if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }\n        param_1[0xf] = local_30;\n        *(undefined1 *)((int)puVar9 + local_30) = 0;\n      }" ({ "{") (if_statement "if (local_30 != 0) {\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }" (if "if") (parenthesized_expression "(local_30 != 0)" (( "(") (binary_expression "local_30 != 0" (identifier "local_30") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n        }" ({ "{") (if_statement "if (local_30 == 1) {\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }\n          else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }" (if "if") (parenthesized_expression "(local_30 == 1)" (( "(") (binary_expression "local_30 == 1" (identifier "local_30") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            *(undefined1 *)puVar9 = (undefined1)local_2c[0];\n            puVar9 = (undefined4 *)param_1[0xe];\n          }" ({ "{") (expression_statement "*(undefined1 *)puVar9 = (undefined1)local_2c[0];" (assignment_expression "*(undefined1 *)puVar9 = (undefined1)local_2c[0]" (pointer_expression "*(undefined1 *)puVar9" (* "*") (cast_expression "(undefined1 *)puVar9" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar9"))) (= "=") (cast_expression "(undefined1)local_2c[0]" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (subscript_expression "local_2c[0]" (identifier "local_2c") ([ "[") (number_literal "0") (] "]")))) (; ";")) (expression_statement "puVar9 = (undefined4 *)param_1[0xe];" (assignment_expression "puVar9 = (undefined4 *)param_1[0xe]" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)param_1[0xe]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }" (else "else") (compound_statement "{\n            memcpy(puVar9,local_2c,local_30);\n            puVar9 = (undefined4 *)param_1[0xe];\n          }" ({ "{") (expression_statement "memcpy(puVar9,local_2c,local_30);" (call_expression "memcpy(puVar9,local_2c,local_30)" (identifier "memcpy") (argument_list "(puVar9,local_2c,local_30)" (( "(") (identifier "puVar9") (, ",") (identifier "local_2c") (, ",") (identifier "local_30") () ")"))) (; ";")) (expression_statement "puVar9 = (undefined4 *)param_1[0xe];" (assignment_expression "puVar9 = (undefined4 *)param_1[0xe]" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)param_1[0xe]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")))) (; ";")) (} "}")))) (} "}"))) (expression_statement "param_1[0xf] = local_30;" (assignment_expression "param_1[0xf] = local_30" (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "local_30")) (; ";")) (expression_statement "*(undefined1 *)((int)puVar9 + local_30) = 0;" (assignment_expression "*(undefined1 *)((int)puVar9 + local_30) = 0" (pointer_expression "*(undefined1 *)((int)puVar9 + local_30)" (* "*") (cast_expression "(undefined1 *)((int)puVar9 + local_30)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar9 + local_30)" (( "(") (binary_expression "(int)puVar9 + local_30" (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9")) (+ "+") (identifier "local_30")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }" (else "else") (if_statement "if (puVar9 == param_1 + 0x10) {\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }\n      else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }" (if "if") (parenthesized_expression "(puVar9 == param_1 + 0x10)" (( "(") (binary_expression "puVar9 == param_1 + 0x10" (identifier "puVar9") (== "==") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10"))) () ")")) (compound_statement "{\n        param_1[0xe] = local_34;\n        param_1[0xf] = local_30;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n      }" ({ "{") (expression_statement "param_1[0xe] = local_34;" (assignment_expression "param_1[0xe] = local_34" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "local_34")) (; ";")) (expression_statement "param_1[0xf] = local_30;" (assignment_expression "param_1[0xf] = local_30" (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "local_30")) (; ";")) (expression_statement "param_1[0x10] = local_2c[0];" (assignment_expression "param_1[0x10] = local_2c[0]" (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]")) (= "=") (subscript_expression "local_2c[0]" (identifier "local_2c") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" (identifier "local_34") (= "=") (identifier "local_2c")) (; ";")) (} "}")) (else_clause "else {\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }" (else "else") (compound_statement "{\n        param_1[0xf] = local_30;\n        uVar3 = param_1[0x10];\n        param_1[0xe] = local_34;\n        param_1[0x10] = local_2c[0];\n        local_34 = local_2c;\n        if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }\n      }" ({ "{") (expression_statement "param_1[0xf] = local_30;" (assignment_expression "param_1[0xf] = local_30" (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "local_30")) (; ";")) (expression_statement "uVar3 = param_1[0x10];" (assignment_expression "uVar3 = param_1[0x10]" (identifier "uVar3") (= "=") (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (expression_statement "param_1[0xe] = local_34;" (assignment_expression "param_1[0xe] = local_34" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "local_34")) (; ";")) (expression_statement "param_1[0x10] = local_2c[0];" (assignment_expression "param_1[0x10] = local_2c[0]" (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]")) (= "=") (subscript_expression "local_2c[0]" (identifier "local_2c") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" (identifier "local_34") (= "=") (identifier "local_2c")) (; ";")) (if_statement "if (puVar9 != (undefined4 *)0x0) {\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }" (if "if") (parenthesized_expression "(puVar9 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar9 != (undefined4 *)0x0" (identifier "puVar9") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          local_34 = puVar9;\n          local_2c[0] = uVar3;\n        }" ({ "{") (expression_statement "local_34 = puVar9;" (assignment_expression "local_34 = puVar9" (identifier "local_34") (= "=") (identifier "puVar9")) (; ";")) (expression_statement "local_2c[0] = uVar3;" (assignment_expression "local_2c[0] = uVar3" (subscript_expression "local_2c[0]" (identifier "local_2c") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (} "}"))) (} "}")))))) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)local_34 = 0;" (assignment_expression "*(undefined1 *)local_34 = 0" (pointer_expression "*(undefined1 *)local_34" (* "*") (cast_expression "(undefined1 *)local_34" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_34"))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n      }" (if "if") (parenthesized_expression "(local_34 != local_2c)" (( "(") (binary_expression "local_34 != local_2c" (identifier "local_34") (!= "!=") (identifier "local_2c")) () ")")) (compound_statement "{\n        FUN_001e6db0(local_34);\n      }" ({ "{") (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" (identifier "FUN_001e6db0") (argument_list "(local_34)" (( "(") (identifier "local_34") () ")"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */
/* DWARF original prototype: void Dynobj(Dynobj * this, string * name, Input_file * input_file,
   off_t offset) */

void __thiscall gold::function_1::function_1(function_1 *this,type_1 *name,type_2 *var_11,type_3 offset)

{
  type_1 *this_00;
  int *piVar1;
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
  *var_5;
  type_4 var_21;
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
  *var_6;
  type_5 var_16;
  type_4 var_20;
  type_6 sVar6;
  bool var_14;
  type_7 *pPVar8;
  int var_18;
  int var_19;
  type_4 var_24;
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
  *var_7;
  type_8 var_10;
  basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> var_8;
  
  (this->super_Object)._vptr_Object = (type_9 **)&DAT_0038897c;
  (this->super_Object).name_._M_dataplus._M_p = (type_8)&(this->super_Object).name_.field_2;
  var_10 = (name->_M_dataplus)._M_p;
  this_00 = &(this->super_Object).name_;
  std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::
  var_9<var_2*>(this_00,var_10,var_10 + name->_M_string_length,0);
  (this->super_Object).input_file_ = var_11;
  (this->super_Object).shnum_ = 0xffffffff;
  (this->super_Object).offset_ = offset;
  (this->super_Object).xindex_ = (type_10 *)0x0;
  (this->super_Object).compressed_sections_ = (type_11 *)0x0;
  (this->super_Object).field_0x2c = (this->super_Object).field_0x2c & 0x80 | 1;
  if (var_11 == (type_2 *)0x0) {
    (this->soname_)._M_string_length = 0;
    (this->soname_)._M_dataplus._M_p = (type_8)&(this->soname_).field_2;
    (this->soname_).field_2._M_local_buf[0] = '\0';
    (this->super_Object)._vptr_Object = (type_9 **)&DAT_003895e8;
    (this->needed_).
    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_start = (type_8)0x0;
    (this->needed_).
    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 = (type_8)0x0;
    (this->needed_).
    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 = (type_8)0x0;
    this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;
                    /* try { // try from 001a369d to 001a36a1 has its CatchHandler @ 001a372c */
    std::string::var_12((type_1 *)&this->soname_,(type_1 *)name);
    return;
  }
  piVar1 = &(var_11->file_).object_count_;
  *piVar1 = *piVar1 + 1;
                    /* try { // try from 001a34de to 001a3501 has its CatchHandler @ 001a3725 */
  var_14 = type_2::var_13(var_11);
  (this->super_Object).field_0x2c = (this->super_Object).field_0x2c & 0xdf | var_14 << 5;
  pPVar8 = type_2::var_15(var_11);
  var_14 = pPVar8->as_needed_;
  var_5 = &(this->soname_).field_2;
  (this->soname_)._M_string_length = 0;
  (this->soname_)._M_dataplus._M_p = (type_8)var_5;
  (this->soname_).field_2._M_local_buf[0] = '\0';
  var_16 = (this->super_Object).field_0x2c;
  (this->needed_).
  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_start = (type_8)0x0;
  (this->needed_).
  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 = (type_8)0x0;
  (this->needed_).
  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 = (type_8)0x0;
  this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;
  (this->super_Object).field_0x2c = var_16 & 0xbf | (type_5)((var_14 & 1) << 6);
  (this->super_Object)._vptr_Object = (type_9 **)&DAT_003895e8;
                    /* try { // try from 001a3564 to 001a35e8 has its CatchHandler @ 001a3733 */
  std::string::var_12((type_1 *)&this->soname_,(type_1 *)&var_11->found_name_);
  if (*(int *)((int)&(this->super_Object).offset_ + 4) != 0 ||
      (int)(this->super_Object).offset_ != 0) {
    var_18 = std::string::var_17((type_1 *)this_00,'(',0);
    var_19 = std::string::var_17((type_1 *)this_00,')',0);
    if ((var_18 != -1) && (var_19 != -1)) {
      var_20 = (this->super_Object).name_._M_string_length;
      var_21 = var_18 + 1;
      if (var_20 < var_21) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */
        std::var_22
                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",
                   var_21,var_20);
      }
      var_6 = &var_8.field_2;
      var_10 = (this->super_Object).name_._M_dataplus._M_p + var_21;
      var_24 = var_19 - var_21;
      if (var_20 - var_21 <= var_19 - var_21) {
        var_24 = var_20 - var_21;
      }
      var_8._M_dataplus._M_p = (type_8)var_6;
      std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::
      var_9<var_23*>(&var_8,var_10,var_10 + var_24,0);
      var_7 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                *)(this->soname_)._M_dataplus._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
           *)var_8._M_dataplus._M_p == var_6) {
        if (var_8._M_string_length != 0) {
          if (var_8._M_string_length == 1) {
            var_7->_M_local_buf[0] = var_8.field_2._M_local_buf[0];
            var_7 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                      *)(this->soname_)._M_dataplus._M_p;
          }
          else {
            var_25(var_7,var_6,var_8._M_string_length);
            var_7 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                      *)(this->soname_)._M_dataplus._M_p;
          }
        }
        (this->soname_)._M_string_length = var_8._M_string_length;
        var_7->_M_local_buf[var_8._M_string_length] = '\0';
      }
      else if (var_7 == var_5) {
        (this->soname_)._M_dataplus._M_p = var_8._M_dataplus._M_p;
        (this->soname_)._M_string_length = var_8._M_string_length;
        (this->soname_).field_2._M_allocated_capacity = var_8.field_2._M_allocated_capacity;
        var_8._M_dataplus._M_p = (type_8)var_6;
      }
      else {
        (this->soname_)._M_string_length = var_8._M_string_length;
        sVar6 = (this->soname_).field_2._M_allocated_capacity;
        (this->soname_)._M_dataplus._M_p = var_8._M_dataplus._M_p;
        (this->soname_).field_2._M_allocated_capacity = var_8.field_2._M_allocated_capacity;
        var_8._M_dataplus._M_p = (type_8)var_6;
        if (var_7 != (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                       *)0x0) {
          var_8._M_dataplus._M_p = (type_8)var_7;
          var_8.field_2._M_allocated_capacity = sVar6;
        }
      }
      var_8._M_string_length = 0;
      *var_8._M_dataplus._M_p = '\0';
      if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
           *)var_8._M_dataplus._M_p != &var_8.field_2) {
        var_26(var_8._M_dataplus._M_p);
      }
    }
  }
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

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

{
  byte bVar1;
  uint uVar2;
  undefined4 uVar3;
  uint uVar4;
  byte *pbVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  undefined4 *puVar9;
  undefined4 *local_34;
  size_t local_30;
  undefined4 local_2c [7];
  
  *param_1 = &DAT_0038897c;
  param_1[1] = param_1 + 3;
  puVar9 = param_1 + 1;
  FUN_000513a0(puVar9,*param_2,param_2[1] + *param_2,0);
  param_1[7] = param_3;
  param_1[10] = 0xffffffff;
  param_1[8] = param_4;
  param_1[9] = param_5;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0x80 | 1;
  if (param_3 == 0) {
    param_1[0xf] = 0;
    param_1[0xe] = param_1 + 0x10;
    *(undefined1 *)(param_1 + 0x10) = 0;
    *param_1 = &DAT_003895e8;
    param_1[0x14] = 0;
    param_1[0x15] = 0;
    param_1[0x16] = 0;
    param_1[0x17] = 0;
                    /* try { // try from 001a369d to 001a36a1 has its CatchHandler @ 001a372c */
    FUN_001ee9c0(param_1 + 0xe,param_2);
    return;
  }
  *(int *)(param_3 + 0x3c) = *(int *)(param_3 + 0x3c) + 1;
                    /* try { // try from 001a34de to 001a3501 has its CatchHandler @ 001a3725 */
  uVar4 = FUN_00067b80(param_3);
  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xdf | (byte)((uVar4 & 1) << 5);
  pbVar5 = (byte *)FUN_00067b60(param_3);
  bVar1 = *pbVar5;
  param_1[0xf] = 0;
  param_1[0xe] = param_1 + 0x10;
  *(undefined1 *)(param_1 + 0x10) = 0;
  param_1[0x14] = 0;
  param_1[0x15] = 0;
  param_1[0x16] = 0;
  param_1[0x17] = 0;
  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xbf | (byte)((bVar1 & 1) << 6);
  *param_1 = &DAT_003895e8;
                    /* try { // try from 001a3564 to 001a35e8 has its CatchHandler @ 001a3733 */
  FUN_001ee9c0(param_1 + 0xe,param_3 + 4);
  if (param_1[9] != 0 || param_1[8] != 0) {
    iVar6 = FUN_001f0c10(puVar9,0x28,0);
    iVar7 = FUN_001f0c10(puVar9,0x29,0);
    if ((iVar6 != -1) && (iVar7 != -1)) {
      uVar2 = param_1[2];
      uVar4 = iVar6 + 1;
      if (uVar2 < uVar4) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001a3720 to 001a3724 has its CatchHandler @ 001a3733 */
        FUN_0022c840("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr"
                     ,uVar4,uVar2);
      }
      uVar8 = iVar7 - uVar4;
      if (uVar2 - uVar4 <= iVar7 - uVar4) {
        uVar8 = uVar2 - uVar4;
      }
      local_34 = local_2c;
      FUN_00050e40(&local_34,param_1[1] + uVar4,uVar8 + param_1[1] + uVar4,0);
      puVar9 = (undefined4 *)param_1[0xe];
      if (local_34 == local_2c) {
        if (local_30 != 0) {
          if (local_30 == 1) {
            *(undefined1 *)puVar9 = (undefined1)local_2c[0];
            puVar9 = (undefined4 *)param_1[0xe];
          }
          else {
            memcpy(puVar9,local_2c,local_30);
            puVar9 = (undefined4 *)param_1[0xe];
          }
        }
        param_1[0xf] = local_30;
        *(undefined1 *)((int)puVar9 + local_30) = 0;
      }
      else if (puVar9 == param_1 + 0x10) {
        param_1[0xe] = local_34;
        param_1[0xf] = local_30;
        param_1[0x10] = local_2c[0];
        local_34 = local_2c;
      }
      else {
        param_1[0xf] = local_30;
        uVar3 = param_1[0x10];
        param_1[0xe] = local_34;
        param_1[0x10] = local_2c[0];
        local_34 = local_2c;
        if (puVar9 != (undefined4 *)0x0) {
          local_34 = puVar9;
          local_2c[0] = uVar3;
        }
      }
      local_30 = 0;
      *(undefined1 *)local_34 = 0;
      if (local_34 != local_2c) {
        FUN_001e6db0(local_34);
      }
    }
  }
  return;
}

