
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void override_with_special<64>(Symbol_table * this, Sized_symbol<64> *
   tosym, Sized_symbol<64> * fromsym) */

void __thiscall
gold::Symbol_table::override_with_special<64>
          (Symbol_table *this,Sized_symbol<64> *tosym,Sized_symbol<64> *fromsym)

{
  byte bVar1;
  mapped_type *ppSVar2;
  Sized_symbol<64> *this_00;
  Symbol *pSVar3;
  Sized_symbol<64> *local_40;
  
  Symbol::override_base_with_special(&tosym->super_Symbol,&fromsym->super_Symbol);
  tosym->value_ = fromsym->value_;
  tosym->symsize_ = fromsym->symsize_;
  if (((tosym->super_Symbol).field_0x3a & 0x20) != 0) {
    pSVar3 = (Symbol *)&local_40;
    local_40 = tosym;
    ppSVar2 = std::__detail::
              _Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>
              ::operator[]((_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>
                            *)&this->weak_aliases_,(key_type *)&local_40);
    if ((Symbol_table *)*ppSVar2 == (Symbol_table *)0x0) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/resolve.cc",0x457,"override_with_special");
    }
    this_00 = get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3);
    do {
      Symbol::override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol);
      this_00->value_ = fromsym->value_;
      this_00->symsize_ = fromsym->symsize_;
      pSVar3 = (Symbol *)&local_40;
      local_40 = this_00;
      ppSVar2 = std::__detail::
                _Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>
                ::operator[]((_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>
                              *)&this->weak_aliases_,(key_type *)&local_40);
      if ((Symbol_table *)*ppSVar2 == (Symbol_table *)0x0) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable("../../gold/resolve.cc",0x45d,"override_with_special");
      }
      this_00 = get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3);
    } while (tosym != this_00);
  }
  bVar1 = (byte)(tosym->super_Symbol).field_0x38 >> 4;
  if (bVar1 != 0) {
    if (1 < ((byte)(tosym->super_Symbol).field_0x39 & 3) - 1) {
      return;
    }
    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {
      return;
    }
    if (parameters->options_ == (General_options *)0x0) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
    }
    if ((parameters->options_->relocatable_).value != false) {
      return;
    }
  }
  force_local(this,&tosym->super_Symbol);
  return;
}



void FUN_002c0320(long param_1,long param_2,long param_3)

{
  byte bVar1;
  long *plVar2;
  long lVar3;
  long local_40 [2];
  
  FUN_002bf290(param_2,param_3);
  *(undefined8 *)(param_2 + 0x40) = *(undefined8 *)(param_3 + 0x40);
  *(undefined8 *)(param_2 + 0x48) = *(undefined8 *)(param_3 + 0x48);
  if ((*(byte *)(param_2 + 0x3a) & 0x20) != 0) {
    local_40[0] = param_2;
    plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);
    if (*plVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");
    }
    lVar3 = FUN_002be950();
    do {
      FUN_002bf290(lVar3,param_3);
      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);
      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);
      local_40[0] = lVar3;
      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);
      if (*plVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");
      }
      lVar3 = FUN_002be950();
    } while (param_2 != lVar3);
  }
  bVar1 = *(byte *)(param_2 + 0x38) >> 4;
  if (bVar1 != 0) {
    if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {
      return;
    }
    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {
      return;
    }
    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/parameters.h",0x5c,"options");
    }
    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {
      return;
    }
  }
  FUN_002719b0(param_1,param_2);
  return;
}


PUSH R15
MOV R15,RDI
PUSH R14
PUSH R13
PUSH R12
MOV R12,RSI
MOV RSI,RDX
PUSH RBP
MOV RDI,R12
MOV RBP,RDX
PUSH RBX
SUB RSP,0x18
CALL 0x002bf290
MOV RAX,qword ptr [RBP + 0x40]
MOV qword ptr [R12 + 0x40],RAX
MOV RAX,qword ptr [RBP + 0x48]
MOV qword ptr [R12 + 0x48],RAX
TEST byte ptr [R12 + 0x3a],0x20
JNZ 0x002c03c8
MOVZX EAX,byte ptr [R12 + 0x38]
SHR AL,0x4
MOVZX ECX,AL
TEST ECX,ECX
JZ 0x002c03a9
MOVZX EDX,byte ptr [R12 + 0x39]
AND EDX,0x3
SUB EDX,0x1
CMP EDX,0x1
JA 0x002c03b4
ADD EAX,0xf
AND EAX,0xf
CMP AL,0x1
JBE 0x002c038c
CMP ECX,0xa
JNZ 0x002c03b4
MOV RAX,qword ptr [0x0043e6b0]
MOV RAX,qword ptr [RAX + 0x10]
TEST RAX,RAX
JZ 0x002c045c
CMP byte ptr [RAX + 0x5051],0x0
JNZ 0x002c03b4
MOV RSI,R12
MOV RDI,R15
CALL 0x002719b0
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
LEA R13,[R15 + 0x130]
LEA R14,[RSP + 0x8]
MOV qword ptr [RSP + 0x8],R12
MOV RDI,R13
MOV RSI,R14
CALL 0x0027bd30
MOV RDI,qword ptr [RAX]
TEST RDI,RDI
JZ 0x002c0474
CALL 0x002be950
MOV RBX,RAX
JMP 0x002c0411
CALL 0x002be950
MOV RBX,RAX
CMP R12,RAX
JZ 0x002c035c
MOV RSI,RBP
MOV RDI,RBX
CALL 0x002bf290
MOV RAX,qword ptr [RBP + 0x40]
MOV RDI,R13
MOV RSI,R14
MOV qword ptr [RBX + 0x40],RAX
MOV RAX,qword ptr [RBP + 0x48]
MOV qword ptr [RBX + 0x48],RAX
MOV qword ptr [RSP + 0x8],RBX
CALL 0x0027bd30
MOV RDI,qword ptr [RAX]
TEST RDI,RDI
JNZ 0x002c0400
LEA RDX,[0x38dd00]
MOV ESI,0x45d
LEA RDI,[0x38d99c]
CALL 0x0017c650
LEA RDX,[0x38de88]
MOV ESI,0x5c
LEA RDI,[0x3726d0]
CALL 0x0017c650
LEA RDX,[0x38dd00]
MOV ESI,0x457
LEA RDI,[0x38d99c]
CALL 0x0017c650
(translation_unit "void FUN_002c0320(long param_1,long param_2,long param_3)\n\n{\n  byte bVar1;\n  long *plVar2;\n  long lVar3;\n  long local_40 [2];\n  \n  FUN_002bf290(param_2,param_3);\n  *(undefined8 *)(param_2 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n  *(undefined8 *)(param_2 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n  if ((*(byte *)(param_2 + 0x3a) & 0x20) != 0) {\n    local_40[0] = param_2;\n    plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n    if (*plVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    lVar3 = FUN_002be950();\n    do {\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    } while (param_2 != lVar3);\n  }\n  bVar1 = *(byte *)(param_2 + 0x38) >> 4;\n  if (bVar1 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n      return;\n    }\n  }\n  FUN_002719b0(param_1,param_2);\n  return;\n}\n\n" (function_definition "void FUN_002c0320(long param_1,long param_2,long param_3)\n\n{\n  byte bVar1;\n  long *plVar2;\n  long lVar3;\n  long local_40 [2];\n  \n  FUN_002bf290(param_2,param_3);\n  *(undefined8 *)(param_2 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n  *(undefined8 *)(param_2 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n  if ((*(byte *)(param_2 + 0x3a) & 0x20) != 0) {\n    local_40[0] = param_2;\n    plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n    if (*plVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    lVar3 = FUN_002be950();\n    do {\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    } while (param_2 != lVar3);\n  }\n  bVar1 = *(byte *)(param_2 + 0x38) >> 4;\n  if (bVar1 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n      return;\n    }\n  }\n  FUN_002719b0(param_1,param_2);\n  return;\n}" primitive_type (function_declarator "FUN_002c0320(long param_1,long param_2,long param_3)" identifier (parameter_list "(long param_1,long param_2,long param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  byte bVar1;\n  long *plVar2;\n  long lVar3;\n  long local_40 [2];\n  \n  FUN_002bf290(param_2,param_3);\n  *(undefined8 *)(param_2 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n  *(undefined8 *)(param_2 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n  if ((*(byte *)(param_2 + 0x3a) & 0x20) != 0) {\n    local_40[0] = param_2;\n    plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n    if (*plVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    lVar3 = FUN_002be950();\n    do {\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    } while (param_2 != lVar3);\n  }\n  bVar1 = *(byte *)(param_2 + 0x38) >> 4;\n  if (bVar1 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n      return;\n    }\n  }\n  FUN_002719b0(param_1,param_2);\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "FUN_002bf290(param_2,param_3);" (call_expression "FUN_002bf290(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier ))) ;) (expression_statement "*(undefined8 *)(param_2 + 0x40) = *(undefined8 *)(param_3 + 0x40);" (assignment_expression "*(undefined8 *)(param_2 + 0x40) = *(undefined8 *)(param_3 + 0x40)" (pointer_expression "*(undefined8 *)(param_2 + 0x40)" * (cast_expression "(undefined8 *)(param_2 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_3 + 0x40)" * (cast_expression "(undefined8 *)(param_3 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x40)" ( (binary_expression "param_3 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(param_2 + 0x48) = *(undefined8 *)(param_3 + 0x48);" (assignment_expression "*(undefined8 *)(param_2 + 0x48) = *(undefined8 *)(param_3 + 0x48)" (pointer_expression "*(undefined8 *)(param_2 + 0x48)" * (cast_expression "(undefined8 *)(param_2 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_3 + 0x48)" * (cast_expression "(undefined8 *)(param_3 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x48)" ( (binary_expression "param_3 + 0x48" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(param_2 + 0x3a) & 0x20) != 0) {\n    local_40[0] = param_2;\n    plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n    if (*plVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    lVar3 = FUN_002be950();\n    do {\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    } while (param_2 != lVar3);\n  }" if (parenthesized_expression "((*(byte *)(param_2 + 0x3a) & 0x20) != 0)" ( (binary_expression "(*(byte *)(param_2 + 0x3a) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_2 + 0x3a) & 0x20)" ( (binary_expression "*(byte *)(param_2 + 0x3a) & 0x20" (pointer_expression "*(byte *)(param_2 + 0x3a)" * (cast_expression "(byte *)(param_2 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3a)" ( (binary_expression "param_2 + 0x3a" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    local_40[0] = param_2;\n    plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n    if (*plVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    lVar3 = FUN_002be950();\n    do {\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    } while (param_2 != lVar3);\n  }" { (expression_statement "local_40[0] = param_2;" (assignment_expression "local_40[0] = param_2" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);" (assignment_expression "plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40)" identifier = (cast_expression "(long *)FUN_0027bd30(param_1 + 0x130,local_40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0027bd30(param_1 + 0x130,local_40)" identifier (argument_list "(param_1 + 0x130,local_40)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) , identifier ))))) ;) (if_statement "if (*plVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }" if (parenthesized_expression "(*plVar2 == 0)" ( (binary_expression "*plVar2 == 0" (pointer_expression "*plVar2" * identifier) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }" { comment (expression_statement "FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");" (call_expression "FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special")" identifier (argument_list "("../../gold/resolve.cc",0x457,"override_with_special")" ( (string_literal ""../../gold/resolve.cc"" " string_content ") , number_literal , (string_literal ""override_with_special"" " string_content ") ))) ;) })) (expression_statement "lVar3 = FUN_002be950();" (assignment_expression "lVar3 = FUN_002be950()" identifier = (call_expression "FUN_002be950()" identifier (argument_list "()" ( )))) ;) (do_statement "do {\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    } while (param_2 != lVar3);" do (compound_statement "{\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    }" { (expression_statement "FUN_002bf290(lVar3,param_3);" (call_expression "FUN_002bf290(lVar3,param_3)" identifier (argument_list "(lVar3,param_3)" ( identifier , identifier ))) ;) (expression_statement "*(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);" (assignment_expression "*(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40)" (pointer_expression "*(undefined8 *)(lVar3 + 0x40)" * (cast_expression "(undefined8 *)(lVar3 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x40)" ( (binary_expression "lVar3 + 0x40" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_3 + 0x40)" * (cast_expression "(undefined8 *)(param_3 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x40)" ( (binary_expression "param_3 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);" (assignment_expression "*(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48)" (pointer_expression "*(undefined8 *)(lVar3 + 0x48)" * (cast_expression "(undefined8 *)(lVar3 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x48)" ( (binary_expression "lVar3 + 0x48" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_3 + 0x48)" * (cast_expression "(undefined8 *)(param_3 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x48)" ( (binary_expression "param_3 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "local_40[0] = lVar3;" (assignment_expression "local_40[0] = lVar3" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);" (assignment_expression "plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40)" identifier = (cast_expression "(long *)FUN_0027bd30(param_1 + 0x130,local_40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0027bd30(param_1 + 0x130,local_40)" identifier (argument_list "(param_1 + 0x130,local_40)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) , identifier ))))) ;) (if_statement "if (*plVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }" if (parenthesized_expression "(*plVar2 == 0)" ( (binary_expression "*plVar2 == 0" (pointer_expression "*plVar2" * identifier) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }" { comment (expression_statement "FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");" (call_expression "FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special")" identifier (argument_list "("../../gold/resolve.cc",0x45d,"override_with_special")" ( (string_literal ""../../gold/resolve.cc"" " string_content ") , number_literal , (string_literal ""override_with_special"" " string_content ") ))) ;) })) (expression_statement "lVar3 = FUN_002be950();" (assignment_expression "lVar3 = FUN_002be950()" identifier = (call_expression "FUN_002be950()" identifier (argument_list "()" ( )))) ;) }) while (parenthesized_expression "(param_2 != lVar3)" ( (binary_expression "param_2 != lVar3" identifier != identifier) )) ;) })) (expression_statement "bVar1 = *(byte *)(param_2 + 0x38) >> 4;" (assignment_expression "bVar1 = *(byte *)(param_2 + 0x38) >> 4" identifier = (binary_expression "*(byte *)(param_2 + 0x38) >> 4" (pointer_expression "*(byte *)(param_2 + 0x38)" * (cast_expression "(byte *)(param_2 + 0x38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) >> number_literal)) ;) (if_statement "if (bVar1 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n      return;\n    }\n  }" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n      return;\n    }\n  }" { (if_statement "if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {\n      return;\n    }" if (parenthesized_expression "(1 < (*(byte *)(param_2 + 0x39) & 3) - 1)" ( (binary_expression "1 < (*(byte *)(param_2 + 0x39) & 3) - 1" number_literal < (binary_expression "(*(byte *)(param_2 + 0x39) & 3) - 1" (parenthesized_expression "(*(byte *)(param_2 + 0x39) & 3)" ( (binary_expression "*(byte *)(param_2 + 0x39) & 3" (pointer_expression "*(byte *)(param_2 + 0x39)" * (cast_expression "(byte *)(param_2 + 0x39)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x39)" ( (binary_expression "param_2 + 0x39" identifier + number_literal) )))) & number_literal) )) - number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }" if (parenthesized_expression "((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10))" ( (binary_expression "(1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)" (parenthesized_expression "(1 < (bVar1 + 0xf & 0xf))" ( (binary_expression "1 < (bVar1 + 0xf & 0xf)" number_literal < (parenthesized_expression "(bVar1 + 0xf & 0xf)" ( (binary_expression "bVar1 + 0xf & 0xf" (binary_expression "bVar1 + 0xf" identifier + number_literal) & number_literal) ))) )) && (parenthesized_expression "(bVar1 != 10)" ( (binary_expression "bVar1 != 10" identifier != number_literal) ))) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }" { comment (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n      return;\n    }" if (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0')" ( (binary_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) })) (expression_statement "FUN_002719b0(param_1,param_2);" (call_expression "FUN_002719b0(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void override_with_special<64>(Symbol_table * this, Sized_symbol<64> *\n   tosym, Sized_symbol<64> * fromsym) */\n\nvoid __thiscall\ngold::Symbol_table::override_with_special<64>\n          (Symbol_table *this,Sized_symbol<64> *tosym,Sized_symbol<64> *fromsym)\n\n{\n  byte bVar1;\n  mapped_type *ppSVar2;\n  Sized_symbol<64> *this_00;\n  Symbol *pSVar3;\n  Sized_symbol<64> *local_40;\n  \n  Symbol::override_base_with_special(&tosym->super_Symbol,&fromsym->super_Symbol);\n  tosym->value_ = fromsym->value_;\n  tosym->symsize_ = fromsym->symsize_;\n  if (((tosym->super_Symbol).field_0x3a & 0x20) != 0) {\n    pSVar3 = (Symbol *)&local_40;\n    local_40 = tosym;\n    ppSVar2 = std::__detail::\n              _Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n              ::operator[]((_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                            *)&this->weak_aliases_,(key_type *)&local_40);\n    if ((Symbol_table *)*ppSVar2 == (Symbol_table *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    this_00 = get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3);\n    do {\n      Symbol::override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol);\n      this_00->value_ = fromsym->value_;\n      this_00->symsize_ = fromsym->symsize_;\n      pSVar3 = (Symbol *)&local_40;\n      local_40 = this_00;\n      ppSVar2 = std::__detail::\n                _Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                ::operator[]((_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                              *)&this->weak_aliases_,(key_type *)&local_40);\n      if ((Symbol_table *)*ppSVar2 == (Symbol_table *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      this_00 = get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3);\n    } while (tosym != this_00);\n  }\n  bVar1 = (byte)(tosym->super_Symbol).field_0x38 >> 4;\n  if (bVar1 != 0) {\n    if (1 < ((byte)(tosym->super_Symbol).field_0x39 & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    if ((parameters->options_->relocatable_).value != false) {\n      return;\n    }\n  }\n  force_local(this,&tosym->super_Symbol);\n  return;\n}\n\n" comment comment (function_definition "void __thiscall\ngold::Symbol_table::override_with_special<64>\n          (Symbol_table *this,Sized_symbol<64> *tosym,Sized_symbol<64> *fromsym)\n\n{\n  byte bVar1;\n  mapped_type *ppSVar2;\n  Sized_symbol<64> *this_00;\n  Symbol *pSVar3;\n  Sized_symbol<64> *local_40;\n  \n  Symbol::override_base_with_special(&tosym->super_Symbol,&fromsym->super_Symbol);\n  tosym->value_ = fromsym->value_;\n  tosym->symsize_ = fromsym->symsize_;\n  if (((tosym->super_Symbol).field_0x3a & 0x20) != 0) {\n    pSVar3 = (Symbol *)&local_40;\n    local_40 = tosym;\n    ppSVar2 = std::__detail::\n              _Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n              ::operator[]((_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                            *)&this->weak_aliases_,(key_type *)&local_40);\n    if ((Symbol_table *)*ppSVar2 == (Symbol_table *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    this_00 = get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3);\n    do {\n      Symbol::override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol);\n      this_00->value_ = fromsym->value_;\n      this_00->symsize_ = fromsym->symsize_;\n      pSVar3 = (Symbol *)&local_40;\n      local_40 = this_00;\n      ppSVar2 = std::__detail::\n                _Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                ::operator[]((_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                              *)&this->weak_aliases_,(key_type *)&local_40);\n      if ((Symbol_table *)*ppSVar2 == (Symbol_table *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      this_00 = get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3);\n    } while (tosym != this_00);\n  }\n  bVar1 = (byte)(tosym->super_Symbol).field_0x38 >> 4;\n  if (bVar1 != 0) {\n    if (1 < ((byte)(tosym->super_Symbol).field_0x39 & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    if ((parameters->options_->relocatable_).value != false) {\n      return;\n    }\n  }\n  force_local(this,&tosym->super_Symbol);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Symbol_table::" identifier : : identifier : :) (function_declarator "override_with_special<64>\n          (Symbol_table *this,Sized_symbol<64> *tosym,Sized_symbol<64> *fromsym)" identifier (ERROR "<64>" < number_literal >) (parameter_list "(Symbol_table *this,Sized_symbol<64> *tosym,Sized_symbol<64> *fromsym)" ( (parameter_declaration "Symbol_table *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Sized_symbol<64> *tosym" type_identifier (ERROR "<64>" < number_literal >) (pointer_declarator "*tosym" * identifier)) , (parameter_declaration "Sized_symbol<64> *fromsym" type_identifier (ERROR "<64>" < number_literal >) (pointer_declarator "*fromsym" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  mapped_type *ppSVar2;\n  Sized_symbol<64> *this_00;\n  Symbol *pSVar3;\n  Sized_symbol<64> *local_40;\n  \n  Symbol::override_base_with_special(&tosym->super_Symbol,&fromsym->super_Symbol);\n  tosym->value_ = fromsym->value_;\n  tosym->symsize_ = fromsym->symsize_;\n  if (((tosym->super_Symbol).field_0x3a & 0x20) != 0) {\n    pSVar3 = (Symbol *)&local_40;\n    local_40 = tosym;\n    ppSVar2 = std::__detail::\n              _Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n              ::operator[]((_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                            *)&this->weak_aliases_,(key_type *)&local_40);\n    if ((Symbol_table *)*ppSVar2 == (Symbol_table *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    this_00 = get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3);\n    do {\n      Symbol::override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol);\n      this_00->value_ = fromsym->value_;\n      this_00->symsize_ = fromsym->symsize_;\n      pSVar3 = (Symbol *)&local_40;\n      local_40 = this_00;\n      ppSVar2 = std::__detail::\n                _Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                ::operator[]((_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                              *)&this->weak_aliases_,(key_type *)&local_40);\n      if ((Symbol_table *)*ppSVar2 == (Symbol_table *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      this_00 = get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3);\n    } while (tosym != this_00);\n  }\n  bVar1 = (byte)(tosym->super_Symbol).field_0x38 >> 4;\n  if (bVar1 != 0) {\n    if (1 < ((byte)(tosym->super_Symbol).field_0x39 & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    if ((parameters->options_->relocatable_).value != false) {\n      return;\n    }\n  }\n  force_local(this,&tosym->super_Symbol);\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "mapped_type *ppSVar2;" type_identifier (pointer_declarator "*ppSVar2" * identifier) ;) (expression_statement "Sized_symbol<64> *this_00;" (binary_expression "Sized_symbol<64> *this_00" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*this_00" * identifier)) ;) (declaration "Symbol *pSVar3;" type_identifier (pointer_declarator "*pSVar3" * identifier) ;) (expression_statement "Sized_symbol<64> *local_40;" (binary_expression "Sized_symbol<64> *local_40" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*local_40" * identifier)) ;) (labeled_statement "Symbol::override_base_with_special(&tosym->super_Symbol,&fromsym->super_Symbol);" statement_identifier : (ERROR ":" :) (expression_statement "override_base_with_special(&tosym->super_Symbol,&fromsym->super_Symbol);" (call_expression "override_base_with_special(&tosym->super_Symbol,&fromsym->super_Symbol)" identifier (argument_list "(&tosym->super_Symbol,&fromsym->super_Symbol)" ( (pointer_expression "&tosym->super_Symbol" & (field_expression "tosym->super_Symbol" identifier -> field_identifier)) , (pointer_expression "&fromsym->super_Symbol" & (field_expression "fromsym->super_Symbol" identifier -> field_identifier)) ))) ;)) (expression_statement "tosym->value_ = fromsym->value_;" (assignment_expression "tosym->value_ = fromsym->value_" (field_expression "tosym->value_" identifier -> field_identifier) = (field_expression "fromsym->value_" identifier -> field_identifier)) ;) (expression_statement "tosym->symsize_ = fromsym->symsize_;" (assignment_expression "tosym->symsize_ = fromsym->symsize_" (field_expression "tosym->symsize_" identifier -> field_identifier) = (field_expression "fromsym->symsize_" identifier -> field_identifier)) ;) (if_statement "if (((tosym->super_Symbol).field_0x3a & 0x20) != 0) {\n    pSVar3 = (Symbol *)&local_40;\n    local_40 = tosym;\n    ppSVar2 = std::__detail::\n              _Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n              ::operator[]((_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                            *)&this->weak_aliases_,(key_type *)&local_40);\n    if ((Symbol_table *)*ppSVar2 == (Symbol_table *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    this_00 = get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3);\n    do {\n      Symbol::override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol);\n      this_00->value_ = fromsym->value_;\n      this_00->symsize_ = fromsym->symsize_;\n      pSVar3 = (Symbol *)&local_40;\n      local_40 = this_00;\n      ppSVar2 = std::__detail::\n                _Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                ::operator[]((_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                              *)&this->weak_aliases_,(key_type *)&local_40);\n      if ((Symbol_table *)*ppSVar2 == (Symbol_table *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      this_00 = get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3);\n    } while (tosym != this_00);\n  }" if (parenthesized_expression "(((tosym->super_Symbol).field_0x3a & 0x20) != 0)" ( (binary_expression "((tosym->super_Symbol).field_0x3a & 0x20) != 0" (parenthesized_expression "((tosym->super_Symbol).field_0x3a & 0x20)" ( (binary_expression "(tosym->super_Symbol).field_0x3a & 0x20" (field_expression "(tosym->super_Symbol).field_0x3a" (parenthesized_expression "(tosym->super_Symbol)" ( (field_expression "tosym->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    pSVar3 = (Symbol *)&local_40;\n    local_40 = tosym;\n    ppSVar2 = std::__detail::\n              _Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n              ::operator[]((_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                            *)&this->weak_aliases_,(key_type *)&local_40);\n    if ((Symbol_table *)*ppSVar2 == (Symbol_table *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    this_00 = get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3);\n    do {\n      Symbol::override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol);\n      this_00->value_ = fromsym->value_;\n      this_00->symsize_ = fromsym->symsize_;\n      pSVar3 = (Symbol *)&local_40;\n      local_40 = this_00;\n      ppSVar2 = std::__detail::\n                _Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                ::operator[]((_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                              *)&this->weak_aliases_,(key_type *)&local_40);\n      if ((Symbol_table *)*ppSVar2 == (Symbol_table *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      this_00 = get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3);\n    } while (tosym != this_00);\n  }" { (expression_statement "pSVar3 = (Symbol *)&local_40;" (assignment_expression "pSVar3 = (Symbol *)&local_40" identifier = (cast_expression "(Symbol *)&local_40" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_40" & identifier))) ;) (expression_statement "local_40 = tosym;" (assignment_expression "local_40 = tosym" identifier = identifier) ;) (ERROR "ppSVar2 = std::__detail::\n              _Map_base<gold::Symbol*,_std::pair<gold::" (assignment_expression "ppSVar2 = std" identifier = identifier) : : (comma_expression "__detail::\n              _Map_base<gold::Symbol*,_std" identifier (ERROR "::\n              _Map_base<gold::Symbol*" : : (binary_expression "_Map_base<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "pair<gold" identifier < identifier) : :) (declaration "Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n              ::operator[]((_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                            *)" type_identifier (pointer_declarator "*_const" * identifier) , (ERROR "_gold::" identifier : :) identifier (ERROR "*>" * >) , (ERROR "_std::allocator<std::pair<gold::Symbol" identifier : : identifier < identifier : : identifier < identifier : : identifier) (pointer_declarator "*_const" * identifier) , (ERROR "_gold::Symbol*>" identifier : : identifier * >) identifier (ERROR ">" >) , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::equal_to<gold::" identifier : : identifier < identifier : :) identifier (ERROR "*>" * >) , (ERROR "_std::hash<gold::" identifier : : identifier < identifier : :) identifier (ERROR "*>" * >) , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::__detail::" identifier : : identifier : :) identifier (ERROR "<false" < false) , identifier , identifier (ERROR ">" >) , (ERROR "_true>\n              ::" identifier > : :) (function_declarator "operator[]((_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                            *)" (array_declarator "operator[]" identifier [ ]) (ERROR "(" () (parameter_list "(_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                            *)" ( (parameter_declaration "_Map_base<gold::Symbol*" type_identifier (ERROR "<gold::Symbol" < identifier : : identifier) (abstract_pointer_declarator "*" *)) , (parameter_declaration "_std::pair<gold::Symbol*_const" type_identifier (ERROR "::pair<gold::Symbol" : : identifier < identifier : : identifier) (pointer_declarator "*_const" * identifier)) , (parameter_declaration "_gold::Symbol" type_identifier (ERROR "::" : :) identifier) (ERROR "*>" * >) , (parameter_declaration "_std::allocator<std::pair<gold::Symbol*_const" type_identifier (ERROR "::allocator<std::pair<gold::Symbol" : : identifier < identifier : : identifier < identifier : : identifier) (pointer_declarator "*_const" * identifier)) , (parameter_declaration "_gold::Symbol*>_" type_identifier (ERROR "::Symbol*>" : : identifier * >) identifier) (ERROR ">" >) , (parameter_declaration "_std::__detail::_Select1st" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::equal_to<gold::Symbol" type_identifier (ERROR "::equal_to<gold::" : : identifier < identifier : :) identifier) (ERROR "*>" * >) , (parameter_declaration "_std::hash<gold::Symbol" type_identifier (ERROR "::hash<gold::" : : identifier < identifier : :) identifier) (ERROR "*>" * >) , (parameter_declaration "_std::__detail::_Mod_range_hashing" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::__detail::_Default_ranged_hash" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::__detail::_Prime_rehash_policy" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::__detail::_Hashtable_traits" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) (ERROR "<false" < false) , (parameter_declaration "_false" type_identifier) , (parameter_declaration "_true" type_identifier) (ERROR ">" >) , (parameter_declaration "_true>\n                            *" type_identifier (ERROR ">" >) (abstract_pointer_declarator "*" *)) ))) ;) (expression_statement "&this->weak_aliases_,(key_type *)&local_40);" (comma_expression "&this->weak_aliases_,(key_type *)&local_40" (pointer_expression "&this->weak_aliases_" & (field_expression "this->weak_aliases_" identifier -> field_identifier)) , (cast_expression "(key_type *)&local_40" ( (type_descriptor "key_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_40" & identifier))) (ERROR ")" )) ;) (if_statement "if ((Symbol_table *)*ppSVar2 == (Symbol_table *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/resolve.cc",0x457,"override_with_special");\n    }" if (parenthesized_expression "((Symbol_table *)*ppSVar2 == (Symbol_table *)0x0)" ( (binary_expression "(Symbol_table *)*ppSVar2 == (Symbol_table *)0x0" (cast_expression "(Symbol_table *)*ppSVar2" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*ppSVar2" * identifier)) == (cast_expression "(Symbol_table *)0x0" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/resolve.cc",0x457,"override_with_special");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/resolve.cc",0x457,"override_with_special");" (call_expression "do_gold_unreachable("../../gold/resolve.cc",0x457,"override_with_special")" identifier (argument_list "("../../gold/resolve.cc",0x457,"override_with_special")" ( (string_literal ""../../gold/resolve.cc"" " string_content ") , number_literal , (string_literal ""override_with_special"" " string_content ") ))) ;) })) (expression_statement "this_00 = get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3);" (assignment_expression "this_00 = get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3)" identifier = (binary_expression "get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3)" (binary_expression "get_sized_symbol<64" identifier < number_literal) > (parenthesized_expression "((Symbol_table *)*ppSVar2,pSVar3)" ( (comma_expression "(Symbol_table *)*ppSVar2,pSVar3" (cast_expression "(Symbol_table *)*ppSVar2" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*ppSVar2" * identifier)) , identifier) )))) ;) (do_statement "do {\n      Symbol::override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol);\n      this_00->value_ = fromsym->value_;\n      this_00->symsize_ = fromsym->symsize_;\n      pSVar3 = (Symbol *)&local_40;\n      local_40 = this_00;\n      ppSVar2 = std::__detail::\n                _Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                ::operator[]((_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                              *)&this->weak_aliases_,(key_type *)&local_40);\n      if ((Symbol_table *)*ppSVar2 == (Symbol_table *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      this_00 = get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3);\n    } while (tosym != this_00);" do (compound_statement "{\n      Symbol::override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol);\n      this_00->value_ = fromsym->value_;\n      this_00->symsize_ = fromsym->symsize_;\n      pSVar3 = (Symbol *)&local_40;\n      local_40 = this_00;\n      ppSVar2 = std::__detail::\n                _Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                ::operator[]((_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                              *)&this->weak_aliases_,(key_type *)&local_40);\n      if ((Symbol_table *)*ppSVar2 == (Symbol_table *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      this_00 = get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3);\n    }" { (labeled_statement "Symbol::override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol);" statement_identifier : (ERROR ":" :) (expression_statement "override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol);" (call_expression "override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol)" identifier (argument_list "(&this_00->super_Symbol,&fromsym->super_Symbol)" ( (pointer_expression "&this_00->super_Symbol" & (field_expression "this_00->super_Symbol" identifier -> field_identifier)) , (pointer_expression "&fromsym->super_Symbol" & (field_expression "fromsym->super_Symbol" identifier -> field_identifier)) ))) ;)) (expression_statement "this_00->value_ = fromsym->value_;" (assignment_expression "this_00->value_ = fromsym->value_" (field_expression "this_00->value_" identifier -> field_identifier) = (field_expression "fromsym->value_" identifier -> field_identifier)) ;) (expression_statement "this_00->symsize_ = fromsym->symsize_;" (assignment_expression "this_00->symsize_ = fromsym->symsize_" (field_expression "this_00->symsize_" identifier -> field_identifier) = (field_expression "fromsym->symsize_" identifier -> field_identifier)) ;) (expression_statement "pSVar3 = (Symbol *)&local_40;" (assignment_expression "pSVar3 = (Symbol *)&local_40" identifier = (cast_expression "(Symbol *)&local_40" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_40" & identifier))) ;) (expression_statement "local_40 = this_00;" (assignment_expression "local_40 = this_00" identifier = identifier) ;) (ERROR "ppSVar2 = std::__detail::\n                _Map_base<gold::Symbol*,_std::pair<gold::" (assignment_expression "ppSVar2 = std" identifier = identifier) : : (comma_expression "__detail::\n                _Map_base<gold::Symbol*,_std" identifier (ERROR "::\n                _Map_base<gold::Symbol*" : : (binary_expression "_Map_base<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "pair<gold" identifier < identifier) : :) (declaration "Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                ::operator[]((_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                              *)" type_identifier (pointer_declarator "*_const" * identifier) , (ERROR "_gold::" identifier : :) identifier (ERROR "*>" * >) , (ERROR "_std::allocator<std::pair<gold::Symbol" identifier : : identifier < identifier : : identifier < identifier : : identifier) (pointer_declarator "*_const" * identifier) , (ERROR "_gold::Symbol*>" identifier : : identifier * >) identifier (ERROR ">" >) , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::equal_to<gold::" identifier : : identifier < identifier : :) identifier (ERROR "*>" * >) , (ERROR "_std::hash<gold::" identifier : : identifier < identifier : :) identifier (ERROR "*>" * >) , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::__detail::" identifier : : identifier : :) identifier (ERROR "<false" < false) , identifier , identifier (ERROR ">" >) , (ERROR "_true>\n                ::" identifier > : :) (function_declarator "operator[]((_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                              *)" (array_declarator "operator[]" identifier [ ]) (ERROR "(" () (parameter_list "(_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                              *)" ( (parameter_declaration "_Map_base<gold::Symbol*" type_identifier (ERROR "<gold::Symbol" < identifier : : identifier) (abstract_pointer_declarator "*" *)) , (parameter_declaration "_std::pair<gold::Symbol*_const" type_identifier (ERROR "::pair<gold::Symbol" : : identifier < identifier : : identifier) (pointer_declarator "*_const" * identifier)) , (parameter_declaration "_gold::Symbol" type_identifier (ERROR "::" : :) identifier) (ERROR "*>" * >) , (parameter_declaration "_std::allocator<std::pair<gold::Symbol*_const" type_identifier (ERROR "::allocator<std::pair<gold::Symbol" : : identifier < identifier : : identifier < identifier : : identifier) (pointer_declarator "*_const" * identifier)) , (parameter_declaration "_gold::Symbol*>_" type_identifier (ERROR "::Symbol*>" : : identifier * >) identifier) (ERROR ">" >) , (parameter_declaration "_std::__detail::_Select1st" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::equal_to<gold::Symbol" type_identifier (ERROR "::equal_to<gold::" : : identifier < identifier : :) identifier) (ERROR "*>" * >) , (parameter_declaration "_std::hash<gold::Symbol" type_identifier (ERROR "::hash<gold::" : : identifier < identifier : :) identifier) (ERROR "*>" * >) , (parameter_declaration "_std::__detail::_Mod_range_hashing" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::__detail::_Default_ranged_hash" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::__detail::_Prime_rehash_policy" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::__detail::_Hashtable_traits" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) (ERROR "<false" < false) , (parameter_declaration "_false" type_identifier) , (parameter_declaration "_true" type_identifier) (ERROR ">" >) , (parameter_declaration "_true>\n                              *" type_identifier (ERROR ">" >) (abstract_pointer_declarator "*" *)) ))) ;) (expression_statement "&this->weak_aliases_,(key_type *)&local_40);" (comma_expression "&this->weak_aliases_,(key_type *)&local_40" (pointer_expression "&this->weak_aliases_" & (field_expression "this->weak_aliases_" identifier -> field_identifier)) , (cast_expression "(key_type *)&local_40" ( (type_descriptor "key_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_40" & identifier))) (ERROR ")" )) ;) (if_statement "if ((Symbol_table *)*ppSVar2 == (Symbol_table *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/resolve.cc",0x45d,"override_with_special");\n      }" if (parenthesized_expression "((Symbol_table *)*ppSVar2 == (Symbol_table *)0x0)" ( (binary_expression "(Symbol_table *)*ppSVar2 == (Symbol_table *)0x0" (cast_expression "(Symbol_table *)*ppSVar2" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*ppSVar2" * identifier)) == (cast_expression "(Symbol_table *)0x0" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/resolve.cc",0x45d,"override_with_special");\n      }" { comment (expression_statement "do_gold_unreachable("../../gold/resolve.cc",0x45d,"override_with_special");" (call_expression "do_gold_unreachable("../../gold/resolve.cc",0x45d,"override_with_special")" identifier (argument_list "("../../gold/resolve.cc",0x45d,"override_with_special")" ( (string_literal ""../../gold/resolve.cc"" " string_content ") , number_literal , (string_literal ""override_with_special"" " string_content ") ))) ;) })) (expression_statement "this_00 = get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3);" (assignment_expression "this_00 = get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3)" identifier = (binary_expression "get_sized_symbol<64>((Symbol_table *)*ppSVar2,pSVar3)" (binary_expression "get_sized_symbol<64" identifier < number_literal) > (parenthesized_expression "((Symbol_table *)*ppSVar2,pSVar3)" ( (comma_expression "(Symbol_table *)*ppSVar2,pSVar3" (cast_expression "(Symbol_table *)*ppSVar2" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*ppSVar2" * identifier)) , identifier) )))) ;) }) while (parenthesized_expression "(tosym != this_00)" ( (binary_expression "tosym != this_00" identifier != identifier) )) ;) })) (expression_statement "bVar1 = (byte)(tosym->super_Symbol).field_0x38 >> 4;" (assignment_expression "bVar1 = (byte)(tosym->super_Symbol).field_0x38 >> 4" identifier = (binary_expression "(byte)(tosym->super_Symbol).field_0x38 >> 4" (field_expression "(byte)(tosym->super_Symbol).field_0x38" (call_expression "(byte)(tosym->super_Symbol)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(tosym->super_Symbol)" ( (field_expression "tosym->super_Symbol" identifier -> field_identifier) ))) . field_identifier) >> number_literal)) ;) (if_statement "if (bVar1 != 0) {\n    if (1 < ((byte)(tosym->super_Symbol).field_0x39 & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    if ((parameters->options_->relocatable_).value != false) {\n      return;\n    }\n  }" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    if (1 < ((byte)(tosym->super_Symbol).field_0x39 & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    if ((parameters->options_->relocatable_).value != false) {\n      return;\n    }\n  }" { (if_statement "if (1 < ((byte)(tosym->super_Symbol).field_0x39 & 3) - 1) {\n      return;\n    }" if (parenthesized_expression "(1 < ((byte)(tosym->super_Symbol).field_0x39 & 3) - 1)" ( (binary_expression "1 < ((byte)(tosym->super_Symbol).field_0x39 & 3) - 1" number_literal < (binary_expression "((byte)(tosym->super_Symbol).field_0x39 & 3) - 1" (parenthesized_expression "((byte)(tosym->super_Symbol).field_0x39 & 3)" ( (binary_expression "(byte)(tosym->super_Symbol).field_0x39 & 3" (field_expression "(byte)(tosym->super_Symbol).field_0x39" (call_expression "(byte)(tosym->super_Symbol)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(tosym->super_Symbol)" ( (field_expression "tosym->super_Symbol" identifier -> field_identifier) ))) . field_identifier) & number_literal) )) - number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }" if (parenthesized_expression "((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10))" ( (binary_expression "(1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)" (parenthesized_expression "(1 < (bVar1 + 0xf & 0xf))" ( (binary_expression "1 < (bVar1 + 0xf & 0xf)" number_literal < (parenthesized_expression "(bVar1 + 0xf & 0xf)" ( (binary_expression "bVar1 + 0xf & 0xf" (binary_expression "bVar1 + 0xf" identifier + number_literal) & number_literal) ))) )) && (parenthesized_expression "(bVar1 != 10)" ( (binary_expression "bVar1 != 10" identifier != number_literal) ))) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }" if (parenthesized_expression "(parameters->options_ == (General_options *)0x0)" ( (binary_expression "parameters->options_ == (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (if_statement "if ((parameters->options_->relocatable_).value != false) {\n      return;\n    }" if (parenthesized_expression "((parameters->options_->relocatable_).value != false)" ( (binary_expression "(parameters->options_->relocatable_).value != false" (field_expression "(parameters->options_->relocatable_).value" (parenthesized_expression "(parameters->options_->relocatable_)" ( (field_expression "parameters->options_->relocatable_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) != false) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) })) (expression_statement "force_local(this,&tosym->super_Symbol);" (call_expression "force_local(this,&tosym->super_Symbol)" identifier (argument_list "(this,&tosym->super_Symbol)" ( identifier , (pointer_expression "&tosym->super_Symbol" & (field_expression "tosym->super_Symbol" identifier -> field_identifier)) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_002c0320(long param_1,long param_2,long param_3)\n\n{\n  byte bVar1;\n  long *plVar2;\n  long lVar3;\n  long local_40 [2];\n  \n  FUN_002bf290(param_2,param_3);\n  *(undefined8 *)(param_2 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n  *(undefined8 *)(param_2 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n  if ((*(byte *)(param_2 + 0x3a) & 0x20) != 0) {\n    local_40[0] = param_2;\n    plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n    if (*plVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    lVar3 = FUN_002be950();\n    do {\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    \n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    } while (param_2 != lVar3);\n  }\n  bVar1 = *(byte *)(param_2 + 0x38) >> 4;\n  if (bVar1 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n      return;\n    }\n  }\n  FUN_002719b0(param_1,param_2);\n  return;\n}\n\n" (function_definition "void FUN_002c0320(long param_1,long param_2,long param_3)\n\n{\n  byte bVar1;\n  long *plVar2;\n  long lVar3;\n  long local_40 [2];\n  \n  FUN_002bf290(param_2,param_3);\n  *(undefined8 *)(param_2 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n  *(undefined8 *)(param_2 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n  if ((*(byte *)(param_2 + 0x3a) & 0x20) != 0) {\n    local_40[0] = param_2;\n    plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n    if (*plVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    lVar3 = FUN_002be950();\n    do {\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    \n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    } while (param_2 != lVar3);\n  }\n  bVar1 = *(byte *)(param_2 + 0x38) >> 4;\n  if (bVar1 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n      return;\n    }\n  }\n  FUN_002719b0(param_1,param_2);\n  return;\n}" primitive_type (function_declarator "FUN_002c0320(long param_1,long param_2,long param_3)" identifier (parameter_list "(long param_1,long param_2,long param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  byte bVar1;\n  long *plVar2;\n  long lVar3;\n  long local_40 [2];\n  \n  FUN_002bf290(param_2,param_3);\n  *(undefined8 *)(param_2 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n  *(undefined8 *)(param_2 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n  if ((*(byte *)(param_2 + 0x3a) & 0x20) != 0) {\n    local_40[0] = param_2;\n    plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n    if (*plVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    lVar3 = FUN_002be950();\n    do {\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    \n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    } while (param_2 != lVar3);\n  }\n  bVar1 = *(byte *)(param_2 + 0x38) >> 4;\n  if (bVar1 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n      return;\n    }\n  }\n  FUN_002719b0(param_1,param_2);\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "FUN_002bf290(param_2,param_3);" (call_expression "FUN_002bf290(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier ))) ;) (expression_statement "*(undefined8 *)(param_2 + 0x40) = *(undefined8 *)(param_3 + 0x40);" (assignment_expression "*(undefined8 *)(param_2 + 0x40) = *(undefined8 *)(param_3 + 0x40)" (pointer_expression "*(undefined8 *)(param_2 + 0x40)" * (cast_expression "(undefined8 *)(param_2 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_3 + 0x40)" * (cast_expression "(undefined8 *)(param_3 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x40)" ( (binary_expression "param_3 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(param_2 + 0x48) = *(undefined8 *)(param_3 + 0x48);" (assignment_expression "*(undefined8 *)(param_2 + 0x48) = *(undefined8 *)(param_3 + 0x48)" (pointer_expression "*(undefined8 *)(param_2 + 0x48)" * (cast_expression "(undefined8 *)(param_2 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_3 + 0x48)" * (cast_expression "(undefined8 *)(param_3 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x48)" ( (binary_expression "param_3 + 0x48" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(param_2 + 0x3a) & 0x20) != 0) {\n    local_40[0] = param_2;\n    plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n    if (*plVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    lVar3 = FUN_002be950();\n    do {\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    \n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    } while (param_2 != lVar3);\n  }" if (parenthesized_expression "((*(byte *)(param_2 + 0x3a) & 0x20) != 0)" ( (binary_expression "(*(byte *)(param_2 + 0x3a) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_2 + 0x3a) & 0x20)" ( (binary_expression "*(byte *)(param_2 + 0x3a) & 0x20" (pointer_expression "*(byte *)(param_2 + 0x3a)" * (cast_expression "(byte *)(param_2 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3a)" ( (binary_expression "param_2 + 0x3a" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    local_40[0] = param_2;\n    plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n    if (*plVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    lVar3 = FUN_002be950();\n    do {\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    \n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    } while (param_2 != lVar3);\n  }" { (expression_statement "local_40[0] = param_2;" (assignment_expression "local_40[0] = param_2" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);" (assignment_expression "plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40)" identifier = (cast_expression "(long *)FUN_0027bd30(param_1 + 0x130,local_40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0027bd30(param_1 + 0x130,local_40)" identifier (argument_list "(param_1 + 0x130,local_40)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) , identifier ))))) ;) (if_statement "if (*plVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }" if (parenthesized_expression "(*plVar2 == 0)" ( (binary_expression "*plVar2 == 0" (pointer_expression "*plVar2" * identifier) == number_literal) )) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }" { (expression_statement "FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");" (call_expression "FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special")" identifier (argument_list "("../../gold/resolve.cc",0x457,"override_with_special")" ( (string_literal ""../../gold/resolve.cc"" " string_content ") , number_literal , (string_literal ""override_with_special"" " string_content ") ))) ;) })) (expression_statement "lVar3 = FUN_002be950();" (assignment_expression "lVar3 = FUN_002be950()" identifier = (call_expression "FUN_002be950()" identifier (argument_list "()" ( )))) ;) (do_statement "do {\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    \n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    } while (param_2 != lVar3);" do (compound_statement "{\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    \n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    }" { (expression_statement "FUN_002bf290(lVar3,param_3);" (call_expression "FUN_002bf290(lVar3,param_3)" identifier (argument_list "(lVar3,param_3)" ( identifier , identifier ))) ;) (expression_statement "*(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);" (assignment_expression "*(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40)" (pointer_expression "*(undefined8 *)(lVar3 + 0x40)" * (cast_expression "(undefined8 *)(lVar3 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x40)" ( (binary_expression "lVar3 + 0x40" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_3 + 0x40)" * (cast_expression "(undefined8 *)(param_3 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x40)" ( (binary_expression "param_3 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);" (assignment_expression "*(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48)" (pointer_expression "*(undefined8 *)(lVar3 + 0x48)" * (cast_expression "(undefined8 *)(lVar3 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x48)" ( (binary_expression "lVar3 + 0x48" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_3 + 0x48)" * (cast_expression "(undefined8 *)(param_3 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x48)" ( (binary_expression "param_3 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "local_40[0] = lVar3;" (assignment_expression "local_40[0] = lVar3" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);" (assignment_expression "plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40)" identifier = (cast_expression "(long *)FUN_0027bd30(param_1 + 0x130,local_40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0027bd30(param_1 + 0x130,local_40)" identifier (argument_list "(param_1 + 0x130,local_40)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) , identifier ))))) ;) (if_statement "if (*plVar2 == 0) {\n                    \n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }" if (parenthesized_expression "(*plVar2 == 0)" ( (binary_expression "*plVar2 == 0" (pointer_expression "*plVar2" * identifier) == number_literal) )) (compound_statement "{\n                    \n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }" { (expression_statement "FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");" (call_expression "FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special")" identifier (argument_list "("../../gold/resolve.cc",0x45d,"override_with_special")" ( (string_literal ""../../gold/resolve.cc"" " string_content ") , number_literal , (string_literal ""override_with_special"" " string_content ") ))) ;) })) (expression_statement "lVar3 = FUN_002be950();" (assignment_expression "lVar3 = FUN_002be950()" identifier = (call_expression "FUN_002be950()" identifier (argument_list "()" ( )))) ;) }) while (parenthesized_expression "(param_2 != lVar3)" ( (binary_expression "param_2 != lVar3" identifier != identifier) )) ;) })) (expression_statement "bVar1 = *(byte *)(param_2 + 0x38) >> 4;" (assignment_expression "bVar1 = *(byte *)(param_2 + 0x38) >> 4" identifier = (binary_expression "*(byte *)(param_2 + 0x38) >> 4" (pointer_expression "*(byte *)(param_2 + 0x38)" * (cast_expression "(byte *)(param_2 + 0x38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) >> number_literal)) ;) (if_statement "if (bVar1 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n      return;\n    }\n  }" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n      return;\n    }\n  }" { (if_statement "if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {\n      return;\n    }" if (parenthesized_expression "(1 < (*(byte *)(param_2 + 0x39) & 3) - 1)" ( (binary_expression "1 < (*(byte *)(param_2 + 0x39) & 3) - 1" number_literal < (binary_expression "(*(byte *)(param_2 + 0x39) & 3) - 1" (parenthesized_expression "(*(byte *)(param_2 + 0x39) & 3)" ( (binary_expression "*(byte *)(param_2 + 0x39) & 3" (pointer_expression "*(byte *)(param_2 + 0x39)" * (cast_expression "(byte *)(param_2 + 0x39)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x39)" ( (binary_expression "param_2 + 0x39" identifier + number_literal) )))) & number_literal) )) - number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }" if (parenthesized_expression "((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10))" ( (binary_expression "(1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)" (parenthesized_expression "(1 < (bVar1 + 0xf & 0xf))" ( (binary_expression "1 < (bVar1 + 0xf & 0xf)" number_literal < (parenthesized_expression "(bVar1 + 0xf & 0xf)" ( (binary_expression "bVar1 + 0xf & 0xf" (binary_expression "bVar1 + 0xf" identifier + number_literal) & number_literal) ))) )) && (parenthesized_expression "(bVar1 != 10)" ( (binary_expression "bVar1 != 10" identifier != number_literal) ))) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }" { (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n      return;\n    }" if (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0')" ( (binary_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) })) (expression_statement "FUN_002719b0(param_1,param_2);" (call_expression "FUN_002719b0(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (array_declarator IDENT [ LIT ]) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) - LIT)) )) (compound_statement { (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) ))) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (return_statement return ;) })) (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 (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return ;) })) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_002c0320(long param_1,long param_2,long param_3)\n\n{\n  byte bVar1;\n  long *plVar2;\n  long lVar3;\n  long local_40 [2];\n  \n  FUN_002bf290(param_2,param_3);\n  *(undefined8 *)(param_2 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n  *(undefined8 *)(param_2 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n  if ((*(byte *)(param_2 + 0x3a) & 0x20) != 0) {\n    local_40[0] = param_2;\n    plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n    if (*plVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    lVar3 = FUN_002be950();\n    do {\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    \n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    } while (param_2 != lVar3);\n  }\n  bVar1 = *(byte *)(param_2 + 0x38) >> 4;\n  if (bVar1 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n      return;\n    }\n  }\n  FUN_002719b0(param_1,param_2);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002c0320(long param_1,long param_2,long param_3)" (identifier "FUN_002c0320") (parameter_list "(long param_1,long param_2,long param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) () ")"))) (compound_statement "{\n  byte bVar1;\n  long *plVar2;\n  long lVar3;\n  long local_40 [2];\n  \n  FUN_002bf290(param_2,param_3);\n  *(undefined8 *)(param_2 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n  *(undefined8 *)(param_2 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n  if ((*(byte *)(param_2 + 0x3a) & 0x20) != 0) {\n    local_40[0] = param_2;\n    plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n    if (*plVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    lVar3 = FUN_002be950();\n    do {\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    \n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    } while (param_2 != lVar3);\n  }\n  bVar1 = *(byte *)(param_2 + 0x38) >> 4;\n  if (bVar1 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n      return;\n    }\n  }\n  FUN_002719b0(param_1,param_2);\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "long *plVar2;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar2" (* "*") (identifier "plVar2")) (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long local_40 [2];" (sized_type_specifier "long" (long "long")) (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (; ";")) (expression_statement "FUN_002bf290(param_2,param_3);" (call_expression "FUN_002bf290(param_2,param_3)" (identifier "FUN_002bf290") (argument_list "(param_2,param_3)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "*(undefined8 *)(param_2 + 0x40) = *(undefined8 *)(param_3 + 0x40);" (assignment_expression "*(undefined8 *)(param_2 + 0x40) = *(undefined8 *)(param_3 + 0x40)" (pointer_expression "*(undefined8 *)(param_2 + 0x40)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x40)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x40)" (( "(") (binary_expression "param_2 + 0x40" (identifier "param_2") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(param_3 + 0x40)" (* "*") (cast_expression "(undefined8 *)(param_3 + 0x40)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x40)" (( "(") (binary_expression "param_3 + 0x40" (identifier "param_3") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(param_2 + 0x48) = *(undefined8 *)(param_3 + 0x48);" (assignment_expression "*(undefined8 *)(param_2 + 0x48) = *(undefined8 *)(param_3 + 0x48)" (pointer_expression "*(undefined8 *)(param_2 + 0x48)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x48)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x48)" (( "(") (binary_expression "param_2 + 0x48" (identifier "param_2") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(param_3 + 0x48)" (* "*") (cast_expression "(undefined8 *)(param_3 + 0x48)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x48)" (( "(") (binary_expression "param_3 + 0x48" (identifier "param_3") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(param_2 + 0x3a) & 0x20) != 0) {\n    local_40[0] = param_2;\n    plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n    if (*plVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    lVar3 = FUN_002be950();\n    do {\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    \n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    } while (param_2 != lVar3);\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_2 + 0x3a) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)(param_2 + 0x3a) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_2 + 0x3a) & 0x20)" (( "(") (binary_expression "*(byte *)(param_2 + 0x3a) & 0x20" (pointer_expression "*(byte *)(param_2 + 0x3a)" (* "*") (cast_expression "(byte *)(param_2 + 0x3a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3a)" (( "(") (binary_expression "param_2 + 0x3a" (identifier "param_2") (+ "+") (number_literal "0x3a")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    local_40[0] = param_2;\n    plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n    if (*plVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }\n    lVar3 = FUN_002be950();\n    do {\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    \n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    } while (param_2 != lVar3);\n  }" ({ "{") (expression_statement "local_40[0] = param_2;" (assignment_expression "local_40[0] = param_2" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);" (assignment_expression "plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40)" (identifier "plVar2") (= "=") (cast_expression "(long *)FUN_0027bd30(param_1 + 0x130,local_40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0027bd30(param_1 + 0x130,local_40)" (identifier "FUN_0027bd30") (argument_list "(param_1 + 0x130,local_40)" (( "(") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) (, ",") (identifier "local_40") () ")"))))) (; ";")) (if_statement "if (*plVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }" (if "if") (parenthesized_expression "(*plVar2 == 0)" (( "(") (binary_expression "*plVar2 == 0" (pointer_expression "*plVar2" (* "*") (identifier "plVar2")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");\n    }" ({ "{") (expression_statement "FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");" (call_expression "FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special")" (identifier "FUN_0017c650") (argument_list "("../../gold/resolve.cc",0x457,"override_with_special")" (( "(") (string_literal ""../../gold/resolve.cc"" (" """) (string_content "../../gold/resolve.cc") (" """)) (, ",") (number_literal "0x457") (, ",") (string_literal ""override_with_special"" (" """) (string_content "override_with_special") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar3 = FUN_002be950();" (assignment_expression "lVar3 = FUN_002be950()" (identifier "lVar3") (= "=") (call_expression "FUN_002be950()" (identifier "FUN_002be950") (argument_list "()" (( "(") () ")")))) (; ";")) (do_statement "do {\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    \n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    } while (param_2 != lVar3);" (do "do") (compound_statement "{\n      FUN_002bf290(lVar3,param_3);\n      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);\n      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);\n      local_40[0] = lVar3;\n      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);\n      if (*plVar2 == 0) {\n                    \n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      lVar3 = FUN_002be950();\n    }" ({ "{") (expression_statement "FUN_002bf290(lVar3,param_3);" (call_expression "FUN_002bf290(lVar3,param_3)" (identifier "FUN_002bf290") (argument_list "(lVar3,param_3)" (( "(") (identifier "lVar3") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "*(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);" (assignment_expression "*(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40)" (pointer_expression "*(undefined8 *)(lVar3 + 0x40)" (* "*") (cast_expression "(undefined8 *)(lVar3 + 0x40)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x40)" (( "(") (binary_expression "lVar3 + 0x40" (identifier "lVar3") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(param_3 + 0x40)" (* "*") (cast_expression "(undefined8 *)(param_3 + 0x40)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x40)" (( "(") (binary_expression "param_3 + 0x40" (identifier "param_3") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);" (assignment_expression "*(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48)" (pointer_expression "*(undefined8 *)(lVar3 + 0x48)" (* "*") (cast_expression "(undefined8 *)(lVar3 + 0x48)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x48)" (( "(") (binary_expression "lVar3 + 0x48" (identifier "lVar3") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(param_3 + 0x48)" (* "*") (cast_expression "(undefined8 *)(param_3 + 0x48)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x48)" (( "(") (binary_expression "param_3 + 0x48" (identifier "param_3") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "local_40[0] = lVar3;" (assignment_expression "local_40[0] = lVar3" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "lVar3")) (; ";")) (expression_statement "plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);" (assignment_expression "plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40)" (identifier "plVar2") (= "=") (cast_expression "(long *)FUN_0027bd30(param_1 + 0x130,local_40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0027bd30(param_1 + 0x130,local_40)" (identifier "FUN_0027bd30") (argument_list "(param_1 + 0x130,local_40)" (( "(") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) (, ",") (identifier "local_40") () ")"))))) (; ";")) (if_statement "if (*plVar2 == 0) {\n                    \n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }" (if "if") (parenthesized_expression "(*plVar2 == 0)" (( "(") (binary_expression "*plVar2 == 0" (pointer_expression "*plVar2" (* "*") (identifier "plVar2")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");\n      }" ({ "{") (expression_statement "FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");" (call_expression "FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special")" (identifier "FUN_0017c650") (argument_list "("../../gold/resolve.cc",0x45d,"override_with_special")" (( "(") (string_literal ""../../gold/resolve.cc"" (" """) (string_content "../../gold/resolve.cc") (" """)) (, ",") (number_literal "0x45d") (, ",") (string_literal ""override_with_special"" (" """) (string_content "override_with_special") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar3 = FUN_002be950();" (assignment_expression "lVar3 = FUN_002be950()" (identifier "lVar3") (= "=") (call_expression "FUN_002be950()" (identifier "FUN_002be950") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 != lVar3)" (( "(") (binary_expression "param_2 != lVar3" (identifier "param_2") (!= "!=") (identifier "lVar3")) () ")")) (; ";")) (} "}"))) (expression_statement "bVar1 = *(byte *)(param_2 + 0x38) >> 4;" (assignment_expression "bVar1 = *(byte *)(param_2 + 0x38) >> 4" (identifier "bVar1") (= "=") (binary_expression "*(byte *)(param_2 + 0x38) >> 4" (pointer_expression "*(byte *)(param_2 + 0x38)" (* "*") (cast_expression "(byte *)(param_2 + 0x38)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x38)" (( "(") (binary_expression "param_2 + 0x38" (identifier "param_2") (+ "+") (number_literal "0x38")) () ")")))) (>> ">>") (number_literal "4"))) (; ";")) (if_statement "if (bVar1 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n      return;\n    }\n  }" (if "if") (parenthesized_expression "(bVar1 != 0)" (( "(") (binary_expression "bVar1 != 0" (identifier "bVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n      return;\n    }\n  }" ({ "{") (if_statement "if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {\n      return;\n    }" (if "if") (parenthesized_expression "(1 < (*(byte *)(param_2 + 0x39) & 3) - 1)" (( "(") (binary_expression "1 < (*(byte *)(param_2 + 0x39) & 3) - 1" (number_literal "1") (< "<") (binary_expression "(*(byte *)(param_2 + 0x39) & 3) - 1" (parenthesized_expression "(*(byte *)(param_2 + 0x39) & 3)" (( "(") (binary_expression "*(byte *)(param_2 + 0x39) & 3" (pointer_expression "*(byte *)(param_2 + 0x39)" (* "*") (cast_expression "(byte *)(param_2 + 0x39)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x39)" (( "(") (binary_expression "param_2 + 0x39" (identifier "param_2") (+ "+") (number_literal "0x39")) () ")")))) (& "&") (number_literal "3")) () ")")) (- "-") (number_literal "1"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {\n      return;\n    }" (if "if") (parenthesized_expression "((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10))" (( "(") (binary_expression "(1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)" (parenthesized_expression "(1 < (bVar1 + 0xf & 0xf))" (( "(") (binary_expression "1 < (bVar1 + 0xf & 0xf)" (number_literal "1") (< "<") (parenthesized_expression "(bVar1 + 0xf & 0xf)" (( "(") (binary_expression "bVar1 + 0xf & 0xf" (binary_expression "bVar1 + 0xf" (identifier "bVar1") (+ "+") (number_literal "0xf")) (& "&") (number_literal "0xf")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(bVar1 != 10)" (( "(") (binary_expression "bVar1 != 10" (identifier "bVar1") (!= "!=") (number_literal "10")) () ")"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }" ({ "{") (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" (identifier "FUN_0017c650") (argument_list "("../../gold/parameters.h",0x5c,"options")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n      return;\n    }" (if "if") (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0')" (( "(") (binary_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" (* "*") (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x5051")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_002719b0(param_1,param_2);" (call_expression "FUN_002719b0(param_1,param_2)" (identifier "FUN_002719b0") (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void override_with_special<64>(Symbol_table * this, Sized_symbol<64> *
   tosym, Sized_symbol<64> * fromsym) */

void __thiscall
gold::type_1::function_1<64>
          (type_1 *this,type_2<64> *var_4,type_2<64> *fromsym)

{
  type_3 var_6;
  type_4 *ppSVar2;
  type_2<64> *var_5;
  type_5 *pSVar3;
  type_2<64> *local_40;
  
  Symbol::var_1(&var_4->super_Symbol,&fromsym->super_Symbol);
  var_4->value_ = fromsym->value_;
  var_4->symsize_ = fromsym->symsize_;
  if (((var_4->super_Symbol).field_0x3a & 0x20) != 0) {
    pSVar3 = (type_5 *)&local_40;
    local_40 = var_4;
    ppSVar2 = std::__detail::
              type_6<gold::type_5*,type_7::pair<gold::type_5*_const,type_8::type_5*>,type_7::allocator<std::pair<gold::type_5*_const,type_8::type_5*>_>,type_7::__detail::_Select1st,type_7::equal_to<gold::type_5*>,type_7::hash<gold::type_5*>,type_7::__detail::_Mod_range_hashing,type_7::__detail::_Default_ranged_hash,type_7::__detail::_Prime_rehash_policy,type_7::__detail::_Hashtable_traits<false,type_9,type_10>,type_10>
              ::operator[]((type_6<gold::type_5*,type_7::pair<gold::type_5*_const,type_8::type_5*>,type_7::allocator<std::pair<gold::type_5*_const,type_8::type_5*>_>,type_7::__detail::_Select1st,type_7::equal_to<gold::type_5*>,type_7::hash<gold::type_5*>,type_7::__detail::_Mod_range_hashing,type_7::__detail::_Default_ranged_hash,type_7::__detail::_Prime_rehash_policy,type_7::__detail::_Hashtable_traits<false,type_9,type_10>,type_10>
                            *)&this->weak_aliases_,(type_11 *)&local_40);
    if ((type_1 *)*ppSVar2 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
      var_2("../../gold/resolve.cc",0x457,"override_with_special");
    }
    var_5 = var_3<64>((type_1 *)*ppSVar2,pSVar3);
    do {
      Symbol::var_1(&var_5->super_Symbol,&fromsym->super_Symbol);
      var_5->value_ = fromsym->value_;
      var_5->symsize_ = fromsym->symsize_;
      pSVar3 = (type_5 *)&local_40;
      local_40 = var_5;
      ppSVar2 = std::__detail::
                type_6<gold::type_5*,type_7::pair<gold::type_5*_const,type_8::type_5*>,type_7::allocator<std::pair<gold::type_5*_const,type_8::type_5*>_>,type_7::__detail::_Select1st,type_7::equal_to<gold::type_5*>,type_7::hash<gold::type_5*>,type_7::__detail::_Mod_range_hashing,type_7::__detail::_Default_ranged_hash,type_7::__detail::_Prime_rehash_policy,type_7::__detail::_Hashtable_traits<false,type_9,type_10>,type_10>
                ::operator[]((type_6<gold::type_5*,type_7::pair<gold::type_5*_const,type_8::type_5*>,type_7::allocator<std::pair<gold::type_5*_const,type_8::type_5*>_>,type_7::__detail::_Select1st,type_7::equal_to<gold::type_5*>,type_7::hash<gold::type_5*>,type_7::__detail::_Mod_range_hashing,type_7::__detail::_Default_ranged_hash,type_7::__detail::_Prime_rehash_policy,type_7::__detail::_Hashtable_traits<false,type_9,type_10>,type_10>
                              *)&this->weak_aliases_,(type_11 *)&local_40);
      if ((type_1 *)*ppSVar2 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
        var_2("../../gold/resolve.cc",0x45d,"override_with_special");
      }
      var_5 = var_3<64>((type_1 *)*ppSVar2,pSVar3);
    } while (var_4 != var_5);
  }
  var_6 = (type_3)(var_4->super_Symbol).field_0x38 >> 4;
  if (var_6 != 0) {
    if (1 < ((type_3)(var_4->super_Symbol).field_0x39 & 3) - 1) {
      return;
    }
    if ((1 < (var_6 + 0xf & 0xf)) && (var_6 != 10)) {
      return;
    }
    if (parameters->options_ == (type_12 *)0x0) {
                    /* WARNING: Subroutine does not return */
      var_2("../../gold/parameters.h",0x5c,"options");
    }
    if ((parameters->options_->relocatable_).value != false) {
      return;
    }
  }
  var_7(this,&var_4->super_Symbol);
  return;
}


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

void MASKED(long param_1,long param_2,long param_3)

{
  byte bVar1;
  long *plVar2;
  long lVar3;
  long local_40 [2];
  
  FUN_002bf290(param_2,param_3);
  *(undefined8 *)(param_2 + 0x40) = *(undefined8 *)(param_3 + 0x40);
  *(undefined8 *)(param_2 + 0x48) = *(undefined8 *)(param_3 + 0x48);
  if ((*(byte *)(param_2 + 0x3a) & 0x20) != 0) {
    local_40[0] = param_2;
    plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);
    if (*plVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/resolve.cc",0x457,"override_with_special");
    }
    lVar3 = FUN_002be950();
    do {
      FUN_002bf290(lVar3,param_3);
      *(undefined8 *)(lVar3 + 0x40) = *(undefined8 *)(param_3 + 0x40);
      *(undefined8 *)(lVar3 + 0x48) = *(undefined8 *)(param_3 + 0x48);
      local_40[0] = lVar3;
      plVar2 = (long *)FUN_0027bd30(param_1 + 0x130,local_40);
      if (*plVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_0017c650("../../gold/resolve.cc",0x45d,"override_with_special");
      }
      lVar3 = FUN_002be950();
    } while (param_2 != lVar3);
  }
  bVar1 = *(byte *)(param_2 + 0x38) >> 4;
  if (bVar1 != 0) {
    if (1 < (*(byte *)(param_2 + 0x39) & 3) - 1) {
      return;
    }
    if ((1 < (bVar1 + 0xf & 0xf)) && (bVar1 != 10)) {
      return;
    }
    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/parameters.h",0x5c,"options");
    }
    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {
      return;
    }
  }
  FUN_002719b0(param_1,param_2);
  return;
}

