
/* DWARF original prototype: string get_qualified_name(Gdb_index_info_reader * this, Dwarf_die *
   die, Dwarf_die * context) */

string * __thiscall
gold::Gdb_index_info_reader::get_qualified_name
          (string *__return_storage_ptr__,Gdb_index_info_reader *this,Dwarf_die *die,
          Dwarf_die *context)

{
  Abbrev_code *pAVar1;
  undefined8 uVar2;
  _Hash_node_base *p_Var3;
  ulong uVar4;
  size_t sVar5;
  _Hash_node_base *p_Var6;
  ulong uVar7;
  _Hash_node_base *p_Var8;
  __bucket_type p_Var9;
  string *full_name;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *__dest;
  __bucket_type p_Var10;
  char *__s;
  _Hash_node_base *die_offset;
  string local_58;
  
  (__return_storage_ptr__->field_2)._M_local_buf[0] = '\0';
  __s = die->name_;
  (__return_storage_ptr__->_M_dataplus)._M_p = (pointer)&__return_storage_ptr__->field_2;
  __return_storage_ptr__->_M_string_length = 0;
  if ((_Hash_node_base *)__s == (_Hash_node_base *)0x0) {
    Dwarf_die::set_name(die);
    __s = die->name_;
  }
  die_offset = (_Hash_node_base *)0x0;
  if (context != (Dwarf_die *)0x0) {
    die_offset = (_Hash_node_base *)context->die_offset_;
  }
  if (die->attributes_read_ == false) {
    Dwarf_die::read_attributes(die);
    p_Var6 = (_Hash_node_base *)die->specification_;
    if (p_Var6 == (_Hash_node_base *)0x0) {
      if (die->attributes_read_ == false) {
        Dwarf_die::read_attributes(die);
      }
      goto LAB_00196666;
    }
  }
  else {
    p_Var6 = (_Hash_node_base *)die->specification_;
    if (p_Var6 == (_Hash_node_base *)0x0) {
LAB_00196666:
      p_Var6 = (_Hash_node_base *)die->abstract_origin_;
    }
  }
  if (0 < (long)p_Var6) {
    uVar4 = (this->declarations_)._M_h._M_bucket_count;
    uVar7 = (ulong)p_Var6 % uVar4;
    p_Var10 = (this->declarations_)._M_h._M_buckets[uVar7];
    if (p_Var10 != (__bucket_type)0x0) {
      p_Var8 = p_Var10->_M_nxt[1]._M_nxt;
      p_Var3 = p_Var10->_M_nxt;
      while (p_Var9 = p_Var3, p_Var6 != p_Var8) {
        p_Var3 = p_Var9->_M_nxt;
        if ((p_Var3 == (_Hash_node_base *)0x0) ||
           (p_Var8 = p_Var3[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var8 % uVar4))
        goto LAB_0019652e;
      }
      p_Var6 = p_Var10->_M_nxt;
      if (p_Var6 != (_Hash_node_base *)0x0) {
        __s = (char *)p_Var6[3]._M_nxt;
        die_offset = p_Var6[2]._M_nxt;
        pAVar1 = die->abbrev_code_;
        goto joined_r0x001966ef;
      }
    }
  }
LAB_0019652e:
  pAVar1 = die->abbrev_code_;
joined_r0x001966ef:
  if ((_Hash_node_base *)__s == (_Hash_node_base *)0x0) {
    if (pAVar1 == (Abbrev_code *)0x0) {
      return __return_storage_ptr__;
    }
    if (pAVar1->tag != 0x39) {
      return __return_storage_ptr__;
    }
    __s = "(anonymous namespace)";
  }
  else if ((pAVar1 != (Abbrev_code *)0x0) && (pAVar1->tag == 0x28)) {
    uVar4 = (this->declarations_)._M_h._M_bucket_count;
    uVar7 = (ulong)die_offset % uVar4;
    p_Var10 = (this->declarations_)._M_h._M_buckets[uVar7];
    if (p_Var10 != (__bucket_type)0x0) {
      p_Var6 = p_Var10->_M_nxt[1]._M_nxt;
      p_Var8 = p_Var10->_M_nxt;
      while (p_Var9 = p_Var8, die_offset != p_Var6) {
        p_Var8 = p_Var9->_M_nxt;
        if ((p_Var8 == (_Hash_node_base *)0x0) ||
           (p_Var6 = p_Var8[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var6 % uVar4))
        goto LAB_00196549;
      }
      if (p_Var10->_M_nxt != (_Hash_node_base *)0x0) {
        die_offset = p_Var10->_M_nxt[2]._M_nxt;
      }
    }
  }
LAB_00196549:
  if ((long)die_offset < 1) goto LAB_001965fc;
                    /* try { // try from 00196560 to 00196828 has its CatchHandler @ 00196829 */
  get_context(&local_58,this,(off_t)die_offset);
  __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
            *)(__return_storage_ptr__->_M_dataplus)._M_p;
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)local_58._M_dataplus._M_p == &local_58.field_2) {
    if (local_58._M_string_length != 0) {
      if (local_58._M_string_length == 1) {
        __dest->_M_local_buf[0] = local_58.field_2._M_local_buf[0];
        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                  *)(__return_storage_ptr__->_M_dataplus)._M_p;
      }
      else {
        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);
        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                  *)(__return_storage_ptr__->_M_dataplus)._M_p;
      }
    }
    __return_storage_ptr__->_M_string_length = local_58._M_string_length;
    __dest->_M_local_buf[local_58._M_string_length] = '\0';
    uVar2 = local_58.field_2._M_allocated_capacity;
  }
  else {
    if (&__return_storage_ptr__->field_2 == __dest) {
      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;
      __return_storage_ptr__->_M_string_length = local_58._M_string_length;
      (__return_storage_ptr__->field_2)._M_allocated_capacity =
           local_58.field_2._M_allocated_capacity;
    }
    else {
      uVar2 = (__return_storage_ptr__->field_2)._M_allocated_capacity;
      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;
      __return_storage_ptr__->_M_string_length = local_58._M_string_length;
      (__return_storage_ptr__->field_2)._M_allocated_capacity =
           local_58.field_2._M_allocated_capacity;
      local_58._M_dataplus._M_p = (pointer)__dest;
      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                     *)0x0) goto LAB_001965b1;
    }
    local_58._M_dataplus._M_p = (pointer)&local_58.field_2;
    uVar2 = local_58.field_2._M_allocated_capacity;
  }
LAB_001965b1:
  local_58.field_2._M_allocated_capacity = uVar2;
  local_58._M_string_length = 0;
  *local_58._M_dataplus._M_p = '\0';
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)local_58._M_dataplus._M_p != &local_58.field_2) {
    operator_delete(local_58._M_dataplus._M_p);
  }
  if (0x7fffffffffffffff - __return_storage_ptr__->_M_string_length < 2) {
                    /* WARNING: Subroutine does not return */
    std::__throw_length_error("basic_string::append");
  }
  std::string::_M_append((string *)__return_storage_ptr__,"::",2);
LAB_001965fc:
  sVar5 = strlen(__s);
  if (sVar5 <= 0x7fffffffffffffff - __return_storage_ptr__->_M_string_length) {
    std::string::_M_append((string *)__return_storage_ptr__,__s,sVar5);
    return __return_storage_ptr__;
  }
                    /* WARNING: Subroutine does not return */
  std::__throw_length_error("basic_string::append");
}



undefined8 * FUN_001964c0(undefined8 *param_1,long param_2,long param_3,long param_4)

{
  int *piVar1;
  undefined8 uVar2;
  long lVar3;
  long *plVar4;
  size_t sVar5;
  ulong uVar6;
  ulong uVar7;
  ulong uVar8;
  long *plVar9;
  undefined8 *__dest;
  long *plVar10;
  char *__s;
  ulong uVar11;
  undefined8 *local_58;
  size_t local_50;
  undefined8 local_48 [3];
  
  *(undefined1 *)(param_1 + 2) = 0;
  __s = *(char **)(param_3 + 0x58);
  *param_1 = param_1 + 2;
  param_1[1] = 0;
  if (__s == (char *)0x0) {
    FUN_0026fd40(param_3);
    __s = *(char **)(param_3 + 0x58);
  }
  uVar11 = 0;
  if (param_4 != 0) {
    uVar11 = *(ulong *)(param_4 + 0x10);
  }
  if (*(char *)(param_3 + 0x50) == '\0') {
    FUN_0026fd20(param_3);
    uVar7 = *(ulong *)(param_3 + 0x80);
    if (uVar7 == 0) {
      if (*(char *)(param_3 + 0x50) == '\0') {
        FUN_0026fd20(param_3);
      }
      goto LAB_00196666;
    }
  }
  else {
    uVar7 = *(ulong *)(param_3 + 0x80);
    if (uVar7 == 0) {
LAB_00196666:
      uVar7 = *(ulong *)(param_3 + 0x88);
    }
  }
  if (0 < (long)uVar7) {
    uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);
    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);
    if (plVar10 != (long *)0x0) {
      uVar8 = ((long *)*plVar10)[1];
      plVar4 = (long *)*plVar10;
      while (plVar9 = plVar4, uVar7 != uVar8) {
        plVar4 = (long *)*plVar9;
        if ((plVar4 == (long *)0x0) ||
           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))
        goto LAB_0019652e;
      }
      lVar3 = *plVar10;
      if (lVar3 != 0) {
        __s = *(char **)(lVar3 + 0x18);
        uVar11 = *(ulong *)(lVar3 + 0x10);
        piVar1 = *(int **)(param_3 + 0x30);
        goto joined_r0x001966ef;
      }
    }
  }
LAB_0019652e:
  piVar1 = *(int **)(param_3 + 0x30);
joined_r0x001966ef:
  if (__s == (char *)0x0) {
    if (piVar1 == (int *)0x0) {
      return param_1;
    }
    if (*piVar1 != 0x39) {
      return param_1;
    }
    __s = "(anonymous namespace)";
  }
  else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {
    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);
    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);
    if (plVar10 != (long *)0x0) {
      uVar6 = ((long *)*plVar10)[1];
      plVar4 = (long *)*plVar10;
      while (plVar9 = plVar4, uVar11 != uVar6) {
        plVar4 = (long *)*plVar9;
        if ((plVar4 == (long *)0x0) ||
           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))
        goto LAB_00196549;
      }
      if (*plVar10 != 0) {
        uVar11 = *(ulong *)(*plVar10 + 0x10);
      }
    }
  }
LAB_00196549:
  if ((long)uVar11 < 1) goto LAB_001965fc;
                    /* try { // try from 00196560 to 00196828 has its CatchHandler @ 00196829 */
  FUN_001962c0(&local_58,param_2,uVar11);
  __dest = (undefined8 *)*param_1;
  if (local_58 == local_48) {
    if (local_50 != 0) {
      if (local_50 == 1) {
        *(undefined1 *)__dest = (undefined1)local_48[0];
        __dest = (undefined8 *)*param_1;
      }
      else {
        memcpy(__dest,local_58,local_50);
        __dest = (undefined8 *)*param_1;
      }
    }
    param_1[1] = local_50;
    *(undefined1 *)((long)__dest + local_50) = 0;
    uVar2 = local_48[0];
  }
  else {
    if (param_1 + 2 == __dest) {
      *param_1 = local_58;
      param_1[1] = local_50;
      param_1[2] = local_48[0];
    }
    else {
      uVar2 = param_1[2];
      *param_1 = local_58;
      param_1[1] = local_50;
      param_1[2] = local_48[0];
      local_58 = __dest;
      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;
    }
    local_58 = local_48;
    uVar2 = local_48[0];
  }
LAB_001965b1:
  local_48[0] = uVar2;
  local_50 = 0;
  *(undefined1 *)local_58 = 0;
  if (local_58 != local_48) {
    FUN_002a2980();
  }
  if (0x7fffffffffffffff - param_1[1] < 2) {
                    /* WARNING: Subroutine does not return */
    FUN_002e12b0("basic_string::append");
  }
  FUN_002aac00(param_1,&DAT_003593f9,2);
LAB_001965fc:
  sVar5 = strlen(__s);
  if (sVar5 <= 0x7fffffffffffffff - param_1[1]) {
    FUN_002aac00(param_1,__s,sVar5);
    return param_1;
  }
                    /* WARNING: Subroutine does not return */
  FUN_002e12b0("basic_string::append");
}


PUSH R15
LEA RAX,[RDI + 0x10]
MOV R15,RSI
PUSH R14
MOV R14,RCX
PUSH R13
PUSH R12
PUSH RBP
MOV RBP,RDX
PUSH RBX
MOV RBX,RDI
SUB RSP,0x38
MOV byte ptr [RDI + 0x10],0x0
MOV R12,qword ptr [RDX + 0x58]
MOV qword ptr [RSP + 0x8],RAX
MOV qword ptr [RDI],RAX
MOV qword ptr [RDI + 0x8],0x0
TEST R12,R12
JZ 0x001967b8
XOR R13D,R13D
TEST R14,R14
JZ 0x0019650b
MOV R13,qword ptr [R14 + 0x10]
CMP byte ptr [RBP + 0x50],0x0
JZ 0x00196640
MOV RCX,qword ptr [RBP + 0x80]
TEST RCX,RCX
JZ 0x00196666
TEST RCX,RCX
JG 0x00196676
MOV RAX,qword ptr [RBP + 0x30]
TEST R12,R12
JZ 0x001966f5
TEST RAX,RAX
JZ 0x00196549
CMP dword ptr [RAX],0x28
JZ 0x00196718
TEST R13,R13
JLE 0x001965fc
LEA RBP,[RSP + 0x10]
MOV RDX,R13
MOV RSI,R15
MOV RDI,RBP
CALL 0x001962c0
MOV RSI,qword ptr [RSP + 0x10]
LEA RAX,[RBP + 0x10]
MOV RDI,qword ptr [RBX]
MOV RDX,qword ptr [RSP + 0x18]
CMP RSI,RAX
JZ 0x001967d0
MOV RAX,qword ptr [RSP + 0x20]
CMP qword ptr [RSP + 0x8],RDI
JZ 0x00196798
MOV RCX,qword ptr [RBX + 0x10]
MOV qword ptr [RBX],RSI
MOV qword ptr [RBX + 0x8],RDX
MOV qword ptr [RBX + 0x10],RAX
TEST RDI,RDI
JZ 0x001967a3
MOV qword ptr [RSP + 0x10],RDI
MOV qword ptr [RSP + 0x20],RCX
MOV qword ptr [RSP + 0x18],0x0
ADD RBP,0x10
MOV byte ptr [RDI],0x0
MOV RDI,qword ptr [RSP + 0x10]
CMP RDI,RBP
JZ 0x001965d0
CALL 0x002a2980
MOV RAX,0x7fffffffffffffff
SUB RAX,qword ptr [RBX + 0x8]
CMP RAX,0x1
JBE 0x0019681d
MOV EDX,0x2
LEA RSI,[0x3593f9]
MOV RDI,RBX
CALL 0x002aac00
MOV RDI,R12
CALL 0x00144490
MOV RCX,0x7fffffffffffffff
SUB RCX,qword ptr [RBX + 0x8]
CMP RAX,RCX
JA 0x00196811
MOV RDX,RAX
MOV RSI,R12
MOV RDI,RBX
CALL 0x002aac00
ADD RSP,0x38
MOV RAX,RBX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,RBP
CALL 0x0026fd20
MOV RCX,qword ptr [RBP + 0x80]
TEST RCX,RCX
JNZ 0x00196525
CMP byte ptr [RBP + 0x50],0x0
JNZ 0x00196666
MOV RDI,RBP
CALL 0x0026fd20
MOV RCX,qword ptr [RBP + 0x88]
TEST RCX,RCX
JLE 0x0019652e
MOV R8,qword ptr [R15 + 0x958]
MOV RAX,RCX
XOR EDX,EDX
DIV R8
MOV RAX,qword ptr [R15 + 0x950]
MOV R9,qword ptr [RAX + RDX*0x8]
MOV R10,RDX
TEST R9,R9
JZ 0x0019652e
MOV RDI,qword ptr [R9]
MOV RSI,qword ptr [RDI + 0x8]
JMP 0x001966cf
MOV RAX,qword ptr [RDI]
TEST RAX,RAX
JZ 0x0019652e
MOV RSI,qword ptr [RAX + 0x8]
MOV R9,RDI
XOR EDX,EDX
MOV RDI,RAX
MOV RAX,RSI
DIV R8
CMP R10,RDX
JNZ 0x0019652e
CMP RCX,RSI
JNZ 0x001966a8
MOV RAX,qword ptr [R9]
TEST RAX,RAX
JZ 0x0019652e
MOV R12,qword ptr [RAX + 0x18]
MOV R13,qword ptr [RAX + 0x10]
MOV RAX,qword ptr [RBP + 0x30]
TEST R12,R12
JNZ 0x0019653b
TEST RAX,RAX
JZ 0x00196629
CMP dword ptr [RAX],0x39
JNZ 0x00196629
LEA R12,[0x33fcc6]
JMP 0x00196549
MOV RDI,qword ptr [R15 + 0x958]
MOV RAX,R13
XOR EDX,EDX
DIV RDI
MOV RAX,qword ptr [R15 + 0x950]
MOV R8,qword ptr [RAX + RDX*0x8]
MOV R9,RDX
TEST R8,R8
JZ 0x00196549
MOV RSI,qword ptr [R8]
MOV RCX,qword ptr [RSI + 0x8]
JMP 0x00196777
MOV RAX,qword ptr [RSI]
TEST RAX,RAX
JZ 0x00196549
MOV RCX,qword ptr [RAX + 0x8]
MOV R8,RSI
XOR EDX,EDX
MOV RSI,RAX
MOV RAX,RCX
DIV RDI
CMP R9,RDX
JNZ 0x00196549
CMP R13,RCX
JNZ 0x00196750
MOV RAX,qword ptr [R8]
TEST RAX,RAX
JZ 0x00196549
MOV R13,qword ptr [RAX + 0x10]
JMP 0x00196549
MOV qword ptr [RBX],RSI
MOV qword ptr [RBX + 0x8],RDX
MOV qword ptr [RBX + 0x10],RAX
LEA RDI,[RBP + 0x10]
MOV qword ptr [RSP + 0x10],RDI
JMP 0x001965b1
MOV RDI,RDX
CALL 0x0026fd40
MOV R12,qword ptr [RBP + 0x58]
JMP 0x001964ff
TEST RDX,RDX
JZ 0x001967e8
CMP RDX,0x1
JZ 0x00196800
CALL 0x00144a90
MOV RDX,qword ptr [RSP + 0x18]
MOV RDI,qword ptr [RBX]
MOV qword ptr [RBX + 0x8],RDX
MOV byte ptr [RDI + RDX*0x1],0x0
MOV RDI,qword ptr [RSP + 0x10]
JMP 0x001965b1
MOVZX EAX,byte ptr [RSP + 0x20]
MOV byte ptr [RDI],AL
MOV RDX,qword ptr [RSP + 0x18]
MOV RDI,qword ptr [RBX]
JMP 0x001967e8
LEA RDI,[0x33f24b]
CALL 0x002e12b0
LEA RDI,[0x33f24b]
CALL 0x002e12b0
(translation_unit "undefined8 * FUN_001964c0(undefined8 *param_1,long param_2,long param_3,long param_4)\n\n{\n  int *piVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long *plVar4;\n  size_t sVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long *plVar9;\n  undefined8 *__dest;\n  long *plVar10;\n  char *__s;\n  ulong uVar11;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48 [3];\n  \n  *(undefined1 *)(param_1 + 2) = 0;\n  __s = *(char **)(param_3 + 0x58);\n  *param_1 = param_1 + 2;\n  param_1[1] = 0;\n  if (__s == (char *)0x0) {\n    FUN_0026fd40(param_3);\n    __s = *(char **)(param_3 + 0x58);\n  }\n  uVar11 = 0;\n  if (param_4 != 0) {\n    uVar11 = *(ulong *)(param_4 + 0x10);\n  }\n  if (*(char *)(param_3 + 0x50) == '\0') {\n    FUN_0026fd20(param_3);\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }\n  }\n  else {\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }\n  }\n  if (0 < (long)uVar7) {\n    uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }\n  }\nLAB_0019652e:\n  piVar1 = *(int **)(param_3 + 0x30);\njoined_r0x001966ef:\n  if (__s == (char *)0x0) {\n    if (piVar1 == (int *)0x0) {\n      return param_1;\n    }\n    if (*piVar1 != 0x39) {\n      return param_1;\n    }\n    __s = "(anonymous namespace)";\n  }\n  else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }\nLAB_00196549:\n  if ((long)uVar11 < 1) goto LAB_001965fc;\n                    /* try { // try from 00196560 to 00196828 has its CatchHandler @ 00196829 */\n  FUN_001962c0(&local_58,param_2,uVar11);\n  __dest = (undefined8 *)*param_1;\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }\n    param_1[1] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }\nLAB_001965b1:\n  local_48[0] = uVar2;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_002a2980();\n  }\n  if (0x7fffffffffffffff - param_1[1] < 2) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002e12b0("basic_string::append");\n  }\n  FUN_002aac00(param_1,&DAT_003593f9,2);\nLAB_001965fc:\n  sVar5 = strlen(__s);\n  if (sVar5 <= 0x7fffffffffffffff - param_1[1]) {\n    FUN_002aac00(param_1,__s,sVar5);\n    return param_1;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002e12b0("basic_string::append");\n}\n\n" (function_definition "undefined8 * FUN_001964c0(undefined8 *param_1,long param_2,long param_3,long param_4)\n\n{\n  int *piVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long *plVar4;\n  size_t sVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long *plVar9;\n  undefined8 *__dest;\n  long *plVar10;\n  char *__s;\n  ulong uVar11;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48 [3];\n  \n  *(undefined1 *)(param_1 + 2) = 0;\n  __s = *(char **)(param_3 + 0x58);\n  *param_1 = param_1 + 2;\n  param_1[1] = 0;\n  if (__s == (char *)0x0) {\n    FUN_0026fd40(param_3);\n    __s = *(char **)(param_3 + 0x58);\n  }\n  uVar11 = 0;\n  if (param_4 != 0) {\n    uVar11 = *(ulong *)(param_4 + 0x10);\n  }\n  if (*(char *)(param_3 + 0x50) == '\0') {\n    FUN_0026fd20(param_3);\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }\n  }\n  else {\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }\n  }\n  if (0 < (long)uVar7) {\n    uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }\n  }\nLAB_0019652e:\n  piVar1 = *(int **)(param_3 + 0x30);\njoined_r0x001966ef:\n  if (__s == (char *)0x0) {\n    if (piVar1 == (int *)0x0) {\n      return param_1;\n    }\n    if (*piVar1 != 0x39) {\n      return param_1;\n    }\n    __s = "(anonymous namespace)";\n  }\n  else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }\nLAB_00196549:\n  if ((long)uVar11 < 1) goto LAB_001965fc;\n                    /* try { // try from 00196560 to 00196828 has its CatchHandler @ 00196829 */\n  FUN_001962c0(&local_58,param_2,uVar11);\n  __dest = (undefined8 *)*param_1;\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }\n    param_1[1] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }\nLAB_001965b1:\n  local_48[0] = uVar2;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_002a2980();\n  }\n  if (0x7fffffffffffffff - param_1[1] < 2) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002e12b0("basic_string::append");\n  }\n  FUN_002aac00(param_1,&DAT_003593f9,2);\nLAB_001965fc:\n  sVar5 = strlen(__s);\n  if (sVar5 <= 0x7fffffffffffffff - param_1[1]) {\n    FUN_002aac00(param_1,__s,sVar5);\n    return param_1;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002e12b0("basic_string::append");\n}" type_identifier (pointer_declarator "* FUN_001964c0(undefined8 *param_1,long param_2,long param_3,long param_4)" * (function_declarator "FUN_001964c0(undefined8 *param_1,long param_2,long param_3,long param_4)" identifier (parameter_list "(undefined8 *param_1,long param_2,long param_3,long param_4)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) )))) (compound_statement "{\n  int *piVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long *plVar4;\n  size_t sVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long *plVar9;\n  undefined8 *__dest;\n  long *plVar10;\n  char *__s;\n  ulong uVar11;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48 [3];\n  \n  *(undefined1 *)(param_1 + 2) = 0;\n  __s = *(char **)(param_3 + 0x58);\n  *param_1 = param_1 + 2;\n  param_1[1] = 0;\n  if (__s == (char *)0x0) {\n    FUN_0026fd40(param_3);\n    __s = *(char **)(param_3 + 0x58);\n  }\n  uVar11 = 0;\n  if (param_4 != 0) {\n    uVar11 = *(ulong *)(param_4 + 0x10);\n  }\n  if (*(char *)(param_3 + 0x50) == '\0') {\n    FUN_0026fd20(param_3);\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }\n  }\n  else {\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }\n  }\n  if (0 < (long)uVar7) {\n    uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }\n  }\nLAB_0019652e:\n  piVar1 = *(int **)(param_3 + 0x30);\njoined_r0x001966ef:\n  if (__s == (char *)0x0) {\n    if (piVar1 == (int *)0x0) {\n      return param_1;\n    }\n    if (*piVar1 != 0x39) {\n      return param_1;\n    }\n    __s = "(anonymous namespace)";\n  }\n  else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }\nLAB_00196549:\n  if ((long)uVar11 < 1) goto LAB_001965fc;\n                    /* try { // try from 00196560 to 00196828 has its CatchHandler @ 00196829 */\n  FUN_001962c0(&local_58,param_2,uVar11);\n  __dest = (undefined8 *)*param_1;\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }\n    param_1[1] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }\nLAB_001965b1:\n  local_48[0] = uVar2;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_002a2980();\n  }\n  if (0x7fffffffffffffff - param_1[1] < 2) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002e12b0("basic_string::append");\n  }\n  FUN_002aac00(param_1,&DAT_003593f9,2);\nLAB_001965fc:\n  sVar5 = strlen(__s);\n  if (sVar5 <= 0x7fffffffffffffff - param_1[1]) {\n    FUN_002aac00(param_1,__s,sVar5);\n    return param_1;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002e12b0("basic_string::append");\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "long *plVar9;" (sized_type_specifier "long" long) (pointer_declarator "*plVar9" * identifier) ;) (declaration "undefined8 *__dest;" type_identifier (pointer_declarator "*__dest" * identifier) ;) (declaration "long *plVar10;" (sized_type_specifier "long" long) (pointer_declarator "*plVar10" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "undefined8 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "size_t local_50;" primitive_type identifier ;) (declaration "undefined8 local_48 [3];" type_identifier (array_declarator "local_48 [3]" identifier [ number_literal ]) ;) (expression_statement "*(undefined1 *)(param_1 + 2) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 2) = 0" (pointer_expression "*(undefined1 *)(param_1 + 2)" * (cast_expression "(undefined1 *)(param_1 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__s = *(char **)(param_3 + 0x58);" (assignment_expression "__s = *(char **)(param_3 + 0x58)" identifier = (pointer_expression "*(char **)(param_3 + 0x58)" * (cast_expression "(char **)(param_3 + 0x58)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x58)" ( (binary_expression "param_3 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*param_1 = param_1 + 2;" (assignment_expression "*param_1 = param_1 + 2" (pointer_expression "*param_1" * identifier) = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (__s == (char *)0x0) {\n    FUN_0026fd40(param_3);\n    __s = *(char **)(param_3 + 0x58);\n  }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_0026fd40(param_3);\n    __s = *(char **)(param_3 + 0x58);\n  }" { (expression_statement "FUN_0026fd40(param_3);" (call_expression "FUN_0026fd40(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;) (expression_statement "__s = *(char **)(param_3 + 0x58);" (assignment_expression "__s = *(char **)(param_3 + 0x58)" identifier = (pointer_expression "*(char **)(param_3 + 0x58)" * (cast_expression "(char **)(param_3 + 0x58)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x58)" ( (binary_expression "param_3 + 0x58" identifier + number_literal) ))))) ;) })) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (if_statement "if (param_4 != 0) {\n    uVar11 = *(ulong *)(param_4 + 0x10);\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar11 = *(ulong *)(param_4 + 0x10);\n  }" { (expression_statement "uVar11 = *(ulong *)(param_4 + 0x10);" (assignment_expression "uVar11 = *(ulong *)(param_4 + 0x10)" identifier = (pointer_expression "*(ulong *)(param_4 + 0x10)" * (cast_expression "(ulong *)(param_4 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x10)" ( (binary_expression "param_4 + 0x10" identifier + number_literal) ))))) ;) })) (if_statement "if (*(char *)(param_3 + 0x50) == '\0') {\n    FUN_0026fd20(param_3);\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }\n  }\n  else {\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }\n  }" if (parenthesized_expression "(*(char *)(param_3 + 0x50) == '\0')" ( (binary_expression "*(char *)(param_3 + 0x50) == '\0'" (pointer_expression "*(char *)(param_3 + 0x50)" * (cast_expression "(char *)(param_3 + 0x50)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x50)" ( (binary_expression "param_3 + 0x50" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_0026fd20(param_3);\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }\n  }" { (expression_statement "FUN_0026fd20(param_3);" (call_expression "FUN_0026fd20(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;) (expression_statement "uVar7 = *(ulong *)(param_3 + 0x80);" (assignment_expression "uVar7 = *(ulong *)(param_3 + 0x80)" identifier = (pointer_expression "*(ulong *)(param_3 + 0x80)" * (cast_expression "(ulong *)(param_3 + 0x80)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x80)" ( (binary_expression "param_3 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (uVar7 == 0) {\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }" { (if_statement "if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }" if (parenthesized_expression "(*(char *)(param_3 + 0x50) == '\0')" ( (binary_expression "*(char *)(param_3 + 0x50) == '\0'" (pointer_expression "*(char *)(param_3 + 0x50)" * (cast_expression "(char *)(param_3 + 0x50)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x50)" ( (binary_expression "param_3 + 0x50" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        FUN_0026fd20(param_3);\n      }" { (expression_statement "FUN_0026fd20(param_3);" (call_expression "FUN_0026fd20(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;) })) (goto_statement "goto LAB_00196666;" goto statement_identifier ;) })) }) (else_clause "else {\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }\n  }" else (compound_statement "{\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }\n  }" { (expression_statement "uVar7 = *(ulong *)(param_3 + 0x80);" (assignment_expression "uVar7 = *(ulong *)(param_3 + 0x80)" identifier = (pointer_expression "*(ulong *)(param_3 + 0x80)" * (cast_expression "(ulong *)(param_3 + 0x80)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x80)" ( (binary_expression "param_3 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }" { (labeled_statement "LAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);" statement_identifier : (expression_statement "uVar7 = *(ulong *)(param_3 + 0x88);" (assignment_expression "uVar7 = *(ulong *)(param_3 + 0x88)" identifier = (pointer_expression "*(ulong *)(param_3 + 0x88)" * (cast_expression "(ulong *)(param_3 + 0x88)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x88)" ( (binary_expression "param_3 + 0x88" identifier + number_literal) ))))) ;)) })) }))) (if_statement "if (0 < (long)uVar7) {\n    uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }\n  }" if (parenthesized_expression "(0 < (long)uVar7)" ( (binary_expression "0 < (long)uVar7" number_literal < (cast_expression "(long)uVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n    uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }\n  }" { (expression_statement "uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);" (assignment_expression "uVar6 = uVar7 % *(ulong *)(param_2 + 0x958)" identifier = (binary_expression "uVar7 % *(ulong *)(param_2 + 0x958)" identifier % (pointer_expression "*(ulong *)(param_2 + 0x958)" * (cast_expression "(ulong *)(param_2 + 0x958)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x958)" ( (binary_expression "param_2 + 0x958" identifier + number_literal) )))))) ;) (expression_statement "plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);" (assignment_expression "plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8)" identifier = (pointer_expression "*(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8)" * (cast_expression "(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_2 + 0x950) + uVar6 * 8)" ( (binary_expression "*(long *)(param_2 + 0x950) + uVar6 * 8" (pointer_expression "*(long *)(param_2 + 0x950)" * (cast_expression "(long *)(param_2 + 0x950)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x950)" ( (binary_expression "param_2 + 0x950" identifier + number_literal) )))) + (binary_expression "uVar6 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (plVar10 != (long *)0x0) {\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }" if (parenthesized_expression "(plVar10 != (long *)0x0)" ( (binary_expression "plVar10 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }" { (expression_statement "uVar8 = ((long *)*plVar10)[1];" (assignment_expression "uVar8 = ((long *)*plVar10)[1]" identifier = (subscript_expression "((long *)*plVar10)[1]" (parenthesized_expression "((long *)*plVar10)" ( (cast_expression "(long *)*plVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar10" * identifier)) )) [ number_literal ])) ;) (expression_statement "plVar4 = (long *)*plVar10;" (assignment_expression "plVar4 = (long *)*plVar10" identifier = (cast_expression "(long *)*plVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar10" * identifier))) ;) (while_statement "while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }" while (parenthesized_expression "(plVar9 = plVar4, uVar7 != uVar8)" ( (comma_expression "plVar9 = plVar4, uVar7 != uVar8" (assignment_expression "plVar9 = plVar4" identifier = identifier) , (binary_expression "uVar7 != uVar8" identifier != identifier)) )) (compound_statement "{\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }" { (expression_statement "plVar4 = (long *)*plVar9;" (assignment_expression "plVar4 = (long *)*plVar9" identifier = (cast_expression "(long *)*plVar9" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar9" * identifier))) ;) (if_statement "if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;" if (parenthesized_expression "((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))" ( (binary_expression "(plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958))" (parenthesized_expression "(plVar4 == (long *)0x0)" ( (binary_expression "plVar4 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958))" ( (comma_expression "uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)" (assignment_expression "uVar8 = plVar4[1]" identifier = (subscript_expression "plVar4[1]" identifier [ number_literal ])) , (comma_expression "plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)" (assignment_expression "plVar10 = plVar9" identifier = identifier) , (binary_expression "uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)" identifier != (binary_expression "uVar8 % *(ulong *)(param_2 + 0x958)" identifier % (pointer_expression "*(ulong *)(param_2 + 0x958)" * (cast_expression "(ulong *)(param_2 + 0x958)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x958)" ( (binary_expression "param_2 + 0x958" identifier + number_literal) )))))))) ))) )) (goto_statement "goto LAB_0019652e;" goto statement_identifier ;)) })) (expression_statement "lVar3 = *plVar10;" (assignment_expression "lVar3 = *plVar10" identifier = (pointer_expression "*plVar10" * identifier)) ;) (if_statement "if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (compound_statement "{\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }" { (expression_statement "__s = *(char **)(lVar3 + 0x18);" (assignment_expression "__s = *(char **)(lVar3 + 0x18)" identifier = (pointer_expression "*(char **)(lVar3 + 0x18)" * (cast_expression "(char **)(lVar3 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(ulong *)(lVar3 + 0x10);" (assignment_expression "uVar11 = *(ulong *)(lVar3 + 0x10)" identifier = (pointer_expression "*(ulong *)(lVar3 + 0x10)" * (cast_expression "(ulong *)(lVar3 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x10)" ( (binary_expression "lVar3 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "piVar1 = *(int **)(param_3 + 0x30);" (assignment_expression "piVar1 = *(int **)(param_3 + 0x30)" identifier = (pointer_expression "*(int **)(param_3 + 0x30)" * (cast_expression "(int **)(param_3 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x001966ef;" goto statement_identifier ;) })) })) })) (labeled_statement "LAB_0019652e:\n  piVar1 = *(int **)(param_3 + 0x30);" statement_identifier : (expression_statement "piVar1 = *(int **)(param_3 + 0x30);" (assignment_expression "piVar1 = *(int **)(param_3 + 0x30)" identifier = (pointer_expression "*(int **)(param_3 + 0x30)" * (cast_expression "(int **)(param_3 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) ))))) ;)) (labeled_statement "joined_r0x001966ef:\n  if (__s == (char *)0x0) {\n    if (piVar1 == (int *)0x0) {\n      return param_1;\n    }\n    if (*piVar1 != 0x39) {\n      return param_1;\n    }\n    __s = "(anonymous namespace)";\n  }\n  else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }" statement_identifier : (if_statement "if (__s == (char *)0x0) {\n    if (piVar1 == (int *)0x0) {\n      return param_1;\n    }\n    if (*piVar1 != 0x39) {\n      return param_1;\n    }\n    __s = "(anonymous namespace)";\n  }\n  else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (piVar1 == (int *)0x0) {\n      return param_1;\n    }\n    if (*piVar1 != 0x39) {\n      return param_1;\n    }\n    __s = "(anonymous namespace)";\n  }" { (if_statement "if (piVar1 == (int *)0x0) {\n      return param_1;\n    }" if (parenthesized_expression "(piVar1 == (int *)0x0)" ( (binary_expression "piVar1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return param_1;\n    }" { (return_statement "return param_1;" return identifier ;) })) (if_statement "if (*piVar1 != 0x39) {\n      return param_1;\n    }" if (parenthesized_expression "(*piVar1 != 0x39)" ( (binary_expression "*piVar1 != 0x39" (pointer_expression "*piVar1" * identifier) != number_literal) )) (compound_statement "{\n      return param_1;\n    }" { (return_statement "return param_1;" return identifier ;) })) (expression_statement "__s = "(anonymous namespace)";" (assignment_expression "__s = "(anonymous namespace)"" identifier = (string_literal ""(anonymous namespace)"" " string_content ")) ;) }) (else_clause "else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }" else (if_statement "if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }" if (parenthesized_expression "((piVar1 != (int *)0x0) && (*piVar1 == 0x28))" ( (binary_expression "(piVar1 != (int *)0x0) && (*piVar1 == 0x28)" (parenthesized_expression "(piVar1 != (int *)0x0)" ( (binary_expression "piVar1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*piVar1 == 0x28)" ( (binary_expression "*piVar1 == 0x28" (pointer_expression "*piVar1" * identifier) == number_literal) ))) )) (compound_statement "{\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }" { (expression_statement "uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);" (assignment_expression "uVar7 = uVar11 % *(ulong *)(param_2 + 0x958)" identifier = (binary_expression "uVar11 % *(ulong *)(param_2 + 0x958)" identifier % (pointer_expression "*(ulong *)(param_2 + 0x958)" * (cast_expression "(ulong *)(param_2 + 0x958)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x958)" ( (binary_expression "param_2 + 0x958" identifier + number_literal) )))))) ;) (expression_statement "plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);" (assignment_expression "plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8)" identifier = (pointer_expression "*(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8)" * (cast_expression "(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_2 + 0x950) + uVar7 * 8)" ( (binary_expression "*(long *)(param_2 + 0x950) + uVar7 * 8" (pointer_expression "*(long *)(param_2 + 0x950)" * (cast_expression "(long *)(param_2 + 0x950)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x950)" ( (binary_expression "param_2 + 0x950" identifier + number_literal) )))) + (binary_expression "uVar7 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }" if (parenthesized_expression "(plVar10 != (long *)0x0)" ( (binary_expression "plVar10 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }" { (expression_statement "uVar6 = ((long *)*plVar10)[1];" (assignment_expression "uVar6 = ((long *)*plVar10)[1]" identifier = (subscript_expression "((long *)*plVar10)[1]" (parenthesized_expression "((long *)*plVar10)" ( (cast_expression "(long *)*plVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar10" * identifier)) )) [ number_literal ])) ;) (expression_statement "plVar4 = (long *)*plVar10;" (assignment_expression "plVar4 = (long *)*plVar10" identifier = (cast_expression "(long *)*plVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar10" * identifier))) ;) (while_statement "while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }" while (parenthesized_expression "(plVar9 = plVar4, uVar11 != uVar6)" ( (comma_expression "plVar9 = plVar4, uVar11 != uVar6" (assignment_expression "plVar9 = plVar4" identifier = identifier) , (binary_expression "uVar11 != uVar6" identifier != identifier)) )) (compound_statement "{\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }" { (expression_statement "plVar4 = (long *)*plVar9;" (assignment_expression "plVar4 = (long *)*plVar9" identifier = (cast_expression "(long *)*plVar9" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar9" * identifier))) ;) (if_statement "if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;" if (parenthesized_expression "((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))" ( (binary_expression "(plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958))" (parenthesized_expression "(plVar4 == (long *)0x0)" ( (binary_expression "plVar4 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958))" ( (comma_expression "uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)" (assignment_expression "uVar6 = plVar4[1]" identifier = (subscript_expression "plVar4[1]" identifier [ number_literal ])) , (comma_expression "plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)" (assignment_expression "plVar10 = plVar9" identifier = identifier) , (binary_expression "uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)" identifier != (binary_expression "uVar6 % *(ulong *)(param_2 + 0x958)" identifier % (pointer_expression "*(ulong *)(param_2 + 0x958)" * (cast_expression "(ulong *)(param_2 + 0x958)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x958)" ( (binary_expression "param_2 + 0x958" identifier + number_literal) )))))))) ))) )) (goto_statement "goto LAB_00196549;" goto statement_identifier ;)) })) (if_statement "if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }" if (parenthesized_expression "(*plVar10 != 0)" ( (binary_expression "*plVar10 != 0" (pointer_expression "*plVar10" * identifier) != number_literal) )) (compound_statement "{\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }" { (expression_statement "uVar11 = *(ulong *)(*plVar10 + 0x10);" (assignment_expression "uVar11 = *(ulong *)(*plVar10 + 0x10)" identifier = (pointer_expression "*(ulong *)(*plVar10 + 0x10)" * (cast_expression "(ulong *)(*plVar10 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*plVar10 + 0x10)" ( (binary_expression "*plVar10 + 0x10" (pointer_expression "*plVar10" * identifier) + number_literal) ))))) ;) })) })) }))))) (labeled_statement "LAB_00196549:\n  if ((long)uVar11 < 1) goto LAB_001965fc;" statement_identifier : (if_statement "if ((long)uVar11 < 1) goto LAB_001965fc;" if (parenthesized_expression "((long)uVar11 < 1)" ( (binary_expression "(long)uVar11 < 1" (cast_expression "(long)uVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (goto_statement "goto LAB_001965fc;" goto statement_identifier ;))) comment (expression_statement "FUN_001962c0(&local_58,param_2,uVar11);" (call_expression "FUN_001962c0(&local_58,param_2,uVar11)" identifier (argument_list "(&local_58,param_2,uVar11)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;) (expression_statement "__dest = (undefined8 *)*param_1;" (assignment_expression "__dest = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }\n    param_1[1] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }" if (parenthesized_expression "(local_58 == local_48)" ( (binary_expression "local_58 == local_48" identifier == identifier) )) (compound_statement "{\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }\n    param_1[1] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar2 = local_48[0];\n  }" { (if_statement "if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (compound_statement "{\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }" { (if_statement "if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }" if (parenthesized_expression "(local_50 == 1)" ( (binary_expression "local_50 == 1" identifier == number_literal) )) (compound_statement "{\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }" { (expression_statement "*(undefined1 *)__dest = (undefined1)local_48[0];" (assignment_expression "*(undefined1 *)__dest = (undefined1)local_48[0]" (pointer_expression "*(undefined1 *)__dest" * (cast_expression "(undefined1 *)__dest" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(undefined1)local_48[0]" ( (type_descriptor "undefined1" type_identifier) ) (subscript_expression "local_48[0]" identifier [ number_literal ]))) ;) (expression_statement "__dest = (undefined8 *)*param_1;" (assignment_expression "__dest = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) }) (else_clause "else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }" else (compound_statement "{\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }" { (expression_statement "memcpy(__dest,local_58,local_50);" (call_expression "memcpy(__dest,local_58,local_50)" identifier (argument_list "(__dest,local_58,local_50)" ( identifier , identifier , identifier ))) ;) (expression_statement "__dest = (undefined8 *)*param_1;" (assignment_expression "__dest = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) }))) })) (expression_statement "param_1[1] = local_50;" (assignment_expression "param_1[1] = local_50" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((long)__dest + local_50) = 0;" (assignment_expression "*(undefined1 *)((long)__dest + local_50) = 0" (pointer_expression "*(undefined1 *)((long)__dest + local_50)" * (cast_expression "(undefined1 *)((long)__dest + local_50)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + local_50)" ( (binary_expression "(long)__dest + local_50" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar2 = local_48[0];" (assignment_expression "uVar2 = local_48[0]" identifier = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }" else (compound_statement "{\n    if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }" { (if_statement "if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }" if (parenthesized_expression "(param_1 + 2 == __dest)" ( (binary_expression "param_1 + 2 == __dest" (binary_expression "param_1 + 2" identifier + number_literal) == identifier) )) (compound_statement "{\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }" { (expression_statement "*param_1 = local_58;" (assignment_expression "*param_1 = local_58" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_50;" (assignment_expression "param_1[1] = local_50" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = local_48[0];" (assignment_expression "param_1[2] = local_48[0]" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }" else (compound_statement "{\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }" { (expression_statement "uVar2 = param_1[2];" (assignment_expression "uVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "*param_1 = local_58;" (assignment_expression "*param_1 = local_58" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_50;" (assignment_expression "param_1[1] = local_50" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = local_48[0];" (assignment_expression "param_1[2] = local_48[0]" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) (expression_statement "local_58 = __dest;" (assignment_expression "local_58 = __dest" identifier = identifier) ;) (if_statement "if (__dest != (undefined8 *)0x0) goto LAB_001965b1;" if (parenthesized_expression "(__dest != (undefined8 *)0x0)" ( (binary_expression "__dest != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001965b1;" goto statement_identifier ;)) }))) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) (expression_statement "uVar2 = local_48[0];" (assignment_expression "uVar2 = local_48[0]" identifier = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) }))) (labeled_statement "LAB_001965b1:\n  local_48[0] = uVar2;" statement_identifier : (expression_statement "local_48[0] = uVar2;" (assignment_expression "local_48[0] = uVar2" (subscript_expression "local_48[0]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "*(undefined1 *)local_58 = 0;" (assignment_expression "*(undefined1 *)local_58 = 0" (pointer_expression "*(undefined1 *)local_58" * (cast_expression "(undefined1 *)local_58" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if (local_58 != local_48) {\n    FUN_002a2980();\n  }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n    FUN_002a2980();\n  }" { (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (0x7fffffffffffffff - param_1[1] < 2) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002e12b0("basic_string::append");\n  }" if (parenthesized_expression "(0x7fffffffffffffff - param_1[1] < 2)" ( (binary_expression "0x7fffffffffffffff - param_1[1] < 2" (binary_expression "0x7fffffffffffffff - param_1[1]" number_literal - (subscript_expression "param_1[1]" identifier [ number_literal ])) < number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_002e12b0("basic_string::append");\n  }" { comment (expression_statement "FUN_002e12b0("basic_string::append");" (call_expression "FUN_002e12b0("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (expression_statement "FUN_002aac00(param_1,&DAT_003593f9,2);" (call_expression "FUN_002aac00(param_1,&DAT_003593f9,2)" identifier (argument_list "(param_1,&DAT_003593f9,2)" ( identifier , (pointer_expression "&DAT_003593f9" & identifier) , number_literal ))) ;) (labeled_statement "LAB_001965fc:\n  sVar5 = strlen(__s);" statement_identifier : (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;)) (if_statement "if (sVar5 <= 0x7fffffffffffffff - param_1[1]) {\n    FUN_002aac00(param_1,__s,sVar5);\n    return param_1;\n  }" if (parenthesized_expression "(sVar5 <= 0x7fffffffffffffff - param_1[1])" ( (binary_expression "sVar5 <= 0x7fffffffffffffff - param_1[1]" identifier <= (binary_expression "0x7fffffffffffffff - param_1[1]" number_literal - (subscript_expression "param_1[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    FUN_002aac00(param_1,__s,sVar5);\n    return param_1;\n  }" { (expression_statement "FUN_002aac00(param_1,__s,sVar5);" (call_expression "FUN_002aac00(param_1,__s,sVar5)" identifier (argument_list "(param_1,__s,sVar5)" ( identifier , identifier , identifier ))) ;) (return_statement "return param_1;" return identifier ;) })) comment (expression_statement "FUN_002e12b0("basic_string::append");" (call_expression "FUN_002e12b0("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })))
(translation_unit "/* DWARF original prototype: string get_qualified_name(Gdb_index_info_reader * this, Dwarf_die *\n   die, Dwarf_die * context) */\n\nstring * __thiscall\ngold::Gdb_index_info_reader::get_qualified_name\n          (string *__return_storage_ptr__,Gdb_index_info_reader *this,Dwarf_die *die,\n          Dwarf_die *context)\n\n{\n  Abbrev_code *pAVar1;\n  undefined8 uVar2;\n  _Hash_node_base *p_Var3;\n  ulong uVar4;\n  size_t sVar5;\n  _Hash_node_base *p_Var6;\n  ulong uVar7;\n  _Hash_node_base *p_Var8;\n  __bucket_type p_Var9;\n  string *full_name;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *__dest;\n  __bucket_type p_Var10;\n  char *__s;\n  _Hash_node_base *die_offset;\n  string local_58;\n  \n  (__return_storage_ptr__->field_2)._M_local_buf[0] = '\0';\n  __s = die->name_;\n  (__return_storage_ptr__->_M_dataplus)._M_p = (pointer)&__return_storage_ptr__->field_2;\n  __return_storage_ptr__->_M_string_length = 0;\n  if ((_Hash_node_base *)__s == (_Hash_node_base *)0x0) {\n    Dwarf_die::set_name(die);\n    __s = die->name_;\n  }\n  die_offset = (_Hash_node_base *)0x0;\n  if (context != (Dwarf_die *)0x0) {\n    die_offset = (_Hash_node_base *)context->die_offset_;\n  }\n  if (die->attributes_read_ == false) {\n    Dwarf_die::read_attributes(die);\n    p_Var6 = (_Hash_node_base *)die->specification_;\n    if (p_Var6 == (_Hash_node_base *)0x0) {\n      if (die->attributes_read_ == false) {\n        Dwarf_die::read_attributes(die);\n      }\n      goto LAB_00196666;\n    }\n  }\n  else {\n    p_Var6 = (_Hash_node_base *)die->specification_;\n    if (p_Var6 == (_Hash_node_base *)0x0) {\nLAB_00196666:\n      p_Var6 = (_Hash_node_base *)die->abstract_origin_;\n    }\n  }\n  if (0 < (long)p_Var6) {\n    uVar4 = (this->declarations_)._M_h._M_bucket_count;\n    uVar7 = (ulong)p_Var6 % uVar4;\n    p_Var10 = (this->declarations_)._M_h._M_buckets[uVar7];\n    if (p_Var10 != (__bucket_type)0x0) {\n      p_Var8 = p_Var10->_M_nxt[1]._M_nxt;\n      p_Var3 = p_Var10->_M_nxt;\n      while (p_Var9 = p_Var3, p_Var6 != p_Var8) {\n        p_Var3 = p_Var9->_M_nxt;\n        if ((p_Var3 == (_Hash_node_base *)0x0) ||\n           (p_Var8 = p_Var3[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var8 % uVar4))\n        goto LAB_0019652e;\n      }\n      p_Var6 = p_Var10->_M_nxt;\n      if (p_Var6 != (_Hash_node_base *)0x0) {\n        __s = (char *)p_Var6[3]._M_nxt;\n        die_offset = p_Var6[2]._M_nxt;\n        pAVar1 = die->abbrev_code_;\n        goto joined_r0x001966ef;\n      }\n    }\n  }\nLAB_0019652e:\n  pAVar1 = die->abbrev_code_;\njoined_r0x001966ef:\n  if ((_Hash_node_base *)__s == (_Hash_node_base *)0x0) {\n    if (pAVar1 == (Abbrev_code *)0x0) {\n      return __return_storage_ptr__;\n    }\n    if (pAVar1->tag != 0x39) {\n      return __return_storage_ptr__;\n    }\n    __s = "(anonymous namespace)";\n  }\n  else if ((pAVar1 != (Abbrev_code *)0x0) && (pAVar1->tag == 0x28)) {\n    uVar4 = (this->declarations_)._M_h._M_bucket_count;\n    uVar7 = (ulong)die_offset % uVar4;\n    p_Var10 = (this->declarations_)._M_h._M_buckets[uVar7];\n    if (p_Var10 != (__bucket_type)0x0) {\n      p_Var6 = p_Var10->_M_nxt[1]._M_nxt;\n      p_Var8 = p_Var10->_M_nxt;\n      while (p_Var9 = p_Var8, die_offset != p_Var6) {\n        p_Var8 = p_Var9->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var6 = p_Var8[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var6 % uVar4))\n        goto LAB_00196549;\n      }\n      if (p_Var10->_M_nxt != (_Hash_node_base *)0x0) {\n        die_offset = p_Var10->_M_nxt[2]._M_nxt;\n      }\n    }\n  }\nLAB_00196549:\n  if ((long)die_offset < 1) goto LAB_001965fc;\n                    /* try { // try from 00196560 to 00196828 has its CatchHandler @ 00196829 */\n  get_context(&local_58,this,(off_t)die_offset);\n  __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            *)(__return_storage_ptr__->_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_58._M_dataplus._M_p == &local_58.field_2) {\n    if (local_58._M_string_length != 0) {\n      if (local_58._M_string_length == 1) {\n        __dest->_M_local_buf[0] = local_58.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                  *)(__return_storage_ptr__->_M_dataplus)._M_p;\n      }\n      else {\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(__return_storage_ptr__->_M_dataplus)._M_p;\n      }\n    }\n    __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n    __dest->_M_local_buf[local_58._M_string_length] = '\0';\n    uVar2 = local_58.field_2._M_allocated_capacity;\n  }\n  else {\n    if (&__return_storage_ptr__->field_2 == __dest) {\n      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n      __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n      (__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity;\n    }\n    else {\n      uVar2 = (__return_storage_ptr__->field_2)._M_allocated_capacity;\n      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n      __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n      (__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity;\n      local_58._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0) goto LAB_001965b1;\n    }\n    local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n    uVar2 = local_58.field_2._M_allocated_capacity;\n  }\nLAB_001965b1:\n  local_58.field_2._M_allocated_capacity = uVar2;\n  local_58._M_string_length = 0;\n  *local_58._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_58._M_dataplus._M_p != &local_58.field_2) {\n    operator_delete(local_58._M_dataplus._M_p);\n  }\n  if (0x7fffffffffffffff - __return_storage_ptr__->_M_string_length < 2) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }\n  std::string::_M_append((string *)__return_storage_ptr__,"::",2);\nLAB_001965fc:\n  sVar5 = strlen(__s);\n  if (sVar5 <= 0x7fffffffffffffff - __return_storage_ptr__->_M_string_length) {\n    std::string::_M_append((string *)__return_storage_ptr__,__s,sVar5);\n    return __return_storage_ptr__;\n  }\n                    /* WARNING: Subroutine does not return */\n  std::__throw_length_error("basic_string::append");\n}\n\n" comment (ERROR "string * __thiscall\ngold::Gdb_index_info_reader::get_qualified_name\n          (string *__return_storage_ptr__,Gdb_index_info_reader *this,Dwarf_die *die,\n          Dwarf_die *context)" (binary_expression "string * __thiscall\ngold::Gdb_index_info_reader::get_qualified_name\n          (string *__return_storage_ptr__,Gdb_index_info_reader *this,Dwarf_die *die,\n          Dwarf_die *context)" identifier * (call_expression "__thiscall\ngold::Gdb_index_info_reader::get_qualified_name\n          (string *__return_storage_ptr__,Gdb_index_info_reader *this,Dwarf_die *die,\n          Dwarf_die *context)" identifier (ERROR "gold::Gdb_index_info_reader::get_qualified_name" identifier : : identifier : : identifier) (argument_list "(string *__return_storage_ptr__,Gdb_index_info_reader *this,Dwarf_die *die,\n          Dwarf_die *context)" ( (binary_expression "string *__return_storage_ptr__" identifier * identifier) , (binary_expression "Gdb_index_info_reader *this" identifier * identifier) , (binary_expression "Dwarf_die *die" identifier * identifier) , (binary_expression "Dwarf_die *context" identifier * identifier) ))))) (compound_statement "{\n  Abbrev_code *pAVar1;\n  undefined8 uVar2;\n  _Hash_node_base *p_Var3;\n  ulong uVar4;\n  size_t sVar5;\n  _Hash_node_base *p_Var6;\n  ulong uVar7;\n  _Hash_node_base *p_Var8;\n  __bucket_type p_Var9;\n  string *full_name;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *__dest;\n  __bucket_type p_Var10;\n  char *__s;\n  _Hash_node_base *die_offset;\n  string local_58;\n  \n  (__return_storage_ptr__->field_2)._M_local_buf[0] = '\0';\n  __s = die->name_;\n  (__return_storage_ptr__->_M_dataplus)._M_p = (pointer)&__return_storage_ptr__->field_2;\n  __return_storage_ptr__->_M_string_length = 0;\n  if ((_Hash_node_base *)__s == (_Hash_node_base *)0x0) {\n    Dwarf_die::set_name(die);\n    __s = die->name_;\n  }\n  die_offset = (_Hash_node_base *)0x0;\n  if (context != (Dwarf_die *)0x0) {\n    die_offset = (_Hash_node_base *)context->die_offset_;\n  }\n  if (die->attributes_read_ == false) {\n    Dwarf_die::read_attributes(die);\n    p_Var6 = (_Hash_node_base *)die->specification_;\n    if (p_Var6 == (_Hash_node_base *)0x0) {\n      if (die->attributes_read_ == false) {\n        Dwarf_die::read_attributes(die);\n      }\n      goto LAB_00196666;\n    }\n  }\n  else {\n    p_Var6 = (_Hash_node_base *)die->specification_;\n    if (p_Var6 == (_Hash_node_base *)0x0) {\nLAB_00196666:\n      p_Var6 = (_Hash_node_base *)die->abstract_origin_;\n    }\n  }\n  if (0 < (long)p_Var6) {\n    uVar4 = (this->declarations_)._M_h._M_bucket_count;\n    uVar7 = (ulong)p_Var6 % uVar4;\n    p_Var10 = (this->declarations_)._M_h._M_buckets[uVar7];\n    if (p_Var10 != (__bucket_type)0x0) {\n      p_Var8 = p_Var10->_M_nxt[1]._M_nxt;\n      p_Var3 = p_Var10->_M_nxt;\n      while (p_Var9 = p_Var3, p_Var6 != p_Var8) {\n        p_Var3 = p_Var9->_M_nxt;\n        if ((p_Var3 == (_Hash_node_base *)0x0) ||\n           (p_Var8 = p_Var3[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var8 % uVar4))\n        goto LAB_0019652e;\n      }\n      p_Var6 = p_Var10->_M_nxt;\n      if (p_Var6 != (_Hash_node_base *)0x0) {\n        __s = (char *)p_Var6[3]._M_nxt;\n        die_offset = p_Var6[2]._M_nxt;\n        pAVar1 = die->abbrev_code_;\n        goto joined_r0x001966ef;\n      }\n    }\n  }\nLAB_0019652e:\n  pAVar1 = die->abbrev_code_;\njoined_r0x001966ef:\n  if ((_Hash_node_base *)__s == (_Hash_node_base *)0x0) {\n    if (pAVar1 == (Abbrev_code *)0x0) {\n      return __return_storage_ptr__;\n    }\n    if (pAVar1->tag != 0x39) {\n      return __return_storage_ptr__;\n    }\n    __s = "(anonymous namespace)";\n  }\n  else if ((pAVar1 != (Abbrev_code *)0x0) && (pAVar1->tag == 0x28)) {\n    uVar4 = (this->declarations_)._M_h._M_bucket_count;\n    uVar7 = (ulong)die_offset % uVar4;\n    p_Var10 = (this->declarations_)._M_h._M_buckets[uVar7];\n    if (p_Var10 != (__bucket_type)0x0) {\n      p_Var6 = p_Var10->_M_nxt[1]._M_nxt;\n      p_Var8 = p_Var10->_M_nxt;\n      while (p_Var9 = p_Var8, die_offset != p_Var6) {\n        p_Var8 = p_Var9->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var6 = p_Var8[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var6 % uVar4))\n        goto LAB_00196549;\n      }\n      if (p_Var10->_M_nxt != (_Hash_node_base *)0x0) {\n        die_offset = p_Var10->_M_nxt[2]._M_nxt;\n      }\n    }\n  }\nLAB_00196549:\n  if ((long)die_offset < 1) goto LAB_001965fc;\n                    /* try { // try from 00196560 to 00196828 has its CatchHandler @ 00196829 */\n  get_context(&local_58,this,(off_t)die_offset);\n  __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            *)(__return_storage_ptr__->_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_58._M_dataplus._M_p == &local_58.field_2) {\n    if (local_58._M_string_length != 0) {\n      if (local_58._M_string_length == 1) {\n        __dest->_M_local_buf[0] = local_58.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                  *)(__return_storage_ptr__->_M_dataplus)._M_p;\n      }\n      else {\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(__return_storage_ptr__->_M_dataplus)._M_p;\n      }\n    }\n    __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n    __dest->_M_local_buf[local_58._M_string_length] = '\0';\n    uVar2 = local_58.field_2._M_allocated_capacity;\n  }\n  else {\n    if (&__return_storage_ptr__->field_2 == __dest) {\n      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n      __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n      (__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity;\n    }\n    else {\n      uVar2 = (__return_storage_ptr__->field_2)._M_allocated_capacity;\n      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n      __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n      (__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity;\n      local_58._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0) goto LAB_001965b1;\n    }\n    local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n    uVar2 = local_58.field_2._M_allocated_capacity;\n  }\nLAB_001965b1:\n  local_58.field_2._M_allocated_capacity = uVar2;\n  local_58._M_string_length = 0;\n  *local_58._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_58._M_dataplus._M_p != &local_58.field_2) {\n    operator_delete(local_58._M_dataplus._M_p);\n  }\n  if (0x7fffffffffffffff - __return_storage_ptr__->_M_string_length < 2) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }\n  std::string::_M_append((string *)__return_storage_ptr__,"::",2);\nLAB_001965fc:\n  sVar5 = strlen(__s);\n  if (sVar5 <= 0x7fffffffffffffff - __return_storage_ptr__->_M_string_length) {\n    std::string::_M_append((string *)__return_storage_ptr__,__s,sVar5);\n    return __return_storage_ptr__;\n  }\n                    /* WARNING: Subroutine does not return */\n  std::__throw_length_error("basic_string::append");\n}" { (declaration "Abbrev_code *pAVar1;" type_identifier (pointer_declarator "*pAVar1" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "_Hash_node_base *p_Var3;" type_identifier (pointer_declarator "*p_Var3" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "_Hash_node_base *p_Var6;" type_identifier (pointer_declarator "*p_Var6" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "_Hash_node_base *p_Var8;" type_identifier (pointer_declarator "*p_Var8" * identifier) ;) (declaration "__bucket_type p_Var9;" type_identifier identifier ;) (declaration "string *full_name;" type_identifier (pointer_declarator "*full_name" * 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 "__bucket_type p_Var10;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "_Hash_node_base *die_offset;" type_identifier (pointer_declarator "*die_offset" * identifier) ;) (declaration "string local_58;" type_identifier identifier ;) (expression_statement "(__return_storage_ptr__->field_2)._M_local_buf[0] = '\0';" (assignment_expression "(__return_storage_ptr__->field_2)._M_local_buf[0] = '\0'" (subscript_expression "(__return_storage_ptr__->field_2)._M_local_buf[0]" (field_expression "(__return_storage_ptr__->field_2)._M_local_buf" (parenthesized_expression "(__return_storage_ptr__->field_2)" ( (field_expression "__return_storage_ptr__->field_2" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "__s = die->name_;" (assignment_expression "__s = die->name_" identifier = (field_expression "die->name_" identifier -> field_identifier)) ;) (expression_statement "(__return_storage_ptr__->_M_dataplus)._M_p = (pointer)&__return_storage_ptr__->field_2;" (assignment_expression "(__return_storage_ptr__->_M_dataplus)._M_p = (pointer)&__return_storage_ptr__->field_2" (field_expression "(__return_storage_ptr__->_M_dataplus)._M_p" (parenthesized_expression "(__return_storage_ptr__->_M_dataplus)" ( (field_expression "__return_storage_ptr__->_M_dataplus" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(pointer)&__return_storage_ptr__->field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "__return_storage_ptr__->field_2" identifier -> field_identifier))) ;) (expression_statement "__return_storage_ptr__->_M_string_length = 0;" (assignment_expression "__return_storage_ptr__->_M_string_length = 0" (field_expression "__return_storage_ptr__->_M_string_length" identifier -> field_identifier) = number_literal) ;) (if_statement "if ((_Hash_node_base *)__s == (_Hash_node_base *)0x0) {\n    Dwarf_die::set_name(die);\n    __s = die->name_;\n  }" if (parenthesized_expression "((_Hash_node_base *)__s == (_Hash_node_base *)0x0)" ( (binary_expression "(_Hash_node_base *)__s == (_Hash_node_base *)0x0" (cast_expression "(_Hash_node_base *)__s" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    Dwarf_die::set_name(die);\n    __s = die->name_;\n  }" { (labeled_statement "Dwarf_die::set_name(die);" statement_identifier : (ERROR ":" :) (expression_statement "set_name(die);" (call_expression "set_name(die)" identifier (argument_list "(die)" ( identifier ))) ;)) (expression_statement "__s = die->name_;" (assignment_expression "__s = die->name_" identifier = (field_expression "die->name_" identifier -> field_identifier)) ;) })) (expression_statement "die_offset = (_Hash_node_base *)0x0;" (assignment_expression "die_offset = (_Hash_node_base *)0x0" identifier = (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (context != (Dwarf_die *)0x0) {\n    die_offset = (_Hash_node_base *)context->die_offset_;\n  }" if (parenthesized_expression "(context != (Dwarf_die *)0x0)" ( (binary_expression "context != (Dwarf_die *)0x0" identifier != (cast_expression "(Dwarf_die *)0x0" ( (type_descriptor "Dwarf_die *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    die_offset = (_Hash_node_base *)context->die_offset_;\n  }" { (expression_statement "die_offset = (_Hash_node_base *)context->die_offset_;" (assignment_expression "die_offset = (_Hash_node_base *)context->die_offset_" identifier = (cast_expression "(_Hash_node_base *)context->die_offset_" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "context->die_offset_" identifier -> field_identifier))) ;) })) (if_statement "if (die->attributes_read_ == false) {\n    Dwarf_die::read_attributes(die);\n    p_Var6 = (_Hash_node_base *)die->specification_;\n    if (p_Var6 == (_Hash_node_base *)0x0) {\n      if (die->attributes_read_ == false) {\n        Dwarf_die::read_attributes(die);\n      }\n      goto LAB_00196666;\n    }\n  }\n  else {\n    p_Var6 = (_Hash_node_base *)die->specification_;\n    if (p_Var6 == (_Hash_node_base *)0x0) {\nLAB_00196666:\n      p_Var6 = (_Hash_node_base *)die->abstract_origin_;\n    }\n  }" if (parenthesized_expression "(die->attributes_read_ == false)" ( (binary_expression "die->attributes_read_ == false" (field_expression "die->attributes_read_" identifier -> field_identifier) == false) )) (compound_statement "{\n    Dwarf_die::read_attributes(die);\n    p_Var6 = (_Hash_node_base *)die->specification_;\n    if (p_Var6 == (_Hash_node_base *)0x0) {\n      if (die->attributes_read_ == false) {\n        Dwarf_die::read_attributes(die);\n      }\n      goto LAB_00196666;\n    }\n  }" { (labeled_statement "Dwarf_die::read_attributes(die);" statement_identifier : (ERROR ":" :) (expression_statement "read_attributes(die);" (call_expression "read_attributes(die)" identifier (argument_list "(die)" ( identifier ))) ;)) (expression_statement "p_Var6 = (_Hash_node_base *)die->specification_;" (assignment_expression "p_Var6 = (_Hash_node_base *)die->specification_" identifier = (cast_expression "(_Hash_node_base *)die->specification_" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "die->specification_" identifier -> field_identifier))) ;) (if_statement "if (p_Var6 == (_Hash_node_base *)0x0) {\n      if (die->attributes_read_ == false) {\n        Dwarf_die::read_attributes(die);\n      }\n      goto LAB_00196666;\n    }" if (parenthesized_expression "(p_Var6 == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var6 == (_Hash_node_base *)0x0" identifier == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (die->attributes_read_ == false) {\n        Dwarf_die::read_attributes(die);\n      }\n      goto LAB_00196666;\n    }" { (if_statement "if (die->attributes_read_ == false) {\n        Dwarf_die::read_attributes(die);\n      }" if (parenthesized_expression "(die->attributes_read_ == false)" ( (binary_expression "die->attributes_read_ == false" (field_expression "die->attributes_read_" identifier -> field_identifier) == false) )) (compound_statement "{\n        Dwarf_die::read_attributes(die);\n      }" { (labeled_statement "Dwarf_die::read_attributes(die);" statement_identifier : (ERROR ":" :) (expression_statement "read_attributes(die);" (call_expression "read_attributes(die)" identifier (argument_list "(die)" ( identifier ))) ;)) })) (goto_statement "goto LAB_00196666;" goto statement_identifier ;) })) }) (else_clause "else {\n    p_Var6 = (_Hash_node_base *)die->specification_;\n    if (p_Var6 == (_Hash_node_base *)0x0) {\nLAB_00196666:\n      p_Var6 = (_Hash_node_base *)die->abstract_origin_;\n    }\n  }" else (compound_statement "{\n    p_Var6 = (_Hash_node_base *)die->specification_;\n    if (p_Var6 == (_Hash_node_base *)0x0) {\nLAB_00196666:\n      p_Var6 = (_Hash_node_base *)die->abstract_origin_;\n    }\n  }" { (expression_statement "p_Var6 = (_Hash_node_base *)die->specification_;" (assignment_expression "p_Var6 = (_Hash_node_base *)die->specification_" identifier = (cast_expression "(_Hash_node_base *)die->specification_" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "die->specification_" identifier -> field_identifier))) ;) (if_statement "if (p_Var6 == (_Hash_node_base *)0x0) {\nLAB_00196666:\n      p_Var6 = (_Hash_node_base *)die->abstract_origin_;\n    }" if (parenthesized_expression "(p_Var6 == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var6 == (_Hash_node_base *)0x0" identifier == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00196666:\n      p_Var6 = (_Hash_node_base *)die->abstract_origin_;\n    }" { (labeled_statement "LAB_00196666:\n      p_Var6 = (_Hash_node_base *)die->abstract_origin_;" statement_identifier : (expression_statement "p_Var6 = (_Hash_node_base *)die->abstract_origin_;" (assignment_expression "p_Var6 = (_Hash_node_base *)die->abstract_origin_" identifier = (cast_expression "(_Hash_node_base *)die->abstract_origin_" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "die->abstract_origin_" identifier -> field_identifier))) ;)) })) }))) (if_statement "if (0 < (long)p_Var6) {\n    uVar4 = (this->declarations_)._M_h._M_bucket_count;\n    uVar7 = (ulong)p_Var6 % uVar4;\n    p_Var10 = (this->declarations_)._M_h._M_buckets[uVar7];\n    if (p_Var10 != (__bucket_type)0x0) {\n      p_Var8 = p_Var10->_M_nxt[1]._M_nxt;\n      p_Var3 = p_Var10->_M_nxt;\n      while (p_Var9 = p_Var3, p_Var6 != p_Var8) {\n        p_Var3 = p_Var9->_M_nxt;\n        if ((p_Var3 == (_Hash_node_base *)0x0) ||\n           (p_Var8 = p_Var3[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var8 % uVar4))\n        goto LAB_0019652e;\n      }\n      p_Var6 = p_Var10->_M_nxt;\n      if (p_Var6 != (_Hash_node_base *)0x0) {\n        __s = (char *)p_Var6[3]._M_nxt;\n        die_offset = p_Var6[2]._M_nxt;\n        pAVar1 = die->abbrev_code_;\n        goto joined_r0x001966ef;\n      }\n    }\n  }" if (parenthesized_expression "(0 < (long)p_Var6)" ( (binary_expression "0 < (long)p_Var6" number_literal < (cast_expression "(long)p_Var6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n    uVar4 = (this->declarations_)._M_h._M_bucket_count;\n    uVar7 = (ulong)p_Var6 % uVar4;\n    p_Var10 = (this->declarations_)._M_h._M_buckets[uVar7];\n    if (p_Var10 != (__bucket_type)0x0) {\n      p_Var8 = p_Var10->_M_nxt[1]._M_nxt;\n      p_Var3 = p_Var10->_M_nxt;\n      while (p_Var9 = p_Var3, p_Var6 != p_Var8) {\n        p_Var3 = p_Var9->_M_nxt;\n        if ((p_Var3 == (_Hash_node_base *)0x0) ||\n           (p_Var8 = p_Var3[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var8 % uVar4))\n        goto LAB_0019652e;\n      }\n      p_Var6 = p_Var10->_M_nxt;\n      if (p_Var6 != (_Hash_node_base *)0x0) {\n        __s = (char *)p_Var6[3]._M_nxt;\n        die_offset = p_Var6[2]._M_nxt;\n        pAVar1 = die->abbrev_code_;\n        goto joined_r0x001966ef;\n      }\n    }\n  }" { (expression_statement "uVar4 = (this->declarations_)._M_h._M_bucket_count;" (assignment_expression "uVar4 = (this->declarations_)._M_h._M_bucket_count" identifier = (field_expression "(this->declarations_)._M_h._M_bucket_count" (field_expression "(this->declarations_)._M_h" (parenthesized_expression "(this->declarations_)" ( (field_expression "this->declarations_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar7 = (ulong)p_Var6 % uVar4;" (assignment_expression "uVar7 = (ulong)p_Var6 % uVar4" identifier = (binary_expression "(ulong)p_Var6 % uVar4" (cast_expression "(ulong)p_Var6" ( (type_descriptor "ulong" type_identifier) ) identifier) % identifier)) ;) (expression_statement "p_Var10 = (this->declarations_)._M_h._M_buckets[uVar7];" (assignment_expression "p_Var10 = (this->declarations_)._M_h._M_buckets[uVar7]" identifier = (subscript_expression "(this->declarations_)._M_h._M_buckets[uVar7]" (field_expression "(this->declarations_)._M_h._M_buckets" (field_expression "(this->declarations_)._M_h" (parenthesized_expression "(this->declarations_)" ( (field_expression "this->declarations_" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ identifier ])) ;) (if_statement "if (p_Var10 != (__bucket_type)0x0) {\n      p_Var8 = p_Var10->_M_nxt[1]._M_nxt;\n      p_Var3 = p_Var10->_M_nxt;\n      while (p_Var9 = p_Var3, p_Var6 != p_Var8) {\n        p_Var3 = p_Var9->_M_nxt;\n        if ((p_Var3 == (_Hash_node_base *)0x0) ||\n           (p_Var8 = p_Var3[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var8 % uVar4))\n        goto LAB_0019652e;\n      }\n      p_Var6 = p_Var10->_M_nxt;\n      if (p_Var6 != (_Hash_node_base *)0x0) {\n        __s = (char *)p_Var6[3]._M_nxt;\n        die_offset = p_Var6[2]._M_nxt;\n        pAVar1 = die->abbrev_code_;\n        goto joined_r0x001966ef;\n      }\n    }" if (parenthesized_expression "(p_Var10 != (__bucket_type)0x0)" ( (binary_expression "p_Var10 != (__bucket_type)0x0" identifier != (cast_expression "(__bucket_type)0x0" ( (type_descriptor "__bucket_type" type_identifier) ) number_literal)) )) (compound_statement "{\n      p_Var8 = p_Var10->_M_nxt[1]._M_nxt;\n      p_Var3 = p_Var10->_M_nxt;\n      while (p_Var9 = p_Var3, p_Var6 != p_Var8) {\n        p_Var3 = p_Var9->_M_nxt;\n        if ((p_Var3 == (_Hash_node_base *)0x0) ||\n           (p_Var8 = p_Var3[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var8 % uVar4))\n        goto LAB_0019652e;\n      }\n      p_Var6 = p_Var10->_M_nxt;\n      if (p_Var6 != (_Hash_node_base *)0x0) {\n        __s = (char *)p_Var6[3]._M_nxt;\n        die_offset = p_Var6[2]._M_nxt;\n        pAVar1 = die->abbrev_code_;\n        goto joined_r0x001966ef;\n      }\n    }" { (expression_statement "p_Var8 = p_Var10->_M_nxt[1]._M_nxt;" (assignment_expression "p_Var8 = p_Var10->_M_nxt[1]._M_nxt" identifier = (field_expression "p_Var10->_M_nxt[1]._M_nxt" (subscript_expression "p_Var10->_M_nxt[1]" (field_expression "p_Var10->_M_nxt" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "p_Var3 = p_Var10->_M_nxt;" (assignment_expression "p_Var3 = p_Var10->_M_nxt" identifier = (field_expression "p_Var10->_M_nxt" identifier -> field_identifier)) ;) (while_statement "while (p_Var9 = p_Var3, p_Var6 != p_Var8) {\n        p_Var3 = p_Var9->_M_nxt;\n        if ((p_Var3 == (_Hash_node_base *)0x0) ||\n           (p_Var8 = p_Var3[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var8 % uVar4))\n        goto LAB_0019652e;\n      }" while (parenthesized_expression "(p_Var9 = p_Var3, p_Var6 != p_Var8)" ( (comma_expression "p_Var9 = p_Var3, p_Var6 != p_Var8" (assignment_expression "p_Var9 = p_Var3" identifier = identifier) , (binary_expression "p_Var6 != p_Var8" identifier != identifier)) )) (compound_statement "{\n        p_Var3 = p_Var9->_M_nxt;\n        if ((p_Var3 == (_Hash_node_base *)0x0) ||\n           (p_Var8 = p_Var3[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var8 % uVar4))\n        goto LAB_0019652e;\n      }" { (expression_statement "p_Var3 = p_Var9->_M_nxt;" (assignment_expression "p_Var3 = p_Var9->_M_nxt" identifier = (field_expression "p_Var9->_M_nxt" identifier -> field_identifier)) ;) (if_statement "if ((p_Var3 == (_Hash_node_base *)0x0) ||\n           (p_Var8 = p_Var3[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var8 % uVar4))\n        goto LAB_0019652e;" if (parenthesized_expression "((p_Var3 == (_Hash_node_base *)0x0) ||\n           (p_Var8 = p_Var3[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var8 % uVar4))" ( (binary_expression "(p_Var3 == (_Hash_node_base *)0x0) ||\n           (p_Var8 = p_Var3[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var8 % uVar4)" (parenthesized_expression "(p_Var3 == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var3 == (_Hash_node_base *)0x0" identifier == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(p_Var8 = p_Var3[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var8 % uVar4)" ( (comma_expression "p_Var8 = p_Var3[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var8 % uVar4" (assignment_expression "p_Var8 = p_Var3[1]._M_nxt" identifier = (field_expression "p_Var3[1]._M_nxt" (subscript_expression "p_Var3[1]" identifier [ number_literal ]) . field_identifier)) , (comma_expression "p_Var10 = p_Var9, uVar7 != (ulong)p_Var8 % uVar4" (assignment_expression "p_Var10 = p_Var9" identifier = identifier) , (binary_expression "uVar7 != (ulong)p_Var8 % uVar4" identifier != (binary_expression "(ulong)p_Var8 % uVar4" (cast_expression "(ulong)p_Var8" ( (type_descriptor "ulong" type_identifier) ) identifier) % identifier)))) ))) )) (goto_statement "goto LAB_0019652e;" goto statement_identifier ;)) })) (expression_statement "p_Var6 = p_Var10->_M_nxt;" (assignment_expression "p_Var6 = p_Var10->_M_nxt" identifier = (field_expression "p_Var10->_M_nxt" identifier -> field_identifier)) ;) (if_statement "if (p_Var6 != (_Hash_node_base *)0x0) {\n        __s = (char *)p_Var6[3]._M_nxt;\n        die_offset = p_Var6[2]._M_nxt;\n        pAVar1 = die->abbrev_code_;\n        goto joined_r0x001966ef;\n      }" if (parenthesized_expression "(p_Var6 != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var6 != (_Hash_node_base *)0x0" identifier != (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        __s = (char *)p_Var6[3]._M_nxt;\n        die_offset = p_Var6[2]._M_nxt;\n        pAVar1 = die->abbrev_code_;\n        goto joined_r0x001966ef;\n      }" { (expression_statement "__s = (char *)p_Var6[3]._M_nxt;" (assignment_expression "__s = (char *)p_Var6[3]._M_nxt" identifier = (cast_expression "(char *)p_Var6[3]._M_nxt" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var6[3]._M_nxt" (subscript_expression "p_Var6[3]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "die_offset = p_Var6[2]._M_nxt;" (assignment_expression "die_offset = p_Var6[2]._M_nxt" identifier = (field_expression "p_Var6[2]._M_nxt" (subscript_expression "p_Var6[2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pAVar1 = die->abbrev_code_;" (assignment_expression "pAVar1 = die->abbrev_code_" identifier = (field_expression "die->abbrev_code_" identifier -> field_identifier)) ;) (goto_statement "goto joined_r0x001966ef;" goto statement_identifier ;) })) })) })) (labeled_statement "LAB_0019652e:\n  pAVar1 = die->abbrev_code_;" statement_identifier : (expression_statement "pAVar1 = die->abbrev_code_;" (assignment_expression "pAVar1 = die->abbrev_code_" identifier = (field_expression "die->abbrev_code_" identifier -> field_identifier)) ;)) (labeled_statement "joined_r0x001966ef:\n  if ((_Hash_node_base *)__s == (_Hash_node_base *)0x0) {\n    if (pAVar1 == (Abbrev_code *)0x0) {\n      return __return_storage_ptr__;\n    }\n    if (pAVar1->tag != 0x39) {\n      return __return_storage_ptr__;\n    }\n    __s = "(anonymous namespace)";\n  }\n  else if ((pAVar1 != (Abbrev_code *)0x0) && (pAVar1->tag == 0x28)) {\n    uVar4 = (this->declarations_)._M_h._M_bucket_count;\n    uVar7 = (ulong)die_offset % uVar4;\n    p_Var10 = (this->declarations_)._M_h._M_buckets[uVar7];\n    if (p_Var10 != (__bucket_type)0x0) {\n      p_Var6 = p_Var10->_M_nxt[1]._M_nxt;\n      p_Var8 = p_Var10->_M_nxt;\n      while (p_Var9 = p_Var8, die_offset != p_Var6) {\n        p_Var8 = p_Var9->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var6 = p_Var8[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var6 % uVar4))\n        goto LAB_00196549;\n      }\n      if (p_Var10->_M_nxt != (_Hash_node_base *)0x0) {\n        die_offset = p_Var10->_M_nxt[2]._M_nxt;\n      }\n    }\n  }" statement_identifier : (if_statement "if ((_Hash_node_base *)__s == (_Hash_node_base *)0x0) {\n    if (pAVar1 == (Abbrev_code *)0x0) {\n      return __return_storage_ptr__;\n    }\n    if (pAVar1->tag != 0x39) {\n      return __return_storage_ptr__;\n    }\n    __s = "(anonymous namespace)";\n  }\n  else if ((pAVar1 != (Abbrev_code *)0x0) && (pAVar1->tag == 0x28)) {\n    uVar4 = (this->declarations_)._M_h._M_bucket_count;\n    uVar7 = (ulong)die_offset % uVar4;\n    p_Var10 = (this->declarations_)._M_h._M_buckets[uVar7];\n    if (p_Var10 != (__bucket_type)0x0) {\n      p_Var6 = p_Var10->_M_nxt[1]._M_nxt;\n      p_Var8 = p_Var10->_M_nxt;\n      while (p_Var9 = p_Var8, die_offset != p_Var6) {\n        p_Var8 = p_Var9->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var6 = p_Var8[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var6 % uVar4))\n        goto LAB_00196549;\n      }\n      if (p_Var10->_M_nxt != (_Hash_node_base *)0x0) {\n        die_offset = p_Var10->_M_nxt[2]._M_nxt;\n      }\n    }\n  }" if (parenthesized_expression "((_Hash_node_base *)__s == (_Hash_node_base *)0x0)" ( (binary_expression "(_Hash_node_base *)__s == (_Hash_node_base *)0x0" (cast_expression "(_Hash_node_base *)__s" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (pAVar1 == (Abbrev_code *)0x0) {\n      return __return_storage_ptr__;\n    }\n    if (pAVar1->tag != 0x39) {\n      return __return_storage_ptr__;\n    }\n    __s = "(anonymous namespace)";\n  }" { (if_statement "if (pAVar1 == (Abbrev_code *)0x0) {\n      return __return_storage_ptr__;\n    }" if (parenthesized_expression "(pAVar1 == (Abbrev_code *)0x0)" ( (binary_expression "pAVar1 == (Abbrev_code *)0x0" identifier == (cast_expression "(Abbrev_code *)0x0" ( (type_descriptor "Abbrev_code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return __return_storage_ptr__;\n    }" { (return_statement "return __return_storage_ptr__;" return identifier ;) })) (if_statement "if (pAVar1->tag != 0x39) {\n      return __return_storage_ptr__;\n    }" if (parenthesized_expression "(pAVar1->tag != 0x39)" ( (binary_expression "pAVar1->tag != 0x39" (field_expression "pAVar1->tag" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n      return __return_storage_ptr__;\n    }" { (return_statement "return __return_storage_ptr__;" return identifier ;) })) (expression_statement "__s = "(anonymous namespace)";" (assignment_expression "__s = "(anonymous namespace)"" identifier = (string_literal ""(anonymous namespace)"" " string_content ")) ;) }) (else_clause "else if ((pAVar1 != (Abbrev_code *)0x0) && (pAVar1->tag == 0x28)) {\n    uVar4 = (this->declarations_)._M_h._M_bucket_count;\n    uVar7 = (ulong)die_offset % uVar4;\n    p_Var10 = (this->declarations_)._M_h._M_buckets[uVar7];\n    if (p_Var10 != (__bucket_type)0x0) {\n      p_Var6 = p_Var10->_M_nxt[1]._M_nxt;\n      p_Var8 = p_Var10->_M_nxt;\n      while (p_Var9 = p_Var8, die_offset != p_Var6) {\n        p_Var8 = p_Var9->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var6 = p_Var8[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var6 % uVar4))\n        goto LAB_00196549;\n      }\n      if (p_Var10->_M_nxt != (_Hash_node_base *)0x0) {\n        die_offset = p_Var10->_M_nxt[2]._M_nxt;\n      }\n    }\n  }" else (if_statement "if ((pAVar1 != (Abbrev_code *)0x0) && (pAVar1->tag == 0x28)) {\n    uVar4 = (this->declarations_)._M_h._M_bucket_count;\n    uVar7 = (ulong)die_offset % uVar4;\n    p_Var10 = (this->declarations_)._M_h._M_buckets[uVar7];\n    if (p_Var10 != (__bucket_type)0x0) {\n      p_Var6 = p_Var10->_M_nxt[1]._M_nxt;\n      p_Var8 = p_Var10->_M_nxt;\n      while (p_Var9 = p_Var8, die_offset != p_Var6) {\n        p_Var8 = p_Var9->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var6 = p_Var8[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var6 % uVar4))\n        goto LAB_00196549;\n      }\n      if (p_Var10->_M_nxt != (_Hash_node_base *)0x0) {\n        die_offset = p_Var10->_M_nxt[2]._M_nxt;\n      }\n    }\n  }" if (parenthesized_expression "((pAVar1 != (Abbrev_code *)0x0) && (pAVar1->tag == 0x28))" ( (binary_expression "(pAVar1 != (Abbrev_code *)0x0) && (pAVar1->tag == 0x28)" (parenthesized_expression "(pAVar1 != (Abbrev_code *)0x0)" ( (binary_expression "pAVar1 != (Abbrev_code *)0x0" identifier != (cast_expression "(Abbrev_code *)0x0" ( (type_descriptor "Abbrev_code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pAVar1->tag == 0x28)" ( (binary_expression "pAVar1->tag == 0x28" (field_expression "pAVar1->tag" identifier -> field_identifier) == number_literal) ))) )) (compound_statement "{\n    uVar4 = (this->declarations_)._M_h._M_bucket_count;\n    uVar7 = (ulong)die_offset % uVar4;\n    p_Var10 = (this->declarations_)._M_h._M_buckets[uVar7];\n    if (p_Var10 != (__bucket_type)0x0) {\n      p_Var6 = p_Var10->_M_nxt[1]._M_nxt;\n      p_Var8 = p_Var10->_M_nxt;\n      while (p_Var9 = p_Var8, die_offset != p_Var6) {\n        p_Var8 = p_Var9->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var6 = p_Var8[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var6 % uVar4))\n        goto LAB_00196549;\n      }\n      if (p_Var10->_M_nxt != (_Hash_node_base *)0x0) {\n        die_offset = p_Var10->_M_nxt[2]._M_nxt;\n      }\n    }\n  }" { (expression_statement "uVar4 = (this->declarations_)._M_h._M_bucket_count;" (assignment_expression "uVar4 = (this->declarations_)._M_h._M_bucket_count" identifier = (field_expression "(this->declarations_)._M_h._M_bucket_count" (field_expression "(this->declarations_)._M_h" (parenthesized_expression "(this->declarations_)" ( (field_expression "this->declarations_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar7 = (ulong)die_offset % uVar4;" (assignment_expression "uVar7 = (ulong)die_offset % uVar4" identifier = (binary_expression "(ulong)die_offset % uVar4" (cast_expression "(ulong)die_offset" ( (type_descriptor "ulong" type_identifier) ) identifier) % identifier)) ;) (expression_statement "p_Var10 = (this->declarations_)._M_h._M_buckets[uVar7];" (assignment_expression "p_Var10 = (this->declarations_)._M_h._M_buckets[uVar7]" identifier = (subscript_expression "(this->declarations_)._M_h._M_buckets[uVar7]" (field_expression "(this->declarations_)._M_h._M_buckets" (field_expression "(this->declarations_)._M_h" (parenthesized_expression "(this->declarations_)" ( (field_expression "this->declarations_" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ identifier ])) ;) (if_statement "if (p_Var10 != (__bucket_type)0x0) {\n      p_Var6 = p_Var10->_M_nxt[1]._M_nxt;\n      p_Var8 = p_Var10->_M_nxt;\n      while (p_Var9 = p_Var8, die_offset != p_Var6) {\n        p_Var8 = p_Var9->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var6 = p_Var8[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var6 % uVar4))\n        goto LAB_00196549;\n      }\n      if (p_Var10->_M_nxt != (_Hash_node_base *)0x0) {\n        die_offset = p_Var10->_M_nxt[2]._M_nxt;\n      }\n    }" if (parenthesized_expression "(p_Var10 != (__bucket_type)0x0)" ( (binary_expression "p_Var10 != (__bucket_type)0x0" identifier != (cast_expression "(__bucket_type)0x0" ( (type_descriptor "__bucket_type" type_identifier) ) number_literal)) )) (compound_statement "{\n      p_Var6 = p_Var10->_M_nxt[1]._M_nxt;\n      p_Var8 = p_Var10->_M_nxt;\n      while (p_Var9 = p_Var8, die_offset != p_Var6) {\n        p_Var8 = p_Var9->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var6 = p_Var8[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var6 % uVar4))\n        goto LAB_00196549;\n      }\n      if (p_Var10->_M_nxt != (_Hash_node_base *)0x0) {\n        die_offset = p_Var10->_M_nxt[2]._M_nxt;\n      }\n    }" { (expression_statement "p_Var6 = p_Var10->_M_nxt[1]._M_nxt;" (assignment_expression "p_Var6 = p_Var10->_M_nxt[1]._M_nxt" identifier = (field_expression "p_Var10->_M_nxt[1]._M_nxt" (subscript_expression "p_Var10->_M_nxt[1]" (field_expression "p_Var10->_M_nxt" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "p_Var8 = p_Var10->_M_nxt;" (assignment_expression "p_Var8 = p_Var10->_M_nxt" identifier = (field_expression "p_Var10->_M_nxt" identifier -> field_identifier)) ;) (while_statement "while (p_Var9 = p_Var8, die_offset != p_Var6) {\n        p_Var8 = p_Var9->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var6 = p_Var8[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var6 % uVar4))\n        goto LAB_00196549;\n      }" while (parenthesized_expression "(p_Var9 = p_Var8, die_offset != p_Var6)" ( (comma_expression "p_Var9 = p_Var8, die_offset != p_Var6" (assignment_expression "p_Var9 = p_Var8" identifier = identifier) , (binary_expression "die_offset != p_Var6" identifier != identifier)) )) (compound_statement "{\n        p_Var8 = p_Var9->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var6 = p_Var8[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var6 % uVar4))\n        goto LAB_00196549;\n      }" { (expression_statement "p_Var8 = p_Var9->_M_nxt;" (assignment_expression "p_Var8 = p_Var9->_M_nxt" identifier = (field_expression "p_Var9->_M_nxt" identifier -> field_identifier)) ;) (if_statement "if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var6 = p_Var8[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var6 % uVar4))\n        goto LAB_00196549;" if (parenthesized_expression "((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var6 = p_Var8[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var6 % uVar4))" ( (binary_expression "(p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var6 = p_Var8[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var6 % uVar4)" (parenthesized_expression "(p_Var8 == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var8 == (_Hash_node_base *)0x0" identifier == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(p_Var6 = p_Var8[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var6 % uVar4)" ( (comma_expression "p_Var6 = p_Var8[1]._M_nxt, p_Var10 = p_Var9, uVar7 != (ulong)p_Var6 % uVar4" (assignment_expression "p_Var6 = p_Var8[1]._M_nxt" identifier = (field_expression "p_Var8[1]._M_nxt" (subscript_expression "p_Var8[1]" identifier [ number_literal ]) . field_identifier)) , (comma_expression "p_Var10 = p_Var9, uVar7 != (ulong)p_Var6 % uVar4" (assignment_expression "p_Var10 = p_Var9" identifier = identifier) , (binary_expression "uVar7 != (ulong)p_Var6 % uVar4" identifier != (binary_expression "(ulong)p_Var6 % uVar4" (cast_expression "(ulong)p_Var6" ( (type_descriptor "ulong" type_identifier) ) identifier) % identifier)))) ))) )) (goto_statement "goto LAB_00196549;" goto statement_identifier ;)) })) (if_statement "if (p_Var10->_M_nxt != (_Hash_node_base *)0x0) {\n        die_offset = p_Var10->_M_nxt[2]._M_nxt;\n      }" if (parenthesized_expression "(p_Var10->_M_nxt != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var10->_M_nxt != (_Hash_node_base *)0x0" (field_expression "p_Var10->_M_nxt" identifier -> field_identifier) != (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        die_offset = p_Var10->_M_nxt[2]._M_nxt;\n      }" { (expression_statement "die_offset = p_Var10->_M_nxt[2]._M_nxt;" (assignment_expression "die_offset = p_Var10->_M_nxt[2]._M_nxt" identifier = (field_expression "p_Var10->_M_nxt[2]._M_nxt" (subscript_expression "p_Var10->_M_nxt[2]" (field_expression "p_Var10->_M_nxt" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) })) })) }))))) (labeled_statement "LAB_00196549:\n  if ((long)die_offset < 1) goto LAB_001965fc;" statement_identifier : (if_statement "if ((long)die_offset < 1) goto LAB_001965fc;" if (parenthesized_expression "((long)die_offset < 1)" ( (binary_expression "(long)die_offset < 1" (cast_expression "(long)die_offset" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (goto_statement "goto LAB_001965fc;" goto statement_identifier ;))) comment (expression_statement "get_context(&local_58,this,(off_t)die_offset);" (call_expression "get_context(&local_58,this,(off_t)die_offset)" identifier (argument_list "(&local_58,this,(off_t)die_offset)" ( (pointer_expression "&local_58" & identifier) , identifier , (cast_expression "(off_t)die_offset" ( (type_descriptor "off_t" type_identifier) ) identifier) ))) ;) (expression_statement "__dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            *)(__return_storage_ptr__->_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            *)(__return_storage_ptr__->_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            *)(__return_storage_ptr__->_M_dataplus)._M_p" (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            *)(__return_storage_ptr__->_M_dataplus)" (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 "(__return_storage_ptr__->_M_dataplus)" ( (field_expression "__return_storage_ptr__->_M_dataplus" 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_58._M_dataplus._M_p == &local_58.field_2) {\n    if (local_58._M_string_length != 0) {\n      if (local_58._M_string_length == 1) {\n        __dest->_M_local_buf[0] = local_58.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                  *)(__return_storage_ptr__->_M_dataplus)._M_p;\n      }\n      else {\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(__return_storage_ptr__->_M_dataplus)._M_p;\n      }\n    }\n    __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n    __dest->_M_local_buf[local_58._M_string_length] = '\0';\n    uVar2 = local_58.field_2._M_allocated_capacity;\n  }\n  else {\n    if (&__return_storage_ptr__->field_2 == __dest) {\n      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n      __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n      (__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity;\n    }\n    else {\n      uVar2 = (__return_storage_ptr__->field_2)._M_allocated_capacity;\n      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n      __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n      (__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity;\n      local_58._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0) goto LAB_001965b1;\n    }\n    local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n    uVar2 = local_58.field_2._M_allocated_capacity;\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_58._M_dataplus._M_p == &local_58.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_58._M_dataplus._M_p == &local_58.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_58._M_dataplus._M_p == &local_58.field_2" (binary_expression "allocator<char>_>_9\n       *)local_58._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)local_58._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier))) == (pointer_expression "&local_58.field_2" & (field_expression "local_58.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n    if (local_58._M_string_length != 0) {\n      if (local_58._M_string_length == 1) {\n        __dest->_M_local_buf[0] = local_58.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                  *)(__return_storage_ptr__->_M_dataplus)._M_p;\n      }\n      else {\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(__return_storage_ptr__->_M_dataplus)._M_p;\n      }\n    }\n    __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n    __dest->_M_local_buf[local_58._M_string_length] = '\0';\n    uVar2 = local_58.field_2._M_allocated_capacity;\n  }" { (if_statement "if (local_58._M_string_length != 0) {\n      if (local_58._M_string_length == 1) {\n        __dest->_M_local_buf[0] = local_58.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                  *)(__return_storage_ptr__->_M_dataplus)._M_p;\n      }\n      else {\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(__return_storage_ptr__->_M_dataplus)._M_p;\n      }\n    }" if (parenthesized_expression "(local_58._M_string_length != 0)" ( (binary_expression "local_58._M_string_length != 0" (field_expression "local_58._M_string_length" identifier . field_identifier) != number_literal) )) (compound_statement "{\n      if (local_58._M_string_length == 1) {\n        __dest->_M_local_buf[0] = local_58.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                  *)(__return_storage_ptr__->_M_dataplus)._M_p;\n      }\n      else {\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(__return_storage_ptr__->_M_dataplus)._M_p;\n      }\n    }" { (if_statement "if (local_58._M_string_length == 1) {\n        __dest->_M_local_buf[0] = local_58.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                  *)(__return_storage_ptr__->_M_dataplus)._M_p;\n      }\n      else {\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(__return_storage_ptr__->_M_dataplus)._M_p;\n      }" if (parenthesized_expression "(local_58._M_string_length == 1)" ( (binary_expression "local_58._M_string_length == 1" (field_expression "local_58._M_string_length" identifier . field_identifier) == number_literal) )) (compound_statement "{\n        __dest->_M_local_buf[0] = local_58.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                  *)(__return_storage_ptr__->_M_dataplus)._M_p;\n      }" { (expression_statement "__dest->_M_local_buf[0] = local_58.field_2._M_local_buf[0];" (assignment_expression "__dest->_M_local_buf[0] = local_58.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_58.field_2._M_local_buf[0]" (field_expression "local_58.field_2._M_local_buf" (field_expression "local_58.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                  *)(__return_storage_ptr__->_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                  *)(__return_storage_ptr__->_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                  *)(__return_storage_ptr__->_M_dataplus)._M_p" (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(__return_storage_ptr__->_M_dataplus)" (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 "(__return_storage_ptr__->_M_dataplus)" ( (field_expression "__return_storage_ptr__->_M_dataplus" identifier -> field_identifier) ))) . field_identifier)) ;) }) (else_clause "else {\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(__return_storage_ptr__->_M_dataplus)._M_p;\n      }" else (compound_statement "{\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(__return_storage_ptr__->_M_dataplus)._M_p;\n      }" { (expression_statement "memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);" (call_expression "memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length)" identifier (argument_list "(__dest,local_58._M_dataplus._M_p,local_58._M_string_length)" ( identifier , (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier) , (field_expression "local_58._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                  *)(__return_storage_ptr__->_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                  *)(__return_storage_ptr__->_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                  *)(__return_storage_ptr__->_M_dataplus)._M_p" (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(__return_storage_ptr__->_M_dataplus)" (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 "(__return_storage_ptr__->_M_dataplus)" ( (field_expression "__return_storage_ptr__->_M_dataplus" identifier -> field_identifier) ))) . field_identifier)) ;) }))) })) (expression_statement "__return_storage_ptr__->_M_string_length = local_58._M_string_length;" (assignment_expression "__return_storage_ptr__->_M_string_length = local_58._M_string_length" (field_expression "__return_storage_ptr__->_M_string_length" identifier -> field_identifier) = (field_expression "local_58._M_string_length" identifier . field_identifier)) ;) (expression_statement "__dest->_M_local_buf[local_58._M_string_length] = '\0';" (assignment_expression "__dest->_M_local_buf[local_58._M_string_length] = '\0'" (subscript_expression "__dest->_M_local_buf[local_58._M_string_length]" (field_expression "__dest->_M_local_buf" identifier -> field_identifier) [ (field_expression "local_58._M_string_length" identifier . field_identifier) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar2 = local_58.field_2._M_allocated_capacity;" (assignment_expression "uVar2 = local_58.field_2._M_allocated_capacity" identifier = (field_expression "local_58.field_2._M_allocated_capacity" (field_expression "local_58.field_2" identifier . field_identifier) . field_identifier)) ;) }) (else_clause "else {\n    if (&__return_storage_ptr__->field_2 == __dest) {\n      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n      __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n      (__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity;\n    }\n    else {\n      uVar2 = (__return_storage_ptr__->field_2)._M_allocated_capacity;\n      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n      __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n      (__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity;\n      local_58._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0) goto LAB_001965b1;\n    }\n    local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n    uVar2 = local_58.field_2._M_allocated_capacity;\n  }" else (compound_statement "{\n    if (&__return_storage_ptr__->field_2 == __dest) {\n      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n      __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n      (__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity;\n    }\n    else {\n      uVar2 = (__return_storage_ptr__->field_2)._M_allocated_capacity;\n      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n      __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n      (__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity;\n      local_58._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0) goto LAB_001965b1;\n    }\n    local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n    uVar2 = local_58.field_2._M_allocated_capacity;\n  }" { (if_statement "if (&__return_storage_ptr__->field_2 == __dest) {\n      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n      __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n      (__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity;\n    }\n    else {\n      uVar2 = (__return_storage_ptr__->field_2)._M_allocated_capacity;\n      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n      __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n      (__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity;\n      local_58._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0) goto LAB_001965b1;\n    }" if (parenthesized_expression "(&__return_storage_ptr__->field_2 == __dest)" ( (binary_expression "&__return_storage_ptr__->field_2 == __dest" (pointer_expression "&__return_storage_ptr__->field_2" & (field_expression "__return_storage_ptr__->field_2" identifier -> field_identifier)) == identifier) )) (compound_statement "{\n      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n      __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n      (__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity;\n    }" { (expression_statement "(__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;" (assignment_expression "(__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p" (field_expression "(__return_storage_ptr__->_M_dataplus)._M_p" (parenthesized_expression "(__return_storage_ptr__->_M_dataplus)" ( (field_expression "__return_storage_ptr__->_M_dataplus" identifier -> field_identifier) )) . field_identifier) = (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier)) ;) (expression_statement "__return_storage_ptr__->_M_string_length = local_58._M_string_length;" (assignment_expression "__return_storage_ptr__->_M_string_length = local_58._M_string_length" (field_expression "__return_storage_ptr__->_M_string_length" identifier -> field_identifier) = (field_expression "local_58._M_string_length" identifier . field_identifier)) ;) (expression_statement "(__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity;" (assignment_expression "(__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity" (field_expression "(__return_storage_ptr__->field_2)._M_allocated_capacity" (parenthesized_expression "(__return_storage_ptr__->field_2)" ( (field_expression "__return_storage_ptr__->field_2" identifier -> field_identifier) )) . field_identifier) = (field_expression "local_58.field_2._M_allocated_capacity" (field_expression "local_58.field_2" identifier . field_identifier) . field_identifier)) ;) }) (else_clause "else {\n      uVar2 = (__return_storage_ptr__->field_2)._M_allocated_capacity;\n      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n      __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n      (__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity;\n      local_58._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0) goto LAB_001965b1;\n    }" else (compound_statement "{\n      uVar2 = (__return_storage_ptr__->field_2)._M_allocated_capacity;\n      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n      __return_storage_ptr__->_M_string_length = local_58._M_string_length;\n      (__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity;\n      local_58._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0) goto LAB_001965b1;\n    }" { (expression_statement "uVar2 = (__return_storage_ptr__->field_2)._M_allocated_capacity;" (assignment_expression "uVar2 = (__return_storage_ptr__->field_2)._M_allocated_capacity" identifier = (field_expression "(__return_storage_ptr__->field_2)._M_allocated_capacity" (parenthesized_expression "(__return_storage_ptr__->field_2)" ( (field_expression "__return_storage_ptr__->field_2" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;" (assignment_expression "(__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p" (field_expression "(__return_storage_ptr__->_M_dataplus)._M_p" (parenthesized_expression "(__return_storage_ptr__->_M_dataplus)" ( (field_expression "__return_storage_ptr__->_M_dataplus" identifier -> field_identifier) )) . field_identifier) = (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier)) ;) (expression_statement "__return_storage_ptr__->_M_string_length = local_58._M_string_length;" (assignment_expression "__return_storage_ptr__->_M_string_length = local_58._M_string_length" (field_expression "__return_storage_ptr__->_M_string_length" identifier -> field_identifier) = (field_expression "local_58._M_string_length" identifier . field_identifier)) ;) (expression_statement "(__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity;" (assignment_expression "(__return_storage_ptr__->field_2)._M_allocated_capacity =\n           local_58.field_2._M_allocated_capacity" (field_expression "(__return_storage_ptr__->field_2)._M_allocated_capacity" (parenthesized_expression "(__return_storage_ptr__->field_2)" ( (field_expression "__return_storage_ptr__->field_2" identifier -> field_identifier) )) . field_identifier) = (field_expression "local_58.field_2._M_allocated_capacity" (field_expression "local_58.field_2" identifier . field_identifier) . field_identifier)) ;) (expression_statement "local_58._M_dataplus._M_p = (pointer)__dest;" (assignment_expression "local_58._M_dataplus._M_p = (pointer)__dest" (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier) = (cast_expression "(pointer)__dest" ( (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) goto LAB_001965b1;" 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)) ))) )) (goto_statement "goto LAB_001965b1;" goto statement_identifier ;)) }))) (expression_statement "local_58._M_dataplus._M_p = (pointer)&local_58.field_2;" (assignment_expression "local_58._M_dataplus._M_p = (pointer)&local_58.field_2" (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&local_58.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "local_58.field_2" identifier . field_identifier))) ;) (expression_statement "uVar2 = local_58.field_2._M_allocated_capacity;" (assignment_expression "uVar2 = local_58.field_2._M_allocated_capacity" identifier = (field_expression "local_58.field_2._M_allocated_capacity" (field_expression "local_58.field_2" identifier . field_identifier) . field_identifier)) ;) }))) (labeled_statement "LAB_001965b1:\n  local_58.field_2._M_allocated_capacity = uVar2;" statement_identifier : (expression_statement "local_58.field_2._M_allocated_capacity = uVar2;" (assignment_expression "local_58.field_2._M_allocated_capacity = uVar2" (field_expression "local_58.field_2._M_allocated_capacity" (field_expression "local_58.field_2" identifier . field_identifier) . field_identifier) = identifier) ;)) (expression_statement "local_58._M_string_length = 0;" (assignment_expression "local_58._M_string_length = 0" (field_expression "local_58._M_string_length" identifier . field_identifier) = number_literal) ;) (expression_statement "*local_58._M_dataplus._M_p = '\0';" (assignment_expression "*local_58._M_dataplus._M_p = '\0'" (pointer_expression "*local_58._M_dataplus._M_p" * (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._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_58._M_dataplus._M_p != &local_58.field_2) {\n    operator_delete(local_58._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_58._M_dataplus._M_p != &local_58.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_58._M_dataplus._M_p != &local_58.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_58._M_dataplus._M_p != &local_58.field_2" (binary_expression "allocator<char>_>_9\n       *)local_58._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)local_58._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&local_58.field_2" & (field_expression "local_58.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n    operator_delete(local_58._M_dataplus._M_p);\n  }" { (expression_statement "operator_delete(local_58._M_dataplus._M_p);" (call_expression "operator_delete(local_58._M_dataplus._M_p)" identifier (argument_list "(local_58._M_dataplus._M_p)" ( (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) (if_statement "if (0x7fffffffffffffff - __return_storage_ptr__->_M_string_length < 2) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }" if (parenthesized_expression "(0x7fffffffffffffff - __return_storage_ptr__->_M_string_length < 2)" ( (binary_expression "0x7fffffffffffffff - __return_storage_ptr__->_M_string_length < 2" (binary_expression "0x7fffffffffffffff - __return_storage_ptr__->_M_string_length" number_literal - (field_expression "__return_storage_ptr__->_M_string_length" identifier -> field_identifier)) < number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }" { comment (labeled_statement "std::__throw_length_error("basic_string::append");" statement_identifier : (ERROR ":" :) (expression_statement "__throw_length_error("basic_string::append");" (call_expression "__throw_length_error("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;)) })) (labeled_statement "std::string::_M_append((string *)__return_storage_ptr__,"::",2);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((string *)__return_storage_ptr__,"::",2);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)__return_storage_ptr__,"::",2);" (call_expression "_M_append((string *)__return_storage_ptr__,"::",2)" identifier (argument_list "((string *)__return_storage_ptr__,"::",2)" ( (cast_expression "(string *)__return_storage_ptr__" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""::"" " string_content ") , number_literal ))) ;))) (labeled_statement "LAB_001965fc:\n  sVar5 = strlen(__s);" statement_identifier : (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;)) (if_statement "if (sVar5 <= 0x7fffffffffffffff - __return_storage_ptr__->_M_string_length) {\n    std::string::_M_append((string *)__return_storage_ptr__,__s,sVar5);\n    return __return_storage_ptr__;\n  }" if (parenthesized_expression "(sVar5 <= 0x7fffffffffffffff - __return_storage_ptr__->_M_string_length)" ( (binary_expression "sVar5 <= 0x7fffffffffffffff - __return_storage_ptr__->_M_string_length" identifier <= (binary_expression "0x7fffffffffffffff - __return_storage_ptr__->_M_string_length" number_literal - (field_expression "__return_storage_ptr__->_M_string_length" identifier -> field_identifier))) )) (compound_statement "{\n    std::string::_M_append((string *)__return_storage_ptr__,__s,sVar5);\n    return __return_storage_ptr__;\n  }" { (labeled_statement "std::string::_M_append((string *)__return_storage_ptr__,__s,sVar5);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((string *)__return_storage_ptr__,__s,sVar5);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)__return_storage_ptr__,__s,sVar5);" (call_expression "_M_append((string *)__return_storage_ptr__,__s,sVar5)" identifier (argument_list "((string *)__return_storage_ptr__,__s,sVar5)" ( (cast_expression "(string *)__return_storage_ptr__" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;))) (return_statement "return __return_storage_ptr__;" return identifier ;) })) comment (labeled_statement "std::__throw_length_error("basic_string::append");" statement_identifier : (ERROR ":" :) (expression_statement "__throw_length_error("basic_string::append");" (call_expression "__throw_length_error("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;)) }))
(translation_unit "undefined8 * FUN_001964c0(undefined8 *param_1,long param_2,long param_3,long param_4)\n\n{\n  int *piVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long *plVar4;\n  size_t sVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long *plVar9;\n  undefined8 *__dest;\n  long *plVar10;\n  char *__s;\n  ulong uVar11;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48 [3];\n  \n  *(undefined1 *)(param_1 + 2) = 0;\n  __s = *(char **)(param_3 + 0x58);\n  *param_1 = param_1 + 2;\n  param_1[1] = 0;\n  if (__s == (char *)0x0) {\n    FUN_0026fd40(param_3);\n    __s = *(char **)(param_3 + 0x58);\n  }\n  uVar11 = 0;\n  if (param_4 != 0) {\n    uVar11 = *(ulong *)(param_4 + 0x10);\n  }\n  if (*(char *)(param_3 + 0x50) == '\0') {\n    FUN_0026fd20(param_3);\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }\n  }\n  else {\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }\n  }\n  if (0 < (long)uVar7) {\n    uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }\n  }\nLAB_0019652e:\n  piVar1 = *(int **)(param_3 + 0x30);\njoined_r0x001966ef:\n  if (__s == (char *)0x0) {\n    if (piVar1 == (int *)0x0) {\n      return param_1;\n    }\n    if (*piVar1 != 0x39) {\n      return param_1;\n    }\n    __s = "(anonymous namespace)";\n  }\n  else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }\nLAB_00196549:\n  if ((long)uVar11 < 1) goto LAB_001965fc;\n                    \n  FUN_001962c0(&local_58,param_2,uVar11);\n  __dest = (undefined8 *)*param_1;\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }\n    param_1[1] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }\nLAB_001965b1:\n  local_48[0] = uVar2;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_002a2980();\n  }\n  if (0x7fffffffffffffff - param_1[1] < 2) {\n                    \n    FUN_002e12b0("basic_string::append");\n  }\n  FUN_002aac00(param_1,&DAT_003593f9,2);\nLAB_001965fc:\n  sVar5 = strlen(__s);\n  if (sVar5 <= 0x7fffffffffffffff - param_1[1]) {\n    FUN_002aac00(param_1,__s,sVar5);\n    return param_1;\n  }\n                    \n  FUN_002e12b0("basic_string::append");\n}\n\n" (function_definition "undefined8 * FUN_001964c0(undefined8 *param_1,long param_2,long param_3,long param_4)\n\n{\n  int *piVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long *plVar4;\n  size_t sVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long *plVar9;\n  undefined8 *__dest;\n  long *plVar10;\n  char *__s;\n  ulong uVar11;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48 [3];\n  \n  *(undefined1 *)(param_1 + 2) = 0;\n  __s = *(char **)(param_3 + 0x58);\n  *param_1 = param_1 + 2;\n  param_1[1] = 0;\n  if (__s == (char *)0x0) {\n    FUN_0026fd40(param_3);\n    __s = *(char **)(param_3 + 0x58);\n  }\n  uVar11 = 0;\n  if (param_4 != 0) {\n    uVar11 = *(ulong *)(param_4 + 0x10);\n  }\n  if (*(char *)(param_3 + 0x50) == '\0') {\n    FUN_0026fd20(param_3);\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }\n  }\n  else {\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }\n  }\n  if (0 < (long)uVar7) {\n    uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }\n  }\nLAB_0019652e:\n  piVar1 = *(int **)(param_3 + 0x30);\njoined_r0x001966ef:\n  if (__s == (char *)0x0) {\n    if (piVar1 == (int *)0x0) {\n      return param_1;\n    }\n    if (*piVar1 != 0x39) {\n      return param_1;\n    }\n    __s = "(anonymous namespace)";\n  }\n  else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }\nLAB_00196549:\n  if ((long)uVar11 < 1) goto LAB_001965fc;\n                    \n  FUN_001962c0(&local_58,param_2,uVar11);\n  __dest = (undefined8 *)*param_1;\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }\n    param_1[1] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }\nLAB_001965b1:\n  local_48[0] = uVar2;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_002a2980();\n  }\n  if (0x7fffffffffffffff - param_1[1] < 2) {\n                    \n    FUN_002e12b0("basic_string::append");\n  }\n  FUN_002aac00(param_1,&DAT_003593f9,2);\nLAB_001965fc:\n  sVar5 = strlen(__s);\n  if (sVar5 <= 0x7fffffffffffffff - param_1[1]) {\n    FUN_002aac00(param_1,__s,sVar5);\n    return param_1;\n  }\n                    \n  FUN_002e12b0("basic_string::append");\n}" type_identifier (pointer_declarator "* FUN_001964c0(undefined8 *param_1,long param_2,long param_3,long param_4)" * (function_declarator "FUN_001964c0(undefined8 *param_1,long param_2,long param_3,long param_4)" identifier (parameter_list "(undefined8 *param_1,long param_2,long param_3,long param_4)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) )))) (compound_statement "{\n  int *piVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long *plVar4;\n  size_t sVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long *plVar9;\n  undefined8 *__dest;\n  long *plVar10;\n  char *__s;\n  ulong uVar11;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48 [3];\n  \n  *(undefined1 *)(param_1 + 2) = 0;\n  __s = *(char **)(param_3 + 0x58);\n  *param_1 = param_1 + 2;\n  param_1[1] = 0;\n  if (__s == (char *)0x0) {\n    FUN_0026fd40(param_3);\n    __s = *(char **)(param_3 + 0x58);\n  }\n  uVar11 = 0;\n  if (param_4 != 0) {\n    uVar11 = *(ulong *)(param_4 + 0x10);\n  }\n  if (*(char *)(param_3 + 0x50) == '\0') {\n    FUN_0026fd20(param_3);\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }\n  }\n  else {\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }\n  }\n  if (0 < (long)uVar7) {\n    uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }\n  }\nLAB_0019652e:\n  piVar1 = *(int **)(param_3 + 0x30);\njoined_r0x001966ef:\n  if (__s == (char *)0x0) {\n    if (piVar1 == (int *)0x0) {\n      return param_1;\n    }\n    if (*piVar1 != 0x39) {\n      return param_1;\n    }\n    __s = "(anonymous namespace)";\n  }\n  else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }\nLAB_00196549:\n  if ((long)uVar11 < 1) goto LAB_001965fc;\n                    \n  FUN_001962c0(&local_58,param_2,uVar11);\n  __dest = (undefined8 *)*param_1;\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }\n    param_1[1] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }\nLAB_001965b1:\n  local_48[0] = uVar2;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_002a2980();\n  }\n  if (0x7fffffffffffffff - param_1[1] < 2) {\n                    \n    FUN_002e12b0("basic_string::append");\n  }\n  FUN_002aac00(param_1,&DAT_003593f9,2);\nLAB_001965fc:\n  sVar5 = strlen(__s);\n  if (sVar5 <= 0x7fffffffffffffff - param_1[1]) {\n    FUN_002aac00(param_1,__s,sVar5);\n    return param_1;\n  }\n                    \n  FUN_002e12b0("basic_string::append");\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "long *plVar9;" (sized_type_specifier "long" long) (pointer_declarator "*plVar9" * identifier) ;) (declaration "undefined8 *__dest;" type_identifier (pointer_declarator "*__dest" * identifier) ;) (declaration "long *plVar10;" (sized_type_specifier "long" long) (pointer_declarator "*plVar10" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "undefined8 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "size_t local_50;" primitive_type identifier ;) (declaration "undefined8 local_48 [3];" type_identifier (array_declarator "local_48 [3]" identifier [ number_literal ]) ;) (expression_statement "*(undefined1 *)(param_1 + 2) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 2) = 0" (pointer_expression "*(undefined1 *)(param_1 + 2)" * (cast_expression "(undefined1 *)(param_1 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__s = *(char **)(param_3 + 0x58);" (assignment_expression "__s = *(char **)(param_3 + 0x58)" identifier = (pointer_expression "*(char **)(param_3 + 0x58)" * (cast_expression "(char **)(param_3 + 0x58)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x58)" ( (binary_expression "param_3 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*param_1 = param_1 + 2;" (assignment_expression "*param_1 = param_1 + 2" (pointer_expression "*param_1" * identifier) = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (__s == (char *)0x0) {\n    FUN_0026fd40(param_3);\n    __s = *(char **)(param_3 + 0x58);\n  }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_0026fd40(param_3);\n    __s = *(char **)(param_3 + 0x58);\n  }" { (expression_statement "FUN_0026fd40(param_3);" (call_expression "FUN_0026fd40(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;) (expression_statement "__s = *(char **)(param_3 + 0x58);" (assignment_expression "__s = *(char **)(param_3 + 0x58)" identifier = (pointer_expression "*(char **)(param_3 + 0x58)" * (cast_expression "(char **)(param_3 + 0x58)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x58)" ( (binary_expression "param_3 + 0x58" identifier + number_literal) ))))) ;) })) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (if_statement "if (param_4 != 0) {\n    uVar11 = *(ulong *)(param_4 + 0x10);\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar11 = *(ulong *)(param_4 + 0x10);\n  }" { (expression_statement "uVar11 = *(ulong *)(param_4 + 0x10);" (assignment_expression "uVar11 = *(ulong *)(param_4 + 0x10)" identifier = (pointer_expression "*(ulong *)(param_4 + 0x10)" * (cast_expression "(ulong *)(param_4 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x10)" ( (binary_expression "param_4 + 0x10" identifier + number_literal) ))))) ;) })) (if_statement "if (*(char *)(param_3 + 0x50) == '\0') {\n    FUN_0026fd20(param_3);\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }\n  }\n  else {\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }\n  }" if (parenthesized_expression "(*(char *)(param_3 + 0x50) == '\0')" ( (binary_expression "*(char *)(param_3 + 0x50) == '\0'" (pointer_expression "*(char *)(param_3 + 0x50)" * (cast_expression "(char *)(param_3 + 0x50)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x50)" ( (binary_expression "param_3 + 0x50" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_0026fd20(param_3);\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }\n  }" { (expression_statement "FUN_0026fd20(param_3);" (call_expression "FUN_0026fd20(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;) (expression_statement "uVar7 = *(ulong *)(param_3 + 0x80);" (assignment_expression "uVar7 = *(ulong *)(param_3 + 0x80)" identifier = (pointer_expression "*(ulong *)(param_3 + 0x80)" * (cast_expression "(ulong *)(param_3 + 0x80)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x80)" ( (binary_expression "param_3 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (uVar7 == 0) {\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }" { (if_statement "if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }" if (parenthesized_expression "(*(char *)(param_3 + 0x50) == '\0')" ( (binary_expression "*(char *)(param_3 + 0x50) == '\0'" (pointer_expression "*(char *)(param_3 + 0x50)" * (cast_expression "(char *)(param_3 + 0x50)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x50)" ( (binary_expression "param_3 + 0x50" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        FUN_0026fd20(param_3);\n      }" { (expression_statement "FUN_0026fd20(param_3);" (call_expression "FUN_0026fd20(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;) })) (goto_statement "goto LAB_00196666;" goto statement_identifier ;) })) }) (else_clause "else {\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }\n  }" else (compound_statement "{\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }\n  }" { (expression_statement "uVar7 = *(ulong *)(param_3 + 0x80);" (assignment_expression "uVar7 = *(ulong *)(param_3 + 0x80)" identifier = (pointer_expression "*(ulong *)(param_3 + 0x80)" * (cast_expression "(ulong *)(param_3 + 0x80)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x80)" ( (binary_expression "param_3 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }" { (labeled_statement "LAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);" statement_identifier : (expression_statement "uVar7 = *(ulong *)(param_3 + 0x88);" (assignment_expression "uVar7 = *(ulong *)(param_3 + 0x88)" identifier = (pointer_expression "*(ulong *)(param_3 + 0x88)" * (cast_expression "(ulong *)(param_3 + 0x88)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x88)" ( (binary_expression "param_3 + 0x88" identifier + number_literal) ))))) ;)) })) }))) (if_statement "if (0 < (long)uVar7) {\n    uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }\n  }" if (parenthesized_expression "(0 < (long)uVar7)" ( (binary_expression "0 < (long)uVar7" number_literal < (cast_expression "(long)uVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n    uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }\n  }" { (expression_statement "uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);" (assignment_expression "uVar6 = uVar7 % *(ulong *)(param_2 + 0x958)" identifier = (binary_expression "uVar7 % *(ulong *)(param_2 + 0x958)" identifier % (pointer_expression "*(ulong *)(param_2 + 0x958)" * (cast_expression "(ulong *)(param_2 + 0x958)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x958)" ( (binary_expression "param_2 + 0x958" identifier + number_literal) )))))) ;) (expression_statement "plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);" (assignment_expression "plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8)" identifier = (pointer_expression "*(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8)" * (cast_expression "(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_2 + 0x950) + uVar6 * 8)" ( (binary_expression "*(long *)(param_2 + 0x950) + uVar6 * 8" (pointer_expression "*(long *)(param_2 + 0x950)" * (cast_expression "(long *)(param_2 + 0x950)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x950)" ( (binary_expression "param_2 + 0x950" identifier + number_literal) )))) + (binary_expression "uVar6 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (plVar10 != (long *)0x0) {\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }" if (parenthesized_expression "(plVar10 != (long *)0x0)" ( (binary_expression "plVar10 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }" { (expression_statement "uVar8 = ((long *)*plVar10)[1];" (assignment_expression "uVar8 = ((long *)*plVar10)[1]" identifier = (subscript_expression "((long *)*plVar10)[1]" (parenthesized_expression "((long *)*plVar10)" ( (cast_expression "(long *)*plVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar10" * identifier)) )) [ number_literal ])) ;) (expression_statement "plVar4 = (long *)*plVar10;" (assignment_expression "plVar4 = (long *)*plVar10" identifier = (cast_expression "(long *)*plVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar10" * identifier))) ;) (while_statement "while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }" while (parenthesized_expression "(plVar9 = plVar4, uVar7 != uVar8)" ( (comma_expression "plVar9 = plVar4, uVar7 != uVar8" (assignment_expression "plVar9 = plVar4" identifier = identifier) , (binary_expression "uVar7 != uVar8" identifier != identifier)) )) (compound_statement "{\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }" { (expression_statement "plVar4 = (long *)*plVar9;" (assignment_expression "plVar4 = (long *)*plVar9" identifier = (cast_expression "(long *)*plVar9" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar9" * identifier))) ;) (if_statement "if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;" if (parenthesized_expression "((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))" ( (binary_expression "(plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958))" (parenthesized_expression "(plVar4 == (long *)0x0)" ( (binary_expression "plVar4 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958))" ( (comma_expression "uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)" (assignment_expression "uVar8 = plVar4[1]" identifier = (subscript_expression "plVar4[1]" identifier [ number_literal ])) , (comma_expression "plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)" (assignment_expression "plVar10 = plVar9" identifier = identifier) , (binary_expression "uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)" identifier != (binary_expression "uVar8 % *(ulong *)(param_2 + 0x958)" identifier % (pointer_expression "*(ulong *)(param_2 + 0x958)" * (cast_expression "(ulong *)(param_2 + 0x958)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x958)" ( (binary_expression "param_2 + 0x958" identifier + number_literal) )))))))) ))) )) (goto_statement "goto LAB_0019652e;" goto statement_identifier ;)) })) (expression_statement "lVar3 = *plVar10;" (assignment_expression "lVar3 = *plVar10" identifier = (pointer_expression "*plVar10" * identifier)) ;) (if_statement "if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (compound_statement "{\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }" { (expression_statement "__s = *(char **)(lVar3 + 0x18);" (assignment_expression "__s = *(char **)(lVar3 + 0x18)" identifier = (pointer_expression "*(char **)(lVar3 + 0x18)" * (cast_expression "(char **)(lVar3 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(ulong *)(lVar3 + 0x10);" (assignment_expression "uVar11 = *(ulong *)(lVar3 + 0x10)" identifier = (pointer_expression "*(ulong *)(lVar3 + 0x10)" * (cast_expression "(ulong *)(lVar3 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x10)" ( (binary_expression "lVar3 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "piVar1 = *(int **)(param_3 + 0x30);" (assignment_expression "piVar1 = *(int **)(param_3 + 0x30)" identifier = (pointer_expression "*(int **)(param_3 + 0x30)" * (cast_expression "(int **)(param_3 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x001966ef;" goto statement_identifier ;) })) })) })) (labeled_statement "LAB_0019652e:\n  piVar1 = *(int **)(param_3 + 0x30);" statement_identifier : (expression_statement "piVar1 = *(int **)(param_3 + 0x30);" (assignment_expression "piVar1 = *(int **)(param_3 + 0x30)" identifier = (pointer_expression "*(int **)(param_3 + 0x30)" * (cast_expression "(int **)(param_3 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) ))))) ;)) (labeled_statement "joined_r0x001966ef:\n  if (__s == (char *)0x0) {\n    if (piVar1 == (int *)0x0) {\n      return param_1;\n    }\n    if (*piVar1 != 0x39) {\n      return param_1;\n    }\n    __s = "(anonymous namespace)";\n  }\n  else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }" statement_identifier : (if_statement "if (__s == (char *)0x0) {\n    if (piVar1 == (int *)0x0) {\n      return param_1;\n    }\n    if (*piVar1 != 0x39) {\n      return param_1;\n    }\n    __s = "(anonymous namespace)";\n  }\n  else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (piVar1 == (int *)0x0) {\n      return param_1;\n    }\n    if (*piVar1 != 0x39) {\n      return param_1;\n    }\n    __s = "(anonymous namespace)";\n  }" { (if_statement "if (piVar1 == (int *)0x0) {\n      return param_1;\n    }" if (parenthesized_expression "(piVar1 == (int *)0x0)" ( (binary_expression "piVar1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return param_1;\n    }" { (return_statement "return param_1;" return identifier ;) })) (if_statement "if (*piVar1 != 0x39) {\n      return param_1;\n    }" if (parenthesized_expression "(*piVar1 != 0x39)" ( (binary_expression "*piVar1 != 0x39" (pointer_expression "*piVar1" * identifier) != number_literal) )) (compound_statement "{\n      return param_1;\n    }" { (return_statement "return param_1;" return identifier ;) })) (expression_statement "__s = "(anonymous namespace)";" (assignment_expression "__s = "(anonymous namespace)"" identifier = (string_literal ""(anonymous namespace)"" " string_content ")) ;) }) (else_clause "else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }" else (if_statement "if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }" if (parenthesized_expression "((piVar1 != (int *)0x0) && (*piVar1 == 0x28))" ( (binary_expression "(piVar1 != (int *)0x0) && (*piVar1 == 0x28)" (parenthesized_expression "(piVar1 != (int *)0x0)" ( (binary_expression "piVar1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*piVar1 == 0x28)" ( (binary_expression "*piVar1 == 0x28" (pointer_expression "*piVar1" * identifier) == number_literal) ))) )) (compound_statement "{\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }" { (expression_statement "uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);" (assignment_expression "uVar7 = uVar11 % *(ulong *)(param_2 + 0x958)" identifier = (binary_expression "uVar11 % *(ulong *)(param_2 + 0x958)" identifier % (pointer_expression "*(ulong *)(param_2 + 0x958)" * (cast_expression "(ulong *)(param_2 + 0x958)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x958)" ( (binary_expression "param_2 + 0x958" identifier + number_literal) )))))) ;) (expression_statement "plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);" (assignment_expression "plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8)" identifier = (pointer_expression "*(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8)" * (cast_expression "(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_2 + 0x950) + uVar7 * 8)" ( (binary_expression "*(long *)(param_2 + 0x950) + uVar7 * 8" (pointer_expression "*(long *)(param_2 + 0x950)" * (cast_expression "(long *)(param_2 + 0x950)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x950)" ( (binary_expression "param_2 + 0x950" identifier + number_literal) )))) + (binary_expression "uVar7 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }" if (parenthesized_expression "(plVar10 != (long *)0x0)" ( (binary_expression "plVar10 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }" { (expression_statement "uVar6 = ((long *)*plVar10)[1];" (assignment_expression "uVar6 = ((long *)*plVar10)[1]" identifier = (subscript_expression "((long *)*plVar10)[1]" (parenthesized_expression "((long *)*plVar10)" ( (cast_expression "(long *)*plVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar10" * identifier)) )) [ number_literal ])) ;) (expression_statement "plVar4 = (long *)*plVar10;" (assignment_expression "plVar4 = (long *)*plVar10" identifier = (cast_expression "(long *)*plVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar10" * identifier))) ;) (while_statement "while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }" while (parenthesized_expression "(plVar9 = plVar4, uVar11 != uVar6)" ( (comma_expression "plVar9 = plVar4, uVar11 != uVar6" (assignment_expression "plVar9 = plVar4" identifier = identifier) , (binary_expression "uVar11 != uVar6" identifier != identifier)) )) (compound_statement "{\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }" { (expression_statement "plVar4 = (long *)*plVar9;" (assignment_expression "plVar4 = (long *)*plVar9" identifier = (cast_expression "(long *)*plVar9" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar9" * identifier))) ;) (if_statement "if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;" if (parenthesized_expression "((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))" ( (binary_expression "(plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958))" (parenthesized_expression "(plVar4 == (long *)0x0)" ( (binary_expression "plVar4 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958))" ( (comma_expression "uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)" (assignment_expression "uVar6 = plVar4[1]" identifier = (subscript_expression "plVar4[1]" identifier [ number_literal ])) , (comma_expression "plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)" (assignment_expression "plVar10 = plVar9" identifier = identifier) , (binary_expression "uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)" identifier != (binary_expression "uVar6 % *(ulong *)(param_2 + 0x958)" identifier % (pointer_expression "*(ulong *)(param_2 + 0x958)" * (cast_expression "(ulong *)(param_2 + 0x958)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x958)" ( (binary_expression "param_2 + 0x958" identifier + number_literal) )))))))) ))) )) (goto_statement "goto LAB_00196549;" goto statement_identifier ;)) })) (if_statement "if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }" if (parenthesized_expression "(*plVar10 != 0)" ( (binary_expression "*plVar10 != 0" (pointer_expression "*plVar10" * identifier) != number_literal) )) (compound_statement "{\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }" { (expression_statement "uVar11 = *(ulong *)(*plVar10 + 0x10);" (assignment_expression "uVar11 = *(ulong *)(*plVar10 + 0x10)" identifier = (pointer_expression "*(ulong *)(*plVar10 + 0x10)" * (cast_expression "(ulong *)(*plVar10 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*plVar10 + 0x10)" ( (binary_expression "*plVar10 + 0x10" (pointer_expression "*plVar10" * identifier) + number_literal) ))))) ;) })) })) }))))) (labeled_statement "LAB_00196549:\n  if ((long)uVar11 < 1) goto LAB_001965fc;" statement_identifier : (if_statement "if ((long)uVar11 < 1) goto LAB_001965fc;" if (parenthesized_expression "((long)uVar11 < 1)" ( (binary_expression "(long)uVar11 < 1" (cast_expression "(long)uVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (goto_statement "goto LAB_001965fc;" goto statement_identifier ;))) (expression_statement "FUN_001962c0(&local_58,param_2,uVar11);" (call_expression "FUN_001962c0(&local_58,param_2,uVar11)" identifier (argument_list "(&local_58,param_2,uVar11)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;) (expression_statement "__dest = (undefined8 *)*param_1;" (assignment_expression "__dest = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }\n    param_1[1] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }" if (parenthesized_expression "(local_58 == local_48)" ( (binary_expression "local_58 == local_48" identifier == identifier) )) (compound_statement "{\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }\n    param_1[1] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar2 = local_48[0];\n  }" { (if_statement "if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (compound_statement "{\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }" { (if_statement "if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }" if (parenthesized_expression "(local_50 == 1)" ( (binary_expression "local_50 == 1" identifier == number_literal) )) (compound_statement "{\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }" { (expression_statement "*(undefined1 *)__dest = (undefined1)local_48[0];" (assignment_expression "*(undefined1 *)__dest = (undefined1)local_48[0]" (pointer_expression "*(undefined1 *)__dest" * (cast_expression "(undefined1 *)__dest" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(undefined1)local_48[0]" ( (type_descriptor "undefined1" type_identifier) ) (subscript_expression "local_48[0]" identifier [ number_literal ]))) ;) (expression_statement "__dest = (undefined8 *)*param_1;" (assignment_expression "__dest = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) }) (else_clause "else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }" else (compound_statement "{\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }" { (expression_statement "memcpy(__dest,local_58,local_50);" (call_expression "memcpy(__dest,local_58,local_50)" identifier (argument_list "(__dest,local_58,local_50)" ( identifier , identifier , identifier ))) ;) (expression_statement "__dest = (undefined8 *)*param_1;" (assignment_expression "__dest = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) }))) })) (expression_statement "param_1[1] = local_50;" (assignment_expression "param_1[1] = local_50" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((long)__dest + local_50) = 0;" (assignment_expression "*(undefined1 *)((long)__dest + local_50) = 0" (pointer_expression "*(undefined1 *)((long)__dest + local_50)" * (cast_expression "(undefined1 *)((long)__dest + local_50)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + local_50)" ( (binary_expression "(long)__dest + local_50" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar2 = local_48[0];" (assignment_expression "uVar2 = local_48[0]" identifier = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }" else (compound_statement "{\n    if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }" { (if_statement "if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }" if (parenthesized_expression "(param_1 + 2 == __dest)" ( (binary_expression "param_1 + 2 == __dest" (binary_expression "param_1 + 2" identifier + number_literal) == identifier) )) (compound_statement "{\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }" { (expression_statement "*param_1 = local_58;" (assignment_expression "*param_1 = local_58" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_50;" (assignment_expression "param_1[1] = local_50" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = local_48[0];" (assignment_expression "param_1[2] = local_48[0]" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }" else (compound_statement "{\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }" { (expression_statement "uVar2 = param_1[2];" (assignment_expression "uVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "*param_1 = local_58;" (assignment_expression "*param_1 = local_58" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_50;" (assignment_expression "param_1[1] = local_50" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = local_48[0];" (assignment_expression "param_1[2] = local_48[0]" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) (expression_statement "local_58 = __dest;" (assignment_expression "local_58 = __dest" identifier = identifier) ;) (if_statement "if (__dest != (undefined8 *)0x0) goto LAB_001965b1;" if (parenthesized_expression "(__dest != (undefined8 *)0x0)" ( (binary_expression "__dest != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001965b1;" goto statement_identifier ;)) }))) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) (expression_statement "uVar2 = local_48[0];" (assignment_expression "uVar2 = local_48[0]" identifier = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) }))) (labeled_statement "LAB_001965b1:\n  local_48[0] = uVar2;" statement_identifier : (expression_statement "local_48[0] = uVar2;" (assignment_expression "local_48[0] = uVar2" (subscript_expression "local_48[0]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "*(undefined1 *)local_58 = 0;" (assignment_expression "*(undefined1 *)local_58 = 0" (pointer_expression "*(undefined1 *)local_58" * (cast_expression "(undefined1 *)local_58" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if (local_58 != local_48) {\n    FUN_002a2980();\n  }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n    FUN_002a2980();\n  }" { (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (0x7fffffffffffffff - param_1[1] < 2) {\n                    \n    FUN_002e12b0("basic_string::append");\n  }" if (parenthesized_expression "(0x7fffffffffffffff - param_1[1] < 2)" ( (binary_expression "0x7fffffffffffffff - param_1[1] < 2" (binary_expression "0x7fffffffffffffff - param_1[1]" number_literal - (subscript_expression "param_1[1]" identifier [ number_literal ])) < number_literal) )) (compound_statement "{\n                    \n    FUN_002e12b0("basic_string::append");\n  }" { (expression_statement "FUN_002e12b0("basic_string::append");" (call_expression "FUN_002e12b0("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (expression_statement "FUN_002aac00(param_1,&DAT_003593f9,2);" (call_expression "FUN_002aac00(param_1,&DAT_003593f9,2)" identifier (argument_list "(param_1,&DAT_003593f9,2)" ( identifier , (pointer_expression "&DAT_003593f9" & identifier) , number_literal ))) ;) (labeled_statement "LAB_001965fc:\n  sVar5 = strlen(__s);" statement_identifier : (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;)) (if_statement "if (sVar5 <= 0x7fffffffffffffff - param_1[1]) {\n    FUN_002aac00(param_1,__s,sVar5);\n    return param_1;\n  }" if (parenthesized_expression "(sVar5 <= 0x7fffffffffffffff - param_1[1])" ( (binary_expression "sVar5 <= 0x7fffffffffffffff - param_1[1]" identifier <= (binary_expression "0x7fffffffffffffff - param_1[1]" number_literal - (subscript_expression "param_1[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    FUN_002aac00(param_1,__s,sVar5);\n    return param_1;\n  }" { (expression_statement "FUN_002aac00(param_1,__s,sVar5);" (call_expression "FUN_002aac00(param_1,__s,sVar5)" identifier (argument_list "(param_1,__s,sVar5)" ( identifier , identifier , identifier ))) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "FUN_002e12b0("basic_string::append");" (call_expression "FUN_002e12b0("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator 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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) })) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT % (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )) [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (binary_expression IDENT % (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))))) ))) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT % (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )) [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (binary_expression IDENT % (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))))) ))) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) })) })) }))))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (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 *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (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)) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (labeled_statement statement_identifier : (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 ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression LIT - (subscript_expression IDENT [ LIT ])) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression LIT - (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })))
(function_definition "undefined8 * FUN_001964c0(undefined8 *param_1,long param_2,long param_3,long param_4)\n\n{\n  int *piVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long *plVar4;\n  size_t sVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long *plVar9;\n  undefined8 *__dest;\n  long *plVar10;\n  char *__s;\n  ulong uVar11;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48 [3];\n  \n  *(undefined1 *)(param_1 + 2) = 0;\n  __s = *(char **)(param_3 + 0x58);\n  *param_1 = param_1 + 2;\n  param_1[1] = 0;\n  if (__s == (char *)0x0) {\n    FUN_0026fd40(param_3);\n    __s = *(char **)(param_3 + 0x58);\n  }\n  uVar11 = 0;\n  if (param_4 != 0) {\n    uVar11 = *(ulong *)(param_4 + 0x10);\n  }\n  if (*(char *)(param_3 + 0x50) == '\0') {\n    FUN_0026fd20(param_3);\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }\n  }\n  else {\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }\n  }\n  if (0 < (long)uVar7) {\n    uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }\n  }\nLAB_0019652e:\n  piVar1 = *(int **)(param_3 + 0x30);\njoined_r0x001966ef:\n  if (__s == (char *)0x0) {\n    if (piVar1 == (int *)0x0) {\n      return param_1;\n    }\n    if (*piVar1 != 0x39) {\n      return param_1;\n    }\n    __s = "(anonymous namespace)";\n  }\n  else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }\nLAB_00196549:\n  if ((long)uVar11 < 1) goto LAB_001965fc;\n                    \n  FUN_001962c0(&local_58,param_2,uVar11);\n  __dest = (undefined8 *)*param_1;\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }\n    param_1[1] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }\nLAB_001965b1:\n  local_48[0] = uVar2;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_002a2980();\n  }\n  if (0x7fffffffffffffff - param_1[1] < 2) {\n                    \n    FUN_002e12b0("basic_string::append");\n  }\n  FUN_002aac00(param_1,&DAT_003593f9,2);\nLAB_001965fc:\n  sVar5 = strlen(__s);\n  if (sVar5 <= 0x7fffffffffffffff - param_1[1]) {\n    FUN_002aac00(param_1,__s,sVar5);\n    return param_1;\n  }\n                    \n  FUN_002e12b0("basic_string::append");\n}" (type_identifier "undefined8") (pointer_declarator "* FUN_001964c0(undefined8 *param_1,long param_2,long param_3,long param_4)" (* "*") (function_declarator "FUN_001964c0(undefined8 *param_1,long param_2,long param_3,long param_4)" (identifier "FUN_001964c0") (parameter_list "(undefined8 *param_1,long param_2,long param_3,long param_4)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (identifier "param_4")) () ")")))) (compound_statement "{\n  int *piVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long *plVar4;\n  size_t sVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long *plVar9;\n  undefined8 *__dest;\n  long *plVar10;\n  char *__s;\n  ulong uVar11;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48 [3];\n  \n  *(undefined1 *)(param_1 + 2) = 0;\n  __s = *(char **)(param_3 + 0x58);\n  *param_1 = param_1 + 2;\n  param_1[1] = 0;\n  if (__s == (char *)0x0) {\n    FUN_0026fd40(param_3);\n    __s = *(char **)(param_3 + 0x58);\n  }\n  uVar11 = 0;\n  if (param_4 != 0) {\n    uVar11 = *(ulong *)(param_4 + 0x10);\n  }\n  if (*(char *)(param_3 + 0x50) == '\0') {\n    FUN_0026fd20(param_3);\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }\n  }\n  else {\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }\n  }\n  if (0 < (long)uVar7) {\n    uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }\n  }\nLAB_0019652e:\n  piVar1 = *(int **)(param_3 + 0x30);\njoined_r0x001966ef:\n  if (__s == (char *)0x0) {\n    if (piVar1 == (int *)0x0) {\n      return param_1;\n    }\n    if (*piVar1 != 0x39) {\n      return param_1;\n    }\n    __s = "(anonymous namespace)";\n  }\n  else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }\nLAB_00196549:\n  if ((long)uVar11 < 1) goto LAB_001965fc;\n                    \n  FUN_001962c0(&local_58,param_2,uVar11);\n  __dest = (undefined8 *)*param_1;\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }\n    param_1[1] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }\nLAB_001965b1:\n  local_48[0] = uVar2;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_002a2980();\n  }\n  if (0x7fffffffffffffff - param_1[1] < 2) {\n                    \n    FUN_002e12b0("basic_string::append");\n  }\n  FUN_002aac00(param_1,&DAT_003593f9,2);\nLAB_001965fc:\n  sVar5 = strlen(__s);\n  if (sVar5 <= 0x7fffffffffffffff - param_1[1]) {\n    FUN_002aac00(param_1,__s,sVar5);\n    return param_1;\n  }\n                    \n  FUN_002e12b0("basic_string::append");\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long *plVar4;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar4" (* "*") (identifier "plVar4")) (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "long *plVar9;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar9" (* "*") (identifier "plVar9")) (; ";")) (declaration "undefined8 *__dest;" (type_identifier "undefined8") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "long *plVar10;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar10" (* "*") (identifier "plVar10")) (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "ulong uVar11;" (type_identifier "ulong") (identifier "uVar11") (; ";")) (declaration "undefined8 *local_58;" (type_identifier "undefined8") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "size_t local_50;" (primitive_type "size_t") (identifier "local_50") (; ";")) (declaration "undefined8 local_48 [3];" (type_identifier "undefined8") (array_declarator "local_48 [3]" (identifier "local_48") ([ "[") (number_literal "3") (] "]")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 2) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 2) = 0" (pointer_expression "*(undefined1 *)(param_1 + 2)" (* "*") (cast_expression "(undefined1 *)(param_1 + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "__s = *(char **)(param_3 + 0x58);" (assignment_expression "__s = *(char **)(param_3 + 0x58)" (identifier "__s") (= "=") (pointer_expression "*(char **)(param_3 + 0x58)" (* "*") (cast_expression "(char **)(param_3 + 0x58)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 0x58)" (( "(") (binary_expression "param_3 + 0x58" (identifier "param_3") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "*param_1 = param_1 + 2;" (assignment_expression "*param_1 = param_1 + 2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (__s == (char *)0x0) {\n    FUN_0026fd40(param_3);\n    __s = *(char **)(param_3 + 0x58);\n  }" (if "if") (parenthesized_expression "(__s == (char *)0x0)" (( "(") (binary_expression "__s == (char *)0x0" (identifier "__s") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    FUN_0026fd40(param_3);\n    __s = *(char **)(param_3 + 0x58);\n  }" ({ "{") (expression_statement "FUN_0026fd40(param_3);" (call_expression "FUN_0026fd40(param_3)" (identifier "FUN_0026fd40") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")"))) (; ";")) (expression_statement "__s = *(char **)(param_3 + 0x58);" (assignment_expression "__s = *(char **)(param_3 + 0x58)" (identifier "__s") (= "=") (pointer_expression "*(char **)(param_3 + 0x58)" (* "*") (cast_expression "(char **)(param_3 + 0x58)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 0x58)" (( "(") (binary_expression "param_3 + 0x58" (identifier "param_3") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_4 != 0) {\n    uVar11 = *(ulong *)(param_4 + 0x10);\n  }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar11 = *(ulong *)(param_4 + 0x10);\n  }" ({ "{") (expression_statement "uVar11 = *(ulong *)(param_4 + 0x10);" (assignment_expression "uVar11 = *(ulong *)(param_4 + 0x10)" (identifier "uVar11") (= "=") (pointer_expression "*(ulong *)(param_4 + 0x10)" (* "*") (cast_expression "(ulong *)(param_4 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x10)" (( "(") (binary_expression "param_4 + 0x10" (identifier "param_4") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (*(char *)(param_3 + 0x50) == '\0') {\n    FUN_0026fd20(param_3);\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }\n  }\n  else {\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(param_3 + 0x50) == '\0')" (( "(") (binary_expression "*(char *)(param_3 + 0x50) == '\0'" (pointer_expression "*(char *)(param_3 + 0x50)" (* "*") (cast_expression "(char *)(param_3 + 0x50)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x50)" (( "(") (binary_expression "param_3 + 0x50" (identifier "param_3") (+ "+") (number_literal "0x50")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    FUN_0026fd20(param_3);\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }\n  }" ({ "{") (expression_statement "FUN_0026fd20(param_3);" (call_expression "FUN_0026fd20(param_3)" (identifier "FUN_0026fd20") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")"))) (; ";")) (expression_statement "uVar7 = *(ulong *)(param_3 + 0x80);" (assignment_expression "uVar7 = *(ulong *)(param_3 + 0x80)" (identifier "uVar7") (= "=") (pointer_expression "*(ulong *)(param_3 + 0x80)" (* "*") (cast_expression "(ulong *)(param_3 + 0x80)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x80)" (( "(") (binary_expression "param_3 + 0x80" (identifier "param_3") (+ "+") (number_literal "0x80")) () ")"))))) (; ";")) (if_statement "if (uVar7 == 0) {\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }\n      goto LAB_00196666;\n    }" ({ "{") (if_statement "if (*(char *)(param_3 + 0x50) == '\0') {\n        FUN_0026fd20(param_3);\n      }" (if "if") (parenthesized_expression "(*(char *)(param_3 + 0x50) == '\0')" (( "(") (binary_expression "*(char *)(param_3 + 0x50) == '\0'" (pointer_expression "*(char *)(param_3 + 0x50)" (* "*") (cast_expression "(char *)(param_3 + 0x50)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x50)" (( "(") (binary_expression "param_3 + 0x50" (identifier "param_3") (+ "+") (number_literal "0x50")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        FUN_0026fd20(param_3);\n      }" ({ "{") (expression_statement "FUN_0026fd20(param_3);" (call_expression "FUN_0026fd20(param_3)" (identifier "FUN_0026fd20") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00196666;" (goto "goto") (statement_identifier "LAB_00196666") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }\n  }" (else "else") (compound_statement "{\n    uVar7 = *(ulong *)(param_3 + 0x80);\n    if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }\n  }" ({ "{") (expression_statement "uVar7 = *(ulong *)(param_3 + 0x80);" (assignment_expression "uVar7 = *(ulong *)(param_3 + 0x80)" (identifier "uVar7") (= "=") (pointer_expression "*(ulong *)(param_3 + 0x80)" (* "*") (cast_expression "(ulong *)(param_3 + 0x80)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x80)" (( "(") (binary_expression "param_3 + 0x80" (identifier "param_3") (+ "+") (number_literal "0x80")) () ")"))))) (; ";")) (if_statement "if (uVar7 == 0) {\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);\n    }" ({ "{") (labeled_statement "LAB_00196666:\n      uVar7 = *(ulong *)(param_3 + 0x88);" (statement_identifier "LAB_00196666") (: ":") (expression_statement "uVar7 = *(ulong *)(param_3 + 0x88);" (assignment_expression "uVar7 = *(ulong *)(param_3 + 0x88)" (identifier "uVar7") (= "=") (pointer_expression "*(ulong *)(param_3 + 0x88)" (* "*") (cast_expression "(ulong *)(param_3 + 0x88)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x88)" (( "(") (binary_expression "param_3 + 0x88" (identifier "param_3") (+ "+") (number_literal "0x88")) () ")"))))) (; ";"))) (} "}"))) (} "}")))) (if_statement "if (0 < (long)uVar7) {\n    uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(0 < (long)uVar7)" (( "(") (binary_expression "0 < (long)uVar7" (number_literal "0") (< "<") (cast_expression "(long)uVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar7"))) () ")")) (compound_statement "{\n    uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }\n  }" ({ "{") (expression_statement "uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);" (assignment_expression "uVar6 = uVar7 % *(ulong *)(param_2 + 0x958)" (identifier "uVar6") (= "=") (binary_expression "uVar7 % *(ulong *)(param_2 + 0x958)" (identifier "uVar7") (% "%") (pointer_expression "*(ulong *)(param_2 + 0x958)" (* "*") (cast_expression "(ulong *)(param_2 + 0x958)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x958)" (( "(") (binary_expression "param_2 + 0x958" (identifier "param_2") (+ "+") (number_literal "0x958")) () ")")))))) (; ";")) (expression_statement "plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);" (assignment_expression "plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8)" (identifier "plVar10") (= "=") (pointer_expression "*(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8)" (* "*") (cast_expression "(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x950) + uVar6 * 8)" (( "(") (binary_expression "*(long *)(param_2 + 0x950) + uVar6 * 8" (pointer_expression "*(long *)(param_2 + 0x950)" (* "*") (cast_expression "(long *)(param_2 + 0x950)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x950)" (( "(") (binary_expression "param_2 + 0x950" (identifier "param_2") (+ "+") (number_literal "0x950")) () ")")))) (+ "+") (binary_expression "uVar6 * 8" (identifier "uVar6") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (plVar10 != (long *)0x0) {\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }" (if "if") (parenthesized_expression "(plVar10 != (long *)0x0)" (( "(") (binary_expression "plVar10 != (long *)0x0" (identifier "plVar10") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      uVar8 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }\n      lVar3 = *plVar10;\n      if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }\n    }" ({ "{") (expression_statement "uVar8 = ((long *)*plVar10)[1];" (assignment_expression "uVar8 = ((long *)*plVar10)[1]" (identifier "uVar8") (= "=") (subscript_expression "((long *)*plVar10)[1]" (parenthesized_expression "((long *)*plVar10)" (( "(") (cast_expression "(long *)*plVar10" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar10" (* "*") (identifier "plVar10"))) () ")")) ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "plVar4 = (long *)*plVar10;" (assignment_expression "plVar4 = (long *)*plVar10" (identifier "plVar4") (= "=") (cast_expression "(long *)*plVar10" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar10" (* "*") (identifier "plVar10")))) (; ";")) (while_statement "while (plVar9 = plVar4, uVar7 != uVar8) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }" (while "while") (parenthesized_expression "(plVar9 = plVar4, uVar7 != uVar8)" (( "(") (comma_expression "plVar9 = plVar4, uVar7 != uVar8" (assignment_expression "plVar9 = plVar4" (identifier "plVar9") (= "=") (identifier "plVar4")) (, ",") (binary_expression "uVar7 != uVar8" (identifier "uVar7") (!= "!=") (identifier "uVar8"))) () ")")) (compound_statement "{\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;\n      }" ({ "{") (expression_statement "plVar4 = (long *)*plVar9;" (assignment_expression "plVar4 = (long *)*plVar9" (identifier "plVar4") (= "=") (cast_expression "(long *)*plVar9" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar9" (* "*") (identifier "plVar9")))) (; ";")) (if_statement "if ((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_0019652e;" (if "if") (parenthesized_expression "((plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))" (( "(") (binary_expression "(plVar4 == (long *)0x0) ||\n           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958))" (parenthesized_expression "(plVar4 == (long *)0x0)" (( "(") (binary_expression "plVar4 == (long *)0x0" (identifier "plVar4") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958))" (( "(") (comma_expression "uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)" (assignment_expression "uVar8 = plVar4[1]" (identifier "uVar8") (= "=") (subscript_expression "plVar4[1]" (identifier "plVar4") ([ "[") (number_literal "1") (] "]"))) (, ",") (comma_expression "plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)" (assignment_expression "plVar10 = plVar9" (identifier "plVar10") (= "=") (identifier "plVar9")) (, ",") (binary_expression "uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)" (identifier "uVar6") (!= "!=") (binary_expression "uVar8 % *(ulong *)(param_2 + 0x958)" (identifier "uVar8") (% "%") (pointer_expression "*(ulong *)(param_2 + 0x958)" (* "*") (cast_expression "(ulong *)(param_2 + 0x958)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x958)" (( "(") (binary_expression "param_2 + 0x958" (identifier "param_2") (+ "+") (number_literal "0x958")) () ")")))))))) () ")"))) () ")")) (goto_statement "goto LAB_0019652e;" (goto "goto") (statement_identifier "LAB_0019652e") (; ";"))) (} "}"))) (expression_statement "lVar3 = *plVar10;" (assignment_expression "lVar3 = *plVar10" (identifier "lVar3") (= "=") (pointer_expression "*plVar10" (* "*") (identifier "plVar10"))) (; ";")) (if_statement "if (lVar3 != 0) {\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }" (if "if") (parenthesized_expression "(lVar3 != 0)" (( "(") (binary_expression "lVar3 != 0" (identifier "lVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        __s = *(char **)(lVar3 + 0x18);\n        uVar11 = *(ulong *)(lVar3 + 0x10);\n        piVar1 = *(int **)(param_3 + 0x30);\n        goto joined_r0x001966ef;\n      }" ({ "{") (expression_statement "__s = *(char **)(lVar3 + 0x18);" (assignment_expression "__s = *(char **)(lVar3 + 0x18)" (identifier "__s") (= "=") (pointer_expression "*(char **)(lVar3 + 0x18)" (* "*") (cast_expression "(char **)(lVar3 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar3 + 0x18)" (( "(") (binary_expression "lVar3 + 0x18" (identifier "lVar3") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "uVar11 = *(ulong *)(lVar3 + 0x10);" (assignment_expression "uVar11 = *(ulong *)(lVar3 + 0x10)" (identifier "uVar11") (= "=") (pointer_expression "*(ulong *)(lVar3 + 0x10)" (* "*") (cast_expression "(ulong *)(lVar3 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x10)" (( "(") (binary_expression "lVar3 + 0x10" (identifier "lVar3") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "piVar1 = *(int **)(param_3 + 0x30);" (assignment_expression "piVar1 = *(int **)(param_3 + 0x30)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(param_3 + 0x30)" (* "*") (cast_expression "(int **)(param_3 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 0x30)" (( "(") (binary_expression "param_3 + 0x30" (identifier "param_3") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (goto_statement "goto joined_r0x001966ef;" (goto "goto") (statement_identifier "joined_r0x001966ef") (; ";")) (} "}"))) (} "}"))) (} "}"))) (labeled_statement "LAB_0019652e:\n  piVar1 = *(int **)(param_3 + 0x30);" (statement_identifier "LAB_0019652e") (: ":") (expression_statement "piVar1 = *(int **)(param_3 + 0x30);" (assignment_expression "piVar1 = *(int **)(param_3 + 0x30)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(param_3 + 0x30)" (* "*") (cast_expression "(int **)(param_3 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 0x30)" (( "(") (binary_expression "param_3 + 0x30" (identifier "param_3") (+ "+") (number_literal "0x30")) () ")"))))) (; ";"))) (labeled_statement "joined_r0x001966ef:\n  if (__s == (char *)0x0) {\n    if (piVar1 == (int *)0x0) {\n      return param_1;\n    }\n    if (*piVar1 != 0x39) {\n      return param_1;\n    }\n    __s = "(anonymous namespace)";\n  }\n  else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }" (statement_identifier "joined_r0x001966ef") (: ":") (if_statement "if (__s == (char *)0x0) {\n    if (piVar1 == (int *)0x0) {\n      return param_1;\n    }\n    if (*piVar1 != 0x39) {\n      return param_1;\n    }\n    __s = "(anonymous namespace)";\n  }\n  else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }" (if "if") (parenthesized_expression "(__s == (char *)0x0)" (( "(") (binary_expression "__s == (char *)0x0" (identifier "__s") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (piVar1 == (int *)0x0) {\n      return param_1;\n    }\n    if (*piVar1 != 0x39) {\n      return param_1;\n    }\n    __s = "(anonymous namespace)";\n  }" ({ "{") (if_statement "if (piVar1 == (int *)0x0) {\n      return param_1;\n    }" (if "if") (parenthesized_expression "(piVar1 == (int *)0x0)" (( "(") (binary_expression "piVar1 == (int *)0x0" (identifier "piVar1") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return param_1;\n    }" ({ "{") (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (if_statement "if (*piVar1 != 0x39) {\n      return param_1;\n    }" (if "if") (parenthesized_expression "(*piVar1 != 0x39)" (( "(") (binary_expression "*piVar1 != 0x39" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (!= "!=") (number_literal "0x39")) () ")")) (compound_statement "{\n      return param_1;\n    }" ({ "{") (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "__s = "(anonymous namespace)";" (assignment_expression "__s = "(anonymous namespace)"" (identifier "__s") (= "=") (string_literal ""(anonymous namespace)"" (" """) (string_content "(anonymous namespace)") (" """))) (; ";")) (} "}")) (else_clause "else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }" (else "else") (if_statement "if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }" (if "if") (parenthesized_expression "((piVar1 != (int *)0x0) && (*piVar1 == 0x28))" (( "(") (binary_expression "(piVar1 != (int *)0x0) && (*piVar1 == 0x28)" (parenthesized_expression "(piVar1 != (int *)0x0)" (( "(") (binary_expression "piVar1 != (int *)0x0" (identifier "piVar1") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*piVar1 == 0x28)" (( "(") (binary_expression "*piVar1 == 0x28" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (== "==") (number_literal "0x28")) () ")"))) () ")")) (compound_statement "{\n    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);\n    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);\n    if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }\n  }" ({ "{") (expression_statement "uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);" (assignment_expression "uVar7 = uVar11 % *(ulong *)(param_2 + 0x958)" (identifier "uVar7") (= "=") (binary_expression "uVar11 % *(ulong *)(param_2 + 0x958)" (identifier "uVar11") (% "%") (pointer_expression "*(ulong *)(param_2 + 0x958)" (* "*") (cast_expression "(ulong *)(param_2 + 0x958)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x958)" (( "(") (binary_expression "param_2 + 0x958" (identifier "param_2") (+ "+") (number_literal "0x958")) () ")")))))) (; ";")) (expression_statement "plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);" (assignment_expression "plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8)" (identifier "plVar10") (= "=") (pointer_expression "*(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8)" (* "*") (cast_expression "(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x950) + uVar7 * 8)" (( "(") (binary_expression "*(long *)(param_2 + 0x950) + uVar7 * 8" (pointer_expression "*(long *)(param_2 + 0x950)" (* "*") (cast_expression "(long *)(param_2 + 0x950)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x950)" (( "(") (binary_expression "param_2 + 0x950" (identifier "param_2") (+ "+") (number_literal "0x950")) () ")")))) (+ "+") (binary_expression "uVar7 * 8" (identifier "uVar7") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (plVar10 != (long *)0x0) {\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }" (if "if") (parenthesized_expression "(plVar10 != (long *)0x0)" (( "(") (binary_expression "plVar10 != (long *)0x0" (identifier "plVar10") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      uVar6 = ((long *)*plVar10)[1];\n      plVar4 = (long *)*plVar10;\n      while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }\n      if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }\n    }" ({ "{") (expression_statement "uVar6 = ((long *)*plVar10)[1];" (assignment_expression "uVar6 = ((long *)*plVar10)[1]" (identifier "uVar6") (= "=") (subscript_expression "((long *)*plVar10)[1]" (parenthesized_expression "((long *)*plVar10)" (( "(") (cast_expression "(long *)*plVar10" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar10" (* "*") (identifier "plVar10"))) () ")")) ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "plVar4 = (long *)*plVar10;" (assignment_expression "plVar4 = (long *)*plVar10" (identifier "plVar4") (= "=") (cast_expression "(long *)*plVar10" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar10" (* "*") (identifier "plVar10")))) (; ";")) (while_statement "while (plVar9 = plVar4, uVar11 != uVar6) {\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }" (while "while") (parenthesized_expression "(plVar9 = plVar4, uVar11 != uVar6)" (( "(") (comma_expression "plVar9 = plVar4, uVar11 != uVar6" (assignment_expression "plVar9 = plVar4" (identifier "plVar9") (= "=") (identifier "plVar4")) (, ",") (binary_expression "uVar11 != uVar6" (identifier "uVar11") (!= "!=") (identifier "uVar6"))) () ")")) (compound_statement "{\n        plVar4 = (long *)*plVar9;\n        if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;\n      }" ({ "{") (expression_statement "plVar4 = (long *)*plVar9;" (assignment_expression "plVar4 = (long *)*plVar9" (identifier "plVar4") (= "=") (cast_expression "(long *)*plVar9" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar9" (* "*") (identifier "plVar9")))) (; ";")) (if_statement "if ((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))\n        goto LAB_00196549;" (if "if") (parenthesized_expression "((plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))" (( "(") (binary_expression "(plVar4 == (long *)0x0) ||\n           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958))" (parenthesized_expression "(plVar4 == (long *)0x0)" (( "(") (binary_expression "plVar4 == (long *)0x0" (identifier "plVar4") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958))" (( "(") (comma_expression "uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)" (assignment_expression "uVar6 = plVar4[1]" (identifier "uVar6") (= "=") (subscript_expression "plVar4[1]" (identifier "plVar4") ([ "[") (number_literal "1") (] "]"))) (, ",") (comma_expression "plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)" (assignment_expression "plVar10 = plVar9" (identifier "plVar10") (= "=") (identifier "plVar9")) (, ",") (binary_expression "uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)" (identifier "uVar7") (!= "!=") (binary_expression "uVar6 % *(ulong *)(param_2 + 0x958)" (identifier "uVar6") (% "%") (pointer_expression "*(ulong *)(param_2 + 0x958)" (* "*") (cast_expression "(ulong *)(param_2 + 0x958)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x958)" (( "(") (binary_expression "param_2 + 0x958" (identifier "param_2") (+ "+") (number_literal "0x958")) () ")")))))))) () ")"))) () ")")) (goto_statement "goto LAB_00196549;" (goto "goto") (statement_identifier "LAB_00196549") (; ";"))) (} "}"))) (if_statement "if (*plVar10 != 0) {\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }" (if "if") (parenthesized_expression "(*plVar10 != 0)" (( "(") (binary_expression "*plVar10 != 0" (pointer_expression "*plVar10" (* "*") (identifier "plVar10")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar11 = *(ulong *)(*plVar10 + 0x10);\n      }" ({ "{") (expression_statement "uVar11 = *(ulong *)(*plVar10 + 0x10);" (assignment_expression "uVar11 = *(ulong *)(*plVar10 + 0x10)" (identifier "uVar11") (= "=") (pointer_expression "*(ulong *)(*plVar10 + 0x10)" (* "*") (cast_expression "(ulong *)(*plVar10 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*plVar10 + 0x10)" (( "(") (binary_expression "*plVar10 + 0x10" (pointer_expression "*plVar10" (* "*") (identifier "plVar10")) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (} "}")))))) (labeled_statement "LAB_00196549:\n  if ((long)uVar11 < 1) goto LAB_001965fc;" (statement_identifier "LAB_00196549") (: ":") (if_statement "if ((long)uVar11 < 1) goto LAB_001965fc;" (if "if") (parenthesized_expression "((long)uVar11 < 1)" (( "(") (binary_expression "(long)uVar11 < 1" (cast_expression "(long)uVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar11")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_001965fc;" (goto "goto") (statement_identifier "LAB_001965fc") (; ";")))) (expression_statement "FUN_001962c0(&local_58,param_2,uVar11);" (call_expression "FUN_001962c0(&local_58,param_2,uVar11)" (identifier "FUN_001962c0") (argument_list "(&local_58,param_2,uVar11)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "param_2") (, ",") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "__dest = (undefined8 *)*param_1;" (assignment_expression "__dest = (undefined8 *)*param_1" (identifier "__dest") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (if_statement "if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }\n    param_1[1] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }" (if "if") (parenthesized_expression "(local_58 == local_48)" (( "(") (binary_expression "local_58 == local_48" (identifier "local_58") (== "==") (identifier "local_48")) () ")")) (compound_statement "{\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }\n    param_1[1] = local_50;\n    *(undefined1 *)((long)__dest + local_50) = 0;\n    uVar2 = local_48[0];\n  }" ({ "{") (if_statement "if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }" (if "if") (parenthesized_expression "(local_50 != 0)" (( "(") (binary_expression "local_50 != 0" (identifier "local_50") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }\n    }" ({ "{") (if_statement "if (local_50 == 1) {\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }\n      else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }" (if "if") (parenthesized_expression "(local_50 == 1)" (( "(") (binary_expression "local_50 == 1" (identifier "local_50") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        *(undefined1 *)__dest = (undefined1)local_48[0];\n        __dest = (undefined8 *)*param_1;\n      }" ({ "{") (expression_statement "*(undefined1 *)__dest = (undefined1)local_48[0];" (assignment_expression "*(undefined1 *)__dest = (undefined1)local_48[0]" (pointer_expression "*(undefined1 *)__dest" (* "*") (cast_expression "(undefined1 *)__dest" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__dest"))) (= "=") (cast_expression "(undefined1)local_48[0]" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]")))) (; ";")) (expression_statement "__dest = (undefined8 *)*param_1;" (assignment_expression "__dest = (undefined8 *)*param_1" (identifier "__dest") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (} "}")) (else_clause "else {\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }" (else "else") (compound_statement "{\n        memcpy(__dest,local_58,local_50);\n        __dest = (undefined8 *)*param_1;\n      }" ({ "{") (expression_statement "memcpy(__dest,local_58,local_50);" (call_expression "memcpy(__dest,local_58,local_50)" (identifier "memcpy") (argument_list "(__dest,local_58,local_50)" (( "(") (identifier "__dest") (, ",") (identifier "local_58") (, ",") (identifier "local_50") () ")"))) (; ";")) (expression_statement "__dest = (undefined8 *)*param_1;" (assignment_expression "__dest = (undefined8 *)*param_1" (identifier "__dest") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (} "}")))) (} "}"))) (expression_statement "param_1[1] = local_50;" (assignment_expression "param_1[1] = local_50" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_50")) (; ";")) (expression_statement "*(undefined1 *)((long)__dest + local_50) = 0;" (assignment_expression "*(undefined1 *)((long)__dest + local_50) = 0" (pointer_expression "*(undefined1 *)((long)__dest + local_50)" (* "*") (cast_expression "(undefined1 *)((long)__dest + local_50)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__dest + local_50)" (( "(") (binary_expression "(long)__dest + local_50" (cast_expression "(long)__dest" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest")) (+ "+") (identifier "local_50")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = local_48[0];" (assignment_expression "uVar2 = local_48[0]" (identifier "uVar2") (= "=") (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }" (else "else") (compound_statement "{\n    if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }" ({ "{") (if_statement "if (param_1 + 2 == __dest) {\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }" (if "if") (parenthesized_expression "(param_1 + 2 == __dest)" (( "(") (binary_expression "param_1 + 2 == __dest" (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) (== "==") (identifier "__dest")) () ")")) (compound_statement "{\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n    }" ({ "{") (expression_statement "*param_1 = local_58;" (assignment_expression "*param_1 = local_58" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "local_58")) (; ";")) (expression_statement "param_1[1] = local_50;" (assignment_expression "param_1[1] = local_50" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_50")) (; ";")) (expression_statement "param_1[2] = local_48[0];" (assignment_expression "param_1[2] = local_48[0]" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\n    }" (else "else") (compound_statement "{\n      uVar2 = param_1[2];\n      *param_1 = local_58;\n      param_1[1] = local_50;\n      param_1[2] = local_48[0];\n      local_58 = __dest;\n      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;\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 "*param_1 = local_58;" (assignment_expression "*param_1 = local_58" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "local_58")) (; ";")) (expression_statement "param_1[1] = local_50;" (assignment_expression "param_1[1] = local_50" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_50")) (; ";")) (expression_statement "param_1[2] = local_48[0];" (assignment_expression "param_1[2] = local_48[0]" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "local_58 = __dest;" (assignment_expression "local_58 = __dest" (identifier "local_58") (= "=") (identifier "__dest")) (; ";")) (if_statement "if (__dest != (undefined8 *)0x0) goto LAB_001965b1;" (if "if") (parenthesized_expression "(__dest != (undefined8 *)0x0)" (( "(") (binary_expression "__dest != (undefined8 *)0x0" (identifier "__dest") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_001965b1;" (goto "goto") (statement_identifier "LAB_001965b1") (; ";"))) (} "}")))) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" (identifier "local_58") (= "=") (identifier "local_48")) (; ";")) (expression_statement "uVar2 = local_48[0];" (assignment_expression "uVar2 = local_48[0]" (identifier "uVar2") (= "=") (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}")))) (labeled_statement "LAB_001965b1:\n  local_48[0] = uVar2;" (statement_identifier "LAB_001965b1") (: ":") (expression_statement "local_48[0] = uVar2;" (assignment_expression "local_48[0] = uVar2" (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "uVar2")) (; ";"))) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)local_58 = 0;" (assignment_expression "*(undefined1 *)local_58 = 0" (pointer_expression "*(undefined1 *)local_58" (* "*") (cast_expression "(undefined1 *)local_58" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_58"))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_58 != local_48) {\n    FUN_002a2980();\n  }" (if "if") (parenthesized_expression "(local_58 != local_48)" (( "(") (binary_expression "local_58 != local_48" (identifier "local_58") (!= "!=") (identifier "local_48")) () ")")) (compound_statement "{\n    FUN_002a2980();\n  }" ({ "{") (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" (identifier "FUN_002a2980") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (0x7fffffffffffffff - param_1[1] < 2) {\n                    \n    FUN_002e12b0("basic_string::append");\n  }" (if "if") (parenthesized_expression "(0x7fffffffffffffff - param_1[1] < 2)" (( "(") (binary_expression "0x7fffffffffffffff - param_1[1] < 2" (binary_expression "0x7fffffffffffffff - param_1[1]" (number_literal "0x7fffffffffffffff") (- "-") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n                    \n    FUN_002e12b0("basic_string::append");\n  }" ({ "{") (expression_statement "FUN_002e12b0("basic_string::append");" (call_expression "FUN_002e12b0("basic_string::append")" (identifier "FUN_002e12b0") (argument_list "("basic_string::append")" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_002aac00(param_1,&DAT_003593f9,2);" (call_expression "FUN_002aac00(param_1,&DAT_003593f9,2)" (identifier "FUN_002aac00") (argument_list "(param_1,&DAT_003593f9,2)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_003593f9" (& "&") (identifier "DAT_003593f9")) (, ",") (number_literal "2") () ")"))) (; ";")) (labeled_statement "LAB_001965fc:\n  sVar5 = strlen(__s);" (statement_identifier "LAB_001965fc") (: ":") (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" (identifier "sVar5") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";"))) (if_statement "if (sVar5 <= 0x7fffffffffffffff - param_1[1]) {\n    FUN_002aac00(param_1,__s,sVar5);\n    return param_1;\n  }" (if "if") (parenthesized_expression "(sVar5 <= 0x7fffffffffffffff - param_1[1])" (( "(") (binary_expression "sVar5 <= 0x7fffffffffffffff - param_1[1]" (identifier "sVar5") (<= "<=") (binary_expression "0x7fffffffffffffff - param_1[1]" (number_literal "0x7fffffffffffffff") (- "-") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n    FUN_002aac00(param_1,__s,sVar5);\n    return param_1;\n  }" ({ "{") (expression_statement "FUN_002aac00(param_1,__s,sVar5);" (call_expression "FUN_002aac00(param_1,__s,sVar5)" (identifier "FUN_002aac00") (argument_list "(param_1,__s,sVar5)" (( "(") (identifier "param_1") (, ",") (identifier "__s") (, ",") (identifier "sVar5") () ")"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "FUN_002e12b0("basic_string::append");" (call_expression "FUN_002e12b0("basic_string::append")" (identifier "FUN_002e12b0") (argument_list "("basic_string::append")" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) () ")"))) (; ";")) (} "}")))

/* DWARF original prototype: string get_qualified_name(Gdb_index_info_reader * this, Dwarf_die *
   die, Dwarf_die * context) */

type_6 * __thiscall
gold::Gdb_index_info_reader::get_qualified_name
          (type_6 *__return_storage_ptr__,Gdb_index_info_reader *this,type_7 *die,
          type_7 *var_7)

{
  type_1 *var_15;
  type_2 uVar2;
  type_3 *var_13;
  type_4 var_10;
  size_t var_23;
  type_3 *var_9;
  type_4 var_14;
  type_3 *var_12;
  type_5 p_Var9;
  type_6 *full_name;
  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_5 var_11;
  char *__s;
  type_3 *var_16;
  type_6 local_58;
  
  (__return_storage_ptr__->field_2)._M_local_buf[0] = '\0';
  __s = die->name_;
  (__return_storage_ptr__->_M_dataplus)._M_p = (type_9)&__return_storage_ptr__->field_2;
  __return_storage_ptr__->_M_string_length = 0;
  if ((type_3 *)__s == (type_3 *)0x0) {
    Dwarf_die::var_6(die);
    __s = die->name_;
  }
  var_16 = (type_3 *)0x0;
  if (var_7 != (type_7 *)0x0) {
    var_16 = (type_3 *)var_7->die_offset_;
  }
  if (die->attributes_read_ == false) {
    Dwarf_die::var_8(die);
    var_9 = (type_3 *)die->specification_;
    if (var_9 == (type_3 *)0x0) {
      if (die->attributes_read_ == false) {
        Dwarf_die::var_8(die);
      }
      goto LAB_00196666;
    }
  }
  else {
    var_9 = (type_3 *)die->specification_;
    if (var_9 == (type_3 *)0x0) {
LAB_00196666:
      var_9 = (type_3 *)die->abstract_origin_;
    }
  }
  if (0 < (long)var_9) {
    var_10 = (this->declarations_)._M_h._M_bucket_count;
    var_14 = (type_4)var_9 % var_10;
    var_11 = (this->declarations_)._M_h._M_buckets[var_14];
    if (var_11 != (type_5)0x0) {
      var_12 = var_11->_M_nxt[1]._M_nxt;
      var_13 = var_11->_M_nxt;
      while (p_Var9 = var_13, var_9 != var_12) {
        var_13 = p_Var9->_M_nxt;
        if ((var_13 == (type_3 *)0x0) ||
           (var_12 = var_13[1]._M_nxt, var_11 = p_Var9, var_14 != (type_4)var_12 % var_10))
        goto LAB_0019652e;
      }
      var_9 = var_11->_M_nxt;
      if (var_9 != (type_3 *)0x0) {
        __s = (char *)var_9[3]._M_nxt;
        var_16 = var_9[2]._M_nxt;
        var_15 = die->abbrev_code_;
        goto joined_r0x001966ef;
      }
    }
  }
LAB_0019652e:
  var_15 = die->abbrev_code_;
joined_r0x001966ef:
  if ((type_3 *)__s == (type_3 *)0x0) {
    if (var_15 == (type_1 *)0x0) {
      return __return_storage_ptr__;
    }
    if (var_15->tag != 0x39) {
      return __return_storage_ptr__;
    }
    __s = "(anonymous namespace)";
  }
  else if ((var_15 != (type_1 *)0x0) && (var_15->tag == 0x28)) {
    var_10 = (this->declarations_)._M_h._M_bucket_count;
    var_14 = (type_4)var_16 % var_10;
    var_11 = (this->declarations_)._M_h._M_buckets[var_14];
    if (var_11 != (type_5)0x0) {
      var_9 = var_11->_M_nxt[1]._M_nxt;
      var_12 = var_11->_M_nxt;
      while (p_Var9 = var_12, var_16 != var_9) {
        var_12 = p_Var9->_M_nxt;
        if ((var_12 == (type_3 *)0x0) ||
           (var_9 = var_12[1]._M_nxt, var_11 = p_Var9, var_14 != (type_4)var_9 % var_10))
        goto LAB_00196549;
      }
      if (var_11->_M_nxt != (type_3 *)0x0) {
        var_16 = var_11->_M_nxt[2]._M_nxt;
      }
    }
  }
LAB_00196549:
  if ((long)var_16 < 1) goto LAB_001965fc;
                    /* try { // try from 00196560 to 00196828 has its CatchHandler @ 00196829 */
  var_17(&local_58,this,(type_8)var_16);
  var_5 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
            *)(__return_storage_ptr__->_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
       *)local_58._M_dataplus._M_p == &local_58.field_2) {
    if (local_58._M_string_length != 0) {
      if (local_58._M_string_length == 1) {
        var_5->_M_local_buf[0] = local_58.field_2._M_local_buf[0];
        var_5 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                  *)(__return_storage_ptr__->_M_dataplus)._M_p;
      }
      else {
        var_18(var_5,local_58._M_dataplus._M_p,local_58._M_string_length);
        var_5 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                  *)(__return_storage_ptr__->_M_dataplus)._M_p;
      }
    }
    __return_storage_ptr__->_M_string_length = local_58._M_string_length;
    var_5->_M_local_buf[local_58._M_string_length] = '\0';
    uVar2 = local_58.field_2._M_allocated_capacity;
  }
  else {
    if (&__return_storage_ptr__->field_2 == var_5) {
      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;
      __return_storage_ptr__->_M_string_length = local_58._M_string_length;
      (__return_storage_ptr__->field_2)._M_allocated_capacity =
           local_58.field_2._M_allocated_capacity;
    }
    else {
      uVar2 = (__return_storage_ptr__->field_2)._M_allocated_capacity;
      (__return_storage_ptr__->_M_dataplus)._M_p = local_58._M_dataplus._M_p;
      __return_storage_ptr__->_M_string_length = local_58._M_string_length;
      (__return_storage_ptr__->field_2)._M_allocated_capacity =
           local_58.field_2._M_allocated_capacity;
      local_58._M_dataplus._M_p = (type_9)var_5;
      if (var_5 != (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                     *)0x0) goto LAB_001965b1;
    }
    local_58._M_dataplus._M_p = (type_9)&local_58.field_2;
    uVar2 = local_58.field_2._M_allocated_capacity;
  }
LAB_001965b1:
  local_58.field_2._M_allocated_capacity = uVar2;
  local_58._M_string_length = 0;
  *local_58._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
       *)local_58._M_dataplus._M_p != &local_58.field_2) {
    var_19(local_58._M_dataplus._M_p);
  }
  if (0x7fffffffffffffff - __return_storage_ptr__->_M_string_length < 2) {
                    /* WARNING: Subroutine does not return */
    std::var_20("basic_string::append");
  }
  std::string::var_21((type_6 *)__return_storage_ptr__,"::",2);
LAB_001965fc:
  var_23 = var_22(__s);
  if (var_23 <= 0x7fffffffffffffff - __return_storage_ptr__->_M_string_length) {
    std::string::var_21((type_6 *)__return_storage_ptr__,__s,var_23);
    return __return_storage_ptr__;
  }
                    /* WARNING: Subroutine does not return */
  std::var_20("basic_string::append");
}


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

undefined8 * MASKED(undefined8 *param_1,long param_2,long param_3,long param_4)

{
  int *piVar1;
  undefined8 uVar2;
  long lVar3;
  long *plVar4;
  size_t sVar5;
  ulong uVar6;
  ulong uVar7;
  ulong uVar8;
  long *plVar9;
  undefined8 *__dest;
  long *plVar10;
  char *__s;
  ulong uVar11;
  undefined8 *local_58;
  size_t local_50;
  undefined8 local_48 [3];
  
  *(undefined1 *)(param_1 + 2) = 0;
  __s = *(char **)(param_3 + 0x58);
  *param_1 = param_1 + 2;
  param_1[1] = 0;
  if (__s == (char *)0x0) {
    FUN_0026fd40(param_3);
    __s = *(char **)(param_3 + 0x58);
  }
  uVar11 = 0;
  if (param_4 != 0) {
    uVar11 = *(ulong *)(param_4 + 0x10);
  }
  if (*(char *)(param_3 + 0x50) == '\0') {
    FUN_0026fd20(param_3);
    uVar7 = *(ulong *)(param_3 + 0x80);
    if (uVar7 == 0) {
      if (*(char *)(param_3 + 0x50) == '\0') {
        FUN_0026fd20(param_3);
      }
      goto LAB_00196666;
    }
  }
  else {
    uVar7 = *(ulong *)(param_3 + 0x80);
    if (uVar7 == 0) {
LAB_00196666:
      uVar7 = *(ulong *)(param_3 + 0x88);
    }
  }
  if (0 < (long)uVar7) {
    uVar6 = uVar7 % *(ulong *)(param_2 + 0x958);
    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar6 * 8);
    if (plVar10 != (long *)0x0) {
      uVar8 = ((long *)*plVar10)[1];
      plVar4 = (long *)*plVar10;
      while (plVar9 = plVar4, uVar7 != uVar8) {
        plVar4 = (long *)*plVar9;
        if ((plVar4 == (long *)0x0) ||
           (uVar8 = plVar4[1], plVar10 = plVar9, uVar6 != uVar8 % *(ulong *)(param_2 + 0x958)))
        goto LAB_0019652e;
      }
      lVar3 = *plVar10;
      if (lVar3 != 0) {
        __s = *(char **)(lVar3 + 0x18);
        uVar11 = *(ulong *)(lVar3 + 0x10);
        piVar1 = *(int **)(param_3 + 0x30);
        goto joined_r0x001966ef;
      }
    }
  }
LAB_0019652e:
  piVar1 = *(int **)(param_3 + 0x30);
joined_r0x001966ef:
  if (__s == (char *)0x0) {
    if (piVar1 == (int *)0x0) {
      return param_1;
    }
    if (*piVar1 != 0x39) {
      return param_1;
    }
    __s = "(anonymous namespace)";
  }
  else if ((piVar1 != (int *)0x0) && (*piVar1 == 0x28)) {
    uVar7 = uVar11 % *(ulong *)(param_2 + 0x958);
    plVar10 = *(long **)(*(long *)(param_2 + 0x950) + uVar7 * 8);
    if (plVar10 != (long *)0x0) {
      uVar6 = ((long *)*plVar10)[1];
      plVar4 = (long *)*plVar10;
      while (plVar9 = plVar4, uVar11 != uVar6) {
        plVar4 = (long *)*plVar9;
        if ((plVar4 == (long *)0x0) ||
           (uVar6 = plVar4[1], plVar10 = plVar9, uVar7 != uVar6 % *(ulong *)(param_2 + 0x958)))
        goto LAB_00196549;
      }
      if (*plVar10 != 0) {
        uVar11 = *(ulong *)(*plVar10 + 0x10);
      }
    }
  }
LAB_00196549:
  if ((long)uVar11 < 1) goto LAB_001965fc;
                    /* try { // try from 00196560 to 00196828 has its CatchHandler @ 00196829 */
  FUN_001962c0(&local_58,param_2,uVar11);
  __dest = (undefined8 *)*param_1;
  if (local_58 == local_48) {
    if (local_50 != 0) {
      if (local_50 == 1) {
        *(undefined1 *)__dest = (undefined1)local_48[0];
        __dest = (undefined8 *)*param_1;
      }
      else {
        memcpy(__dest,local_58,local_50);
        __dest = (undefined8 *)*param_1;
      }
    }
    param_1[1] = local_50;
    *(undefined1 *)((long)__dest + local_50) = 0;
    uVar2 = local_48[0];
  }
  else {
    if (param_1 + 2 == __dest) {
      *param_1 = local_58;
      param_1[1] = local_50;
      param_1[2] = local_48[0];
    }
    else {
      uVar2 = param_1[2];
      *param_1 = local_58;
      param_1[1] = local_50;
      param_1[2] = local_48[0];
      local_58 = __dest;
      if (__dest != (undefined8 *)0x0) goto LAB_001965b1;
    }
    local_58 = local_48;
    uVar2 = local_48[0];
  }
LAB_001965b1:
  local_48[0] = uVar2;
  local_50 = 0;
  *(undefined1 *)local_58 = 0;
  if (local_58 != local_48) {
    FUN_002a2980();
  }
  if (0x7fffffffffffffff - param_1[1] < 2) {
                    /* WARNING: Subroutine does not return */
    FUN_002e12b0("basic_string::append");
  }
  FUN_002aac00(param_1,&DAT_003593f9,2);
LAB_001965fc:
  sVar5 = strlen(__s);
  if (sVar5 <= 0x7fffffffffffffff - param_1[1]) {
    FUN_002aac00(param_1,__s,sVar5);
    return param_1;
  }
                    /* WARNING: Subroutine does not return */
  FUN_002e12b0("basic_string::append");
}

