
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* 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)

{
  undefined4 uVar1;
  Value_type VVar2;
  Size_type SVar3;
  byte bVar4;
  mapped_type *ppSVar5;
  Sized_symbol<64> *this_00;
  Symbol_table *in_stack_ffffffc4;
  Symbol *in_stack_ffffffc8;
  Sized_symbol<64> *local_20 [4];
  
  Symbol::override_base_with_special(&tosym->super_Symbol,&fromsym->super_Symbol);
  VVar2 = fromsym->value_;
  *(undefined4 *)((int)&tosym->value_ + 4) = *(undefined4 *)((int)&fromsym->value_ + 4);
  uVar1 = *(undefined4 *)((int)&fromsym->symsize_ + 4);
  *(int *)&tosym->value_ = (int)VVar2;
  SVar3 = fromsym->symsize_;
  *(undefined4 *)((int)&tosym->symsize_ + 4) = uVar1;
  *(int *)&tosym->symsize_ = (int)SVar3;
  if (((tosym->super_Symbol).field_0x2a & 0x20) != 0) {
    local_20[0] = tosym;
    ppSVar5 = 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_20);
    if (*ppSVar5 == (mapped_type)0x0) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/resolve.cc",0x457,"override_with_special");
    }
    this_00 = get_sized_symbol<64>(in_stack_ffffffc4,in_stack_ffffffc8);
    do {
      Symbol::override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol);
      uVar1 = *(undefined4 *)((int)&fromsym->value_ + 4);
      *(int *)&this_00->value_ = (int)fromsym->value_;
      *(undefined4 *)((int)&this_00->value_ + 4) = uVar1;
      SVar3 = fromsym->symsize_;
      *(undefined4 *)((int)&this_00->symsize_ + 4) = *(undefined4 *)((int)&fromsym->symsize_ + 4);
      *(int *)&this_00->symsize_ = (int)SVar3;
      local_20[0] = this_00;
      ppSVar5 = 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_20);
      if (*ppSVar5 == (mapped_type)0x0) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable("../../gold/resolve.cc",0x45d,"override_with_special");
      }
      this_00 = get_sized_symbol<64>(in_stack_ffffffc4,in_stack_ffffffc8);
    } while (tosym != this_00);
  }
  bVar4 = (byte)(tosym->super_Symbol).field_0x28 >> 4;
  if (bVar4 != 0) {
    if (1 < ((byte)(tosym->super_Symbol).field_0x29 & 3) - 1) {
      return;
    }
    if ((1 < (bVar4 + 0xf & 0xf)) && (bVar4 != 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;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void FUN_001cb410(int param_1,int param_2,int param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  byte bVar3;
  int *piVar4;
  int iVar5;
  int local_20 [4];
  
  FUN_001ca260(param_2,param_3);
  uVar1 = *(undefined4 *)(param_3 + 0x30);
  *(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(param_3 + 0x34);
  uVar2 = *(undefined4 *)(param_3 + 0x3c);
  *(undefined4 *)(param_2 + 0x30) = uVar1;
  uVar1 = *(undefined4 *)(param_3 + 0x38);
  *(undefined4 *)(param_2 + 0x3c) = uVar2;
  *(undefined4 *)(param_2 + 0x38) = uVar1;
  if ((*(byte *)(param_2 + 0x2a) & 0x20) != 0) {
    local_20[0] = param_2;
    piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);
    if (*piVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);
    }
    iVar5 = FUN_001c98b0();
    do {
      FUN_001ca260(iVar5,param_3);
      uVar1 = *(undefined4 *)(param_3 + 0x34);
      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);
      *(undefined4 *)(iVar5 + 0x34) = uVar1;
      uVar1 = *(undefined4 *)(param_3 + 0x38);
      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);
      *(undefined4 *)(iVar5 + 0x38) = uVar1;
      local_20[0] = iVar5;
      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);
      if (*piVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");
      }
      iVar5 = FUN_001c98b0();
    } while (param_2 != iVar5);
  }
  bVar3 = *(byte *)(param_2 + 0x28) >> 4;
  if (bVar3 != 0) {
    if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {
      return;
    }
    if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {
      return;
    }
    if (*(int *)(DAT_0038f378 + 8) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);
    }
    if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {
      return;
    }
  }
  FUN_00177f20(param_1,param_2);
  return;
}


CALL 0x000559e6
ADD EAX,0x1c3beb
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x34
MOV ESI,dword ptr [ESP + 0x4c]
MOV EBX,dword ptr [ESP + 0x50]
MOV dword ptr [ESP + 0x10],EAX
PUSH EBX
PUSH ESI
CALL 0x001ca260
MOV EAX,dword ptr [EBX + 0x30]
MOV EDX,dword ptr [EBX + 0x34]
ADD ESP,0x10
MOV dword ptr [ESI + 0x34],EDX
MOV EDX,dword ptr [EBX + 0x3c]
MOV dword ptr [ESI + 0x30],EAX
MOV EAX,dword ptr [EBX + 0x38]
MOV dword ptr [ESI + 0x3c],EDX
MOV dword ptr [ESI + 0x38],EAX
TEST byte ptr [ESI + 0x2a],0x20
JNZ 0x001cb4c0
MOVZX EAX,byte ptr [ESI + 0x28]
SHR AL,0x4
MOVZX ECX,AL
TEST ECX,ECX
JZ 0x001cb4a1
MOVZX EDX,byte ptr [ESI + 0x29]
AND EDX,0x3
SUB EDX,0x1
CMP EDX,0x1
JA 0x001cb4b5
ADD EAX,0xf
AND EAX,0xf
CMP AL,0x1
JBE 0x001cb481
CMP ECX,0xa
JNZ 0x001cb4b5
MOV EAX,dword ptr [ESP + 0x8]
LEA EAX,[EAX + 0x378]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x001cb56d
CMP byte ptr [EAX + 0x318d],0x0
JNZ 0x001cb4b5
SUB ESP,0x8
PUSH ESI
PUSH dword ptr [ESP + 0x4c]
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x00177f20
ADD ESP,0x10
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0x40]
MOV dword ptr [ESP + 0x1c],ESI
SUB ESP,0x8
ADD EAX,0xa8
MOV dword ptr [ESP + 0x14],EAX
LEA EBP,[ESP + 0x24]
PUSH EBP
PUSH EAX
CALL 0x00182a30
ADD ESP,0x10
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x001cb587
CALL 0x001c98b0
MOV EDI,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x44],ESI
MOV ESI,EAX
LEA ESI,[ESI]
NOP
SUB ESP,0x8
PUSH EBX
PUSH ESI
CALL 0x001ca260
MOV EAX,dword ptr [EBX + 0x30]
MOV EDX,dword ptr [EBX + 0x34]
MOV dword ptr [ESI + 0x30],EAX
MOV dword ptr [ESI + 0x34],EDX
MOV EDX,dword ptr [EBX + 0x3c]
MOV EAX,dword ptr [EBX + 0x38]
MOV dword ptr [ESI + 0x3c],EDX
MOV dword ptr [ESI + 0x38],EAX
MOV dword ptr [ESP + 0x2c],ESI
POP EDX
POP ECX
PUSH EBP
PUSH EDI
CALL 0x00182a30
ADD ESP,0x10
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x001cb54e
CALL 0x001c98b0
MOV ESI,EAX
CMP dword ptr [ESP + 0x44],EAX
JNZ 0x001cb500
MOV ESI,dword ptr [ESP + 0x44]
JMP 0x001cb455
SUB ESP,0x4
MOV EBX,dword ptr [ESP + 0xc]
LEA EAX,[EBX + 0xfff11878]
PUSH EAX
LEA EAX,[EBX + 0xfff11520]
PUSH 0x45d
PUSH EAX
CALL 0x00069d00
PUSH EAX
MOV EBX,dword ptr [ESP + 0xc]
LEA EAX,[EBX + 0xfff119b8]
PUSH EAX
LEA EAX,[EBX + 0xffef8210]
PUSH 0x5c
PUSH EAX
CALL 0x00069d00
PUSH EBX
MOV EBX,dword ptr [ESP + 0xc]
LEA EAX,[EBX + 0xfff11878]
PUSH EAX
LEA EAX,[EBX + 0xfff11520]
PUSH 0x457
PUSH EAX
CALL 0x00069d00
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_001cb410(int param_1,int param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  byte bVar3;\n  int *piVar4;\n  int iVar5;\n  int local_20 [4];\n  \n  FUN_001ca260(param_2,param_3);\n  uVar1 = *(undefined4 *)(param_3 + 0x30);\n  *(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(param_3 + 0x34);\n  uVar2 = *(undefined4 *)(param_3 + 0x3c);\n  *(undefined4 *)(param_2 + 0x30) = uVar1;\n  uVar1 = *(undefined4 *)(param_3 + 0x38);\n  *(undefined4 *)(param_2 + 0x3c) = uVar2;\n  *(undefined4 *)(param_2 + 0x38) = uVar1;\n  if ((*(byte *)(param_2 + 0x2a) & 0x20) != 0) {\n    local_20[0] = param_2;\n    piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n    if (*piVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }\n    iVar5 = FUN_001c98b0();\n    do {\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    } while (param_2 != iVar5);\n  }\n  bVar3 = *(byte *)(param_2 + 0x28) >> 4;\n  if (bVar3 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {\n      return;\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {\n      return;\n    }\n  }\n  FUN_00177f20(param_1,param_2);\n  return;\n}\n\n" comment (function_definition "void FUN_001cb410(int param_1,int param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  byte bVar3;\n  int *piVar4;\n  int iVar5;\n  int local_20 [4];\n  \n  FUN_001ca260(param_2,param_3);\n  uVar1 = *(undefined4 *)(param_3 + 0x30);\n  *(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(param_3 + 0x34);\n  uVar2 = *(undefined4 *)(param_3 + 0x3c);\n  *(undefined4 *)(param_2 + 0x30) = uVar1;\n  uVar1 = *(undefined4 *)(param_3 + 0x38);\n  *(undefined4 *)(param_2 + 0x3c) = uVar2;\n  *(undefined4 *)(param_2 + 0x38) = uVar1;\n  if ((*(byte *)(param_2 + 0x2a) & 0x20) != 0) {\n    local_20[0] = param_2;\n    piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n    if (*piVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }\n    iVar5 = FUN_001c98b0();\n    do {\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    } while (param_2 != iVar5);\n  }\n  bVar3 = *(byte *)(param_2 + 0x28) >> 4;\n  if (bVar3 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {\n      return;\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {\n      return;\n    }\n  }\n  FUN_00177f20(param_1,param_2);\n  return;\n}" primitive_type (function_declarator "FUN_001cb410(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  byte bVar3;\n  int *piVar4;\n  int iVar5;\n  int local_20 [4];\n  \n  FUN_001ca260(param_2,param_3);\n  uVar1 = *(undefined4 *)(param_3 + 0x30);\n  *(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(param_3 + 0x34);\n  uVar2 = *(undefined4 *)(param_3 + 0x3c);\n  *(undefined4 *)(param_2 + 0x30) = uVar1;\n  uVar1 = *(undefined4 *)(param_3 + 0x38);\n  *(undefined4 *)(param_2 + 0x3c) = uVar2;\n  *(undefined4 *)(param_2 + 0x38) = uVar1;\n  if ((*(byte *)(param_2 + 0x2a) & 0x20) != 0) {\n    local_20[0] = param_2;\n    piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n    if (*piVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }\n    iVar5 = FUN_001c98b0();\n    do {\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    } while (param_2 != iVar5);\n  }\n  bVar3 = *(byte *)(param_2 + 0x28) >> 4;\n  if (bVar3 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {\n      return;\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {\n      return;\n    }\n  }\n  FUN_00177f20(param_1,param_2);\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int local_20 [4];" primitive_type (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (expression_statement "FUN_001ca260(param_2,param_3);" (call_expression "FUN_001ca260(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier ))) ;) (expression_statement "uVar1 = *(undefined4 *)(param_3 + 0x30);" (assignment_expression "uVar1 = *(undefined4 *)(param_3 + 0x30)" identifier = (pointer_expression "*(undefined4 *)(param_3 + 0x30)" * (cast_expression "(undefined4 *)(param_3 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(param_3 + 0x34);" (assignment_expression "*(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(param_3 + 0x34)" (pointer_expression "*(undefined4 *)(param_2 + 0x34)" * (cast_expression "(undefined4 *)(param_2 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_3 + 0x34)" * (cast_expression "(undefined4 *)(param_3 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x34)" ( (binary_expression "param_3 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(undefined4 *)(param_3 + 0x3c);" (assignment_expression "uVar2 = *(undefined4 *)(param_3 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(param_3 + 0x3c)" * (cast_expression "(undefined4 *)(param_3 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3c)" ( (binary_expression "param_3 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x30) = uVar1;" (assignment_expression "*(undefined4 *)(param_2 + 0x30) = uVar1" (pointer_expression "*(undefined4 *)(param_2 + 0x30)" * (cast_expression "(undefined4 *)(param_2 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar1 = *(undefined4 *)(param_3 + 0x38);" (assignment_expression "uVar1 = *(undefined4 *)(param_3 + 0x38)" identifier = (pointer_expression "*(undefined4 *)(param_3 + 0x38)" * (cast_expression "(undefined4 *)(param_3 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x3c) = uVar2;" (assignment_expression "*(undefined4 *)(param_2 + 0x3c) = uVar2" (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_2 + 0x38) = uVar1;" (assignment_expression "*(undefined4 *)(param_2 + 0x38) = uVar1" (pointer_expression "*(undefined4 *)(param_2 + 0x38)" * (cast_expression "(undefined4 *)(param_2 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((*(byte *)(param_2 + 0x2a) & 0x20) != 0) {\n    local_20[0] = param_2;\n    piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n    if (*piVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }\n    iVar5 = FUN_001c98b0();\n    do {\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    } while (param_2 != iVar5);\n  }" if (parenthesized_expression "((*(byte *)(param_2 + 0x2a) & 0x20) != 0)" ( (binary_expression "(*(byte *)(param_2 + 0x2a) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_2 + 0x2a) & 0x20)" ( (binary_expression "*(byte *)(param_2 + 0x2a) & 0x20" (pointer_expression "*(byte *)(param_2 + 0x2a)" * (cast_expression "(byte *)(param_2 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x2a)" ( (binary_expression "param_2 + 0x2a" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    local_20[0] = param_2;\n    piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n    if (*piVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }\n    iVar5 = FUN_001c98b0();\n    do {\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    } while (param_2 != iVar5);\n  }" { (expression_statement "local_20[0] = param_2;" (assignment_expression "local_20[0] = param_2" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);" (assignment_expression "piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20)" identifier = (cast_expression "(int *)FUN_00182a30(param_1 + 0xa8,local_20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00182a30(param_1 + 0xa8,local_20)" identifier (argument_list "(param_1 + 0xa8,local_20)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) , identifier ))))) ;) (if_statement "if (*piVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }" if (parenthesized_expression "(*piVar4 == 0)" ( (binary_expression "*piVar4 == 0" (pointer_expression "*piVar4" * identifier) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }" { comment (expression_statement "FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);" (call_expression "FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3)" identifier (argument_list "("../../gold/resolve.cc",0x457,"override_with_special",param_3)" ( (string_literal ""../../gold/resolve.cc"" " string_content ") , number_literal , (string_literal ""override_with_special"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar5 = FUN_001c98b0();" (assignment_expression "iVar5 = FUN_001c98b0()" identifier = (call_expression "FUN_001c98b0()" identifier (argument_list "()" ( )))) ;) (do_statement "do {\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    } while (param_2 != iVar5);" do (compound_statement "{\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    }" { (expression_statement "FUN_001ca260(iVar5,param_3);" (call_expression "FUN_001ca260(iVar5,param_3)" identifier (argument_list "(iVar5,param_3)" ( identifier , identifier ))) ;) (expression_statement "uVar1 = *(undefined4 *)(param_3 + 0x34);" (assignment_expression "uVar1 = *(undefined4 *)(param_3 + 0x34)" identifier = (pointer_expression "*(undefined4 *)(param_3 + 0x34)" * (cast_expression "(undefined4 *)(param_3 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x34)" ( (binary_expression "param_3 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);" (assignment_expression "*(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30)" (pointer_expression "*(undefined4 *)(iVar5 + 0x30)" * (cast_expression "(undefined4 *)(iVar5 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x30)" ( (binary_expression "iVar5 + 0x30" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_3 + 0x30)" * (cast_expression "(undefined4 *)(param_3 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar5 + 0x34) = uVar1;" (assignment_expression "*(undefined4 *)(iVar5 + 0x34) = uVar1" (pointer_expression "*(undefined4 *)(iVar5 + 0x34)" * (cast_expression "(undefined4 *)(iVar5 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x34)" ( (binary_expression "iVar5 + 0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar1 = *(undefined4 *)(param_3 + 0x38);" (assignment_expression "uVar1 = *(undefined4 *)(param_3 + 0x38)" identifier = (pointer_expression "*(undefined4 *)(param_3 + 0x38)" * (cast_expression "(undefined4 *)(param_3 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);" (assignment_expression "*(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c)" (pointer_expression "*(undefined4 *)(iVar5 + 0x3c)" * (cast_expression "(undefined4 *)(iVar5 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x3c)" ( (binary_expression "iVar5 + 0x3c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_3 + 0x3c)" * (cast_expression "(undefined4 *)(param_3 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3c)" ( (binary_expression "param_3 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar5 + 0x38) = uVar1;" (assignment_expression "*(undefined4 *)(iVar5 + 0x38) = uVar1" (pointer_expression "*(undefined4 *)(iVar5 + 0x38)" * (cast_expression "(undefined4 *)(iVar5 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x38)" ( (binary_expression "iVar5 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_20[0] = iVar5;" (assignment_expression "local_20[0] = iVar5" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);" (assignment_expression "piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20)" identifier = (cast_expression "(int *)FUN_00182a30(param_1 + 0xa8,local_20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00182a30(param_1 + 0xa8,local_20)" identifier (argument_list "(param_1 + 0xa8,local_20)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) , identifier ))))) ;) (if_statement "if (*piVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }" if (parenthesized_expression "(*piVar4 == 0)" ( (binary_expression "*piVar4 == 0" (pointer_expression "*piVar4" * identifier) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }" { comment (expression_statement "FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");" (call_expression "FUN_00069d00("../../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 "iVar5 = FUN_001c98b0();" (assignment_expression "iVar5 = FUN_001c98b0()" identifier = (call_expression "FUN_001c98b0()" identifier (argument_list "()" ( )))) ;) }) while (parenthesized_expression "(param_2 != iVar5)" ( (binary_expression "param_2 != iVar5" identifier != identifier) )) ;) })) (expression_statement "bVar3 = *(byte *)(param_2 + 0x28) >> 4;" (assignment_expression "bVar3 = *(byte *)(param_2 + 0x28) >> 4" identifier = (binary_expression "*(byte *)(param_2 + 0x28) >> 4" (pointer_expression "*(byte *)(param_2 + 0x28)" * (cast_expression "(byte *)(param_2 + 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) >> number_literal)) ;) (if_statement "if (bVar3 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {\n      return;\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {\n      return;\n    }\n  }" if (parenthesized_expression "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {\n      return;\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {\n      return;\n    }\n  }" { (if_statement "if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {\n      return;\n    }" if (parenthesized_expression "(1 < (*(byte *)(param_2 + 0x29) & 3) - 1)" ( (binary_expression "1 < (*(byte *)(param_2 + 0x29) & 3) - 1" number_literal < (binary_expression "(*(byte *)(param_2 + 0x29) & 3) - 1" (parenthesized_expression "(*(byte *)(param_2 + 0x29) & 3)" ( (binary_expression "*(byte *)(param_2 + 0x29) & 3" (pointer_expression "*(byte *)(param_2 + 0x29)" * (cast_expression "(byte *)(param_2 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x29)" ( (binary_expression "param_2 + 0x29" identifier + number_literal) )))) & number_literal) )) - number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {\n      return;\n    }" if (parenthesized_expression "((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10))" ( (binary_expression "(1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)" (parenthesized_expression "(1 < (bVar3 + 0xf & 0xf))" ( (binary_expression "1 < (bVar3 + 0xf & 0xf)" number_literal < (parenthesized_expression "(bVar3 + 0xf & 0xf)" ( (binary_expression "bVar3 + 0xf & 0xf" (binary_expression "bVar3 + 0xf" identifier + number_literal) & number_literal) ))) )) && (parenthesized_expression "(bVar3 != 10)" ( (binary_expression "bVar3 != 10" identifier != number_literal) ))) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }" if (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) == 0)" ( (binary_expression "*(int *)(DAT_0038f378 + 8) == 0" (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }" { comment (expression_statement "FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x5c,"options",0)" identifier (argument_list "("../../gold/parameters.h",0x5c,"options",0)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") , number_literal ))) ;) })) (if_statement "if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {\n      return;\n    }" if (parenthesized_expression "(*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0')" ( (binary_expression "*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0'" (pointer_expression "*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d)" * (cast_expression "(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) + 0x318d)" ( (binary_expression "*(int *)(DAT_0038f378 + 8) + 0x318d" (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) })) (expression_statement "FUN_00177f20(param_1,param_2);" (call_expression "FUN_00177f20(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* 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  undefined4 uVar1;\n  Value_type VVar2;\n  Size_type SVar3;\n  byte bVar4;\n  mapped_type *ppSVar5;\n  Sized_symbol<64> *this_00;\n  Symbol_table *in_stack_ffffffc4;\n  Symbol *in_stack_ffffffc8;\n  Sized_symbol<64> *local_20 [4];\n  \n  Symbol::override_base_with_special(&tosym->super_Symbol,&fromsym->super_Symbol);\n  VVar2 = fromsym->value_;\n  *(undefined4 *)((int)&tosym->value_ + 4) = *(undefined4 *)((int)&fromsym->value_ + 4);\n  uVar1 = *(undefined4 *)((int)&fromsym->symsize_ + 4);\n  *(int *)&tosym->value_ = (int)VVar2;\n  SVar3 = fromsym->symsize_;\n  *(undefined4 *)((int)&tosym->symsize_ + 4) = uVar1;\n  *(int *)&tosym->symsize_ = (int)SVar3;\n  if (((tosym->super_Symbol).field_0x2a & 0x20) != 0) {\n    local_20[0] = tosym;\n    ppSVar5 = 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_20);\n    if (*ppSVar5 == (mapped_type)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>(in_stack_ffffffc4,in_stack_ffffffc8);\n    do {\n      Symbol::override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol);\n      uVar1 = *(undefined4 *)((int)&fromsym->value_ + 4);\n      *(int *)&this_00->value_ = (int)fromsym->value_;\n      *(undefined4 *)((int)&this_00->value_ + 4) = uVar1;\n      SVar3 = fromsym->symsize_;\n      *(undefined4 *)((int)&this_00->symsize_ + 4) = *(undefined4 *)((int)&fromsym->symsize_ + 4);\n      *(int *)&this_00->symsize_ = (int)SVar3;\n      local_20[0] = this_00;\n      ppSVar5 = 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_20);\n      if (*ppSVar5 == (mapped_type)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>(in_stack_ffffffc4,in_stack_ffffffc8);\n    } while (tosym != this_00);\n  }\n  bVar4 = (byte)(tosym->super_Symbol).field_0x28 >> 4;\n  if (bVar4 != 0) {\n    if (1 < ((byte)(tosym->super_Symbol).field_0x29 & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar4 + 0xf & 0xf)) && (bVar4 != 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 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  undefined4 uVar1;\n  Value_type VVar2;\n  Size_type SVar3;\n  byte bVar4;\n  mapped_type *ppSVar5;\n  Sized_symbol<64> *this_00;\n  Symbol_table *in_stack_ffffffc4;\n  Symbol *in_stack_ffffffc8;\n  Sized_symbol<64> *local_20 [4];\n  \n  Symbol::override_base_with_special(&tosym->super_Symbol,&fromsym->super_Symbol);\n  VVar2 = fromsym->value_;\n  *(undefined4 *)((int)&tosym->value_ + 4) = *(undefined4 *)((int)&fromsym->value_ + 4);\n  uVar1 = *(undefined4 *)((int)&fromsym->symsize_ + 4);\n  *(int *)&tosym->value_ = (int)VVar2;\n  SVar3 = fromsym->symsize_;\n  *(undefined4 *)((int)&tosym->symsize_ + 4) = uVar1;\n  *(int *)&tosym->symsize_ = (int)SVar3;\n  if (((tosym->super_Symbol).field_0x2a & 0x20) != 0) {\n    local_20[0] = tosym;\n    ppSVar5 = 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_20);\n    if (*ppSVar5 == (mapped_type)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>(in_stack_ffffffc4,in_stack_ffffffc8);\n    do {\n      Symbol::override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol);\n      uVar1 = *(undefined4 *)((int)&fromsym->value_ + 4);\n      *(int *)&this_00->value_ = (int)fromsym->value_;\n      *(undefined4 *)((int)&this_00->value_ + 4) = uVar1;\n      SVar3 = fromsym->symsize_;\n      *(undefined4 *)((int)&this_00->symsize_ + 4) = *(undefined4 *)((int)&fromsym->symsize_ + 4);\n      *(int *)&this_00->symsize_ = (int)SVar3;\n      local_20[0] = this_00;\n      ppSVar5 = 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_20);\n      if (*ppSVar5 == (mapped_type)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>(in_stack_ffffffc4,in_stack_ffffffc8);\n    } while (tosym != this_00);\n  }\n  bVar4 = (byte)(tosym->super_Symbol).field_0x28 >> 4;\n  if (bVar4 != 0) {\n    if (1 < ((byte)(tosym->super_Symbol).field_0x29 & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar4 + 0xf & 0xf)) && (bVar4 != 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  undefined4 uVar1;\n  Value_type VVar2;\n  Size_type SVar3;\n  byte bVar4;\n  mapped_type *ppSVar5;\n  Sized_symbol<64> *this_00;\n  Symbol_table *in_stack_ffffffc4;\n  Symbol *in_stack_ffffffc8;\n  Sized_symbol<64> *local_20 [4];\n  \n  Symbol::override_base_with_special(&tosym->super_Symbol,&fromsym->super_Symbol);\n  VVar2 = fromsym->value_;\n  *(undefined4 *)((int)&tosym->value_ + 4) = *(undefined4 *)((int)&fromsym->value_ + 4);\n  uVar1 = *(undefined4 *)((int)&fromsym->symsize_ + 4);\n  *(int *)&tosym->value_ = (int)VVar2;\n  SVar3 = fromsym->symsize_;\n  *(undefined4 *)((int)&tosym->symsize_ + 4) = uVar1;\n  *(int *)&tosym->symsize_ = (int)SVar3;\n  if (((tosym->super_Symbol).field_0x2a & 0x20) != 0) {\n    local_20[0] = tosym;\n    ppSVar5 = 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_20);\n    if (*ppSVar5 == (mapped_type)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>(in_stack_ffffffc4,in_stack_ffffffc8);\n    do {\n      Symbol::override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol);\n      uVar1 = *(undefined4 *)((int)&fromsym->value_ + 4);\n      *(int *)&this_00->value_ = (int)fromsym->value_;\n      *(undefined4 *)((int)&this_00->value_ + 4) = uVar1;\n      SVar3 = fromsym->symsize_;\n      *(undefined4 *)((int)&this_00->symsize_ + 4) = *(undefined4 *)((int)&fromsym->symsize_ + 4);\n      *(int *)&this_00->symsize_ = (int)SVar3;\n      local_20[0] = this_00;\n      ppSVar5 = 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_20);\n      if (*ppSVar5 == (mapped_type)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>(in_stack_ffffffc4,in_stack_ffffffc8);\n    } while (tosym != this_00);\n  }\n  bVar4 = (byte)(tosym->super_Symbol).field_0x28 >> 4;\n  if (bVar4 != 0) {\n    if (1 < ((byte)(tosym->super_Symbol).field_0x29 & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar4 + 0xf & 0xf)) && (bVar4 != 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 "undefined4 uVar1;" type_identifier identifier ;) (declaration "Value_type VVar2;" type_identifier identifier ;) (declaration "Size_type SVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "mapped_type *ppSVar5;" type_identifier (pointer_declarator "*ppSVar5" * 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_table *in_stack_ffffffc4;" type_identifier (pointer_declarator "*in_stack_ffffffc4" * identifier) ;) (declaration "Symbol *in_stack_ffffffc8;" type_identifier (pointer_declarator "*in_stack_ffffffc8" * identifier) ;) (expression_statement "Sized_symbol<64> *local_20 [4];" (binary_expression "Sized_symbol<64> *local_20 [4]" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*local_20 [4]" * (subscript_expression "local_20 [4]" identifier [ number_literal ]))) ;) (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 "VVar2 = fromsym->value_;" (assignment_expression "VVar2 = fromsym->value_" identifier = (field_expression "fromsym->value_" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&tosym->value_ + 4) = *(undefined4 *)((int)&fromsym->value_ + 4);" (assignment_expression "*(undefined4 *)((int)&tosym->value_ + 4) = *(undefined4 *)((int)&fromsym->value_ + 4)" (pointer_expression "*(undefined4 *)((int)&tosym->value_ + 4)" * (cast_expression "(undefined4 *)((int)&tosym->value_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&tosym->value_ + 4)" ( (binary_expression "(int)&tosym->value_ + 4" (cast_expression "(int)&tosym->value_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&tosym->value_" & (field_expression "tosym->value_" identifier -> field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)&fromsym->value_ + 4)" * (cast_expression "(undefined4 *)((int)&fromsym->value_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&fromsym->value_ + 4)" ( (binary_expression "(int)&fromsym->value_ + 4" (cast_expression "(int)&fromsym->value_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&fromsym->value_" & (field_expression "fromsym->value_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar1 = *(undefined4 *)((int)&fromsym->symsize_ + 4);" (assignment_expression "uVar1 = *(undefined4 *)((int)&fromsym->symsize_ + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&fromsym->symsize_ + 4)" * (cast_expression "(undefined4 *)((int)&fromsym->symsize_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&fromsym->symsize_ + 4)" ( (binary_expression "(int)&fromsym->symsize_ + 4" (cast_expression "(int)&fromsym->symsize_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&fromsym->symsize_" & (field_expression "fromsym->symsize_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "*(int *)&tosym->value_ = (int)VVar2;" (assignment_expression "*(int *)&tosym->value_ = (int)VVar2" (pointer_expression "*(int *)&tosym->value_" * (cast_expression "(int *)&tosym->value_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&tosym->value_" & (field_expression "tosym->value_" identifier -> field_identifier)))) = (cast_expression "(int)VVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "SVar3 = fromsym->symsize_;" (assignment_expression "SVar3 = fromsym->symsize_" identifier = (field_expression "fromsym->symsize_" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&tosym->symsize_ + 4) = uVar1;" (assignment_expression "*(undefined4 *)((int)&tosym->symsize_ + 4) = uVar1" (pointer_expression "*(undefined4 *)((int)&tosym->symsize_ + 4)" * (cast_expression "(undefined4 *)((int)&tosym->symsize_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&tosym->symsize_ + 4)" ( (binary_expression "(int)&tosym->symsize_ + 4" (cast_expression "(int)&tosym->symsize_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&tosym->symsize_" & (field_expression "tosym->symsize_" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)&tosym->symsize_ = (int)SVar3;" (assignment_expression "*(int *)&tosym->symsize_ = (int)SVar3" (pointer_expression "*(int *)&tosym->symsize_" * (cast_expression "(int *)&tosym->symsize_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&tosym->symsize_" & (field_expression "tosym->symsize_" identifier -> field_identifier)))) = (cast_expression "(int)SVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (((tosym->super_Symbol).field_0x2a & 0x20) != 0) {\n    local_20[0] = tosym;\n    ppSVar5 = 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_20);\n    if (*ppSVar5 == (mapped_type)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>(in_stack_ffffffc4,in_stack_ffffffc8);\n    do {\n      Symbol::override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol);\n      uVar1 = *(undefined4 *)((int)&fromsym->value_ + 4);\n      *(int *)&this_00->value_ = (int)fromsym->value_;\n      *(undefined4 *)((int)&this_00->value_ + 4) = uVar1;\n      SVar3 = fromsym->symsize_;\n      *(undefined4 *)((int)&this_00->symsize_ + 4) = *(undefined4 *)((int)&fromsym->symsize_ + 4);\n      *(int *)&this_00->symsize_ = (int)SVar3;\n      local_20[0] = this_00;\n      ppSVar5 = 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_20);\n      if (*ppSVar5 == (mapped_type)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>(in_stack_ffffffc4,in_stack_ffffffc8);\n    } while (tosym != this_00);\n  }" if (parenthesized_expression "(((tosym->super_Symbol).field_0x2a & 0x20) != 0)" ( (binary_expression "((tosym->super_Symbol).field_0x2a & 0x20) != 0" (parenthesized_expression "((tosym->super_Symbol).field_0x2a & 0x20)" ( (binary_expression "(tosym->super_Symbol).field_0x2a & 0x20" (field_expression "(tosym->super_Symbol).field_0x2a" (parenthesized_expression "(tosym->super_Symbol)" ( (field_expression "tosym->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    local_20[0] = tosym;\n    ppSVar5 = 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_20);\n    if (*ppSVar5 == (mapped_type)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>(in_stack_ffffffc4,in_stack_ffffffc8);\n    do {\n      Symbol::override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol);\n      uVar1 = *(undefined4 *)((int)&fromsym->value_ + 4);\n      *(int *)&this_00->value_ = (int)fromsym->value_;\n      *(undefined4 *)((int)&this_00->value_ + 4) = uVar1;\n      SVar3 = fromsym->symsize_;\n      *(undefined4 *)((int)&this_00->symsize_ + 4) = *(undefined4 *)((int)&fromsym->symsize_ + 4);\n      *(int *)&this_00->symsize_ = (int)SVar3;\n      local_20[0] = this_00;\n      ppSVar5 = 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_20);\n      if (*ppSVar5 == (mapped_type)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>(in_stack_ffffffc4,in_stack_ffffffc8);\n    } while (tosym != this_00);\n  }" { (expression_statement "local_20[0] = tosym;" (assignment_expression "local_20[0] = tosym" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;) (ERROR "ppSVar5 = std::__detail::\n              _Map_base<gold::Symbol*,_std::pair<gold::" (assignment_expression "ppSVar5 = 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_20);" (comma_expression "&this->weak_aliases_,(key_type *)local_20" (pointer_expression "&this->weak_aliases_" & (field_expression "this->weak_aliases_" identifier -> field_identifier)) , (cast_expression "(key_type *)local_20" ( (type_descriptor "key_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) (ERROR ")" )) ;) (if_statement "if (*ppSVar5 == (mapped_type)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/resolve.cc",0x457,"override_with_special");\n    }" if (parenthesized_expression "(*ppSVar5 == (mapped_type)0x0)" ( (binary_expression "*ppSVar5 == (mapped_type)0x0" (pointer_expression "*ppSVar5" * identifier) == (cast_expression "(mapped_type)0x0" ( (type_descriptor "mapped_type" type_identifier) ) 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>(in_stack_ffffffc4,in_stack_ffffffc8);" (assignment_expression "this_00 = get_sized_symbol<64>(in_stack_ffffffc4,in_stack_ffffffc8)" identifier = (binary_expression "get_sized_symbol<64>(in_stack_ffffffc4,in_stack_ffffffc8)" (binary_expression "get_sized_symbol<64" identifier < number_literal) > (parenthesized_expression "(in_stack_ffffffc4,in_stack_ffffffc8)" ( (comma_expression "in_stack_ffffffc4,in_stack_ffffffc8" identifier , identifier) )))) ;) (do_statement "do {\n      Symbol::override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol);\n      uVar1 = *(undefined4 *)((int)&fromsym->value_ + 4);\n      *(int *)&this_00->value_ = (int)fromsym->value_;\n      *(undefined4 *)((int)&this_00->value_ + 4) = uVar1;\n      SVar3 = fromsym->symsize_;\n      *(undefined4 *)((int)&this_00->symsize_ + 4) = *(undefined4 *)((int)&fromsym->symsize_ + 4);\n      *(int *)&this_00->symsize_ = (int)SVar3;\n      local_20[0] = this_00;\n      ppSVar5 = 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_20);\n      if (*ppSVar5 == (mapped_type)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>(in_stack_ffffffc4,in_stack_ffffffc8);\n    } while (tosym != this_00);" do (compound_statement "{\n      Symbol::override_base_with_special(&this_00->super_Symbol,&fromsym->super_Symbol);\n      uVar1 = *(undefined4 *)((int)&fromsym->value_ + 4);\n      *(int *)&this_00->value_ = (int)fromsym->value_;\n      *(undefined4 *)((int)&this_00->value_ + 4) = uVar1;\n      SVar3 = fromsym->symsize_;\n      *(undefined4 *)((int)&this_00->symsize_ + 4) = *(undefined4 *)((int)&fromsym->symsize_ + 4);\n      *(int *)&this_00->symsize_ = (int)SVar3;\n      local_20[0] = this_00;\n      ppSVar5 = 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_20);\n      if (*ppSVar5 == (mapped_type)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>(in_stack_ffffffc4,in_stack_ffffffc8);\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 "uVar1 = *(undefined4 *)((int)&fromsym->value_ + 4);" (assignment_expression "uVar1 = *(undefined4 *)((int)&fromsym->value_ + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&fromsym->value_ + 4)" * (cast_expression "(undefined4 *)((int)&fromsym->value_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&fromsym->value_ + 4)" ( (binary_expression "(int)&fromsym->value_ + 4" (cast_expression "(int)&fromsym->value_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&fromsym->value_" & (field_expression "fromsym->value_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "*(int *)&this_00->value_ = (int)fromsym->value_;" (assignment_expression "*(int *)&this_00->value_ = (int)fromsym->value_" (pointer_expression "*(int *)&this_00->value_" * (cast_expression "(int *)&this_00->value_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this_00->value_" & (field_expression "this_00->value_" identifier -> field_identifier)))) = (cast_expression "(int)fromsym->value_" ( (type_descriptor "int" primitive_type) ) (field_expression "fromsym->value_" identifier -> field_identifier))) ;) (expression_statement "*(undefined4 *)((int)&this_00->value_ + 4) = uVar1;" (assignment_expression "*(undefined4 *)((int)&this_00->value_ + 4) = uVar1" (pointer_expression "*(undefined4 *)((int)&this_00->value_ + 4)" * (cast_expression "(undefined4 *)((int)&this_00->value_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this_00->value_ + 4)" ( (binary_expression "(int)&this_00->value_ + 4" (cast_expression "(int)&this_00->value_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this_00->value_" & (field_expression "this_00->value_" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "SVar3 = fromsym->symsize_;" (assignment_expression "SVar3 = fromsym->symsize_" identifier = (field_expression "fromsym->symsize_" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&this_00->symsize_ + 4) = *(undefined4 *)((int)&fromsym->symsize_ + 4);" (assignment_expression "*(undefined4 *)((int)&this_00->symsize_ + 4) = *(undefined4 *)((int)&fromsym->symsize_ + 4)" (pointer_expression "*(undefined4 *)((int)&this_00->symsize_ + 4)" * (cast_expression "(undefined4 *)((int)&this_00->symsize_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this_00->symsize_ + 4)" ( (binary_expression "(int)&this_00->symsize_ + 4" (cast_expression "(int)&this_00->symsize_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this_00->symsize_" & (field_expression "this_00->symsize_" identifier -> field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)&fromsym->symsize_ + 4)" * (cast_expression "(undefined4 *)((int)&fromsym->symsize_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&fromsym->symsize_ + 4)" ( (binary_expression "(int)&fromsym->symsize_ + 4" (cast_expression "(int)&fromsym->symsize_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&fromsym->symsize_" & (field_expression "fromsym->symsize_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "*(int *)&this_00->symsize_ = (int)SVar3;" (assignment_expression "*(int *)&this_00->symsize_ = (int)SVar3" (pointer_expression "*(int *)&this_00->symsize_" * (cast_expression "(int *)&this_00->symsize_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this_00->symsize_" & (field_expression "this_00->symsize_" identifier -> field_identifier)))) = (cast_expression "(int)SVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_20[0] = this_00;" (assignment_expression "local_20[0] = this_00" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;) (ERROR "ppSVar5 = std::__detail::\n                _Map_base<gold::Symbol*,_std::pair<gold::" (assignment_expression "ppSVar5 = 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_20);" (comma_expression "&this->weak_aliases_,(key_type *)local_20" (pointer_expression "&this->weak_aliases_" & (field_expression "this->weak_aliases_" identifier -> field_identifier)) , (cast_expression "(key_type *)local_20" ( (type_descriptor "key_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) (ERROR ")" )) ;) (if_statement "if (*ppSVar5 == (mapped_type)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/resolve.cc",0x45d,"override_with_special");\n      }" if (parenthesized_expression "(*ppSVar5 == (mapped_type)0x0)" ( (binary_expression "*ppSVar5 == (mapped_type)0x0" (pointer_expression "*ppSVar5" * identifier) == (cast_expression "(mapped_type)0x0" ( (type_descriptor "mapped_type" type_identifier) ) 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>(in_stack_ffffffc4,in_stack_ffffffc8);" (assignment_expression "this_00 = get_sized_symbol<64>(in_stack_ffffffc4,in_stack_ffffffc8)" identifier = (binary_expression "get_sized_symbol<64>(in_stack_ffffffc4,in_stack_ffffffc8)" (binary_expression "get_sized_symbol<64" identifier < number_literal) > (parenthesized_expression "(in_stack_ffffffc4,in_stack_ffffffc8)" ( (comma_expression "in_stack_ffffffc4,in_stack_ffffffc8" identifier , identifier) )))) ;) }) while (parenthesized_expression "(tosym != this_00)" ( (binary_expression "tosym != this_00" identifier != identifier) )) ;) })) (expression_statement "bVar4 = (byte)(tosym->super_Symbol).field_0x28 >> 4;" (assignment_expression "bVar4 = (byte)(tosym->super_Symbol).field_0x28 >> 4" identifier = (binary_expression "(byte)(tosym->super_Symbol).field_0x28 >> 4" (field_expression "(byte)(tosym->super_Symbol).field_0x28" (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 (bVar4 != 0) {\n    if (1 < ((byte)(tosym->super_Symbol).field_0x29 & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar4 + 0xf & 0xf)) && (bVar4 != 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 "(bVar4 != 0)" ( (binary_expression "bVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    if (1 < ((byte)(tosym->super_Symbol).field_0x29 & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar4 + 0xf & 0xf)) && (bVar4 != 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_0x29 & 3) - 1) {\n      return;\n    }" if (parenthesized_expression "(1 < ((byte)(tosym->super_Symbol).field_0x29 & 3) - 1)" ( (binary_expression "1 < ((byte)(tosym->super_Symbol).field_0x29 & 3) - 1" number_literal < (binary_expression "((byte)(tosym->super_Symbol).field_0x29 & 3) - 1" (parenthesized_expression "((byte)(tosym->super_Symbol).field_0x29 & 3)" ( (binary_expression "(byte)(tosym->super_Symbol).field_0x29 & 3" (field_expression "(byte)(tosym->super_Symbol).field_0x29" (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 < (bVar4 + 0xf & 0xf)) && (bVar4 != 10)) {\n      return;\n    }" if (parenthesized_expression "((1 < (bVar4 + 0xf & 0xf)) && (bVar4 != 10))" ( (binary_expression "(1 < (bVar4 + 0xf & 0xf)) && (bVar4 != 10)" (parenthesized_expression "(1 < (bVar4 + 0xf & 0xf))" ( (binary_expression "1 < (bVar4 + 0xf & 0xf)" number_literal < (parenthesized_expression "(bVar4 + 0xf & 0xf)" ( (binary_expression "bVar4 + 0xf & 0xf" (binary_expression "bVar4 + 0xf" identifier + number_literal) & number_literal) ))) )) && (parenthesized_expression "(bVar4 != 10)" ( (binary_expression "bVar4 != 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_001cb410(int param_1,int param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  byte bVar3;\n  int *piVar4;\n  int iVar5;\n  int local_20 [4];\n  \n  FUN_001ca260(param_2,param_3);\n  uVar1 = *(undefined4 *)(param_3 + 0x30);\n  *(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(param_3 + 0x34);\n  uVar2 = *(undefined4 *)(param_3 + 0x3c);\n  *(undefined4 *)(param_2 + 0x30) = uVar1;\n  uVar1 = *(undefined4 *)(param_3 + 0x38);\n  *(undefined4 *)(param_2 + 0x3c) = uVar2;\n  *(undefined4 *)(param_2 + 0x38) = uVar1;\n  if ((*(byte *)(param_2 + 0x2a) & 0x20) != 0) {\n    local_20[0] = param_2;\n    piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n    if (*piVar4 == 0) {\n                    \n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }\n    iVar5 = FUN_001c98b0();\n    do {\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    \n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    } while (param_2 != iVar5);\n  }\n  bVar3 = *(byte *)(param_2 + 0x28) >> 4;\n  if (bVar3 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {\n      return;\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {\n      return;\n    }\n  }\n  FUN_00177f20(param_1,param_2);\n  return;\n}\n\n" (function_definition "void FUN_001cb410(int param_1,int param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  byte bVar3;\n  int *piVar4;\n  int iVar5;\n  int local_20 [4];\n  \n  FUN_001ca260(param_2,param_3);\n  uVar1 = *(undefined4 *)(param_3 + 0x30);\n  *(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(param_3 + 0x34);\n  uVar2 = *(undefined4 *)(param_3 + 0x3c);\n  *(undefined4 *)(param_2 + 0x30) = uVar1;\n  uVar1 = *(undefined4 *)(param_3 + 0x38);\n  *(undefined4 *)(param_2 + 0x3c) = uVar2;\n  *(undefined4 *)(param_2 + 0x38) = uVar1;\n  if ((*(byte *)(param_2 + 0x2a) & 0x20) != 0) {\n    local_20[0] = param_2;\n    piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n    if (*piVar4 == 0) {\n                    \n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }\n    iVar5 = FUN_001c98b0();\n    do {\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    \n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    } while (param_2 != iVar5);\n  }\n  bVar3 = *(byte *)(param_2 + 0x28) >> 4;\n  if (bVar3 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {\n      return;\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {\n      return;\n    }\n  }\n  FUN_00177f20(param_1,param_2);\n  return;\n}" primitive_type (function_declarator "FUN_001cb410(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  byte bVar3;\n  int *piVar4;\n  int iVar5;\n  int local_20 [4];\n  \n  FUN_001ca260(param_2,param_3);\n  uVar1 = *(undefined4 *)(param_3 + 0x30);\n  *(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(param_3 + 0x34);\n  uVar2 = *(undefined4 *)(param_3 + 0x3c);\n  *(undefined4 *)(param_2 + 0x30) = uVar1;\n  uVar1 = *(undefined4 *)(param_3 + 0x38);\n  *(undefined4 *)(param_2 + 0x3c) = uVar2;\n  *(undefined4 *)(param_2 + 0x38) = uVar1;\n  if ((*(byte *)(param_2 + 0x2a) & 0x20) != 0) {\n    local_20[0] = param_2;\n    piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n    if (*piVar4 == 0) {\n                    \n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }\n    iVar5 = FUN_001c98b0();\n    do {\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    \n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    } while (param_2 != iVar5);\n  }\n  bVar3 = *(byte *)(param_2 + 0x28) >> 4;\n  if (bVar3 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {\n      return;\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {\n      return;\n    }\n  }\n  FUN_00177f20(param_1,param_2);\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int local_20 [4];" primitive_type (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (expression_statement "FUN_001ca260(param_2,param_3);" (call_expression "FUN_001ca260(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier ))) ;) (expression_statement "uVar1 = *(undefined4 *)(param_3 + 0x30);" (assignment_expression "uVar1 = *(undefined4 *)(param_3 + 0x30)" identifier = (pointer_expression "*(undefined4 *)(param_3 + 0x30)" * (cast_expression "(undefined4 *)(param_3 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(param_3 + 0x34);" (assignment_expression "*(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(param_3 + 0x34)" (pointer_expression "*(undefined4 *)(param_2 + 0x34)" * (cast_expression "(undefined4 *)(param_2 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_3 + 0x34)" * (cast_expression "(undefined4 *)(param_3 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x34)" ( (binary_expression "param_3 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(undefined4 *)(param_3 + 0x3c);" (assignment_expression "uVar2 = *(undefined4 *)(param_3 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(param_3 + 0x3c)" * (cast_expression "(undefined4 *)(param_3 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3c)" ( (binary_expression "param_3 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x30) = uVar1;" (assignment_expression "*(undefined4 *)(param_2 + 0x30) = uVar1" (pointer_expression "*(undefined4 *)(param_2 + 0x30)" * (cast_expression "(undefined4 *)(param_2 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar1 = *(undefined4 *)(param_3 + 0x38);" (assignment_expression "uVar1 = *(undefined4 *)(param_3 + 0x38)" identifier = (pointer_expression "*(undefined4 *)(param_3 + 0x38)" * (cast_expression "(undefined4 *)(param_3 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x3c) = uVar2;" (assignment_expression "*(undefined4 *)(param_2 + 0x3c) = uVar2" (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_2 + 0x38) = uVar1;" (assignment_expression "*(undefined4 *)(param_2 + 0x38) = uVar1" (pointer_expression "*(undefined4 *)(param_2 + 0x38)" * (cast_expression "(undefined4 *)(param_2 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((*(byte *)(param_2 + 0x2a) & 0x20) != 0) {\n    local_20[0] = param_2;\n    piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n    if (*piVar4 == 0) {\n                    \n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }\n    iVar5 = FUN_001c98b0();\n    do {\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    \n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    } while (param_2 != iVar5);\n  }" if (parenthesized_expression "((*(byte *)(param_2 + 0x2a) & 0x20) != 0)" ( (binary_expression "(*(byte *)(param_2 + 0x2a) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_2 + 0x2a) & 0x20)" ( (binary_expression "*(byte *)(param_2 + 0x2a) & 0x20" (pointer_expression "*(byte *)(param_2 + 0x2a)" * (cast_expression "(byte *)(param_2 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x2a)" ( (binary_expression "param_2 + 0x2a" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    local_20[0] = param_2;\n    piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n    if (*piVar4 == 0) {\n                    \n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }\n    iVar5 = FUN_001c98b0();\n    do {\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    \n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    } while (param_2 != iVar5);\n  }" { (expression_statement "local_20[0] = param_2;" (assignment_expression "local_20[0] = param_2" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);" (assignment_expression "piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20)" identifier = (cast_expression "(int *)FUN_00182a30(param_1 + 0xa8,local_20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00182a30(param_1 + 0xa8,local_20)" identifier (argument_list "(param_1 + 0xa8,local_20)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) , identifier ))))) ;) (if_statement "if (*piVar4 == 0) {\n                    \n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }" if (parenthesized_expression "(*piVar4 == 0)" ( (binary_expression "*piVar4 == 0" (pointer_expression "*piVar4" * identifier) == number_literal) )) (compound_statement "{\n                    \n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }" { (expression_statement "FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);" (call_expression "FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3)" identifier (argument_list "("../../gold/resolve.cc",0x457,"override_with_special",param_3)" ( (string_literal ""../../gold/resolve.cc"" " string_content ") , number_literal , (string_literal ""override_with_special"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar5 = FUN_001c98b0();" (assignment_expression "iVar5 = FUN_001c98b0()" identifier = (call_expression "FUN_001c98b0()" identifier (argument_list "()" ( )))) ;) (do_statement "do {\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    \n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    } while (param_2 != iVar5);" do (compound_statement "{\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    \n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    }" { (expression_statement "FUN_001ca260(iVar5,param_3);" (call_expression "FUN_001ca260(iVar5,param_3)" identifier (argument_list "(iVar5,param_3)" ( identifier , identifier ))) ;) (expression_statement "uVar1 = *(undefined4 *)(param_3 + 0x34);" (assignment_expression "uVar1 = *(undefined4 *)(param_3 + 0x34)" identifier = (pointer_expression "*(undefined4 *)(param_3 + 0x34)" * (cast_expression "(undefined4 *)(param_3 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x34)" ( (binary_expression "param_3 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);" (assignment_expression "*(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30)" (pointer_expression "*(undefined4 *)(iVar5 + 0x30)" * (cast_expression "(undefined4 *)(iVar5 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x30)" ( (binary_expression "iVar5 + 0x30" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_3 + 0x30)" * (cast_expression "(undefined4 *)(param_3 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar5 + 0x34) = uVar1;" (assignment_expression "*(undefined4 *)(iVar5 + 0x34) = uVar1" (pointer_expression "*(undefined4 *)(iVar5 + 0x34)" * (cast_expression "(undefined4 *)(iVar5 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x34)" ( (binary_expression "iVar5 + 0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar1 = *(undefined4 *)(param_3 + 0x38);" (assignment_expression "uVar1 = *(undefined4 *)(param_3 + 0x38)" identifier = (pointer_expression "*(undefined4 *)(param_3 + 0x38)" * (cast_expression "(undefined4 *)(param_3 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);" (assignment_expression "*(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c)" (pointer_expression "*(undefined4 *)(iVar5 + 0x3c)" * (cast_expression "(undefined4 *)(iVar5 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x3c)" ( (binary_expression "iVar5 + 0x3c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_3 + 0x3c)" * (cast_expression "(undefined4 *)(param_3 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3c)" ( (binary_expression "param_3 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar5 + 0x38) = uVar1;" (assignment_expression "*(undefined4 *)(iVar5 + 0x38) = uVar1" (pointer_expression "*(undefined4 *)(iVar5 + 0x38)" * (cast_expression "(undefined4 *)(iVar5 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x38)" ( (binary_expression "iVar5 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_20[0] = iVar5;" (assignment_expression "local_20[0] = iVar5" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);" (assignment_expression "piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20)" identifier = (cast_expression "(int *)FUN_00182a30(param_1 + 0xa8,local_20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00182a30(param_1 + 0xa8,local_20)" identifier (argument_list "(param_1 + 0xa8,local_20)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) , identifier ))))) ;) (if_statement "if (*piVar4 == 0) {\n                    \n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }" if (parenthesized_expression "(*piVar4 == 0)" ( (binary_expression "*piVar4 == 0" (pointer_expression "*piVar4" * identifier) == number_literal) )) (compound_statement "{\n                    \n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }" { (expression_statement "FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");" (call_expression "FUN_00069d00("../../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 "iVar5 = FUN_001c98b0();" (assignment_expression "iVar5 = FUN_001c98b0()" identifier = (call_expression "FUN_001c98b0()" identifier (argument_list "()" ( )))) ;) }) while (parenthesized_expression "(param_2 != iVar5)" ( (binary_expression "param_2 != iVar5" identifier != identifier) )) ;) })) (expression_statement "bVar3 = *(byte *)(param_2 + 0x28) >> 4;" (assignment_expression "bVar3 = *(byte *)(param_2 + 0x28) >> 4" identifier = (binary_expression "*(byte *)(param_2 + 0x28) >> 4" (pointer_expression "*(byte *)(param_2 + 0x28)" * (cast_expression "(byte *)(param_2 + 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) >> number_literal)) ;) (if_statement "if (bVar3 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {\n      return;\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {\n      return;\n    }\n  }" if (parenthesized_expression "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {\n      return;\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {\n      return;\n    }\n  }" { (if_statement "if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {\n      return;\n    }" if (parenthesized_expression "(1 < (*(byte *)(param_2 + 0x29) & 3) - 1)" ( (binary_expression "1 < (*(byte *)(param_2 + 0x29) & 3) - 1" number_literal < (binary_expression "(*(byte *)(param_2 + 0x29) & 3) - 1" (parenthesized_expression "(*(byte *)(param_2 + 0x29) & 3)" ( (binary_expression "*(byte *)(param_2 + 0x29) & 3" (pointer_expression "*(byte *)(param_2 + 0x29)" * (cast_expression "(byte *)(param_2 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x29)" ( (binary_expression "param_2 + 0x29" identifier + number_literal) )))) & number_literal) )) - number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {\n      return;\n    }" if (parenthesized_expression "((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10))" ( (binary_expression "(1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)" (parenthesized_expression "(1 < (bVar3 + 0xf & 0xf))" ( (binary_expression "1 < (bVar3 + 0xf & 0xf)" number_literal < (parenthesized_expression "(bVar3 + 0xf & 0xf)" ( (binary_expression "bVar3 + 0xf & 0xf" (binary_expression "bVar3 + 0xf" identifier + number_literal) & number_literal) ))) )) && (parenthesized_expression "(bVar3 != 10)" ( (binary_expression "bVar3 != 10" identifier != number_literal) ))) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }" if (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) == 0)" ( (binary_expression "*(int *)(DAT_0038f378 + 8) == 0" (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }" { (expression_statement "FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x5c,"options",0)" identifier (argument_list "("../../gold/parameters.h",0x5c,"options",0)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") , number_literal ))) ;) })) (if_statement "if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {\n      return;\n    }" if (parenthesized_expression "(*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0')" ( (binary_expression "*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0'" (pointer_expression "*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d)" * (cast_expression "(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) + 0x318d)" ( (binary_expression "*(int *)(DAT_0038f378 + 8) + 0x318d" (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) })) (expression_statement "FUN_00177f20(param_1,param_2);" (call_expression "FUN_00177f20(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 TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (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 IDENT = (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) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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 TYPE (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 ") , IDENT ))) ;) })) (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 IDENT = (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (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) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (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 TYPE (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 ") , LIT ))) ;) })) (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 TYPE (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_001cb410(int param_1,int param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  byte bVar3;\n  int *piVar4;\n  int iVar5;\n  int local_20 [4];\n  \n  FUN_001ca260(param_2,param_3);\n  uVar1 = *(undefined4 *)(param_3 + 0x30);\n  *(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(param_3 + 0x34);\n  uVar2 = *(undefined4 *)(param_3 + 0x3c);\n  *(undefined4 *)(param_2 + 0x30) = uVar1;\n  uVar1 = *(undefined4 *)(param_3 + 0x38);\n  *(undefined4 *)(param_2 + 0x3c) = uVar2;\n  *(undefined4 *)(param_2 + 0x38) = uVar1;\n  if ((*(byte *)(param_2 + 0x2a) & 0x20) != 0) {\n    local_20[0] = param_2;\n    piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n    if (*piVar4 == 0) {\n                    \n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }\n    iVar5 = FUN_001c98b0();\n    do {\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    \n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    } while (param_2 != iVar5);\n  }\n  bVar3 = *(byte *)(param_2 + 0x28) >> 4;\n  if (bVar3 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {\n      return;\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {\n      return;\n    }\n  }\n  FUN_00177f20(param_1,param_2);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001cb410(int param_1,int param_2,int param_3)" (identifier "FUN_001cb410") (parameter_list "(int param_1,int param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  byte bVar3;\n  int *piVar4;\n  int iVar5;\n  int local_20 [4];\n  \n  FUN_001ca260(param_2,param_3);\n  uVar1 = *(undefined4 *)(param_3 + 0x30);\n  *(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(param_3 + 0x34);\n  uVar2 = *(undefined4 *)(param_3 + 0x3c);\n  *(undefined4 *)(param_2 + 0x30) = uVar1;\n  uVar1 = *(undefined4 *)(param_3 + 0x38);\n  *(undefined4 *)(param_2 + 0x3c) = uVar2;\n  *(undefined4 *)(param_2 + 0x38) = uVar1;\n  if ((*(byte *)(param_2 + 0x2a) & 0x20) != 0) {\n    local_20[0] = param_2;\n    piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n    if (*piVar4 == 0) {\n                    \n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }\n    iVar5 = FUN_001c98b0();\n    do {\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    \n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    } while (param_2 != iVar5);\n  }\n  bVar3 = *(byte *)(param_2 + 0x28) >> 4;\n  if (bVar3 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {\n      return;\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {\n      return;\n    }\n  }\n  FUN_00177f20(param_1,param_2);\n  return;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int local_20 [4];" (primitive_type "int") (array_declarator "local_20 [4]" (identifier "local_20") ([ "[") (number_literal "4") (] "]")) (; ";")) (expression_statement "FUN_001ca260(param_2,param_3);" (call_expression "FUN_001ca260(param_2,param_3)" (identifier "FUN_001ca260") (argument_list "(param_2,param_3)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "uVar1 = *(undefined4 *)(param_3 + 0x30);" (assignment_expression "uVar1 = *(undefined4 *)(param_3 + 0x30)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined4 *)(param_3 + 0x30)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x30)" (( "(") (binary_expression "param_3 + 0x30" (identifier "param_3") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(param_3 + 0x34);" (assignment_expression "*(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(param_3 + 0x34)" (pointer_expression "*(undefined4 *)(param_2 + 0x34)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_3 + 0x34)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x34)" (( "(") (binary_expression "param_3 + 0x34" (identifier "param_3") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "uVar2 = *(undefined4 *)(param_3 + 0x3c);" (assignment_expression "uVar2 = *(undefined4 *)(param_3 + 0x3c)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(param_3 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x3c)" (( "(") (binary_expression "param_3 + 0x3c" (identifier "param_3") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0x30) = uVar1;" (assignment_expression "*(undefined4 *)(param_2 + 0x30) = uVar1" (pointer_expression "*(undefined4 *)(param_2 + 0x30)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = *(undefined4 *)(param_3 + 0x38);" (assignment_expression "uVar1 = *(undefined4 *)(param_3 + 0x38)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined4 *)(param_3 + 0x38)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x38)" (( "(") (binary_expression "param_3 + 0x38" (identifier "param_3") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0x3c) = uVar2;" (assignment_expression "*(undefined4 *)(param_2 + 0x3c) = uVar2" (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0x38) = uVar1;" (assignment_expression "*(undefined4 *)(param_2 + 0x38) = uVar1" (pointer_expression "*(undefined4 *)(param_2 + 0x38)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x38)" (( "(") (binary_expression "param_2 + 0x38" (identifier "param_2") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (if_statement "if ((*(byte *)(param_2 + 0x2a) & 0x20) != 0) {\n    local_20[0] = param_2;\n    piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n    if (*piVar4 == 0) {\n                    \n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }\n    iVar5 = FUN_001c98b0();\n    do {\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    \n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    } while (param_2 != iVar5);\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_2 + 0x2a) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)(param_2 + 0x2a) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_2 + 0x2a) & 0x20)" (( "(") (binary_expression "*(byte *)(param_2 + 0x2a) & 0x20" (pointer_expression "*(byte *)(param_2 + 0x2a)" (* "*") (cast_expression "(byte *)(param_2 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x2a)" (( "(") (binary_expression "param_2 + 0x2a" (identifier "param_2") (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    local_20[0] = param_2;\n    piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n    if (*piVar4 == 0) {\n                    \n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }\n    iVar5 = FUN_001c98b0();\n    do {\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    \n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    } while (param_2 != iVar5);\n  }" ({ "{") (expression_statement "local_20[0] = param_2;" (assignment_expression "local_20[0] = param_2" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);" (assignment_expression "piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20)" (identifier "piVar4") (= "=") (cast_expression "(int *)FUN_00182a30(param_1 + 0xa8,local_20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00182a30(param_1 + 0xa8,local_20)" (identifier "FUN_00182a30") (argument_list "(param_1 + 0xa8,local_20)" (( "(") (binary_expression "param_1 + 0xa8" (identifier "param_1") (+ "+") (number_literal "0xa8")) (, ",") (identifier "local_20") () ")"))))) (; ";")) (if_statement "if (*piVar4 == 0) {\n                    \n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }" (if "if") (parenthesized_expression "(*piVar4 == 0)" (( "(") (binary_expression "*piVar4 == 0" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);\n    }" ({ "{") (expression_statement "FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);" (call_expression "FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3)" (identifier "FUN_00069d00") (argument_list "("../../gold/resolve.cc",0x457,"override_with_special",param_3)" (( "(") (string_literal ""../../gold/resolve.cc"" (" """) (string_content "../../gold/resolve.cc") (" """)) (, ",") (number_literal "0x457") (, ",") (string_literal ""override_with_special"" (" """) (string_content "override_with_special") (" """)) (, ",") (identifier "param_3") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar5 = FUN_001c98b0();" (assignment_expression "iVar5 = FUN_001c98b0()" (identifier "iVar5") (= "=") (call_expression "FUN_001c98b0()" (identifier "FUN_001c98b0") (argument_list "()" (( "(") () ")")))) (; ";")) (do_statement "do {\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    \n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    } while (param_2 != iVar5);" (do "do") (compound_statement "{\n      FUN_001ca260(iVar5,param_3);\n      uVar1 = *(undefined4 *)(param_3 + 0x34);\n      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);\n      *(undefined4 *)(iVar5 + 0x34) = uVar1;\n      uVar1 = *(undefined4 *)(param_3 + 0x38);\n      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);\n      *(undefined4 *)(iVar5 + 0x38) = uVar1;\n      local_20[0] = iVar5;\n      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);\n      if (*piVar4 == 0) {\n                    \n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }\n      iVar5 = FUN_001c98b0();\n    }" ({ "{") (expression_statement "FUN_001ca260(iVar5,param_3);" (call_expression "FUN_001ca260(iVar5,param_3)" (identifier "FUN_001ca260") (argument_list "(iVar5,param_3)" (( "(") (identifier "iVar5") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "uVar1 = *(undefined4 *)(param_3 + 0x34);" (assignment_expression "uVar1 = *(undefined4 *)(param_3 + 0x34)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined4 *)(param_3 + 0x34)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x34)" (( "(") (binary_expression "param_3 + 0x34" (identifier "param_3") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);" (assignment_expression "*(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30)" (pointer_expression "*(undefined4 *)(iVar5 + 0x30)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x30)" (( "(") (binary_expression "iVar5 + 0x30" (identifier "iVar5") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_3 + 0x30)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x30)" (( "(") (binary_expression "param_3 + 0x30" (identifier "param_3") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar5 + 0x34) = uVar1;" (assignment_expression "*(undefined4 *)(iVar5 + 0x34) = uVar1" (pointer_expression "*(undefined4 *)(iVar5 + 0x34)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x34)" (( "(") (binary_expression "iVar5 + 0x34" (identifier "iVar5") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = *(undefined4 *)(param_3 + 0x38);" (assignment_expression "uVar1 = *(undefined4 *)(param_3 + 0x38)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined4 *)(param_3 + 0x38)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x38)" (( "(") (binary_expression "param_3 + 0x38" (identifier "param_3") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);" (assignment_expression "*(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c)" (pointer_expression "*(undefined4 *)(iVar5 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x3c)" (( "(") (binary_expression "iVar5 + 0x3c" (identifier "iVar5") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_3 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x3c)" (( "(") (binary_expression "param_3 + 0x3c" (identifier "param_3") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar5 + 0x38) = uVar1;" (assignment_expression "*(undefined4 *)(iVar5 + 0x38) = uVar1" (pointer_expression "*(undefined4 *)(iVar5 + 0x38)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x38)" (( "(") (binary_expression "iVar5 + 0x38" (identifier "iVar5") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "local_20[0] = iVar5;" (assignment_expression "local_20[0] = iVar5" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);" (assignment_expression "piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20)" (identifier "piVar4") (= "=") (cast_expression "(int *)FUN_00182a30(param_1 + 0xa8,local_20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00182a30(param_1 + 0xa8,local_20)" (identifier "FUN_00182a30") (argument_list "(param_1 + 0xa8,local_20)" (( "(") (binary_expression "param_1 + 0xa8" (identifier "param_1") (+ "+") (number_literal "0xa8")) (, ",") (identifier "local_20") () ")"))))) (; ";")) (if_statement "if (*piVar4 == 0) {\n                    \n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }" (if "if") (parenthesized_expression "(*piVar4 == 0)" (( "(") (binary_expression "*piVar4 == 0" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");\n      }" ({ "{") (expression_statement "FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");" (call_expression "FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special")" (identifier "FUN_00069d00") (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 "iVar5 = FUN_001c98b0();" (assignment_expression "iVar5 = FUN_001c98b0()" (identifier "iVar5") (= "=") (call_expression "FUN_001c98b0()" (identifier "FUN_001c98b0") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 != iVar5)" (( "(") (binary_expression "param_2 != iVar5" (identifier "param_2") (!= "!=") (identifier "iVar5")) () ")")) (; ";")) (} "}"))) (expression_statement "bVar3 = *(byte *)(param_2 + 0x28) >> 4;" (assignment_expression "bVar3 = *(byte *)(param_2 + 0x28) >> 4" (identifier "bVar3") (= "=") (binary_expression "*(byte *)(param_2 + 0x28) >> 4" (pointer_expression "*(byte *)(param_2 + 0x28)" (* "*") (cast_expression "(byte *)(param_2 + 0x28)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")")))) (>> ">>") (number_literal "4"))) (; ";")) (if_statement "if (bVar3 != 0) {\n    if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {\n      return;\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {\n      return;\n    }\n  }" (if "if") (parenthesized_expression "(bVar3 != 0)" (( "(") (binary_expression "bVar3 != 0" (identifier "bVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {\n      return;\n    }\n    if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {\n      return;\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {\n      return;\n    }\n  }" ({ "{") (if_statement "if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {\n      return;\n    }" (if "if") (parenthesized_expression "(1 < (*(byte *)(param_2 + 0x29) & 3) - 1)" (( "(") (binary_expression "1 < (*(byte *)(param_2 + 0x29) & 3) - 1" (number_literal "1") (< "<") (binary_expression "(*(byte *)(param_2 + 0x29) & 3) - 1" (parenthesized_expression "(*(byte *)(param_2 + 0x29) & 3)" (( "(") (binary_expression "*(byte *)(param_2 + 0x29) & 3" (pointer_expression "*(byte *)(param_2 + 0x29)" (* "*") (cast_expression "(byte *)(param_2 + 0x29)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x29)" (( "(") (binary_expression "param_2 + 0x29" (identifier "param_2") (+ "+") (number_literal "0x29")) () ")")))) (& "&") (number_literal "3")) () ")")) (- "-") (number_literal "1"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {\n      return;\n    }" (if "if") (parenthesized_expression "((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10))" (( "(") (binary_expression "(1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)" (parenthesized_expression "(1 < (bVar3 + 0xf & 0xf))" (( "(") (binary_expression "1 < (bVar3 + 0xf & 0xf)" (number_literal "1") (< "<") (parenthesized_expression "(bVar3 + 0xf & 0xf)" (( "(") (binary_expression "bVar3 + 0xf & 0xf" (binary_expression "bVar3 + 0xf" (identifier "bVar3") (+ "+") (number_literal "0xf")) (& "&") (number_literal "0xf")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(bVar3 != 10)" (( "(") (binary_expression "bVar3 != 10" (identifier "bVar3") (!= "!=") (number_literal "10")) () ")"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }" (if "if") (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) == 0)" (( "(") (binary_expression "*(int *)(DAT_0038f378 + 8) == 0" (pointer_expression "*(int *)(DAT_0038f378 + 8)" (* "*") (cast_expression "(int *)(DAT_0038f378 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 8)" (( "(") (binary_expression "DAT_0038f378 + 8" (identifier "DAT_0038f378") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }" ({ "{") (expression_statement "FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x5c,"options",0)" (identifier "FUN_00069d00") (argument_list "("../../gold/parameters.h",0x5c,"options",0)" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {\n      return;\n    }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0')" (( "(") (binary_expression "*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0'" (pointer_expression "*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d)" (* "*") (cast_expression "(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) + 0x318d)" (( "(") (binary_expression "*(int *)(DAT_0038f378 + 8) + 0x318d" (pointer_expression "*(int *)(DAT_0038f378 + 8)" (* "*") (cast_expression "(int *)(DAT_0038f378 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 8)" (( "(") (binary_expression "DAT_0038f378 + 8" (identifier "DAT_0038f378") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x318d")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_00177f20(param_1,param_2);" (call_expression "FUN_00177f20(param_1,param_2)" (identifier "FUN_00177f20") (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* 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 uVar1;
  type_4 VVar2;
  type_5 SVar3;
  type_6 var_6;
  type_7 *ppSVar5;
  type_2<64> *var_5;
  type_1 *in_stack_ffffffc4;
  type_8 *in_stack_ffffffc8;
  type_2<64> *local_20 [4];
  
  Symbol::var_1(&var_4->super_Symbol,&fromsym->super_Symbol);
  VVar2 = fromsym->value_;
  *(type_3 *)((int)&var_4->value_ + 4) = *(type_3 *)((int)&fromsym->value_ + 4);
  uVar1 = *(type_3 *)((int)&fromsym->symsize_ + 4);
  *(int *)&var_4->value_ = (int)VVar2;
  SVar3 = fromsym->symsize_;
  *(type_3 *)((int)&var_4->symsize_ + 4) = uVar1;
  *(int *)&var_4->symsize_ = (int)SVar3;
  if (((var_4->super_Symbol).field_0x2a & 0x20) != 0) {
    local_20[0] = var_4;
    ppSVar5 = std::__detail::
              type_9<gold::type_8*,type_10::pair<gold::type_8*_const,type_11::type_8*>,type_10::allocator<std::pair<gold::type_8*_const,type_11::type_8*>_>,type_10::__detail::_Select1st,type_10::equal_to<gold::type_8*>,type_10::hash<gold::type_8*>,type_10::__detail::_Mod_range_hashing,type_10::__detail::_Default_ranged_hash,type_10::__detail::_Prime_rehash_policy,type_10::__detail::_Hashtable_traits<false,type_12,type_13>,type_13>
              ::operator[]((type_9<gold::type_8*,type_10::pair<gold::type_8*_const,type_11::type_8*>,type_10::allocator<std::pair<gold::type_8*_const,type_11::type_8*>_>,type_10::__detail::_Select1st,type_10::equal_to<gold::type_8*>,type_10::hash<gold::type_8*>,type_10::__detail::_Mod_range_hashing,type_10::__detail::_Default_ranged_hash,type_10::__detail::_Prime_rehash_policy,type_10::__detail::_Hashtable_traits<false,type_12,type_13>,type_13>
                            *)&this->weak_aliases_,(type_14 *)local_20);
    if (*ppSVar5 == (type_7)0x0) {
                    /* WARNING: Subroutine does not return */
      var_2("../../gold/resolve.cc",0x457,"override_with_special");
    }
    var_5 = var_3<64>(in_stack_ffffffc4,in_stack_ffffffc8);
    do {
      Symbol::var_1(&var_5->super_Symbol,&fromsym->super_Symbol);
      uVar1 = *(type_3 *)((int)&fromsym->value_ + 4);
      *(int *)&var_5->value_ = (int)fromsym->value_;
      *(type_3 *)((int)&var_5->value_ + 4) = uVar1;
      SVar3 = fromsym->symsize_;
      *(type_3 *)((int)&var_5->symsize_ + 4) = *(type_3 *)((int)&fromsym->symsize_ + 4);
      *(int *)&var_5->symsize_ = (int)SVar3;
      local_20[0] = var_5;
      ppSVar5 = std::__detail::
                type_9<gold::type_8*,type_10::pair<gold::type_8*_const,type_11::type_8*>,type_10::allocator<std::pair<gold::type_8*_const,type_11::type_8*>_>,type_10::__detail::_Select1st,type_10::equal_to<gold::type_8*>,type_10::hash<gold::type_8*>,type_10::__detail::_Mod_range_hashing,type_10::__detail::_Default_ranged_hash,type_10::__detail::_Prime_rehash_policy,type_10::__detail::_Hashtable_traits<false,type_12,type_13>,type_13>
                ::operator[]((type_9<gold::type_8*,type_10::pair<gold::type_8*_const,type_11::type_8*>,type_10::allocator<std::pair<gold::type_8*_const,type_11::type_8*>_>,type_10::__detail::_Select1st,type_10::equal_to<gold::type_8*>,type_10::hash<gold::type_8*>,type_10::__detail::_Mod_range_hashing,type_10::__detail::_Default_ranged_hash,type_10::__detail::_Prime_rehash_policy,type_10::__detail::_Hashtable_traits<false,type_12,type_13>,type_13>
                              *)&this->weak_aliases_,(type_14 *)local_20);
      if (*ppSVar5 == (type_7)0x0) {
                    /* WARNING: Subroutine does not return */
        var_2("../../gold/resolve.cc",0x45d,"override_with_special");
      }
      var_5 = var_3<64>(in_stack_ffffffc4,in_stack_ffffffc8);
    } while (var_4 != var_5);
  }
  var_6 = (type_6)(var_4->super_Symbol).field_0x28 >> 4;
  if (var_6 != 0) {
    if (1 < ((type_6)(var_4->super_Symbol).field_0x29 & 3) - 1) {
      return;
    }
    if ((1 < (var_6 + 0xf & 0xf)) && (var_6 != 10)) {
      return;
    }
    if (parameters->options_ == (type_15 *)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: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (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: (identifier))) (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: (primitive_type) 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)) (identifier)))))) (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: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (identifier))) (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: (primitive_type) 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: (primitive_type) 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)) (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (return_statement))))

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

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

{
  undefined4 uVar1;
  undefined4 uVar2;
  byte bVar3;
  int *piVar4;
  int iVar5;
  int local_20 [4];
  
  FUN_001ca260(param_2,param_3);
  uVar1 = *(undefined4 *)(param_3 + 0x30);
  *(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(param_3 + 0x34);
  uVar2 = *(undefined4 *)(param_3 + 0x3c);
  *(undefined4 *)(param_2 + 0x30) = uVar1;
  uVar1 = *(undefined4 *)(param_3 + 0x38);
  *(undefined4 *)(param_2 + 0x3c) = uVar2;
  *(undefined4 *)(param_2 + 0x38) = uVar1;
  if ((*(byte *)(param_2 + 0x2a) & 0x20) != 0) {
    local_20[0] = param_2;
    piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);
    if (*piVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_00069d00("../../gold/resolve.cc",0x457,"override_with_special",param_3);
    }
    iVar5 = FUN_001c98b0();
    do {
      FUN_001ca260(iVar5,param_3);
      uVar1 = *(undefined4 *)(param_3 + 0x34);
      *(undefined4 *)(iVar5 + 0x30) = *(undefined4 *)(param_3 + 0x30);
      *(undefined4 *)(iVar5 + 0x34) = uVar1;
      uVar1 = *(undefined4 *)(param_3 + 0x38);
      *(undefined4 *)(iVar5 + 0x3c) = *(undefined4 *)(param_3 + 0x3c);
      *(undefined4 *)(iVar5 + 0x38) = uVar1;
      local_20[0] = iVar5;
      piVar4 = (int *)FUN_00182a30(param_1 + 0xa8,local_20);
      if (*piVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_00069d00("../../gold/resolve.cc",0x45d,"override_with_special");
      }
      iVar5 = FUN_001c98b0();
    } while (param_2 != iVar5);
  }
  bVar3 = *(byte *)(param_2 + 0x28) >> 4;
  if (bVar3 != 0) {
    if (1 < (*(byte *)(param_2 + 0x29) & 3) - 1) {
      return;
    }
    if ((1 < (bVar3 + 0xf & 0xf)) && (bVar3 != 10)) {
      return;
    }
    if (*(int *)(DAT_0038f378 + 8) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);
    }
    if (*(char *)(*(int *)(DAT_0038f378 + 8) + 0x318d) != '\0') {
      return;
    }
  }
  FUN_00177f20(param_1,param_2);
  return;
}

