
/* DWARF original prototype: void add_exact_match(Version_script_info * this, string * match,
   Version_tree * v, bool is_global, Version_expression * ve, Exact * pe) */

void __thiscall
gold::Version_script_info::add_exact_match
          (Version_script_info *this,string *match,Version_tree *v,bool is_global,
          Version_expression *ve,Exact *pe)

{
  pointer pcVar1;
  size_t __n;
  pointer pcVar2;
  int iVar3;
  _Node_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_false,_true>
  _Var4;
  char *format;
  pair<std::__detail::_Node_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_false,_true>,_bool>
  pVar5;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_78;
  Version_tree *local_58;
  undefined1 local_50;
  Version_expression *local_48;
  undefined8 local_40;
  
  pcVar1 = (match->_M_dataplus)._M_p;
  local_78._M_dataplus._M_p = (pointer)&local_78.field_2;
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char*>(&local_78,pcVar1,pcVar1 + match->_M_string_length);
  local_40 = 0;
  local_58 = v;
  local_50 = is_global;
  local_48 = ve;
                    /* try { // try from 002d5168 to 002d516c has its CatchHandler @ 002d5206 */
  pVar5 = std::
          _Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
          ::
          _M_emplace<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>
                    ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
                      *)pe,&local_78);
  _Var4 = pVar5.first;
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)local_78._M_dataplus._M_p != &local_78.field_2) {
    operator_delete(local_78._M_dataplus._M_p);
  }
  if (pVar5.second == false) {
    __n = (*(undefined8 **)
            ((long)_Var4.
                   super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>
                   ._M_cur + 0x28))[1];
    if ((__n == (v->tag)._M_string_length) &&
       ((pcVar1 = (v->tag)._M_dataplus._M_p, __n == 0 ||
        (iVar3 = memcmp((void *)**(undefined8 **)
                                  ((long)_Var4.
                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>
                                         ._M_cur + 0x28),pcVar1,__n), iVar3 == 0)))) {
      if ((bool)*(char *)((long)_Var4.
                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>
                                ._M_cur + 0x30) != is_global) {
        pcVar2 = (match->_M_dataplus)._M_p;
        format = (char *)gettext(
                                "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"
                                );
        gold_error(format,pcVar2,pcVar1);
        return;
      }
    }
    else if (*(long *)((long)_Var4.
                             super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>
                             ._M_cur + 0x40) == 0) {
      *(Version_tree **)
       ((long)_Var4.
              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>
              ._M_cur + 0x40) = v;
    }
    return;
  }
  return;
}



void FUN_002d5110(undefined8 param_1,long *param_2,undefined8 *param_3,char param_4,
                 undefined8 param_5,undefined8 param_6)

{
  size_t __n;
  void *__s2;
  int iVar1;
  long lVar2;
  undefined8 uVar3;
  char extraout_DL;
  undefined1 *local_78 [2];
  undefined1 local_68 [16];
  undefined8 *local_58;
  char local_50;
  undefined8 local_48;
  undefined8 local_40;
  
  local_78[0] = local_68;
  FUN_001caae0(local_78,*param_2,param_2[1] + *param_2);
  local_40 = 0;
  local_58 = param_3;
  local_50 = param_4;
  local_48 = param_5;
                    /* try { // try from 002d5168 to 002d516c has its CatchHandler @ 002d5206 */
  lVar2 = FUN_002d7830(param_6,local_78);
  if (local_78[0] != local_68) {
    FUN_00338a50();
  }
  if (extraout_DL == '\0') {
    __n = (*(undefined8 **)(lVar2 + 0x28))[1];
    if ((__n == param_3[1]) &&
       ((__s2 = (void *)*param_3, __n == 0 ||
        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {
      if (*(char *)(lVar2 + 0x30) != param_4) {
        lVar2 = *param_2;
        uVar3 = gettext(
                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"
                       );
        FUN_001e14f0(uVar3,lVar2,__s2);
        return;
      }
    }
    else if (*(long *)(lVar2 + 0x40) == 0) {
      *(undefined8 **)(lVar2 + 0x40) = param_3;
    }
    return;
  }
  return;
}


PUSH R15
MOV R15,R8
PUSH R14
MOV R14,R9
PUSH R13
MOV R13D,ECX
PUSH R12
MOV R12,RDX
PUSH RBP
MOV RBP,RSI
PUSH RBX
SUB RSP,0x48
MOV RSI,qword ptr [RSI]
MOV RDX,qword ptr [RBP + 0x8]
MOV RBX,RSP
LEA RAX,[RBX + 0x10]
ADD RDX,RSI
MOV RDI,RBX
MOV qword ptr [RSP],RAX
CALL 0x001caae0
MOV RSI,RBX
MOV RDI,R14
MOV qword ptr [RSP + 0x20],R12
MOV byte ptr [RSP + 0x28],R13B
MOV qword ptr [RSP + 0x30],R15
MOV qword ptr [RSP + 0x38],0x0
CALL 0x002d7830
MOV RDI,qword ptr [RSP]
ADD RBX,0x10
MOV R14,RAX
MOV R15,RDX
CMP RDI,RBX
JZ 0x002d5185
CALL 0x00338a50
TEST R15B,R15B
JNZ 0x002d51a0
MOV RAX,qword ptr [R14 + 0x28]
MOV RDX,qword ptr [RAX + 0x8]
CMP RDX,qword ptr [R12 + 0x8]
JZ 0x002d51b0
CMP qword ptr [R14 + 0x40],0x0
JZ 0x002d5200
ADD RSP,0x48
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RBX,qword ptr [R12]
TEST RDX,RDX
JZ 0x002d51c8
MOV RDI,qword ptr [RAX]
MOV RSI,RBX
CALL 0x00150830
TEST EAX,EAX
JNZ 0x002d5199
CMP byte ptr [R14 + 0x30],R13B
JZ 0x002d51a0
MOV RBP,qword ptr [RBP]
LEA RDI,[0x3f56f0]
CALL 0x00150320
MOV RDX,RBX
MOV RSI,RBP
MOV RDI,RAX
XOR EAX,EAX
CALL 0x001e14f0
ADD RSP,0x48
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV qword ptr [R14 + 0x40],R12
JMP 0x002d51a0
(translation_unit "void FUN_002d5110(undefined8 param_1,long *param_2,undefined8 *param_3,char param_4,\n                 undefined8 param_5,undefined8 param_6)\n\n{\n  size_t __n;\n  void *__s2;\n  int iVar1;\n  long lVar2;\n  undefined8 uVar3;\n  char extraout_DL;\n  undefined1 *local_78 [2];\n  undefined1 local_68 [16];\n  undefined8 *local_58;\n  char local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  \n  local_78[0] = local_68;\n  FUN_001caae0(local_78,*param_2,param_2[1] + *param_2);\n  local_40 = 0;\n  local_58 = param_3;\n  local_50 = param_4;\n  local_48 = param_5;\n                    /* try { // try from 002d5168 to 002d516c has its CatchHandler @ 002d5206 */\n  lVar2 = FUN_002d7830(param_6,local_78);\n  if (local_78[0] != local_68) {\n    FUN_00338a50();\n  }\n  if (extraout_DL == '\0') {\n    __n = (*(undefined8 **)(lVar2 + 0x28))[1];\n    if ((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }\n    else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_002d5110(undefined8 param_1,long *param_2,undefined8 *param_3,char param_4,\n                 undefined8 param_5,undefined8 param_6)\n\n{\n  size_t __n;\n  void *__s2;\n  int iVar1;\n  long lVar2;\n  undefined8 uVar3;\n  char extraout_DL;\n  undefined1 *local_78 [2];\n  undefined1 local_68 [16];\n  undefined8 *local_58;\n  char local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  \n  local_78[0] = local_68;\n  FUN_001caae0(local_78,*param_2,param_2[1] + *param_2);\n  local_40 = 0;\n  local_58 = param_3;\n  local_50 = param_4;\n  local_48 = param_5;\n                    /* try { // try from 002d5168 to 002d516c has its CatchHandler @ 002d5206 */\n  lVar2 = FUN_002d7830(param_6,local_78);\n  if (local_78[0] != local_68) {\n    FUN_00338a50();\n  }\n  if (extraout_DL == '\0') {\n    __n = (*(undefined8 **)(lVar2 + 0x28))[1];\n    if ((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }\n    else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_002d5110(undefined8 param_1,long *param_2,undefined8 *param_3,char param_4,\n                 undefined8 param_5,undefined8 param_6)" identifier (parameter_list "(undefined8 param_1,long *param_2,undefined8 *param_3,char param_4,\n                 undefined8 param_5,undefined8 param_6)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "char param_4" primitive_type identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) ))) (compound_statement "{\n  size_t __n;\n  void *__s2;\n  int iVar1;\n  long lVar2;\n  undefined8 uVar3;\n  char extraout_DL;\n  undefined1 *local_78 [2];\n  undefined1 local_68 [16];\n  undefined8 *local_58;\n  char local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  \n  local_78[0] = local_68;\n  FUN_001caae0(local_78,*param_2,param_2[1] + *param_2);\n  local_40 = 0;\n  local_58 = param_3;\n  local_50 = param_4;\n  local_48 = param_5;\n                    /* try { // try from 002d5168 to 002d516c has its CatchHandler @ 002d5206 */\n  lVar2 = FUN_002d7830(param_6,local_78);\n  if (local_78[0] != local_68) {\n    FUN_00338a50();\n  }\n  if (extraout_DL == '\0') {\n    __n = (*(undefined8 **)(lVar2 + 0x28))[1];\n    if ((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }\n    else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }\n    return;\n  }\n  return;\n}" { (declaration "size_t __n;" primitive_type identifier ;) (declaration "void *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "char extraout_DL;" primitive_type identifier ;) (declaration "undefined1 *local_78 [2];" type_identifier (pointer_declarator "*local_78 [2]" * (array_declarator "local_78 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_68 [16];" type_identifier (array_declarator "local_68 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "char local_50;" primitive_type identifier ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "undefined8 local_40;" type_identifier identifier ;) (expression_statement "local_78[0] = local_68;" (assignment_expression "local_78[0] = local_68" (subscript_expression "local_78[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_001caae0(local_78,*param_2,param_2[1] + *param_2);" (call_expression "FUN_001caae0(local_78,*param_2,param_2[1] + *param_2)" identifier (argument_list "(local_78,*param_2,param_2[1] + *param_2)" ( identifier , (pointer_expression "*param_2" * identifier) , (binary_expression "param_2[1] + *param_2" (subscript_expression "param_2[1]" identifier [ number_literal ]) + (pointer_expression "*param_2" * identifier)) ))) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_58 = param_3;" (assignment_expression "local_58 = param_3" identifier = identifier) ;) (expression_statement "local_50 = param_4;" (assignment_expression "local_50 = param_4" identifier = identifier) ;) (expression_statement "local_48 = param_5;" (assignment_expression "local_48 = param_5" identifier = identifier) ;) comment (expression_statement "lVar2 = FUN_002d7830(param_6,local_78);" (assignment_expression "lVar2 = FUN_002d7830(param_6,local_78)" identifier = (call_expression "FUN_002d7830(param_6,local_78)" identifier (argument_list "(param_6,local_78)" ( identifier , identifier )))) ;) (if_statement "if (local_78[0] != local_68) {\n    FUN_00338a50();\n  }" if (parenthesized_expression "(local_78[0] != local_68)" ( (binary_expression "local_78[0] != local_68" (subscript_expression "local_78[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    FUN_00338a50();\n  }" { (expression_statement "FUN_00338a50();" (call_expression "FUN_00338a50()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (extraout_DL == '\0') {\n    __n = (*(undefined8 **)(lVar2 + 0x28))[1];\n    if ((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }\n    else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }\n    return;\n  }" if (parenthesized_expression "(extraout_DL == '\0')" ( (binary_expression "extraout_DL == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    __n = (*(undefined8 **)(lVar2 + 0x28))[1];\n    if ((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }\n    else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }\n    return;\n  }" { (expression_statement "__n = (*(undefined8 **)(lVar2 + 0x28))[1];" (assignment_expression "__n = (*(undefined8 **)(lVar2 + 0x28))[1]" identifier = (subscript_expression "(*(undefined8 **)(lVar2 + 0x28))[1]" (parenthesized_expression "(*(undefined8 **)(lVar2 + 0x28))" ( (pointer_expression "*(undefined8 **)(lVar2 + 0x28)" * (cast_expression "(undefined8 **)(lVar2 + 0x28)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar2 + 0x28)" ( (binary_expression "lVar2 + 0x28" identifier + number_literal) )))) )) [ number_literal ])) ;) (if_statement "if ((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }\n    else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }" if (parenthesized_expression "((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0))))" ( (binary_expression "(__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))" (parenthesized_expression "(__n == param_3[1])" ( (binary_expression "__n == param_3[1]" identifier == (subscript_expression "param_3[1]" identifier [ number_literal ])) )) && (parenthesized_expression "((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))" ( (parenthesized_expression "(__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0))" ( (comma_expression "__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)" (assignment_expression "__s2 = (void *)*param_3" identifier = (cast_expression "(void *)*param_3" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) , (binary_expression "__n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)" (binary_expression "__n == 0" identifier == number_literal) || (parenthesized_expression "(iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)" ( (comma_expression "iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0" (assignment_expression "iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n)" identifier = (call_expression "memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n)" identifier (argument_list "((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n)" ( (cast_expression "(void *)**(undefined8 **)(lVar2 + 0x28)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined8 **)(lVar2 + 0x28)" * (pointer_expression "*(undefined8 **)(lVar2 + 0x28)" * (cast_expression "(undefined8 **)(lVar2 + 0x28)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar2 + 0x28)" ( (binary_expression "lVar2 + 0x28" identifier + number_literal) )))))) , identifier , identifier )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) )))) )) ))) )) (compound_statement "{\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }" { (if_statement "if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }" if (parenthesized_expression "(*(char *)(lVar2 + 0x30) != param_4)" ( (binary_expression "*(char *)(lVar2 + 0x30) != param_4" (pointer_expression "*(char *)(lVar2 + 0x30)" * (cast_expression "(char *)(lVar2 + 0x30)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x30)" ( (binary_expression "lVar2 + 0x30" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }" { (expression_statement "lVar2 = *param_2;" (assignment_expression "lVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );" (assignment_expression "uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       )" identifier = (call_expression "gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       )" identifier (argument_list "(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       )" ( (string_literal ""\'%s\' appears as both a global and a local symbol for version \'%s\' in script"" " escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") )))) ;) (expression_statement "FUN_001e14f0(uVar3,lVar2,__s2);" (call_expression "FUN_001e14f0(uVar3,lVar2,__s2)" identifier (argument_list "(uVar3,lVar2,__s2)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) }) (else_clause "else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }" else (if_statement "if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }" if (parenthesized_expression "(*(long *)(lVar2 + 0x40) == 0)" ( (binary_expression "*(long *)(lVar2 + 0x40) == 0" (pointer_expression "*(long *)(lVar2 + 0x40)" * (cast_expression "(long *)(lVar2 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x40)" ( (binary_expression "lVar2 + 0x40" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }" { (expression_statement "*(undefined8 **)(lVar2 + 0x40) = param_3;" (assignment_expression "*(undefined8 **)(lVar2 + 0x40) = param_3" (pointer_expression "*(undefined8 **)(lVar2 + 0x40)" * (cast_expression "(undefined8 **)(lVar2 + 0x40)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar2 + 0x40)" ( (binary_expression "lVar2 + 0x40" identifier + number_literal) )))) = identifier) ;) })))) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void add_exact_match(Version_script_info * this, string * match,\n   Version_tree * v, bool is_global, Version_expression * ve, Exact * pe) */\n\nvoid __thiscall\ngold::Version_script_info::add_exact_match\n          (Version_script_info *this,string *match,Version_tree *v,bool is_global,\n          Version_expression *ve,Exact *pe)\n\n{\n  pointer pcVar1;\n  size_t __n;\n  pointer pcVar2;\n  int iVar3;\n  _Node_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_false,_true>\n  _Var4;\n  char *format;\n  pair<std::__detail::_Node_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_false,_true>,_bool>\n  pVar5;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_78;\n  Version_tree *local_58;\n  undefined1 local_50;\n  Version_expression *local_48;\n  undefined8 local_40;\n  \n  pcVar1 = (match->_M_dataplus)._M_p;\n  local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(&local_78,pcVar1,pcVar1 + match->_M_string_length);\n  local_40 = 0;\n  local_58 = v;\n  local_50 = is_global;\n  local_48 = ve;\n                    /* try { // try from 002d5168 to 002d516c has its CatchHandler @ 002d5206 */\n  pVar5 = std::\n          _Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          ::\n          _M_emplace<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>\n                    ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n                      *)pe,&local_78);\n  _Var4 = pVar5.first;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_78._M_dataplus._M_p != &local_78.field_2) {\n    operator_delete(local_78._M_dataplus._M_p);\n  }\n  if (pVar5.second == false) {\n    __n = (*(undefined8 **)\n            ((long)_Var4.\n                   super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                   ._M_cur + 0x28))[1];\n    if ((__n == (v->tag)._M_string_length) &&\n       ((pcVar1 = (v->tag)._M_dataplus._M_p, __n == 0 ||\n        (iVar3 = memcmp((void *)**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28),pcVar1,__n), iVar3 == 0)))) {\n      if ((bool)*(char *)((long)_Var4.\n                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                ._M_cur + 0x30) != is_global) {\n        pcVar2 = (match->_M_dataplus)._M_p;\n        format = (char *)gettext(\n                                "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                                );\n        gold_error(format,pcVar2,pcVar1);\n        return;\n      }\n    }\n    else if (*(long *)((long)_Var4.\n                             super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                             ._M_cur + 0x40) == 0) {\n      *(Version_tree **)\n       ((long)_Var4.\n              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n              ._M_cur + 0x40) = v;\n    }\n    return;\n  }\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::Version_script_info::add_exact_match\n          (Version_script_info *this,string *match,Version_tree *v,bool is_global,\n          Version_expression *ve,Exact *pe)\n\n{\n  pointer pcVar1;\n  size_t __n;\n  pointer pcVar2;\n  int iVar3;\n  _Node_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_false,_true>\n  _Var4;\n  char *format;\n  pair<std::__detail::_Node_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_false,_true>,_bool>\n  pVar5;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_78;\n  Version_tree *local_58;\n  undefined1 local_50;\n  Version_expression *local_48;\n  undefined8 local_40;\n  \n  pcVar1 = (match->_M_dataplus)._M_p;\n  local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(&local_78,pcVar1,pcVar1 + match->_M_string_length);\n  local_40 = 0;\n  local_58 = v;\n  local_50 = is_global;\n  local_48 = ve;\n                    /* try { // try from 002d5168 to 002d516c has its CatchHandler @ 002d5206 */\n  pVar5 = std::\n          _Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          ::\n          _M_emplace<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>\n                    ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n                      *)pe,&local_78);\n  _Var4 = pVar5.first;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_78._M_dataplus._M_p != &local_78.field_2) {\n    operator_delete(local_78._M_dataplus._M_p);\n  }\n  if (pVar5.second == false) {\n    __n = (*(undefined8 **)\n            ((long)_Var4.\n                   super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                   ._M_cur + 0x28))[1];\n    if ((__n == (v->tag)._M_string_length) &&\n       ((pcVar1 = (v->tag)._M_dataplus._M_p, __n == 0 ||\n        (iVar3 = memcmp((void *)**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28),pcVar1,__n), iVar3 == 0)))) {\n      if ((bool)*(char *)((long)_Var4.\n                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                ._M_cur + 0x30) != is_global) {\n        pcVar2 = (match->_M_dataplus)._M_p;\n        format = (char *)gettext(\n                                "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                                );\n        gold_error(format,pcVar2,pcVar1);\n        return;\n      }\n    }\n    else if (*(long *)((long)_Var4.\n                             super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                             ._M_cur + 0x40) == 0) {\n      *(Version_tree **)\n       ((long)_Var4.\n              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n              ._M_cur + 0x40) = v;\n    }\n    return;\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Version_script_info::" identifier : : identifier : :) (function_declarator "add_exact_match\n          (Version_script_info *this,string *match,Version_tree *v,bool is_global,\n          Version_expression *ve,Exact *pe)" identifier (parameter_list "(Version_script_info *this,string *match,Version_tree *v,bool is_global,\n          Version_expression *ve,Exact *pe)" ( (parameter_declaration "Version_script_info *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "string *match" type_identifier (pointer_declarator "*match" * identifier)) , (parameter_declaration "Version_tree *v" type_identifier (pointer_declarator "*v" * identifier)) , (parameter_declaration "bool is_global" primitive_type identifier) , (parameter_declaration "Version_expression *ve" type_identifier (pointer_declarator "*ve" * identifier)) , (parameter_declaration "Exact *pe" type_identifier (pointer_declarator "*pe" * identifier)) ))) (compound_statement "{\n  pointer pcVar1;\n  size_t __n;\n  pointer pcVar2;\n  int iVar3;\n  _Node_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_false,_true>\n  _Var4;\n  char *format;\n  pair<std::__detail::_Node_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_false,_true>,_bool>\n  pVar5;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_78;\n  Version_tree *local_58;\n  undefined1 local_50;\n  Version_expression *local_48;\n  undefined8 local_40;\n  \n  pcVar1 = (match->_M_dataplus)._M_p;\n  local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(&local_78,pcVar1,pcVar1 + match->_M_string_length);\n  local_40 = 0;\n  local_58 = v;\n  local_50 = is_global;\n  local_48 = ve;\n                    /* try { // try from 002d5168 to 002d516c has its CatchHandler @ 002d5206 */\n  pVar5 = std::\n          _Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          ::\n          _M_emplace<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>\n                    ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n                      *)pe,&local_78);\n  _Var4 = pVar5.first;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_78._M_dataplus._M_p != &local_78.field_2) {\n    operator_delete(local_78._M_dataplus._M_p);\n  }\n  if (pVar5.second == false) {\n    __n = (*(undefined8 **)\n            ((long)_Var4.\n                   super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                   ._M_cur + 0x28))[1];\n    if ((__n == (v->tag)._M_string_length) &&\n       ((pcVar1 = (v->tag)._M_dataplus._M_p, __n == 0 ||\n        (iVar3 = memcmp((void *)**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28),pcVar1,__n), iVar3 == 0)))) {\n      if ((bool)*(char *)((long)_Var4.\n                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                ._M_cur + 0x30) != is_global) {\n        pcVar2 = (match->_M_dataplus)._M_p;\n        format = (char *)gettext(\n                                "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                                );\n        gold_error(format,pcVar2,pcVar1);\n        return;\n      }\n    }\n    else if (*(long *)((long)_Var4.\n                             super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                             ._M_cur + 0x40) == 0) {\n      *(Version_tree **)\n       ((long)_Var4.\n              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n              ._M_cur + 0x40) = v;\n    }\n    return;\n  }\n  return;\n}" { (declaration "pointer pcVar1;" type_identifier identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "pointer pcVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (ERROR "_Node_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::" (binary_expression "_Node_iterator<std::pair<const_std" (binary_expression "_Node_iterator<std" identifier < identifier) (ERROR "::pair" : : identifier) < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : :) (expression_statement "Version_script_info::Version_tree_match>,_false,_true>\n  _Var4;" (comma_expression "Version_script_info::Version_tree_match>,_false,_true>\n  _Var4" identifier (ERROR "::Version_tree_match>" : : identifier >) , (comma_expression "_false,_true>\n  _Var4" identifier , (binary_expression "_true>\n  _Var4" identifier > identifier))) ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (ERROR "pair<std::__detail::_Node_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::" (binary_expression "pair<std" identifier < identifier) : : (comma_expression "__detail::_Node_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold" identifier (ERROR "::_Node_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>" : : (binary_expression "_Node_iterator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) >) , identifier) : :) (expression_statement "Version_script_info::Version_tree_match>,_false,_true>,_bool>\n  pVar5;" (comma_expression "Version_script_info::Version_tree_match>,_false,_true>,_bool>\n  pVar5" identifier (ERROR "::Version_tree_match>,_false,_true>" : : identifier > , identifier , identifier >) , (binary_expression "_bool>\n  pVar5" identifier > identifier)) ;) (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (expression_statement "allocator<char>_> local_78;" (binary_expression "allocator<char>_> local_78" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) ;) (declaration "Version_tree *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "undefined1 local_50;" type_identifier identifier ;) (declaration "Version_expression *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "undefined8 local_40;" type_identifier identifier ;) (expression_statement "pcVar1 = (match->_M_dataplus)._M_p;" (assignment_expression "pcVar1 = (match->_M_dataplus)._M_p" identifier = (field_expression "(match->_M_dataplus)._M_p" (parenthesized_expression "(match->_M_dataplus)" ( (field_expression "match->_M_dataplus" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "local_78._M_dataplus._M_p = (pointer)&local_78.field_2;" (assignment_expression "local_78._M_dataplus._M_p = (pointer)&local_78.field_2" (field_expression "local_78._M_dataplus._M_p" (field_expression "local_78._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&local_78.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "local_78.field_2" identifier . field_identifier))) ;) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(&local_78,pcVar1,pcVar1 + match->_M_string_length);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char*>(&local_78,pcVar1,pcVar1 + match->_M_string_length);" (binary_expression "_M_construct<char*>(&local_78,pcVar1,pcVar1 + match->_M_string_length)" (binary_expression "_M_construct<char" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&local_78,pcVar1,pcVar1 + match->_M_string_length)" ( (comma_expression "&local_78,pcVar1,pcVar1 + match->_M_string_length" (pointer_expression "&local_78" & identifier) , (comma_expression "pcVar1,pcVar1 + match->_M_string_length" identifier , (binary_expression "pcVar1 + match->_M_string_length" identifier + (field_expression "match->_M_string_length" identifier -> field_identifier)))) ))) ;)) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_58 = v;" (assignment_expression "local_58 = v" identifier = identifier) ;) (expression_statement "local_50 = is_global;" (assignment_expression "local_50 = is_global" identifier = identifier) ;) (expression_statement "local_48 = ve;" (assignment_expression "local_48 = ve" identifier = identifier) ;) comment (ERROR "pVar5 = std::\n          _Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          ::\n          _M_emplace<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>\n                    ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::" (assignment_expression "pVar5 = std" identifier = identifier) : : (binary_expression "_Hashtable<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (comma_expression "Version_script_info::Version_tree_match>,_std" identifier (ERROR "::Version_tree_match>" : : identifier >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (comma_expression "Version_script_info::Version_tree_match>_>,_std" identifier (ERROR "::Version_tree_match>_>" : : (binary_expression "Version_tree_match>_" identifier > identifier) >) , identifier) : : (comma_expression "__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std" identifier (ERROR "::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>" : : (comma_expression "_Select1st,_std" identifier , identifier) : : (binary_expression "equal_to<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) >) , identifier) : : (binary_expression "hash<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (comma_expression "__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          ::\n          _M_emplace<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>\n                    ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>,_std" identifier (ERROR "::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          ::\n          _M_emplace<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>\n                    ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>" : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) : : (comma_expression "__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          ::\n          _M_emplace<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>\n                    ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold" identifier (ERROR "::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          ::\n          _M_emplace<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>\n                    ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>" : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) : : (comma_expression "__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          ::\n          _M_emplace<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>\n                    ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold" identifier (ERROR "::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          ::\n          _M_emplace<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>_>\n                    ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) : : (comma_expression "__detail::_Hashtable_traits<true,_false,_true>_>\n          ::\n          _M_emplace<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold" identifier (ERROR "::_Hashtable_traits<true,_false,_true>_>\n          ::\n          _M_emplace<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>" : : (comma_expression "_Hashtable_traits<true,_false,_true>_>\n          ::\n          _M_emplace<std" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_false,_true>_>\n          ::\n          _M_emplace<std" identifier , (binary_expression "_true>_>\n          ::\n          _M_emplace<std" (binary_expression "_true>_>\n          ::\n          _M_emplace" (binary_expression "_true>_" identifier > identifier) > (ERROR "::" : :) identifier) < identifier))) : : (binary_expression "pair<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) >) , identifier) : : (comma_expression "Version_script_info::Version_tree_match>_>\n                    ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std" identifier (ERROR "::Version_tree_match>_>\n                    ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>" : : (binary_expression "Version_tree_match>_" identifier > identifier) > ( ( (binary_expression "_Hashtable<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) >) , identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) >) , identifier) : : (comma_expression "Version_script_info::Version_tree_match>,_std" identifier (ERROR "::Version_tree_match>" : : identifier >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) >) , identifier) : : identifier : : (binary_expression "Version_tree_match>_" identifier > identifier) >) , identifier) : : identifier : : identifier , identifier : : identifier < identifier : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "hash<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : :) (labeled_statement "__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n                      *)pe,&local_78);" statement_identifier (ERROR "::_Mod_range_hashing,_std:" : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) :) : (labeled_statement "__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n                      *)pe,&local_78);" statement_identifier (ERROR "::_Default_ranged_hash,_std:" : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) :) : (labeled_statement "__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n                      *)pe,&local_78);" statement_identifier (ERROR "::_Prime_rehash_policy,_std:" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<true,_false,_true>_>\n                      *)pe,&local_78);" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<true,_false,_true>_>\n                      *)pe,&local_78);" (comma_expression "_Hashtable_traits<true,_false,_true>_>\n                      *)pe,&local_78" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_false,_true>_>\n                      *)pe,&local_78" identifier , (comma_expression "_true>_>\n                      *)pe,&local_78" (binary_expression "_true>_>\n                      *)pe" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "*)pe" * (ERROR ")" )) identifier)) , (pointer_expression "&local_78" & identifier)))) (ERROR ")" )) ;))))) (expression_statement "_Var4 = pVar5.first;" (assignment_expression "_Var4 = pVar5.first" identifier = (field_expression "pVar5.first" 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_78._M_dataplus._M_p != &local_78.field_2) {\n    operator_delete(local_78._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_78._M_dataplus._M_p != &local_78.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_78._M_dataplus._M_p != &local_78.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_78._M_dataplus._M_p != &local_78.field_2" (binary_expression "allocator<char>_>_9\n       *)local_78._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)local_78._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_78._M_dataplus._M_p" (field_expression "local_78._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&local_78.field_2" & (field_expression "local_78.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n    operator_delete(local_78._M_dataplus._M_p);\n  }" { (expression_statement "operator_delete(local_78._M_dataplus._M_p);" (call_expression "operator_delete(local_78._M_dataplus._M_p)" identifier (argument_list "(local_78._M_dataplus._M_p)" ( (field_expression "local_78._M_dataplus._M_p" (field_expression "local_78._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) (if_statement "if (pVar5.second == false) {\n    __n = (*(undefined8 **)\n            ((long)_Var4.\n                   super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                   ._M_cur + 0x28))[1];\n    if ((__n == (v->tag)._M_string_length) &&\n       ((pcVar1 = (v->tag)._M_dataplus._M_p, __n == 0 ||\n        (iVar3 = memcmp((void *)**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28),pcVar1,__n), iVar3 == 0)))) {\n      if ((bool)*(char *)((long)_Var4.\n                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                ._M_cur + 0x30) != is_global) {\n        pcVar2 = (match->_M_dataplus)._M_p;\n        format = (char *)gettext(\n                                "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                                );\n        gold_error(format,pcVar2,pcVar1);\n        return;\n      }\n    }\n    else if (*(long *)((long)_Var4.\n                             super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                             ._M_cur + 0x40) == 0) {\n      *(Version_tree **)\n       ((long)_Var4.\n              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n              ._M_cur + 0x40) = v;\n    }\n    return;\n  }" if (parenthesized_expression "(pVar5.second == false)" ( (binary_expression "pVar5.second == false" (field_expression "pVar5.second" identifier . field_identifier) == false) )) (compound_statement "{\n    __n = (*(undefined8 **)\n            ((long)_Var4.\n                   super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                   ._M_cur + 0x28))[1];\n    if ((__n == (v->tag)._M_string_length) &&\n       ((pcVar1 = (v->tag)._M_dataplus._M_p, __n == 0 ||\n        (iVar3 = memcmp((void *)**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28),pcVar1,__n), iVar3 == 0)))) {\n      if ((bool)*(char *)((long)_Var4.\n                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                ._M_cur + 0x30) != is_global) {\n        pcVar2 = (match->_M_dataplus)._M_p;\n        format = (char *)gettext(\n                                "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                                );\n        gold_error(format,pcVar2,pcVar1);\n        return;\n      }\n    }\n    else if (*(long *)((long)_Var4.\n                             super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                             ._M_cur + 0x40) == 0) {\n      *(Version_tree **)\n       ((long)_Var4.\n              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n              ._M_cur + 0x40) = v;\n    }\n    return;\n  }" { (expression_statement "__n = (*(undefined8 **)\n            ((long)_Var4.\n                   super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                   ._M_cur + 0x28))[1];" (assignment_expression "__n = (*(undefined8 **)\n            ((long)_Var4.\n                   super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                   ._M_cur + 0x28))[1]" identifier = (subscript_expression "(*(undefined8 **)\n            ((long)_Var4.\n                   super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                   ._M_cur + 0x28))[1]" (parenthesized_expression "(*(undefined8 **)\n            ((long)_Var4.\n                   super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                   ._M_cur + 0x28))" ( (pointer_expression "*(undefined8 **)\n            ((long)_Var4.\n                   super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                   ._M_cur + 0x28)" * (cast_expression "(undefined8 **)\n            ((long)_Var4.\n                   super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                   ._M_cur + 0x28)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)_Var4.\n                   super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                   ._M_cur + 0x28)" ( (ERROR "(long)_Var4.\n                   super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::" (comma_expression "(long)_Var4.\n                   super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std" (binary_expression "(long)_Var4.\n                   super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char" (binary_expression "(long)_Var4.\n                   super__Node_iterator_base<std::pair<const_std" (binary_expression "(long)_Var4.\n                   super__Node_iterator_base<std" (cast_expression "(long)_Var4.\n                   super__Node_iterator_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "_Var4.\n                   super__Node_iterator_base" identifier . field_identifier)) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : :) (binary_expression "Version_tree_match>,_true>\n                   ._M_cur + 0x28" (field_expression "Version_tree_match>,_true>\n                   ._M_cur" (binary_expression "Version_tree_match>,_true" identifier > (ERROR "," ,) identifier) (ERROR ">" >) . field_identifier) + number_literal) )))) )) [ number_literal ])) ;) (if_statement "if ((__n == (v->tag)._M_string_length) &&\n       ((pcVar1 = (v->tag)._M_dataplus._M_p, __n == 0 ||\n        (iVar3 = memcmp((void *)**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28),pcVar1,__n), iVar3 == 0)))) {\n      if ((bool)*(char *)((long)_Var4.\n                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                ._M_cur + 0x30) != is_global) {\n        pcVar2 = (match->_M_dataplus)._M_p;\n        format = (char *)gettext(\n                                "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                                );\n        gold_error(format,pcVar2,pcVar1);\n        return;\n      }\n    }\n    else if (*(long *)((long)_Var4.\n                             super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                             ._M_cur + 0x40) == 0) {\n      *(Version_tree **)\n       ((long)_Var4.\n              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n              ._M_cur + 0x40) = v;\n    }" if (parenthesized_expression "((__n == (v->tag)._M_string_length) &&\n       ((pcVar1 = (v->tag)._M_dataplus._M_p, __n == 0 ||\n        (iVar3 = memcmp((void *)**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28),pcVar1,__n), iVar3 == 0))))" ( (binary_expression "(__n == (v->tag)._M_string_length) &&\n       ((pcVar1 = (v->tag)._M_dataplus._M_p, __n == 0 ||\n        (iVar3 = memcmp((void *)**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28),pcVar1,__n), iVar3 == 0)))" (parenthesized_expression "(__n == (v->tag)._M_string_length)" ( (binary_expression "__n == (v->tag)._M_string_length" identifier == (field_expression "(v->tag)._M_string_length" (parenthesized_expression "(v->tag)" ( (field_expression "v->tag" identifier -> field_identifier) )) . field_identifier)) )) && (parenthesized_expression "((pcVar1 = (v->tag)._M_dataplus._M_p, __n == 0 ||\n        (iVar3 = memcmp((void *)**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28),pcVar1,__n), iVar3 == 0)))" ( (parenthesized_expression "(pcVar1 = (v->tag)._M_dataplus._M_p, __n == 0 ||\n        (iVar3 = memcmp((void *)**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28),pcVar1,__n), iVar3 == 0))" ( (comma_expression "pcVar1 = (v->tag)._M_dataplus._M_p, __n == 0 ||\n        (iVar3 = memcmp((void *)**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28),pcVar1,__n), iVar3 == 0)" (assignment_expression "pcVar1 = (v->tag)._M_dataplus._M_p" identifier = (field_expression "(v->tag)._M_dataplus._M_p" (field_expression "(v->tag)._M_dataplus" (parenthesized_expression "(v->tag)" ( (field_expression "v->tag" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (binary_expression "__n == 0 ||\n        (iVar3 = memcmp((void *)**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28),pcVar1,__n), iVar3 == 0)" (binary_expression "__n == 0" identifier == number_literal) || (parenthesized_expression "(iVar3 = memcmp((void *)**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28),pcVar1,__n), iVar3 == 0)" ( (comma_expression "iVar3 = memcmp((void *)**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28),pcVar1,__n), iVar3 == 0" (assignment_expression "iVar3 = memcmp((void *)**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28),pcVar1,__n)" identifier = (call_expression "memcmp((void *)**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28),pcVar1,__n)" identifier (argument_list "((void *)**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28),pcVar1,__n)" ( (cast_expression "(void *)**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28)" * (pointer_expression "*(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28)" * (cast_expression "(undefined8 **)\n                                  ((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                         ._M_cur + 0x28)" ( (ERROR "(long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::" (comma_expression "(long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std" (binary_expression "(long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char" (binary_expression "(long)_Var4.\n                                         super__Node_iterator_base<std::pair<const_std" (binary_expression "(long)_Var4.\n                                         super__Node_iterator_base<std" (cast_expression "(long)_Var4.\n                                         super__Node_iterator_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "_Var4.\n                                         super__Node_iterator_base" identifier . field_identifier)) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : :) (binary_expression "Version_tree_match>,_true>\n                                         ._M_cur + 0x28" (field_expression "Version_tree_match>,_true>\n                                         ._M_cur" (binary_expression "Version_tree_match>,_true" identifier > (ERROR "," ,) identifier) (ERROR ">" >) . field_identifier) + number_literal) )))))) , identifier , identifier )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) )))) )) ))) )) (compound_statement "{\n      if ((bool)*(char *)((long)_Var4.\n                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                ._M_cur + 0x30) != is_global) {\n        pcVar2 = (match->_M_dataplus)._M_p;\n        format = (char *)gettext(\n                                "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                                );\n        gold_error(format,pcVar2,pcVar1);\n        return;\n      }\n    }" { (if_statement "if ((bool)*(char *)((long)_Var4.\n                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                ._M_cur + 0x30) != is_global) {\n        pcVar2 = (match->_M_dataplus)._M_p;\n        format = (char *)gettext(\n                                "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                                );\n        gold_error(format,pcVar2,pcVar1);\n        return;\n      }" if (parenthesized_expression "((bool)*(char *)((long)_Var4.\n                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                ._M_cur + 0x30) != is_global)" ( (binary_expression "(bool)*(char *)((long)_Var4.\n                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                ._M_cur + 0x30) != is_global" (cast_expression "(bool)*(char *)((long)_Var4.\n                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                ._M_cur + 0x30)" ( (type_descriptor "bool" primitive_type) ) (pointer_expression "*(char *)((long)_Var4.\n                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                ._M_cur + 0x30)" * (cast_expression "(char *)((long)_Var4.\n                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                ._M_cur + 0x30)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)_Var4.\n                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                                ._M_cur + 0x30)" ( (ERROR "(long)_Var4.\n                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::" (comma_expression "(long)_Var4.\n                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std" (binary_expression "(long)_Var4.\n                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char" (binary_expression "(long)_Var4.\n                                super__Node_iterator_base<std::pair<const_std" (binary_expression "(long)_Var4.\n                                super__Node_iterator_base<std" (cast_expression "(long)_Var4.\n                                super__Node_iterator_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "_Var4.\n                                super__Node_iterator_base" identifier . field_identifier)) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : :) (binary_expression "Version_tree_match>,_true>\n                                ._M_cur + 0x30" (field_expression "Version_tree_match>,_true>\n                                ._M_cur" (binary_expression "Version_tree_match>,_true" identifier > (ERROR "," ,) identifier) (ERROR ">" >) . field_identifier) + number_literal) ))))) != identifier) )) (compound_statement "{\n        pcVar2 = (match->_M_dataplus)._M_p;\n        format = (char *)gettext(\n                                "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                                );\n        gold_error(format,pcVar2,pcVar1);\n        return;\n      }" { (expression_statement "pcVar2 = (match->_M_dataplus)._M_p;" (assignment_expression "pcVar2 = (match->_M_dataplus)._M_p" identifier = (field_expression "(match->_M_dataplus)._M_p" (parenthesized_expression "(match->_M_dataplus)" ( (field_expression "match->_M_dataplus" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "format = (char *)gettext(\n                                "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                                );" (assignment_expression "format = (char *)gettext(\n                                "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                                )" identifier = (cast_expression "(char *)gettext(\n                                "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                                )" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(\n                                "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                                )" identifier (argument_list "(\n                                "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                                )" ( (string_literal ""\'%s\' appears as both a global and a local symbol for version \'%s\' in script"" " escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") ))))) ;) (expression_statement "gold_error(format,pcVar2,pcVar1);" (call_expression "gold_error(format,pcVar2,pcVar1)" identifier (argument_list "(format,pcVar2,pcVar1)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) }) (else_clause "else if (*(long *)((long)_Var4.\n                             super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                             ._M_cur + 0x40) == 0) {\n      *(Version_tree **)\n       ((long)_Var4.\n              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n              ._M_cur + 0x40) = v;\n    }" else (if_statement "if (*(long *)((long)_Var4.\n                             super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                             ._M_cur + 0x40) == 0) {\n      *(Version_tree **)\n       ((long)_Var4.\n              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n              ._M_cur + 0x40) = v;\n    }" if (parenthesized_expression "(*(long *)((long)_Var4.\n                             super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                             ._M_cur + 0x40) == 0)" ( (binary_expression "*(long *)((long)_Var4.\n                             super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                             ._M_cur + 0x40) == 0" (pointer_expression "*(long *)((long)_Var4.\n                             super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                             ._M_cur + 0x40)" * (cast_expression "(long *)((long)_Var4.\n                             super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                             ._M_cur + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)_Var4.\n                             super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n                             ._M_cur + 0x40)" ( (ERROR "(long)_Var4.\n                             super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::" (comma_expression "(long)_Var4.\n                             super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std" (binary_expression "(long)_Var4.\n                             super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char" (binary_expression "(long)_Var4.\n                             super__Node_iterator_base<std::pair<const_std" (binary_expression "(long)_Var4.\n                             super__Node_iterator_base<std" (cast_expression "(long)_Var4.\n                             super__Node_iterator_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "_Var4.\n                             super__Node_iterator_base" identifier . field_identifier)) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : :) (binary_expression "Version_tree_match>,_true>\n                             ._M_cur + 0x40" (field_expression "Version_tree_match>,_true>\n                             ._M_cur" (binary_expression "Version_tree_match>,_true" identifier > (ERROR "," ,) identifier) (ERROR ">" >) . field_identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n      *(Version_tree **)\n       ((long)_Var4.\n              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n              ._M_cur + 0x40) = v;\n    }" { (expression_statement "*(Version_tree **)\n       ((long)_Var4.\n              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n              ._M_cur + 0x40) = v;" (assignment_expression "*(Version_tree **)\n       ((long)_Var4.\n              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n              ._M_cur + 0x40) = v" (pointer_expression "*(Version_tree **)\n       ((long)_Var4.\n              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n              ._M_cur + 0x40)" * (cast_expression "(Version_tree **)\n       ((long)_Var4.\n              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n              ._M_cur + 0x40)" ( (type_descriptor "Version_tree **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)_Var4.\n              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::Version_tree_match>,_true>\n              ._M_cur + 0x40)" ( (ERROR "(long)_Var4.\n              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Version_script_info::" (comma_expression "(long)_Var4.\n              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char,_std" (binary_expression "(long)_Var4.\n              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<char" (binary_expression "(long)_Var4.\n              super__Node_iterator_base<std::pair<const_std" (binary_expression "(long)_Var4.\n              super__Node_iterator_base<std" (cast_expression "(long)_Var4.\n              super__Node_iterator_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "_Var4.\n              super__Node_iterator_base" identifier . field_identifier)) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : :) (binary_expression "Version_tree_match>,_true>\n              ._M_cur + 0x40" (field_expression "Version_tree_match>,_true>\n              ._M_cur" (binary_expression "Version_tree_match>,_true" identifier > (ERROR "," ,) identifier) (ERROR ">" >) . field_identifier) + number_literal) )))) = identifier) ;) })))) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_002d5110(undefined8 param_1,long *param_2,undefined8 *param_3,char param_4,\n                 undefined8 param_5,undefined8 param_6)\n\n{\n  size_t __n;\n  void *__s2;\n  int iVar1;\n  long lVar2;\n  undefined8 uVar3;\n  char extraout_DL;\n  undefined1 *local_78 [2];\n  undefined1 local_68 [16];\n  undefined8 *local_58;\n  char local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  \n  local_78[0] = local_68;\n  FUN_001caae0(local_78,*param_2,param_2[1] + *param_2);\n  local_40 = 0;\n  local_58 = param_3;\n  local_50 = param_4;\n  local_48 = param_5;\n                    \n  lVar2 = FUN_002d7830(param_6,local_78);\n  if (local_78[0] != local_68) {\n    FUN_00338a50();\n  }\n  if (extraout_DL == '\0') {\n    __n = (*(undefined8 **)(lVar2 + 0x28))[1];\n    if ((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }\n    else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_002d5110(undefined8 param_1,long *param_2,undefined8 *param_3,char param_4,\n                 undefined8 param_5,undefined8 param_6)\n\n{\n  size_t __n;\n  void *__s2;\n  int iVar1;\n  long lVar2;\n  undefined8 uVar3;\n  char extraout_DL;\n  undefined1 *local_78 [2];\n  undefined1 local_68 [16];\n  undefined8 *local_58;\n  char local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  \n  local_78[0] = local_68;\n  FUN_001caae0(local_78,*param_2,param_2[1] + *param_2);\n  local_40 = 0;\n  local_58 = param_3;\n  local_50 = param_4;\n  local_48 = param_5;\n                    \n  lVar2 = FUN_002d7830(param_6,local_78);\n  if (local_78[0] != local_68) {\n    FUN_00338a50();\n  }\n  if (extraout_DL == '\0') {\n    __n = (*(undefined8 **)(lVar2 + 0x28))[1];\n    if ((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }\n    else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_002d5110(undefined8 param_1,long *param_2,undefined8 *param_3,char param_4,\n                 undefined8 param_5,undefined8 param_6)" identifier (parameter_list "(undefined8 param_1,long *param_2,undefined8 *param_3,char param_4,\n                 undefined8 param_5,undefined8 param_6)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "char param_4" primitive_type identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) ))) (compound_statement "{\n  size_t __n;\n  void *__s2;\n  int iVar1;\n  long lVar2;\n  undefined8 uVar3;\n  char extraout_DL;\n  undefined1 *local_78 [2];\n  undefined1 local_68 [16];\n  undefined8 *local_58;\n  char local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  \n  local_78[0] = local_68;\n  FUN_001caae0(local_78,*param_2,param_2[1] + *param_2);\n  local_40 = 0;\n  local_58 = param_3;\n  local_50 = param_4;\n  local_48 = param_5;\n                    \n  lVar2 = FUN_002d7830(param_6,local_78);\n  if (local_78[0] != local_68) {\n    FUN_00338a50();\n  }\n  if (extraout_DL == '\0') {\n    __n = (*(undefined8 **)(lVar2 + 0x28))[1];\n    if ((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }\n    else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }\n    return;\n  }\n  return;\n}" { (declaration "size_t __n;" primitive_type identifier ;) (declaration "void *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "char extraout_DL;" primitive_type identifier ;) (declaration "undefined1 *local_78 [2];" type_identifier (pointer_declarator "*local_78 [2]" * (array_declarator "local_78 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_68 [16];" type_identifier (array_declarator "local_68 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "char local_50;" primitive_type identifier ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "undefined8 local_40;" type_identifier identifier ;) (expression_statement "local_78[0] = local_68;" (assignment_expression "local_78[0] = local_68" (subscript_expression "local_78[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_001caae0(local_78,*param_2,param_2[1] + *param_2);" (call_expression "FUN_001caae0(local_78,*param_2,param_2[1] + *param_2)" identifier (argument_list "(local_78,*param_2,param_2[1] + *param_2)" ( identifier , (pointer_expression "*param_2" * identifier) , (binary_expression "param_2[1] + *param_2" (subscript_expression "param_2[1]" identifier [ number_literal ]) + (pointer_expression "*param_2" * identifier)) ))) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_58 = param_3;" (assignment_expression "local_58 = param_3" identifier = identifier) ;) (expression_statement "local_50 = param_4;" (assignment_expression "local_50 = param_4" identifier = identifier) ;) (expression_statement "local_48 = param_5;" (assignment_expression "local_48 = param_5" identifier = identifier) ;) (expression_statement "lVar2 = FUN_002d7830(param_6,local_78);" (assignment_expression "lVar2 = FUN_002d7830(param_6,local_78)" identifier = (call_expression "FUN_002d7830(param_6,local_78)" identifier (argument_list "(param_6,local_78)" ( identifier , identifier )))) ;) (if_statement "if (local_78[0] != local_68) {\n    FUN_00338a50();\n  }" if (parenthesized_expression "(local_78[0] != local_68)" ( (binary_expression "local_78[0] != local_68" (subscript_expression "local_78[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    FUN_00338a50();\n  }" { (expression_statement "FUN_00338a50();" (call_expression "FUN_00338a50()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (extraout_DL == '\0') {\n    __n = (*(undefined8 **)(lVar2 + 0x28))[1];\n    if ((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }\n    else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }\n    return;\n  }" if (parenthesized_expression "(extraout_DL == '\0')" ( (binary_expression "extraout_DL == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    __n = (*(undefined8 **)(lVar2 + 0x28))[1];\n    if ((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }\n    else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }\n    return;\n  }" { (expression_statement "__n = (*(undefined8 **)(lVar2 + 0x28))[1];" (assignment_expression "__n = (*(undefined8 **)(lVar2 + 0x28))[1]" identifier = (subscript_expression "(*(undefined8 **)(lVar2 + 0x28))[1]" (parenthesized_expression "(*(undefined8 **)(lVar2 + 0x28))" ( (pointer_expression "*(undefined8 **)(lVar2 + 0x28)" * (cast_expression "(undefined8 **)(lVar2 + 0x28)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar2 + 0x28)" ( (binary_expression "lVar2 + 0x28" identifier + number_literal) )))) )) [ number_literal ])) ;) (if_statement "if ((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }\n    else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }" if (parenthesized_expression "((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0))))" ( (binary_expression "(__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))" (parenthesized_expression "(__n == param_3[1])" ( (binary_expression "__n == param_3[1]" identifier == (subscript_expression "param_3[1]" identifier [ number_literal ])) )) && (parenthesized_expression "((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))" ( (parenthesized_expression "(__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0))" ( (comma_expression "__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)" (assignment_expression "__s2 = (void *)*param_3" identifier = (cast_expression "(void *)*param_3" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) , (binary_expression "__n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)" (binary_expression "__n == 0" identifier == number_literal) || (parenthesized_expression "(iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)" ( (comma_expression "iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0" (assignment_expression "iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n)" identifier = (call_expression "memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n)" identifier (argument_list "((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n)" ( (cast_expression "(void *)**(undefined8 **)(lVar2 + 0x28)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined8 **)(lVar2 + 0x28)" * (pointer_expression "*(undefined8 **)(lVar2 + 0x28)" * (cast_expression "(undefined8 **)(lVar2 + 0x28)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar2 + 0x28)" ( (binary_expression "lVar2 + 0x28" identifier + number_literal) )))))) , identifier , identifier )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) )))) )) ))) )) (compound_statement "{\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }" { (if_statement "if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }" if (parenthesized_expression "(*(char *)(lVar2 + 0x30) != param_4)" ( (binary_expression "*(char *)(lVar2 + 0x30) != param_4" (pointer_expression "*(char *)(lVar2 + 0x30)" * (cast_expression "(char *)(lVar2 + 0x30)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x30)" ( (binary_expression "lVar2 + 0x30" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }" { (expression_statement "lVar2 = *param_2;" (assignment_expression "lVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );" (assignment_expression "uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       )" identifier = (call_expression "gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       )" identifier (argument_list "(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       )" ( (string_literal ""\'%s\' appears as both a global and a local symbol for version \'%s\' in script"" " escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") )))) ;) (expression_statement "FUN_001e14f0(uVar3,lVar2,__s2);" (call_expression "FUN_001e14f0(uVar3,lVar2,__s2)" identifier (argument_list "(uVar3,lVar2,__s2)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) }) (else_clause "else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }" else (if_statement "if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }" if (parenthesized_expression "(*(long *)(lVar2 + 0x40) == 0)" ( (binary_expression "*(long *)(lVar2 + 0x40) == 0" (pointer_expression "*(long *)(lVar2 + 0x40)" * (cast_expression "(long *)(lVar2 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x40)" ( (binary_expression "lVar2 + 0x40" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }" { (expression_statement "*(undefined8 **)(lVar2 + 0x40) = param_3;" (assignment_expression "*(undefined8 **)(lVar2 + 0x40) = param_3" (pointer_expression "*(undefined8 **)(lVar2 + 0x40)" * (cast_expression "(undefined8 **)(lVar2 + 0x40)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar2 + 0x40)" ( (binary_expression "lVar2 + 0x40" identifier + number_literal) )))) = identifier) ;) })))) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , (binary_expression (subscript_expression IDENT [ LIT ]) + (pointer_expression * IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (subscript_expression IDENT [ LIT ])) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) , (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) , IDENT , IDENT )))) , (binary_expression IDENT == LIT)) )))) )) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })))) (return_statement return ;) })) (return_statement return ;) })))
(function_definition "void FUN_002d5110(undefined8 param_1,long *param_2,undefined8 *param_3,char param_4,\n                 undefined8 param_5,undefined8 param_6)\n\n{\n  size_t __n;\n  void *__s2;\n  int iVar1;\n  long lVar2;\n  undefined8 uVar3;\n  char extraout_DL;\n  undefined1 *local_78 [2];\n  undefined1 local_68 [16];\n  undefined8 *local_58;\n  char local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  \n  local_78[0] = local_68;\n  FUN_001caae0(local_78,*param_2,param_2[1] + *param_2);\n  local_40 = 0;\n  local_58 = param_3;\n  local_50 = param_4;\n  local_48 = param_5;\n                    \n  lVar2 = FUN_002d7830(param_6,local_78);\n  if (local_78[0] != local_68) {\n    FUN_00338a50();\n  }\n  if (extraout_DL == '\0') {\n    __n = (*(undefined8 **)(lVar2 + 0x28))[1];\n    if ((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }\n    else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }\n    return;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002d5110(undefined8 param_1,long *param_2,undefined8 *param_3,char param_4,\n                 undefined8 param_5,undefined8 param_6)" (identifier "FUN_002d5110") (parameter_list "(undefined8 param_1,long *param_2,undefined8 *param_3,char param_4,\n                 undefined8 param_5,undefined8 param_6)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "long *param_2" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined8 *param_3" (type_identifier "undefined8") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "char param_4" (primitive_type "char") (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) (, ",") (parameter_declaration "undefined8 param_6" (type_identifier "undefined8") (identifier "param_6")) () ")"))) (compound_statement "{\n  size_t __n;\n  void *__s2;\n  int iVar1;\n  long lVar2;\n  undefined8 uVar3;\n  char extraout_DL;\n  undefined1 *local_78 [2];\n  undefined1 local_68 [16];\n  undefined8 *local_58;\n  char local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  \n  local_78[0] = local_68;\n  FUN_001caae0(local_78,*param_2,param_2[1] + *param_2);\n  local_40 = 0;\n  local_58 = param_3;\n  local_50 = param_4;\n  local_48 = param_5;\n                    \n  lVar2 = FUN_002d7830(param_6,local_78);\n  if (local_78[0] != local_68) {\n    FUN_00338a50();\n  }\n  if (extraout_DL == '\0') {\n    __n = (*(undefined8 **)(lVar2 + 0x28))[1];\n    if ((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }\n    else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }\n    return;\n  }\n  return;\n}" ({ "{") (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "void *__s2;" (primitive_type "void") (pointer_declarator "*__s2" (* "*") (identifier "__s2")) (; ";")) (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "char extraout_DL;" (primitive_type "char") (identifier "extraout_DL") (; ";")) (declaration "undefined1 *local_78 [2];" (type_identifier "undefined1") (pointer_declarator "*local_78 [2]" (* "*") (array_declarator "local_78 [2]" (identifier "local_78") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_68 [16];" (type_identifier "undefined1") (array_declarator "local_68 [16]" (identifier "local_68") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined8 *local_58;" (type_identifier "undefined8") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "char local_50;" (primitive_type "char") (identifier "local_50") (; ";")) (declaration "undefined8 local_48;" (type_identifier "undefined8") (identifier "local_48") (; ";")) (declaration "undefined8 local_40;" (type_identifier "undefined8") (identifier "local_40") (; ";")) (expression_statement "local_78[0] = local_68;" (assignment_expression "local_78[0] = local_68" (subscript_expression "local_78[0]" (identifier "local_78") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_68")) (; ";")) (expression_statement "FUN_001caae0(local_78,*param_2,param_2[1] + *param_2);" (call_expression "FUN_001caae0(local_78,*param_2,param_2[1] + *param_2)" (identifier "FUN_001caae0") (argument_list "(local_78,*param_2,param_2[1] + *param_2)" (( "(") (identifier "local_78") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (binary_expression "param_2[1] + *param_2" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (+ "+") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")"))) (; ";")) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_58 = param_3;" (assignment_expression "local_58 = param_3" (identifier "local_58") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_50 = param_4;" (assignment_expression "local_50 = param_4" (identifier "local_50") (= "=") (identifier "param_4")) (; ";")) (expression_statement "local_48 = param_5;" (assignment_expression "local_48 = param_5" (identifier "local_48") (= "=") (identifier "param_5")) (; ";")) (expression_statement "lVar2 = FUN_002d7830(param_6,local_78);" (assignment_expression "lVar2 = FUN_002d7830(param_6,local_78)" (identifier "lVar2") (= "=") (call_expression "FUN_002d7830(param_6,local_78)" (identifier "FUN_002d7830") (argument_list "(param_6,local_78)" (( "(") (identifier "param_6") (, ",") (identifier "local_78") () ")")))) (; ";")) (if_statement "if (local_78[0] != local_68) {\n    FUN_00338a50();\n  }" (if "if") (parenthesized_expression "(local_78[0] != local_68)" (( "(") (binary_expression "local_78[0] != local_68" (subscript_expression "local_78[0]" (identifier "local_78") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "local_68")) () ")")) (compound_statement "{\n    FUN_00338a50();\n  }" ({ "{") (expression_statement "FUN_00338a50();" (call_expression "FUN_00338a50()" (identifier "FUN_00338a50") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (extraout_DL == '\0') {\n    __n = (*(undefined8 **)(lVar2 + 0x28))[1];\n    if ((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }\n    else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }\n    return;\n  }" (if "if") (parenthesized_expression "(extraout_DL == '\0')" (( "(") (binary_expression "extraout_DL == '\0'" (identifier "extraout_DL") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    __n = (*(undefined8 **)(lVar2 + 0x28))[1];\n    if ((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }\n    else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }\n    return;\n  }" ({ "{") (expression_statement "__n = (*(undefined8 **)(lVar2 + 0x28))[1];" (assignment_expression "__n = (*(undefined8 **)(lVar2 + 0x28))[1]" (identifier "__n") (= "=") (subscript_expression "(*(undefined8 **)(lVar2 + 0x28))[1]" (parenthesized_expression "(*(undefined8 **)(lVar2 + 0x28))" (( "(") (pointer_expression "*(undefined8 **)(lVar2 + 0x28)" (* "*") (cast_expression "(undefined8 **)(lVar2 + 0x28)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar2 + 0x28)" (( "(") (binary_expression "lVar2 + 0x28" (identifier "lVar2") (+ "+") (number_literal "0x28")) () ")")))) () ")")) ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }\n    else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }" (if "if") (parenthesized_expression "((__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0))))" (( "(") (binary_expression "(__n == param_3[1]) &&\n       ((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))" (parenthesized_expression "(__n == param_3[1])" (( "(") (binary_expression "__n == param_3[1]" (identifier "__n") (== "==") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) () ")")) (&& "&&") (parenthesized_expression "((__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))" (( "(") (parenthesized_expression "(__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0))" (( "(") (comma_expression "__s2 = (void *)*param_3, __n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)" (assignment_expression "__s2 = (void *)*param_3" (identifier "__s2") (= "=") (cast_expression "(void *)*param_3" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3")))) (, ",") (binary_expression "__n == 0 ||\n        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)" (binary_expression "__n == 0" (identifier "__n") (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)" (( "(") (comma_expression "iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0" (assignment_expression "iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n)" (identifier "iVar1") (= "=") (call_expression "memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n)" (identifier "memcmp") (argument_list "((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n)" (( "(") (cast_expression "(void *)**(undefined8 **)(lVar2 + 0x28)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined8 **)(lVar2 + 0x28)" (* "*") (pointer_expression "*(undefined8 **)(lVar2 + 0x28)" (* "*") (cast_expression "(undefined8 **)(lVar2 + 0x28)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar2 + 0x28)" (( "(") (binary_expression "lVar2 + 0x28" (identifier "lVar2") (+ "+") (number_literal "0x28")) () ")")))))) (, ",") (identifier "__s2") (, ",") (identifier "__n") () ")")))) (, ",") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0"))) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n      if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }\n    }" ({ "{") (if_statement "if (*(char *)(lVar2 + 0x30) != param_4) {\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }" (if "if") (parenthesized_expression "(*(char *)(lVar2 + 0x30) != param_4)" (( "(") (binary_expression "*(char *)(lVar2 + 0x30) != param_4" (pointer_expression "*(char *)(lVar2 + 0x30)" (* "*") (cast_expression "(char *)(lVar2 + 0x30)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x30)" (( "(") (binary_expression "lVar2 + 0x30" (identifier "lVar2") (+ "+") (number_literal "0x30")) () ")")))) (!= "!=") (identifier "param_4")) () ")")) (compound_statement "{\n        lVar2 = *param_2;\n        uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );\n        FUN_001e14f0(uVar3,lVar2,__s2);\n        return;\n      }" ({ "{") (expression_statement "lVar2 = *param_2;" (assignment_expression "lVar2 = *param_2" (identifier "lVar2") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       );" (assignment_expression "uVar3 = gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       )" (identifier "uVar3") (= "=") (call_expression "gettext(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       )" (identifier "gettext") (argument_list "(\n                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"\n                       )" (( "(") (string_literal ""\'%s\' appears as both a global and a local symbol for version \'%s\' in script"" (" """) (escape_sequence "\'") (string_content "%s") (escape_sequence "\'") (string_content " appears as both a global and a local symbol for version ") (escape_sequence "\'") (string_content "%s") (escape_sequence "\'") (string_content " in script") (" """)) () ")")))) (; ";")) (expression_statement "FUN_001e14f0(uVar3,lVar2,__s2);" (call_expression "FUN_001e14f0(uVar3,lVar2,__s2)" (identifier "FUN_001e14f0") (argument_list "(uVar3,lVar2,__s2)" (( "(") (identifier "uVar3") (, ",") (identifier "lVar2") (, ",") (identifier "__s2") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }" (else "else") (if_statement "if (*(long *)(lVar2 + 0x40) == 0) {\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }" (if "if") (parenthesized_expression "(*(long *)(lVar2 + 0x40) == 0)" (( "(") (binary_expression "*(long *)(lVar2 + 0x40) == 0" (pointer_expression "*(long *)(lVar2 + 0x40)" (* "*") (cast_expression "(long *)(lVar2 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x40)" (( "(") (binary_expression "lVar2 + 0x40" (identifier "lVar2") (+ "+") (number_literal "0x40")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *(undefined8 **)(lVar2 + 0x40) = param_3;\n    }" ({ "{") (expression_statement "*(undefined8 **)(lVar2 + 0x40) = param_3;" (assignment_expression "*(undefined8 **)(lVar2 + 0x40) = param_3" (pointer_expression "*(undefined8 **)(lVar2 + 0x40)" (* "*") (cast_expression "(undefined8 **)(lVar2 + 0x40)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar2 + 0x40)" (( "(") (binary_expression "lVar2 + 0x40" (identifier "lVar2") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (} "}"))))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void add_exact_match(Version_script_info * this, string * match,
   Version_tree * v, bool is_global, Version_expression * ve, Exact * pe) */

void __thiscall
gold::type_1::function_1
          (type_1 *this,type_2 *match,type_3 *v,bool var_18,
          type_4 *ve,type_5 *pe)

{
  type_6 var_10;
  size_t var_15;
  type_6 pcVar2;
  int var_17;
  _Node_iterator<std::pair<const_std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>,_gold::type_1::var_14>,_false,var_1>
  var_2;
  char *format;
  pair<std::__detail::_Node_iterator<std::pair<const_std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>,_gold::type_1::var_14>,_false,var_1>,var_3>
  var_4;
  basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7> var_8;
  type_3 *local_58;
  type_7 local_50;
  type_4 *local_48;
  type_8 local_40;
  
  var_10 = (match->_M_dataplus)._M_p;
  var_8._M_dataplus._M_p = (type_6)&var_8.field_2;
  std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>::
  var_9<var_6*>(&var_8,var_10,var_10 + match->_M_string_length);
  local_40 = 0;
  local_58 = v;
  local_50 = var_18;
  local_48 = ve;
                    /* try { // try from 002d5168 to 002d516c has its CatchHandler @ 002d5206 */
  var_4 = std::
          _Hashtable<std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>,_std::pair<const_std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>,_gold::type_1::var_14>,_std::var_5<std::pair<const_std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>,_gold::type_1::var_14>var_7>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>var_7>,_std::hash<std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>var_7>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_11<true,_false,var_1>var_7>
          ::
          _M_emplace<std::pair<std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>,_gold::type_1::var_14>var_7>
                    ((_Hashtable<std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>,_std::pair<const_std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>,_gold::type_1::var_14>,_std::var_5<std::pair<const_std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>,_gold::type_1::var_14>var_7>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>var_7>,_std::hash<std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>var_7>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_11<true,_false,var_1>var_7>
                      *)pe,&var_8);
  var_2 = var_4.first;
  if ((anon_union_16_2_edb7204a_for_basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>var_12
       *)var_8._M_dataplus._M_p != &var_8.field_2) {
    var_13(var_8._M_dataplus._M_p);
  }
  if (var_4.second == false) {
    var_15 = (*(type_8 **)
            ((long)var_2.
                   super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>,_gold::type_1::var_14>,var_1>
                   ._M_cur + 0x28))[1];
    if ((var_15 == (v->tag)._M_string_length) &&
       ((var_10 = (v->tag)._M_dataplus._M_p, var_15 == 0 ||
        (var_17 = var_16((void *)**(type_8 **)
                                  ((long)var_2.
                                         super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>,_gold::type_1::var_14>,var_1>
                                         ._M_cur + 0x28),var_10,var_15), var_17 == 0)))) {
      if ((bool)*(char *)((long)var_2.
                                super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>,_gold::type_1::var_14>,var_1>
                                ._M_cur + 0x30) != var_18) {
        pcVar2 = (match->_M_dataplus)._M_p;
        format = (char *)var_19(
                                "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"
                                );
        var_20(format,pcVar2,var_10);
        return;
      }
    }
    else if (*(long *)((long)var_2.
                             super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>,_gold::type_1::var_14>,var_1>
                             ._M_cur + 0x40) == 0) {
      *(type_3 **)
       ((long)var_2.
              super__Node_iterator_base<std::pair<const_std::__cxx11::basic_string<var_6,_std::char_traits<var_6>,_std::var_5<var_6>var_7>,_gold::type_1::var_14>,var_1>
              ._M_cur + 0x40) = v;
    }
    return;
  }
  return;
}


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

void MASKED(undefined8 param_1,long *param_2,undefined8 *param_3,char param_4,
                 undefined8 param_5,undefined8 param_6)

{
  size_t __n;
  void *__s2;
  int iVar1;
  long lVar2;
  undefined8 uVar3;
  char extraout_DL;
  undefined1 *local_78 [2];
  undefined1 local_68 [16];
  undefined8 *local_58;
  char local_50;
  undefined8 local_48;
  undefined8 local_40;
  
  local_78[0] = local_68;
  FUN_001caae0(local_78,*param_2,param_2[1] + *param_2);
  local_40 = 0;
  local_58 = param_3;
  local_50 = param_4;
  local_48 = param_5;
                    /* try { // try from 002d5168 to 002d516c has its CatchHandler @ 002d5206 */
  lVar2 = FUN_002d7830(param_6,local_78);
  if (local_78[0] != local_68) {
    FUN_00338a50();
  }
  if (extraout_DL == '\0') {
    __n = (*(undefined8 **)(lVar2 + 0x28))[1];
    if ((__n == param_3[1]) &&
       ((__s2 = (void *)*param_3, __n == 0 ||
        (iVar1 = memcmp((void *)**(undefined8 **)(lVar2 + 0x28),__s2,__n), iVar1 == 0)))) {
      if (*(char *)(lVar2 + 0x30) != param_4) {
        lVar2 = *param_2;
        uVar3 = gettext(
                       "\'%s\' appears as both a global and a local symbol for version \'%s\' in script"
                       );
        FUN_001e14f0(uVar3,lVar2,__s2);
        return;
      }
    }
    else if (*(long *)(lVar2 + 0x40) == 0) {
      *(undefined8 **)(lVar2 + 0x40) = param_3;
    }
    return;
  }
  return;
}

