
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: bool final_value_is_known(Symbol * this) */

bool __thiscall gold::Symbol::final_value_is_known(Symbol *this)

{
  General_options *pGVar1;
  Parameters *in_RSI;
  
  pGVar1 = parameters->options_;
  if (pGVar1 == (General_options *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
  }
  if ((pGVar1->shared_).value == false) {
    if ((pGVar1->pie_).value == false) {
      if ((pGVar1->relocatable_).value != false) {
        return false;
      }
    }
    else if ((this->field_0x38 & 0xf) != 6) {
      return false;
    }
  }
  else {
    if ((this->field_0x38 & 0xf) != 6) {
      return false;
    }
    if ((pGVar1->pie_).value == false) {
      return false;
    }
  }
  if ((this->field_0x3a & 7) == 0) {
    if (((ulong)((this->u1_).output_segment)->output_lists_[2].
                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.
                _M_finish & 0x100000000) != 0) {
      return false;
    }
    if ((this->u2_).shndx != 0) {
      return true;
    }
    if ((this->field_0x3b & 0x20) == 0) {
      return true;
    }
  }
  else if ((this->field_0x3a & 7) != 4) {
    return true;
  }
  if (parameters->doing_static_link_valid_ != false) {
    return parameters->doing_static_link_;
  }
                    /* WARNING: Subroutine does not return */
  Parameters::doing_static_link((Parameters *)this,in_RSI);
}



ulong FUN_00282ba0(long param_1)

{
  uint uVar1;
  long *plVar2;
  byte bVar3;
  long lVar4;
  ulong uVar5;
  
  lVar4 = *(long *)(PTR_DAT_004586c8 + 0x10);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");
  }
  if (*(char *)(lVar4 + 0x2a61) == '\0') {
    if (*(byte *)(lVar4 + 0x42d1) == 0) {
      if (*(char *)(lVar4 + 0x5051) != '\0') {
        return (ulong)*(byte *)(lVar4 + 0x42d1);
      }
    }
    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {
      return 0;
    }
  }
  else {
    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {
      return 0;
    }
    bVar3 = *(byte *)(lVar4 + 0x42d1);
    if (bVar3 == 0) goto LAB_00282bf6;
  }
  if ((*(byte *)(param_1 + 0x3a) & 7) == 0) {
    if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {
      return 0;
    }
    if (*(int *)(param_1 + 0x18) != 0) {
      return 1;
    }
    if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {
      return 1;
    }
  }
  else if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {
    return 1;
  }
  if (PTR_DAT_004586c8[0x20] == '\0') {
    FUN_002826e0();
    bVar3 = *(byte *)(param_1 + 0x3a) & 7;
    if (bVar3 == 1) {
                    /* WARNING: Could not recover jumptable at 0x00282d1f. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();
      return uVar5;
    }
    if (bVar3 == 0) {
      uVar1 = *(uint *)(param_1 + 0x18);
      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {
        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {
                    /* WARNING: Subroutine does not return */
          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");
        }
        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();
        if (lVar4 != 0) {
                    /* WARNING: Subroutine does not return */
          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");
        }
        plVar2 = *(long **)(param_1 + 0x10);
        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {
                    /* WARNING: Could not recover jumptable at 0x00282d48. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);
          return uVar5;
        }
        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {
                    /* WARNING: Subroutine does not return */
          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");
        }
        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);
      }
    }
    else if (4 < bVar3) {
                    /* WARNING: Subroutine does not return */
      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");
    }
    return 0;
  }
  bVar3 = PTR_DAT_004586c8[0x21];
LAB_00282bf6:
  return (ulong)bVar3;
}


SUB RSP,0x8
MOV RCX,qword ptr [0x004586c8]
MOV RDX,qword ptr [RCX + 0x10]
TEST RDX,RDX
JZ 0x00282c5a
CMP byte ptr [RDX + 0x2a61],0x0
JZ 0x00282c00
MOVZX EAX,byte ptr [RDI + 0x38]
AND EAX,0xf
CMP AL,0x6
JNZ 0x00282c53
MOVZX EAX,byte ptr [RDX + 0x42d1]
TEST AL,AL
JZ 0x00282bf6
MOVZX EAX,byte ptr [RDI + 0x3a]
AND EAX,0x7
JZ 0x00282c20
CMP AL,0x4
JNZ 0x00282c37
CMP byte ptr [RCX + 0x20],0x0
JZ 0x00282c72
MOVZX EAX,byte ptr [RCX + 0x21]
ADD RSP,0x8
RET
MOVZX EAX,byte ptr [RDX + 0x42d1]
TEST AL,AL
JNZ 0x00282c48
CMP byte ptr [RDX + 0x5051],0x0
JZ 0x00282bdb
ADD RSP,0x8
RET
MOV RAX,qword ptr [RDI + 0x10]
TEST byte ptr [RAX + 0x3c],0x1
JNZ 0x00282c53
MOV EAX,dword ptr [RDI + 0x18]
TEST EAX,EAX
JNZ 0x00282c37
TEST byte ptr [RDI + 0x3b],0x20
JNZ 0x00282be8
MOV EAX,0x1
ADD RSP,0x8
RET
MOVZX EAX,byte ptr [RDI + 0x38]
AND EAX,0xf
CMP AL,0x6
JZ 0x00282bdb
XOR EAX,EAX
ADD RSP,0x8
RET
LEA RDX,[0x39e408]
MOV ESI,0x5c
LEA RDI,[0x380279]
CALL 0x0018dcf0
CALL 0x002826e0
NOP
NOP dword ptr [RAX + RAX*0x1]
(translation_unit "ulong FUN_00282ba0(long param_1)\n\n{\n  uint uVar1;\n  long *plVar2;\n  byte bVar3;\n  long lVar4;\n  ulong uVar5;\n  \n  lVar4 = *(long *)(PTR_DAT_004586c8 + 0x10);\n  if (lVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(lVar4 + 0x2a61) == '\0') {\n    if (*(byte *)(lVar4 + 0x42d1) == 0) {\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }\n    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n  }\n  else {\n    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n    bVar3 = *(byte *)(lVar4 + 0x42d1);\n    if (bVar3 == 0) goto LAB_00282bf6;\n  }\n  if ((*(byte *)(param_1 + 0x3a) & 7) == 0) {\n    if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n      return 0;\n    }\n    if (*(int *)(param_1 + 0x18) != 0) {\n      return 1;\n    }\n    if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {\n      return 1;\n    }\n  }\n  else if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {\n    return 1;\n  }\n  if (PTR_DAT_004586c8[0x20] == '\0') {\n    FUN_002826e0();\n    bVar3 = *(byte *)(param_1 + 0x3a) & 7;\n    if (bVar3 == 1) {\n                    /* WARNING: Could not recover jumptable at 0x00282d1f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }\n    if (bVar3 == 0) {\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    /* WARNING: Could not recover jumptable at 0x00282d48. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }\n    else if (4 < bVar3) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }\n    return 0;\n  }\n  bVar3 = PTR_DAT_004586c8[0x21];\nLAB_00282bf6:\n  return (ulong)bVar3;\n}\n\n" (function_definition "ulong FUN_00282ba0(long param_1)\n\n{\n  uint uVar1;\n  long *plVar2;\n  byte bVar3;\n  long lVar4;\n  ulong uVar5;\n  \n  lVar4 = *(long *)(PTR_DAT_004586c8 + 0x10);\n  if (lVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(lVar4 + 0x2a61) == '\0') {\n    if (*(byte *)(lVar4 + 0x42d1) == 0) {\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }\n    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n  }\n  else {\n    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n    bVar3 = *(byte *)(lVar4 + 0x42d1);\n    if (bVar3 == 0) goto LAB_00282bf6;\n  }\n  if ((*(byte *)(param_1 + 0x3a) & 7) == 0) {\n    if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n      return 0;\n    }\n    if (*(int *)(param_1 + 0x18) != 0) {\n      return 1;\n    }\n    if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {\n      return 1;\n    }\n  }\n  else if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {\n    return 1;\n  }\n  if (PTR_DAT_004586c8[0x20] == '\0') {\n    FUN_002826e0();\n    bVar3 = *(byte *)(param_1 + 0x3a) & 7;\n    if (bVar3 == 1) {\n                    /* WARNING: Could not recover jumptable at 0x00282d1f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }\n    if (bVar3 == 0) {\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    /* WARNING: Could not recover jumptable at 0x00282d48. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }\n    else if (4 < bVar3) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }\n    return 0;\n  }\n  bVar3 = PTR_DAT_004586c8[0x21];\nLAB_00282bf6:\n  return (ulong)bVar3;\n}" type_identifier (function_declarator "FUN_00282ba0(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  uint uVar1;\n  long *plVar2;\n  byte bVar3;\n  long lVar4;\n  ulong uVar5;\n  \n  lVar4 = *(long *)(PTR_DAT_004586c8 + 0x10);\n  if (lVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(lVar4 + 0x2a61) == '\0') {\n    if (*(byte *)(lVar4 + 0x42d1) == 0) {\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }\n    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n  }\n  else {\n    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n    bVar3 = *(byte *)(lVar4 + 0x42d1);\n    if (bVar3 == 0) goto LAB_00282bf6;\n  }\n  if ((*(byte *)(param_1 + 0x3a) & 7) == 0) {\n    if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n      return 0;\n    }\n    if (*(int *)(param_1 + 0x18) != 0) {\n      return 1;\n    }\n    if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {\n      return 1;\n    }\n  }\n  else if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {\n    return 1;\n  }\n  if (PTR_DAT_004586c8[0x20] == '\0') {\n    FUN_002826e0();\n    bVar3 = *(byte *)(param_1 + 0x3a) & 7;\n    if (bVar3 == 1) {\n                    /* WARNING: Could not recover jumptable at 0x00282d1f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }\n    if (bVar3 == 0) {\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    /* WARNING: Could not recover jumptable at 0x00282d48. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }\n    else if (4 < bVar3) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }\n    return 0;\n  }\n  bVar3 = PTR_DAT_004586c8[0x21];\nLAB_00282bf6:\n  return (ulong)bVar3;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (expression_statement "lVar4 = *(long *)(PTR_DAT_004586c8 + 0x10);" (assignment_expression "lVar4 = *(long *)(PTR_DAT_004586c8 + 0x10)" identifier = (pointer_expression "*(long *)(PTR_DAT_004586c8 + 0x10)" * (cast_expression "(long *)(PTR_DAT_004586c8 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_004586c8 + 0x10)" ( (binary_expression "PTR_DAT_004586c8 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (lVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");\n  }" { comment (expression_statement "FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0018dcf0("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (if_statement "if (*(char *)(lVar4 + 0x2a61) == '\0') {\n    if (*(byte *)(lVar4 + 0x42d1) == 0) {\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }\n    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n  }\n  else {\n    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n    bVar3 = *(byte *)(lVar4 + 0x42d1);\n    if (bVar3 == 0) goto LAB_00282bf6;\n  }" if (parenthesized_expression "(*(char *)(lVar4 + 0x2a61) == '\0')" ( (binary_expression "*(char *)(lVar4 + 0x2a61) == '\0'" (pointer_expression "*(char *)(lVar4 + 0x2a61)" * (cast_expression "(char *)(lVar4 + 0x2a61)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x2a61)" ( (binary_expression "lVar4 + 0x2a61" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (*(byte *)(lVar4 + 0x42d1) == 0) {\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }\n    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n  }" { (if_statement "if (*(byte *)(lVar4 + 0x42d1) == 0) {\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }\n    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }" if (parenthesized_expression "(*(byte *)(lVar4 + 0x42d1) == 0)" ( (binary_expression "*(byte *)(lVar4 + 0x42d1) == 0" (pointer_expression "*(byte *)(lVar4 + 0x42d1)" * (cast_expression "(byte *)(lVar4 + 0x42d1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x42d1)" ( (binary_expression "lVar4 + 0x42d1" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }" { (if_statement "if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }" if (parenthesized_expression "(*(char *)(lVar4 + 0x5051) != '\0')" ( (binary_expression "*(char *)(lVar4 + 0x5051) != '\0'" (pointer_expression "*(char *)(lVar4 + 0x5051)" * (cast_expression "(char *)(lVar4 + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x5051)" ( (binary_expression "lVar4 + 0x5051" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }" { (return_statement "return (ulong)*(byte *)(lVar4 + 0x42d1);" return (binary_expression "(ulong)*(byte *)(lVar4 + 0x42d1)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)(lVar4 + 0x42d1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x42d1)" ( (binary_expression "lVar4 + 0x42d1" identifier + number_literal) )))) ;) })) }) (else_clause "else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }" else (if_statement "if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }" if (parenthesized_expression "((*(byte *)(param_1 + 0x38) & 0xf) != 6)" ( (binary_expression "(*(byte *)(param_1 + 0x38) & 0xf) != 6" (parenthesized_expression "(*(byte *)(param_1 + 0x38) & 0xf)" ( (binary_expression "*(byte *)(param_1 + 0x38) & 0xf" (pointer_expression "*(byte *)(param_1 + 0x38)" * (cast_expression "(byte *)(param_1 + 0x38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })))) }) (else_clause "else {\n    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n    bVar3 = *(byte *)(lVar4 + 0x42d1);\n    if (bVar3 == 0) goto LAB_00282bf6;\n  }" else (compound_statement "{\n    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n    bVar3 = *(byte *)(lVar4 + 0x42d1);\n    if (bVar3 == 0) goto LAB_00282bf6;\n  }" { (if_statement "if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }" if (parenthesized_expression "((*(byte *)(param_1 + 0x38) & 0xf) != 6)" ( (binary_expression "(*(byte *)(param_1 + 0x38) & 0xf) != 6" (parenthesized_expression "(*(byte *)(param_1 + 0x38) & 0xf)" ( (binary_expression "*(byte *)(param_1 + 0x38) & 0xf" (pointer_expression "*(byte *)(param_1 + 0x38)" * (cast_expression "(byte *)(param_1 + 0x38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar3 = *(byte *)(lVar4 + 0x42d1);" (assignment_expression "bVar3 = *(byte *)(lVar4 + 0x42d1)" identifier = (pointer_expression "*(byte *)(lVar4 + 0x42d1)" * (cast_expression "(byte *)(lVar4 + 0x42d1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x42d1)" ( (binary_expression "lVar4 + 0x42d1" identifier + number_literal) ))))) ;) (if_statement "if (bVar3 == 0) goto LAB_00282bf6;" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00282bf6;" goto statement_identifier ;)) }))) (if_statement "if ((*(byte *)(param_1 + 0x3a) & 7) == 0) {\n    if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n      return 0;\n    }\n    if (*(int *)(param_1 + 0x18) != 0) {\n      return 1;\n    }\n    if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {\n      return 1;\n    }\n  }\n  else if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {\n    return 1;\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x3a) & 7) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x3a) & 7) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x3a) & 7)" ( (binary_expression "*(byte *)(param_1 + 0x3a) & 7" (pointer_expression "*(byte *)(param_1 + 0x3a)" * (cast_expression "(byte *)(param_1 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3a)" ( (binary_expression "param_1 + 0x3a" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n      return 0;\n    }\n    if (*(int *)(param_1 + 0x18) != 0) {\n      return 1;\n    }\n    if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {\n      return 1;\n    }\n  }" { (if_statement "if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n      return 0;\n    }" if (parenthesized_expression "((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0)" ( (binary_expression "(*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0" (parenthesized_expression "(*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1)" ( (binary_expression "*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1" (pointer_expression "*(byte *)(*(long *)(param_1 + 0x10) + 0x3c)" * (cast_expression "(byte *)(*(long *)(param_1 + 0x10) + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x10) + 0x3c)" ( (binary_expression "*(long *)(param_1 + 0x10) + 0x3c" (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(int *)(param_1 + 0x18) != 0) {\n      return 1;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x18) != 0)" ( (binary_expression "*(int *)(param_1 + 0x18) != 0" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {\n      return 1;\n    }" if (parenthesized_expression "((*(byte *)(param_1 + 0x3b) & 0x20) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x3b) & 0x20) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x3b) & 0x20)" ( (binary_expression "*(byte *)(param_1 + 0x3b) & 0x20" (pointer_expression "*(byte *)(param_1 + 0x3b)" * (cast_expression "(byte *)(param_1 + 0x3b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3b)" ( (binary_expression "param_1 + 0x3b" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {\n    return 1;\n  }" else (if_statement "if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {\n    return 1;\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x3a) & 7) != 4)" ( (binary_expression "(*(byte *)(param_1 + 0x3a) & 7) != 4" (parenthesized_expression "(*(byte *)(param_1 + 0x3a) & 7)" ( (binary_expression "*(byte *)(param_1 + 0x3a) & 7" (pointer_expression "*(byte *)(param_1 + 0x3a)" * (cast_expression "(byte *)(param_1 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3a)" ( (binary_expression "param_1 + 0x3a" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })))) (if_statement "if (PTR_DAT_004586c8[0x20] == '\0') {\n    FUN_002826e0();\n    bVar3 = *(byte *)(param_1 + 0x3a) & 7;\n    if (bVar3 == 1) {\n                    /* WARNING: Could not recover jumptable at 0x00282d1f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }\n    if (bVar3 == 0) {\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    /* WARNING: Could not recover jumptable at 0x00282d48. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }\n    else if (4 < bVar3) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }\n    return 0;\n  }" if (parenthesized_expression "(PTR_DAT_004586c8[0x20] == '\0')" ( (binary_expression "PTR_DAT_004586c8[0x20] == '\0'" (subscript_expression "PTR_DAT_004586c8[0x20]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_002826e0();\n    bVar3 = *(byte *)(param_1 + 0x3a) & 7;\n    if (bVar3 == 1) {\n                    /* WARNING: Could not recover jumptable at 0x00282d1f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }\n    if (bVar3 == 0) {\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    /* WARNING: Could not recover jumptable at 0x00282d48. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }\n    else if (4 < bVar3) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }\n    return 0;\n  }" { (expression_statement "FUN_002826e0();" (call_expression "FUN_002826e0()" identifier (argument_list "()" ( ))) ;) (expression_statement "bVar3 = *(byte *)(param_1 + 0x3a) & 7;" (assignment_expression "bVar3 = *(byte *)(param_1 + 0x3a) & 7" identifier = (binary_expression "*(byte *)(param_1 + 0x3a) & 7" (pointer_expression "*(byte *)(param_1 + 0x3a)" * (cast_expression "(byte *)(param_1 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3a)" ( (binary_expression "param_1 + 0x3a" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if (bVar3 == 1) {\n                    /* WARNING: Could not recover jumptable at 0x00282d1f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }" if (parenthesized_expression "(bVar3 == 1)" ( (binary_expression "bVar3 == 1" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00282d1f. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }" { comment comment (expression_statement "uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();" (assignment_expression "uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))()" identifier = (call_expression "(**(code **)(**(long **)(param_1 + 0x10) + 0x48))()" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x10) + 0x48))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 0x10) + 0x48)" * (pointer_expression "*(code **)(**(long **)(param_1 + 0x10) + 0x48)" * (cast_expression "(code **)(**(long **)(param_1 + 0x10) + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 0x10) + 0x48)" ( (binary_expression "**(long **)(param_1 + 0x10) + 0x48" (pointer_expression "**(long **)(param_1 + 0x10)" * (pointer_expression "*(long **)(param_1 + 0x10)" * (cast_expression "(long **)(param_1 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar5;" return identifier ;) })) (if_statement "if (bVar3 == 0) {\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    /* WARNING: Could not recover jumptable at 0x00282d48. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }\n    else if (4 < bVar3) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    /* WARNING: Could not recover jumptable at 0x00282d48. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }" { (expression_statement "uVar1 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    /* WARNING: Could not recover jumptable at 0x00282d48. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }" if (parenthesized_expression "((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0))" ( (binary_expression "(uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)" (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(param_1 + 0x3b) & 0x20) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x3b) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x3b) & 0x20)" ( (binary_expression "*(byte *)(param_1 + 0x3b) & 0x20" (pointer_expression "*(byte *)(param_1 + 0x3b)" * (cast_expression "(byte *)(param_1 + 0x3b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3b)" ( (binary_expression "param_1 + 0x3b" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    /* WARNING: Could not recover jumptable at 0x00282d48. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }" { (if_statement "if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }" if (parenthesized_expression "((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0)" ( (binary_expression "(*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0" (parenthesized_expression "(*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1)" ( (binary_expression "*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1" (pointer_expression "*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c)" * (cast_expression "(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*(long **)(param_1 + 0x10) + 0x3c)" ( (binary_expression "(long)*(long **)(param_1 + 0x10) + 0x3c" (cast_expression "(long)*(long **)(param_1 + 0x10)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*(long **)(param_1 + 0x10)" * (cast_expression "(long **)(param_1 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }" { comment (expression_statement "FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");" (call_expression "FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section")" identifier (argument_list "("../../gold/symtab.cc",0x1ee,"output_section")" ( (string_literal ""../../gold/symtab.cc"" " string_content ") , number_literal , (string_literal ""output_section"" " string_content ") ))) ;) })) (expression_statement "lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();" (assignment_expression "lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))()" identifier = (call_expression "(**(code **)(**(long **)(param_1 + 0x10) + 0x28))()" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x10) + 0x28))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 0x10) + 0x28)" * (pointer_expression "*(code **)(**(long **)(param_1 + 0x10) + 0x28)" * (cast_expression "(code **)(**(long **)(param_1 + 0x10) + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 0x10) + 0x28)" ( (binary_expression "**(long **)(param_1 + 0x10) + 0x28" (pointer_expression "**(long **)(param_1 + 0x10)" * (pointer_expression "*(long **)(param_1 + 0x10)" * (cast_expression "(long **)(param_1 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (lVar4 != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }" { comment (expression_statement "FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");" (call_expression "FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section")" identifier (argument_list "("../../gold/symtab.cc",0x1ef,"output_section")" ( (string_literal ""../../gold/symtab.cc"" " string_content ") , number_literal , (string_literal ""output_section"" " string_content ") ))) ;) })) (expression_statement "plVar2 = *(long **)(param_1 + 0x10);" (assignment_expression "plVar2 = *(long **)(param_1 + 0x10)" identifier = (pointer_expression "*(long **)(param_1 + 0x10)" * (cast_expression "(long **)(param_1 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    /* WARNING: Could not recover jumptable at 0x00282d48. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }" if (parenthesized_expression "(*(code **)(*plVar2 + 0xc0) != FUN_001714a0)" ( (binary_expression "*(code **)(*plVar2 + 0xc0) != FUN_001714a0" (pointer_expression "*(code **)(*plVar2 + 0xc0)" * (cast_expression "(code **)(*plVar2 + 0xc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar2 + 0xc0)" ( (binary_expression "*plVar2 + 0xc0" (pointer_expression "*plVar2" * identifier) + number_literal) )))) != identifier) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00282d48. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }" { comment comment (expression_statement "uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);" (assignment_expression "uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1)" identifier = (call_expression "(**(code **)(*plVar2 + 0xc0))(plVar2,uVar1)" (parenthesized_expression "(**(code **)(*plVar2 + 0xc0))" ( (pointer_expression "**(code **)(*plVar2 + 0xc0)" * (pointer_expression "*(code **)(*plVar2 + 0xc0)" * (cast_expression "(code **)(*plVar2 + 0xc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar2 + 0xc0)" ( (binary_expression "*plVar2 + 0xc0" (pointer_expression "*plVar2" * identifier) + number_literal) ))))) )) (argument_list "(plVar2,uVar1)" ( identifier , identifier )))) ;) (return_statement "return uVar5;" return identifier ;) })) (if_statement "if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }" if (parenthesized_expression "((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1)" ( (binary_expression "(ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1" (call_expression "(ulong)(plVar2[0xb] - plVar2[10] >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(plVar2[0xb] - plVar2[10] >> 3)" ( (binary_expression "plVar2[0xb] - plVar2[10] >> 3" (binary_expression "plVar2[0xb] - plVar2[10]" (subscript_expression "plVar2[0xb]" identifier [ number_literal ]) - (subscript_expression "plVar2[10]" identifier [ number_literal ])) >> number_literal) ))) <= (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }" { comment (expression_statement "FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section")" identifier (argument_list "("../../gold/object.h",0x5c8,"do_output_section")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""do_output_section"" " string_content ") ))) ;) })) (return_statement "return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);" return (pointer_expression "*(ulong *)(plVar2[10] + (ulong)uVar1 * 8)" * (cast_expression "(ulong *)(plVar2[10] + (ulong)uVar1 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar2[10] + (ulong)uVar1 * 8)" ( (binary_expression "plVar2[10] + (ulong)uVar1 * 8" (subscript_expression "plVar2[10]" identifier [ number_literal ]) + (binary_expression "(ulong)uVar1 * 8" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) )))) ;) })) }) (else_clause "else if (4 < bVar3) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }" else (if_statement "if (4 < bVar3) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }" if (parenthesized_expression "(4 < bVar3)" ( (binary_expression "4 < bVar3" number_literal < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }" { comment (expression_statement "FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");" (call_expression "FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section")" identifier (argument_list "("../../gold/symtab.cc",0x1ff,"output_section")" ( (string_literal ""../../gold/symtab.cc"" " string_content ") , number_literal , (string_literal ""output_section"" " string_content ") ))) ;) })))) (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar3 = PTR_DAT_004586c8[0x21];" (assignment_expression "bVar3 = PTR_DAT_004586c8[0x21]" identifier = (subscript_expression "PTR_DAT_004586c8[0x21]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00282bf6:\n  return (ulong)bVar3;" statement_identifier : (return_statement "return (ulong)bVar3;" return (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier) ;)) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Enum "ELFOSABI": Some values do not have unique names */\n/* DWARF original prototype: bool final_value_is_known(Symbol * this) */\n\nbool __thiscall gold::Symbol::final_value_is_known(Symbol *this)\n\n{\n  General_options *pGVar1;\n  Parameters *in_RSI;\n  \n  pGVar1 = parameters->options_;\n  if (pGVar1 == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  if ((pGVar1->shared_).value == false) {\n    if ((pGVar1->pie_).value == false) {\n      if ((pGVar1->relocatable_).value != false) {\n        return false;\n      }\n    }\n    else if ((this->field_0x38 & 0xf) != 6) {\n      return false;\n    }\n  }\n  else {\n    if ((this->field_0x38 & 0xf) != 6) {\n      return false;\n    }\n    if ((pGVar1->pie_).value == false) {\n      return false;\n    }\n  }\n  if ((this->field_0x3a & 7) == 0) {\n    if (((ulong)((this->u1_).output_segment)->output_lists_[2].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_finish & 0x100000000) != 0) {\n      return false;\n    }\n    if ((this->u2_).shndx != 0) {\n      return true;\n    }\n    if ((this->field_0x3b & 0x20) == 0) {\n      return true;\n    }\n  }\n  else if ((this->field_0x3a & 7) != 4) {\n    return true;\n  }\n  if (parameters->doing_static_link_valid_ != false) {\n    return parameters->doing_static_link_;\n  }\n                    /* WARNING: Subroutine does not return */\n  Parameters::doing_static_link((Parameters *)this,in_RSI);\n}\n\n" comment comment comment (function_definition "bool __thiscall gold::Symbol::final_value_is_known(Symbol *this)\n\n{\n  General_options *pGVar1;\n  Parameters *in_RSI;\n  \n  pGVar1 = parameters->options_;\n  if (pGVar1 == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  if ((pGVar1->shared_).value == false) {\n    if ((pGVar1->pie_).value == false) {\n      if ((pGVar1->relocatable_).value != false) {\n        return false;\n      }\n    }\n    else if ((this->field_0x38 & 0xf) != 6) {\n      return false;\n    }\n  }\n  else {\n    if ((this->field_0x38 & 0xf) != 6) {\n      return false;\n    }\n    if ((pGVar1->pie_).value == false) {\n      return false;\n    }\n  }\n  if ((this->field_0x3a & 7) == 0) {\n    if (((ulong)((this->u1_).output_segment)->output_lists_[2].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_finish & 0x100000000) != 0) {\n      return false;\n    }\n    if ((this->u2_).shndx != 0) {\n      return true;\n    }\n    if ((this->field_0x3b & 0x20) == 0) {\n      return true;\n    }\n  }\n  else if ((this->field_0x3a & 7) != 4) {\n    return true;\n  }\n  if (parameters->doing_static_link_valid_ != false) {\n    return parameters->doing_static_link_;\n  }\n                    /* WARNING: Subroutine does not return */\n  Parameters::doing_static_link((Parameters *)this,in_RSI);\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Symbol::" identifier : : identifier : :) (function_declarator "final_value_is_known(Symbol *this)" identifier (parameter_list "(Symbol *this)" ( (parameter_declaration "Symbol *this" type_identifier (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  General_options *pGVar1;\n  Parameters *in_RSI;\n  \n  pGVar1 = parameters->options_;\n  if (pGVar1 == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  if ((pGVar1->shared_).value == false) {\n    if ((pGVar1->pie_).value == false) {\n      if ((pGVar1->relocatable_).value != false) {\n        return false;\n      }\n    }\n    else if ((this->field_0x38 & 0xf) != 6) {\n      return false;\n    }\n  }\n  else {\n    if ((this->field_0x38 & 0xf) != 6) {\n      return false;\n    }\n    if ((pGVar1->pie_).value == false) {\n      return false;\n    }\n  }\n  if ((this->field_0x3a & 7) == 0) {\n    if (((ulong)((this->u1_).output_segment)->output_lists_[2].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_finish & 0x100000000) != 0) {\n      return false;\n    }\n    if ((this->u2_).shndx != 0) {\n      return true;\n    }\n    if ((this->field_0x3b & 0x20) == 0) {\n      return true;\n    }\n  }\n  else if ((this->field_0x3a & 7) != 4) {\n    return true;\n  }\n  if (parameters->doing_static_link_valid_ != false) {\n    return parameters->doing_static_link_;\n  }\n                    /* WARNING: Subroutine does not return */\n  Parameters::doing_static_link((Parameters *)this,in_RSI);\n}" { (declaration "General_options *pGVar1;" type_identifier (pointer_declarator "*pGVar1" * identifier) ;) (declaration "Parameters *in_RSI;" type_identifier (pointer_declarator "*in_RSI" * identifier) ;) (expression_statement "pGVar1 = parameters->options_;" (assignment_expression "pGVar1 = parameters->options_" identifier = (field_expression "parameters->options_" identifier -> field_identifier)) ;) (if_statement "if (pGVar1 == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(pGVar1 == (General_options *)0x0)" ( (binary_expression "pGVar1 == (General_options *)0x0" 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 ((pGVar1->shared_).value == false) {\n    if ((pGVar1->pie_).value == false) {\n      if ((pGVar1->relocatable_).value != false) {\n        return false;\n      }\n    }\n    else if ((this->field_0x38 & 0xf) != 6) {\n      return false;\n    }\n  }\n  else {\n    if ((this->field_0x38 & 0xf) != 6) {\n      return false;\n    }\n    if ((pGVar1->pie_).value == false) {\n      return false;\n    }\n  }" if (parenthesized_expression "((pGVar1->shared_).value == false)" ( (binary_expression "(pGVar1->shared_).value == false" (field_expression "(pGVar1->shared_).value" (parenthesized_expression "(pGVar1->shared_)" ( (field_expression "pGVar1->shared_" identifier -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\n    if ((pGVar1->pie_).value == false) {\n      if ((pGVar1->relocatable_).value != false) {\n        return false;\n      }\n    }\n    else if ((this->field_0x38 & 0xf) != 6) {\n      return false;\n    }\n  }" { (if_statement "if ((pGVar1->pie_).value == false) {\n      if ((pGVar1->relocatable_).value != false) {\n        return false;\n      }\n    }\n    else if ((this->field_0x38 & 0xf) != 6) {\n      return false;\n    }" if (parenthesized_expression "((pGVar1->pie_).value == false)" ( (binary_expression "(pGVar1->pie_).value == false" (field_expression "(pGVar1->pie_).value" (parenthesized_expression "(pGVar1->pie_)" ( (field_expression "pGVar1->pie_" identifier -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\n      if ((pGVar1->relocatable_).value != false) {\n        return false;\n      }\n    }" { (if_statement "if ((pGVar1->relocatable_).value != false) {\n        return false;\n      }" if (parenthesized_expression "((pGVar1->relocatable_).value != false)" ( (binary_expression "(pGVar1->relocatable_).value != false" (field_expression "(pGVar1->relocatable_).value" (parenthesized_expression "(pGVar1->relocatable_)" ( (field_expression "pGVar1->relocatable_" identifier -> field_identifier) )) . field_identifier) != false) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) }) (else_clause "else if ((this->field_0x38 & 0xf) != 6) {\n      return false;\n    }" else (if_statement "if ((this->field_0x38 & 0xf) != 6) {\n      return false;\n    }" if (parenthesized_expression "((this->field_0x38 & 0xf) != 6)" ( (binary_expression "(this->field_0x38 & 0xf) != 6" (parenthesized_expression "(this->field_0x38 & 0xf)" ( (binary_expression "this->field_0x38 & 0xf" (field_expression "this->field_0x38" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })))) }) (else_clause "else {\n    if ((this->field_0x38 & 0xf) != 6) {\n      return false;\n    }\n    if ((pGVar1->pie_).value == false) {\n      return false;\n    }\n  }" else (compound_statement "{\n    if ((this->field_0x38 & 0xf) != 6) {\n      return false;\n    }\n    if ((pGVar1->pie_).value == false) {\n      return false;\n    }\n  }" { (if_statement "if ((this->field_0x38 & 0xf) != 6) {\n      return false;\n    }" if (parenthesized_expression "((this->field_0x38 & 0xf) != 6)" ( (binary_expression "(this->field_0x38 & 0xf) != 6" (parenthesized_expression "(this->field_0x38 & 0xf)" ( (binary_expression "this->field_0x38 & 0xf" (field_expression "this->field_0x38" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (if_statement "if ((pGVar1->pie_).value == false) {\n      return false;\n    }" if (parenthesized_expression "((pGVar1->pie_).value == false)" ( (binary_expression "(pGVar1->pie_).value == false" (field_expression "(pGVar1->pie_).value" (parenthesized_expression "(pGVar1->pie_)" ( (field_expression "pGVar1->pie_" identifier -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) }))) (if_statement "if ((this->field_0x3a & 7) == 0) {\n    if (((ulong)((this->u1_).output_segment)->output_lists_[2].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_finish & 0x100000000) != 0) {\n      return false;\n    }\n    if ((this->u2_).shndx != 0) {\n      return true;\n    }\n    if ((this->field_0x3b & 0x20) == 0) {\n      return true;\n    }\n  }\n  else if ((this->field_0x3a & 7) != 4) {\n    return true;\n  }" if (parenthesized_expression "((this->field_0x3a & 7) == 0)" ( (binary_expression "(this->field_0x3a & 7) == 0" (parenthesized_expression "(this->field_0x3a & 7)" ( (binary_expression "this->field_0x3a & 7" (field_expression "this->field_0x3a" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    if (((ulong)((this->u1_).output_segment)->output_lists_[2].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_finish & 0x100000000) != 0) {\n      return false;\n    }\n    if ((this->u2_).shndx != 0) {\n      return true;\n    }\n    if ((this->field_0x3b & 0x20) == 0) {\n      return true;\n    }\n  }" { (if_statement "if (((ulong)((this->u1_).output_segment)->output_lists_[2].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_finish & 0x100000000) != 0) {\n      return false;\n    }" if (parenthesized_expression "(((ulong)((this->u1_).output_segment)->output_lists_[2].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_finish & 0x100000000) != 0)" ( (binary_expression "((ulong)((this->u1_).output_segment)->output_lists_[2].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_finish & 0x100000000) != 0" (parenthesized_expression "((ulong)((this->u1_).output_segment)->output_lists_[2].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_finish & 0x100000000)" ( (binary_expression "(ulong)((this->u1_).output_segment)->output_lists_[2].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_finish & 0x100000000" (field_expression "(ulong)((this->u1_).output_segment)->output_lists_[2].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_finish" (field_expression "(ulong)((this->u1_).output_segment)->output_lists_[2].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "(ulong)((this->u1_).output_segment)->output_lists_[2].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "(ulong)((this->u1_).output_segment)->output_lists_[2].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "(ulong)((this->u1_).output_segment)->output_lists_[2].\n                super__Vector_base<gold::Output_data*,_std" (binary_expression "(ulong)((this->u1_).output_segment)->output_lists_[2].\n                super__Vector_base<gold" (field_expression "(ulong)((this->u1_).output_segment)->output_lists_[2].\n                super__Vector_base" (subscript_expression "(ulong)((this->u1_).output_segment)->output_lists_[2]" (field_expression "(ulong)((this->u1_).output_segment)->output_lists_" (call_expression "(ulong)((this->u1_).output_segment)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((this->u1_).output_segment)" ( (field_expression "(this->u1_).output_segment" (parenthesized_expression "(this->u1_)" ( (field_expression "this->u1_" identifier -> field_identifier) )) . field_identifier) ))) -> field_identifier) [ number_literal ]) . field_identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (if_statement "if ((this->u2_).shndx != 0) {\n      return true;\n    }" if (parenthesized_expression "((this->u2_).shndx != 0)" ( (binary_expression "(this->u2_).shndx != 0" (field_expression "(this->u2_).shndx" (parenthesized_expression "(this->u2_)" ( (field_expression "this->u2_" identifier -> field_identifier) )) . field_identifier) != number_literal) )) (compound_statement "{\n      return true;\n    }" { (return_statement "return true;" return true ;) })) (if_statement "if ((this->field_0x3b & 0x20) == 0) {\n      return true;\n    }" if (parenthesized_expression "((this->field_0x3b & 0x20) == 0)" ( (binary_expression "(this->field_0x3b & 0x20) == 0" (parenthesized_expression "(this->field_0x3b & 0x20)" ( (binary_expression "this->field_0x3b & 0x20" (field_expression "this->field_0x3b" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      return true;\n    }" { (return_statement "return true;" return true ;) })) }) (else_clause "else if ((this->field_0x3a & 7) != 4) {\n    return true;\n  }" else (if_statement "if ((this->field_0x3a & 7) != 4) {\n    return true;\n  }" if (parenthesized_expression "((this->field_0x3a & 7) != 4)" ( (binary_expression "(this->field_0x3a & 7) != 4" (parenthesized_expression "(this->field_0x3a & 7)" ( (binary_expression "this->field_0x3a & 7" (field_expression "this->field_0x3a" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })))) (if_statement "if (parameters->doing_static_link_valid_ != false) {\n    return parameters->doing_static_link_;\n  }" if (parenthesized_expression "(parameters->doing_static_link_valid_ != false)" ( (binary_expression "parameters->doing_static_link_valid_ != false" (field_expression "parameters->doing_static_link_valid_" identifier -> field_identifier) != false) )) (compound_statement "{\n    return parameters->doing_static_link_;\n  }" { (return_statement "return parameters->doing_static_link_;" return (field_expression "parameters->doing_static_link_" identifier -> field_identifier) ;) })) comment (labeled_statement "Parameters::doing_static_link((Parameters *)this,in_RSI);" statement_identifier : (ERROR ":" :) (expression_statement "doing_static_link((Parameters *)this,in_RSI);" (call_expression "doing_static_link((Parameters *)this,in_RSI)" identifier (argument_list "((Parameters *)this,in_RSI)" ( (cast_expression "(Parameters *)this" ( (type_descriptor "Parameters *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;)) })))
(translation_unit "ulong FUN_00282ba0(long param_1)\n\n{\n  uint uVar1;\n  long *plVar2;\n  byte bVar3;\n  long lVar4;\n  ulong uVar5;\n  \n  lVar4 = *(long *)(PTR_DAT_004586c8 + 0x10);\n  if (lVar4 == 0) {\n                    \n    FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(lVar4 + 0x2a61) == '\0') {\n    if (*(byte *)(lVar4 + 0x42d1) == 0) {\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }\n    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n  }\n  else {\n    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n    bVar3 = *(byte *)(lVar4 + 0x42d1);\n    if (bVar3 == 0) goto LAB_00282bf6;\n  }\n  if ((*(byte *)(param_1 + 0x3a) & 7) == 0) {\n    if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n      return 0;\n    }\n    if (*(int *)(param_1 + 0x18) != 0) {\n      return 1;\n    }\n    if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {\n      return 1;\n    }\n  }\n  else if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {\n    return 1;\n  }\n  if (PTR_DAT_004586c8[0x20] == '\0') {\n    FUN_002826e0();\n    bVar3 = *(byte *)(param_1 + 0x3a) & 7;\n    if (bVar3 == 1) {\n                    \n                    \n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }\n    if (bVar3 == 0) {\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }\n    else if (4 < bVar3) {\n                    \n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }\n    return 0;\n  }\n  bVar3 = PTR_DAT_004586c8[0x21];\nLAB_00282bf6:\n  return (ulong)bVar3;\n}\n\n" (function_definition "ulong FUN_00282ba0(long param_1)\n\n{\n  uint uVar1;\n  long *plVar2;\n  byte bVar3;\n  long lVar4;\n  ulong uVar5;\n  \n  lVar4 = *(long *)(PTR_DAT_004586c8 + 0x10);\n  if (lVar4 == 0) {\n                    \n    FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(lVar4 + 0x2a61) == '\0') {\n    if (*(byte *)(lVar4 + 0x42d1) == 0) {\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }\n    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n  }\n  else {\n    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n    bVar3 = *(byte *)(lVar4 + 0x42d1);\n    if (bVar3 == 0) goto LAB_00282bf6;\n  }\n  if ((*(byte *)(param_1 + 0x3a) & 7) == 0) {\n    if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n      return 0;\n    }\n    if (*(int *)(param_1 + 0x18) != 0) {\n      return 1;\n    }\n    if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {\n      return 1;\n    }\n  }\n  else if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {\n    return 1;\n  }\n  if (PTR_DAT_004586c8[0x20] == '\0') {\n    FUN_002826e0();\n    bVar3 = *(byte *)(param_1 + 0x3a) & 7;\n    if (bVar3 == 1) {\n                    \n                    \n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }\n    if (bVar3 == 0) {\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }\n    else if (4 < bVar3) {\n                    \n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }\n    return 0;\n  }\n  bVar3 = PTR_DAT_004586c8[0x21];\nLAB_00282bf6:\n  return (ulong)bVar3;\n}" type_identifier (function_declarator "FUN_00282ba0(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  uint uVar1;\n  long *plVar2;\n  byte bVar3;\n  long lVar4;\n  ulong uVar5;\n  \n  lVar4 = *(long *)(PTR_DAT_004586c8 + 0x10);\n  if (lVar4 == 0) {\n                    \n    FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(lVar4 + 0x2a61) == '\0') {\n    if (*(byte *)(lVar4 + 0x42d1) == 0) {\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }\n    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n  }\n  else {\n    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n    bVar3 = *(byte *)(lVar4 + 0x42d1);\n    if (bVar3 == 0) goto LAB_00282bf6;\n  }\n  if ((*(byte *)(param_1 + 0x3a) & 7) == 0) {\n    if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n      return 0;\n    }\n    if (*(int *)(param_1 + 0x18) != 0) {\n      return 1;\n    }\n    if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {\n      return 1;\n    }\n  }\n  else if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {\n    return 1;\n  }\n  if (PTR_DAT_004586c8[0x20] == '\0') {\n    FUN_002826e0();\n    bVar3 = *(byte *)(param_1 + 0x3a) & 7;\n    if (bVar3 == 1) {\n                    \n                    \n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }\n    if (bVar3 == 0) {\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }\n    else if (4 < bVar3) {\n                    \n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }\n    return 0;\n  }\n  bVar3 = PTR_DAT_004586c8[0x21];\nLAB_00282bf6:\n  return (ulong)bVar3;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (expression_statement "lVar4 = *(long *)(PTR_DAT_004586c8 + 0x10);" (assignment_expression "lVar4 = *(long *)(PTR_DAT_004586c8 + 0x10)" identifier = (pointer_expression "*(long *)(PTR_DAT_004586c8 + 0x10)" * (cast_expression "(long *)(PTR_DAT_004586c8 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_004586c8 + 0x10)" ( (binary_expression "PTR_DAT_004586c8 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (lVar4 == 0) {\n                    \n    FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");\n  }" { (expression_statement "FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0018dcf0("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (if_statement "if (*(char *)(lVar4 + 0x2a61) == '\0') {\n    if (*(byte *)(lVar4 + 0x42d1) == 0) {\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }\n    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n  }\n  else {\n    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n    bVar3 = *(byte *)(lVar4 + 0x42d1);\n    if (bVar3 == 0) goto LAB_00282bf6;\n  }" if (parenthesized_expression "(*(char *)(lVar4 + 0x2a61) == '\0')" ( (binary_expression "*(char *)(lVar4 + 0x2a61) == '\0'" (pointer_expression "*(char *)(lVar4 + 0x2a61)" * (cast_expression "(char *)(lVar4 + 0x2a61)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x2a61)" ( (binary_expression "lVar4 + 0x2a61" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (*(byte *)(lVar4 + 0x42d1) == 0) {\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }\n    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n  }" { (if_statement "if (*(byte *)(lVar4 + 0x42d1) == 0) {\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }\n    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }" if (parenthesized_expression "(*(byte *)(lVar4 + 0x42d1) == 0)" ( (binary_expression "*(byte *)(lVar4 + 0x42d1) == 0" (pointer_expression "*(byte *)(lVar4 + 0x42d1)" * (cast_expression "(byte *)(lVar4 + 0x42d1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x42d1)" ( (binary_expression "lVar4 + 0x42d1" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }" { (if_statement "if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }" if (parenthesized_expression "(*(char *)(lVar4 + 0x5051) != '\0')" ( (binary_expression "*(char *)(lVar4 + 0x5051) != '\0'" (pointer_expression "*(char *)(lVar4 + 0x5051)" * (cast_expression "(char *)(lVar4 + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x5051)" ( (binary_expression "lVar4 + 0x5051" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }" { (return_statement "return (ulong)*(byte *)(lVar4 + 0x42d1);" return (binary_expression "(ulong)*(byte *)(lVar4 + 0x42d1)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)(lVar4 + 0x42d1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x42d1)" ( (binary_expression "lVar4 + 0x42d1" identifier + number_literal) )))) ;) })) }) (else_clause "else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }" else (if_statement "if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }" if (parenthesized_expression "((*(byte *)(param_1 + 0x38) & 0xf) != 6)" ( (binary_expression "(*(byte *)(param_1 + 0x38) & 0xf) != 6" (parenthesized_expression "(*(byte *)(param_1 + 0x38) & 0xf)" ( (binary_expression "*(byte *)(param_1 + 0x38) & 0xf" (pointer_expression "*(byte *)(param_1 + 0x38)" * (cast_expression "(byte *)(param_1 + 0x38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })))) }) (else_clause "else {\n    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n    bVar3 = *(byte *)(lVar4 + 0x42d1);\n    if (bVar3 == 0) goto LAB_00282bf6;\n  }" else (compound_statement "{\n    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n    bVar3 = *(byte *)(lVar4 + 0x42d1);\n    if (bVar3 == 0) goto LAB_00282bf6;\n  }" { (if_statement "if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }" if (parenthesized_expression "((*(byte *)(param_1 + 0x38) & 0xf) != 6)" ( (binary_expression "(*(byte *)(param_1 + 0x38) & 0xf) != 6" (parenthesized_expression "(*(byte *)(param_1 + 0x38) & 0xf)" ( (binary_expression "*(byte *)(param_1 + 0x38) & 0xf" (pointer_expression "*(byte *)(param_1 + 0x38)" * (cast_expression "(byte *)(param_1 + 0x38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar3 = *(byte *)(lVar4 + 0x42d1);" (assignment_expression "bVar3 = *(byte *)(lVar4 + 0x42d1)" identifier = (pointer_expression "*(byte *)(lVar4 + 0x42d1)" * (cast_expression "(byte *)(lVar4 + 0x42d1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x42d1)" ( (binary_expression "lVar4 + 0x42d1" identifier + number_literal) ))))) ;) (if_statement "if (bVar3 == 0) goto LAB_00282bf6;" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00282bf6;" goto statement_identifier ;)) }))) (if_statement "if ((*(byte *)(param_1 + 0x3a) & 7) == 0) {\n    if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n      return 0;\n    }\n    if (*(int *)(param_1 + 0x18) != 0) {\n      return 1;\n    }\n    if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {\n      return 1;\n    }\n  }\n  else if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {\n    return 1;\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x3a) & 7) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x3a) & 7) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x3a) & 7)" ( (binary_expression "*(byte *)(param_1 + 0x3a) & 7" (pointer_expression "*(byte *)(param_1 + 0x3a)" * (cast_expression "(byte *)(param_1 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3a)" ( (binary_expression "param_1 + 0x3a" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n      return 0;\n    }\n    if (*(int *)(param_1 + 0x18) != 0) {\n      return 1;\n    }\n    if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {\n      return 1;\n    }\n  }" { (if_statement "if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n      return 0;\n    }" if (parenthesized_expression "((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0)" ( (binary_expression "(*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0" (parenthesized_expression "(*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1)" ( (binary_expression "*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1" (pointer_expression "*(byte *)(*(long *)(param_1 + 0x10) + 0x3c)" * (cast_expression "(byte *)(*(long *)(param_1 + 0x10) + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x10) + 0x3c)" ( (binary_expression "*(long *)(param_1 + 0x10) + 0x3c" (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(int *)(param_1 + 0x18) != 0) {\n      return 1;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x18) != 0)" ( (binary_expression "*(int *)(param_1 + 0x18) != 0" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {\n      return 1;\n    }" if (parenthesized_expression "((*(byte *)(param_1 + 0x3b) & 0x20) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x3b) & 0x20) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x3b) & 0x20)" ( (binary_expression "*(byte *)(param_1 + 0x3b) & 0x20" (pointer_expression "*(byte *)(param_1 + 0x3b)" * (cast_expression "(byte *)(param_1 + 0x3b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3b)" ( (binary_expression "param_1 + 0x3b" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {\n    return 1;\n  }" else (if_statement "if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {\n    return 1;\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x3a) & 7) != 4)" ( (binary_expression "(*(byte *)(param_1 + 0x3a) & 7) != 4" (parenthesized_expression "(*(byte *)(param_1 + 0x3a) & 7)" ( (binary_expression "*(byte *)(param_1 + 0x3a) & 7" (pointer_expression "*(byte *)(param_1 + 0x3a)" * (cast_expression "(byte *)(param_1 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3a)" ( (binary_expression "param_1 + 0x3a" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })))) (if_statement "if (PTR_DAT_004586c8[0x20] == '\0') {\n    FUN_002826e0();\n    bVar3 = *(byte *)(param_1 + 0x3a) & 7;\n    if (bVar3 == 1) {\n                    \n                    \n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }\n    if (bVar3 == 0) {\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }\n    else if (4 < bVar3) {\n                    \n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }\n    return 0;\n  }" if (parenthesized_expression "(PTR_DAT_004586c8[0x20] == '\0')" ( (binary_expression "PTR_DAT_004586c8[0x20] == '\0'" (subscript_expression "PTR_DAT_004586c8[0x20]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_002826e0();\n    bVar3 = *(byte *)(param_1 + 0x3a) & 7;\n    if (bVar3 == 1) {\n                    \n                    \n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }\n    if (bVar3 == 0) {\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }\n    else if (4 < bVar3) {\n                    \n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }\n    return 0;\n  }" { (expression_statement "FUN_002826e0();" (call_expression "FUN_002826e0()" identifier (argument_list "()" ( ))) ;) (expression_statement "bVar3 = *(byte *)(param_1 + 0x3a) & 7;" (assignment_expression "bVar3 = *(byte *)(param_1 + 0x3a) & 7" identifier = (binary_expression "*(byte *)(param_1 + 0x3a) & 7" (pointer_expression "*(byte *)(param_1 + 0x3a)" * (cast_expression "(byte *)(param_1 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3a)" ( (binary_expression "param_1 + 0x3a" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if (bVar3 == 1) {\n                    \n                    \n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }" if (parenthesized_expression "(bVar3 == 1)" ( (binary_expression "bVar3 == 1" identifier == number_literal) )) (compound_statement "{\n                    \n                    \n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }" { (expression_statement "uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();" (assignment_expression "uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))()" identifier = (call_expression "(**(code **)(**(long **)(param_1 + 0x10) + 0x48))()" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x10) + 0x48))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 0x10) + 0x48)" * (pointer_expression "*(code **)(**(long **)(param_1 + 0x10) + 0x48)" * (cast_expression "(code **)(**(long **)(param_1 + 0x10) + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 0x10) + 0x48)" ( (binary_expression "**(long **)(param_1 + 0x10) + 0x48" (pointer_expression "**(long **)(param_1 + 0x10)" * (pointer_expression "*(long **)(param_1 + 0x10)" * (cast_expression "(long **)(param_1 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar5;" return identifier ;) })) (if_statement "if (bVar3 == 0) {\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }\n    else if (4 < bVar3) {\n                    \n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }" { (expression_statement "uVar1 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }" if (parenthesized_expression "((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0))" ( (binary_expression "(uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)" (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(param_1 + 0x3b) & 0x20) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x3b) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x3b) & 0x20)" ( (binary_expression "*(byte *)(param_1 + 0x3b) & 0x20" (pointer_expression "*(byte *)(param_1 + 0x3b)" * (cast_expression "(byte *)(param_1 + 0x3b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3b)" ( (binary_expression "param_1 + 0x3b" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }" { (if_statement "if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }" if (parenthesized_expression "((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0)" ( (binary_expression "(*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0" (parenthesized_expression "(*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1)" ( (binary_expression "*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1" (pointer_expression "*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c)" * (cast_expression "(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*(long **)(param_1 + 0x10) + 0x3c)" ( (binary_expression "(long)*(long **)(param_1 + 0x10) + 0x3c" (cast_expression "(long)*(long **)(param_1 + 0x10)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*(long **)(param_1 + 0x10)" * (cast_expression "(long **)(param_1 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }" { (expression_statement "FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");" (call_expression "FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section")" identifier (argument_list "("../../gold/symtab.cc",0x1ee,"output_section")" ( (string_literal ""../../gold/symtab.cc"" " string_content ") , number_literal , (string_literal ""output_section"" " string_content ") ))) ;) })) (expression_statement "lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();" (assignment_expression "lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))()" identifier = (call_expression "(**(code **)(**(long **)(param_1 + 0x10) + 0x28))()" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x10) + 0x28))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 0x10) + 0x28)" * (pointer_expression "*(code **)(**(long **)(param_1 + 0x10) + 0x28)" * (cast_expression "(code **)(**(long **)(param_1 + 0x10) + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 0x10) + 0x28)" ( (binary_expression "**(long **)(param_1 + 0x10) + 0x28" (pointer_expression "**(long **)(param_1 + 0x10)" * (pointer_expression "*(long **)(param_1 + 0x10)" * (cast_expression "(long **)(param_1 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }" { (expression_statement "FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");" (call_expression "FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section")" identifier (argument_list "("../../gold/symtab.cc",0x1ef,"output_section")" ( (string_literal ""../../gold/symtab.cc"" " string_content ") , number_literal , (string_literal ""output_section"" " string_content ") ))) ;) })) (expression_statement "plVar2 = *(long **)(param_1 + 0x10);" (assignment_expression "plVar2 = *(long **)(param_1 + 0x10)" identifier = (pointer_expression "*(long **)(param_1 + 0x10)" * (cast_expression "(long **)(param_1 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }" if (parenthesized_expression "(*(code **)(*plVar2 + 0xc0) != FUN_001714a0)" ( (binary_expression "*(code **)(*plVar2 + 0xc0) != FUN_001714a0" (pointer_expression "*(code **)(*plVar2 + 0xc0)" * (cast_expression "(code **)(*plVar2 + 0xc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar2 + 0xc0)" ( (binary_expression "*plVar2 + 0xc0" (pointer_expression "*plVar2" * identifier) + number_literal) )))) != identifier) )) (compound_statement "{\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }" { (expression_statement "uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);" (assignment_expression "uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1)" identifier = (call_expression "(**(code **)(*plVar2 + 0xc0))(plVar2,uVar1)" (parenthesized_expression "(**(code **)(*plVar2 + 0xc0))" ( (pointer_expression "**(code **)(*plVar2 + 0xc0)" * (pointer_expression "*(code **)(*plVar2 + 0xc0)" * (cast_expression "(code **)(*plVar2 + 0xc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar2 + 0xc0)" ( (binary_expression "*plVar2 + 0xc0" (pointer_expression "*plVar2" * identifier) + number_literal) ))))) )) (argument_list "(plVar2,uVar1)" ( identifier , identifier )))) ;) (return_statement "return uVar5;" return identifier ;) })) (if_statement "if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }" if (parenthesized_expression "((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1)" ( (binary_expression "(ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1" (call_expression "(ulong)(plVar2[0xb] - plVar2[10] >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(plVar2[0xb] - plVar2[10] >> 3)" ( (binary_expression "plVar2[0xb] - plVar2[10] >> 3" (binary_expression "plVar2[0xb] - plVar2[10]" (subscript_expression "plVar2[0xb]" identifier [ number_literal ]) - (subscript_expression "plVar2[10]" identifier [ number_literal ])) >> number_literal) ))) <= (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) (compound_statement "{\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }" { (expression_statement "FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section")" identifier (argument_list "("../../gold/object.h",0x5c8,"do_output_section")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""do_output_section"" " string_content ") ))) ;) })) (return_statement "return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);" return (pointer_expression "*(ulong *)(plVar2[10] + (ulong)uVar1 * 8)" * (cast_expression "(ulong *)(plVar2[10] + (ulong)uVar1 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar2[10] + (ulong)uVar1 * 8)" ( (binary_expression "plVar2[10] + (ulong)uVar1 * 8" (subscript_expression "plVar2[10]" identifier [ number_literal ]) + (binary_expression "(ulong)uVar1 * 8" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) )))) ;) })) }) (else_clause "else if (4 < bVar3) {\n                    \n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }" else (if_statement "if (4 < bVar3) {\n                    \n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }" if (parenthesized_expression "(4 < bVar3)" ( (binary_expression "4 < bVar3" number_literal < identifier) )) (compound_statement "{\n                    \n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }" { (expression_statement "FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");" (call_expression "FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section")" identifier (argument_list "("../../gold/symtab.cc",0x1ff,"output_section")" ( (string_literal ""../../gold/symtab.cc"" " string_content ") , number_literal , (string_literal ""output_section"" " string_content ") ))) ;) })))) (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar3 = PTR_DAT_004586c8[0x21];" (assignment_expression "bVar3 = PTR_DAT_004586c8[0x21]" identifier = (subscript_expression "PTR_DAT_004586c8[0x21]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00282bf6:\n  return (ulong)bVar3;" statement_identifier : (return_statement "return (ulong)bVar3;" return (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) })) }) (else_clause else (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 { (return_statement return LIT ;) })))) }) (else_clause else (compound_statement { (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 { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }))) (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 { (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (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 { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (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 { (return_statement return LIT ;) })))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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 { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (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 { (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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) )))) & LIT) )) != 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 (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_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 = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) >> LIT) ))) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (return_statement return (cast_expression ( (type_descriptor TYPE) ) IDENT) ;)) })))
(function_definition "ulong FUN_00282ba0(long param_1)\n\n{\n  uint uVar1;\n  long *plVar2;\n  byte bVar3;\n  long lVar4;\n  ulong uVar5;\n  \n  lVar4 = *(long *)(PTR_DAT_004586c8 + 0x10);\n  if (lVar4 == 0) {\n                    \n    FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(lVar4 + 0x2a61) == '\0') {\n    if (*(byte *)(lVar4 + 0x42d1) == 0) {\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }\n    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n  }\n  else {\n    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n    bVar3 = *(byte *)(lVar4 + 0x42d1);\n    if (bVar3 == 0) goto LAB_00282bf6;\n  }\n  if ((*(byte *)(param_1 + 0x3a) & 7) == 0) {\n    if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n      return 0;\n    }\n    if (*(int *)(param_1 + 0x18) != 0) {\n      return 1;\n    }\n    if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {\n      return 1;\n    }\n  }\n  else if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {\n    return 1;\n  }\n  if (PTR_DAT_004586c8[0x20] == '\0') {\n    FUN_002826e0();\n    bVar3 = *(byte *)(param_1 + 0x3a) & 7;\n    if (bVar3 == 1) {\n                    \n                    \n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }\n    if (bVar3 == 0) {\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }\n    else if (4 < bVar3) {\n                    \n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }\n    return 0;\n  }\n  bVar3 = PTR_DAT_004586c8[0x21];\nLAB_00282bf6:\n  return (ulong)bVar3;\n}" (type_identifier "ulong") (function_declarator "FUN_00282ba0(long param_1)" (identifier "FUN_00282ba0") (parameter_list "(long param_1)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) () ")"))) (compound_statement "{\n  uint uVar1;\n  long *plVar2;\n  byte bVar3;\n  long lVar4;\n  ulong uVar5;\n  \n  lVar4 = *(long *)(PTR_DAT_004586c8 + 0x10);\n  if (lVar4 == 0) {\n                    \n    FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(lVar4 + 0x2a61) == '\0') {\n    if (*(byte *)(lVar4 + 0x42d1) == 0) {\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }\n    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n  }\n  else {\n    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n    bVar3 = *(byte *)(lVar4 + 0x42d1);\n    if (bVar3 == 0) goto LAB_00282bf6;\n  }\n  if ((*(byte *)(param_1 + 0x3a) & 7) == 0) {\n    if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n      return 0;\n    }\n    if (*(int *)(param_1 + 0x18) != 0) {\n      return 1;\n    }\n    if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {\n      return 1;\n    }\n  }\n  else if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {\n    return 1;\n  }\n  if (PTR_DAT_004586c8[0x20] == '\0') {\n    FUN_002826e0();\n    bVar3 = *(byte *)(param_1 + 0x3a) & 7;\n    if (bVar3 == 1) {\n                    \n                    \n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }\n    if (bVar3 == 0) {\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }\n    else if (4 < bVar3) {\n                    \n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }\n    return 0;\n  }\n  bVar3 = PTR_DAT_004586c8[0x21];\nLAB_00282bf6:\n  return (ulong)bVar3;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "long *plVar2;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar2" (* "*") (identifier "plVar2")) (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (expression_statement "lVar4 = *(long *)(PTR_DAT_004586c8 + 0x10);" (assignment_expression "lVar4 = *(long *)(PTR_DAT_004586c8 + 0x10)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(PTR_DAT_004586c8 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_004586c8 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_004586c8 + 0x10)" (( "(") (binary_expression "PTR_DAT_004586c8 + 0x10" (identifier "PTR_DAT_004586c8") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (lVar4 == 0) {\n                    \n    FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");\n  }" (if "if") (parenthesized_expression "(lVar4 == 0)" (( "(") (binary_expression "lVar4 == 0" (identifier "lVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");\n  }" ({ "{") (expression_statement "FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0018dcf0("../../gold/parameters.h",0x5c,"options")" (identifier "FUN_0018dcf0") (argument_list "("../../gold/parameters.h",0x5c,"options")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(lVar4 + 0x2a61) == '\0') {\n    if (*(byte *)(lVar4 + 0x42d1) == 0) {\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }\n    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n  }\n  else {\n    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n    bVar3 = *(byte *)(lVar4 + 0x42d1);\n    if (bVar3 == 0) goto LAB_00282bf6;\n  }" (if "if") (parenthesized_expression "(*(char *)(lVar4 + 0x2a61) == '\0')" (( "(") (binary_expression "*(char *)(lVar4 + 0x2a61) == '\0'" (pointer_expression "*(char *)(lVar4 + 0x2a61)" (* "*") (cast_expression "(char *)(lVar4 + 0x2a61)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x2a61)" (( "(") (binary_expression "lVar4 + 0x2a61" (identifier "lVar4") (+ "+") (number_literal "0x2a61")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if (*(byte *)(lVar4 + 0x42d1) == 0) {\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }\n    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n  }" ({ "{") (if_statement "if (*(byte *)(lVar4 + 0x42d1) == 0) {\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }\n    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(*(byte *)(lVar4 + 0x42d1) == 0)" (( "(") (binary_expression "*(byte *)(lVar4 + 0x42d1) == 0" (pointer_expression "*(byte *)(lVar4 + 0x42d1)" (* "*") (cast_expression "(byte *)(lVar4 + 0x42d1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x42d1)" (( "(") (binary_expression "lVar4 + 0x42d1" (identifier "lVar4") (+ "+") (number_literal "0x42d1")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }\n    }" ({ "{") (if_statement "if (*(char *)(lVar4 + 0x5051) != '\0') {\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }" (if "if") (parenthesized_expression "(*(char *)(lVar4 + 0x5051) != '\0')" (( "(") (binary_expression "*(char *)(lVar4 + 0x5051) != '\0'" (pointer_expression "*(char *)(lVar4 + 0x5051)" (* "*") (cast_expression "(char *)(lVar4 + 0x5051)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x5051)" (( "(") (binary_expression "lVar4 + 0x5051" (identifier "lVar4") (+ "+") (number_literal "0x5051")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        return (ulong)*(byte *)(lVar4 + 0x42d1);\n      }" ({ "{") (return_statement "return (ulong)*(byte *)(lVar4 + 0x42d1);" (return "return") (binary_expression "(ulong)*(byte *)(lVar4 + 0x42d1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(byte *)(lVar4 + 0x42d1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x42d1)" (( "(") (binary_expression "lVar4 + 0x42d1" (identifier "lVar4") (+ "+") (number_literal "0x42d1")) () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }" (else "else") (if_statement "if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x38) & 0xf) != 6)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x38) & 0xf) != 6" (parenthesized_expression "(*(byte *)(param_1 + 0x38) & 0xf)" (( "(") (binary_expression "*(byte *)(param_1 + 0x38) & 0xf" (pointer_expression "*(byte *)(param_1 + 0x38)" (* "*") (cast_expression "(byte *)(param_1 + 0x38)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (& "&") (number_literal "0xf")) () ")")) (!= "!=") (number_literal "6")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))))) (} "}")) (else_clause "else {\n    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n    bVar3 = *(byte *)(lVar4 + 0x42d1);\n    if (bVar3 == 0) goto LAB_00282bf6;\n  }" (else "else") (compound_statement "{\n    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }\n    bVar3 = *(byte *)(lVar4 + 0x42d1);\n    if (bVar3 == 0) goto LAB_00282bf6;\n  }" ({ "{") (if_statement "if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {\n      return 0;\n    }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x38) & 0xf) != 6)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x38) & 0xf) != 6" (parenthesized_expression "(*(byte *)(param_1 + 0x38) & 0xf)" (( "(") (binary_expression "*(byte *)(param_1 + 0x38) & 0xf" (pointer_expression "*(byte *)(param_1 + 0x38)" (* "*") (cast_expression "(byte *)(param_1 + 0x38)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (& "&") (number_literal "0xf")) () ")")) (!= "!=") (number_literal "6")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar3 = *(byte *)(lVar4 + 0x42d1);" (assignment_expression "bVar3 = *(byte *)(lVar4 + 0x42d1)" (identifier "bVar3") (= "=") (pointer_expression "*(byte *)(lVar4 + 0x42d1)" (* "*") (cast_expression "(byte *)(lVar4 + 0x42d1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x42d1)" (( "(") (binary_expression "lVar4 + 0x42d1" (identifier "lVar4") (+ "+") (number_literal "0x42d1")) () ")"))))) (; ";")) (if_statement "if (bVar3 == 0) goto LAB_00282bf6;" (if "if") (parenthesized_expression "(bVar3 == 0)" (( "(") (binary_expression "bVar3 == 0" (identifier "bVar3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00282bf6;" (goto "goto") (statement_identifier "LAB_00282bf6") (; ";"))) (} "}")))) (if_statement "if ((*(byte *)(param_1 + 0x3a) & 7) == 0) {\n    if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n      return 0;\n    }\n    if (*(int *)(param_1 + 0x18) != 0) {\n      return 1;\n    }\n    if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {\n      return 1;\n    }\n  }\n  else if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {\n    return 1;\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x3a) & 7) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x3a) & 7) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x3a) & 7)" (( "(") (binary_expression "*(byte *)(param_1 + 0x3a) & 7" (pointer_expression "*(byte *)(param_1 + 0x3a)" (* "*") (cast_expression "(byte *)(param_1 + 0x3a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3a)" (( "(") (binary_expression "param_1 + 0x3a" (identifier "param_1") (+ "+") (number_literal "0x3a")) () ")")))) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n      return 0;\n    }\n    if (*(int *)(param_1 + 0x18) != 0) {\n      return 1;\n    }\n    if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {\n      return 1;\n    }\n  }" ({ "{") (if_statement "if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0" (parenthesized_expression "(*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1)" (( "(") (binary_expression "*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1" (pointer_expression "*(byte *)(*(long *)(param_1 + 0x10) + 0x3c)" (* "*") (cast_expression "(byte *)(*(long *)(param_1 + 0x10) + 0x3c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x10) + 0x3c)" (( "(") (binary_expression "*(long *)(param_1 + 0x10) + 0x3c" (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x3c")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 0x18) != 0) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x18) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x18) != 0" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (if_statement "if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {\n      return 1;\n    }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x3b) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x3b) & 0x20) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x3b) & 0x20)" (( "(") (binary_expression "*(byte *)(param_1 + 0x3b) & 0x20" (pointer_expression "*(byte *)(param_1 + 0x3b)" (* "*") (cast_expression "(byte *)(param_1 + 0x3b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3b)" (( "(") (binary_expression "param_1 + 0x3b" (identifier "param_1") (+ "+") (number_literal "0x3b")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}")) (else_clause "else if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {\n    return 1;\n  }" (else "else") (if_statement "if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {\n    return 1;\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x3a) & 7) != 4)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x3a) & 7) != 4" (parenthesized_expression "(*(byte *)(param_1 + 0x3a) & 7)" (( "(") (binary_expression "*(byte *)(param_1 + 0x3a) & 7" (pointer_expression "*(byte *)(param_1 + 0x3a)" (* "*") (cast_expression "(byte *)(param_1 + 0x3a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3a)" (( "(") (binary_expression "param_1 + 0x3a" (identifier "param_1") (+ "+") (number_literal "0x3a")) () ")")))) (& "&") (number_literal "7")) () ")")) (!= "!=") (number_literal "4")) () ")")) (compound_statement "{\n    return 1;\n  }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))))) (if_statement "if (PTR_DAT_004586c8[0x20] == '\0') {\n    FUN_002826e0();\n    bVar3 = *(byte *)(param_1 + 0x3a) & 7;\n    if (bVar3 == 1) {\n                    \n                    \n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }\n    if (bVar3 == 0) {\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }\n    else if (4 < bVar3) {\n                    \n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }\n    return 0;\n  }" (if "if") (parenthesized_expression "(PTR_DAT_004586c8[0x20] == '\0')" (( "(") (binary_expression "PTR_DAT_004586c8[0x20] == '\0'" (subscript_expression "PTR_DAT_004586c8[0x20]" (identifier "PTR_DAT_004586c8") ([ "[") (number_literal "0x20") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    FUN_002826e0();\n    bVar3 = *(byte *)(param_1 + 0x3a) & 7;\n    if (bVar3 == 1) {\n                    \n                    \n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }\n    if (bVar3 == 0) {\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }\n    else if (4 < bVar3) {\n                    \n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }\n    return 0;\n  }" ({ "{") (expression_statement "FUN_002826e0();" (call_expression "FUN_002826e0()" (identifier "FUN_002826e0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "bVar3 = *(byte *)(param_1 + 0x3a) & 7;" (assignment_expression "bVar3 = *(byte *)(param_1 + 0x3a) & 7" (identifier "bVar3") (= "=") (binary_expression "*(byte *)(param_1 + 0x3a) & 7" (pointer_expression "*(byte *)(param_1 + 0x3a)" (* "*") (cast_expression "(byte *)(param_1 + 0x3a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3a)" (( "(") (binary_expression "param_1 + 0x3a" (identifier "param_1") (+ "+") (number_literal "0x3a")) () ")")))) (& "&") (number_literal "7"))) (; ";")) (if_statement "if (bVar3 == 1) {\n                    \n                    \n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }" (if "if") (parenthesized_expression "(bVar3 == 1)" (( "(") (binary_expression "bVar3 == 1" (identifier "bVar3") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                    \n                    \n      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();\n      return uVar5;\n    }" ({ "{") (expression_statement "uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();" (assignment_expression "uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))()" (identifier "uVar5") (= "=") (call_expression "(**(code **)(**(long **)(param_1 + 0x10) + 0x48))()" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x10) + 0x48))" (( "(") (pointer_expression "**(code **)(**(long **)(param_1 + 0x10) + 0x48)" (* "*") (pointer_expression "*(code **)(**(long **)(param_1 + 0x10) + 0x48)" (* "*") (cast_expression "(code **)(**(long **)(param_1 + 0x10) + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(long **)(param_1 + 0x10) + 0x48)" (( "(") (binary_expression "**(long **)(param_1 + 0x10) + 0x48" (pointer_expression "**(long **)(param_1 + 0x10)" (* "*") (pointer_expression "*(long **)(param_1 + 0x10)" (* "*") (cast_expression "(long **)(param_1 + 0x10)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar5;" (return "return") (identifier "uVar5") (; ";")) (} "}"))) (if_statement "if (bVar3 == 0) {\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }\n    else if (4 < bVar3) {\n                    \n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }" (if "if") (parenthesized_expression "(bVar3 == 0)" (( "(") (binary_expression "bVar3 == 0" (identifier "bVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar1 = *(uint *)(param_1 + 0x18);\n      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }\n    }" ({ "{") (expression_statement "uVar1 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x18)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(param_1 + 0x18)" (* "*") (cast_expression "(uint *)(param_1 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }" (if "if") (parenthesized_expression "((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0))" (( "(") (binary_expression "(uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)" (parenthesized_expression "(uVar1 != 0)" (( "(") (binary_expression "uVar1 != 0" (identifier "uVar1") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(param_1 + 0x3b) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x3b) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x3b) & 0x20)" (( "(") (binary_expression "*(byte *)(param_1 + 0x3b) & 0x20" (pointer_expression "*(byte *)(param_1 + 0x3b)" (* "*") (cast_expression "(byte *)(param_1 + 0x3b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3b)" (( "(") (binary_expression "param_1 + 0x3b" (identifier "param_1") (+ "+") (number_literal "0x3b")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }\n        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();\n        if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }\n        plVar2 = *(long **)(param_1 + 0x10);\n        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }\n        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }\n        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);\n      }" ({ "{") (if_statement "if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }" (if "if") (parenthesized_expression "((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0" (parenthesized_expression "(*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1)" (( "(") (binary_expression "*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1" (pointer_expression "*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c)" (* "*") (cast_expression "(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)*(long **)(param_1 + 0x10) + 0x3c)" (( "(") (binary_expression "(long)*(long **)(param_1 + 0x10) + 0x3c" (cast_expression "(long)*(long **)(param_1 + 0x10)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*(long **)(param_1 + 0x10)" (* "*") (cast_expression "(long **)(param_1 + 0x10)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (+ "+") (number_literal "0x3c")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");\n        }" ({ "{") (expression_statement "FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");" (call_expression "FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section")" (identifier "FUN_0018dcf0") (argument_list "("../../gold/symtab.cc",0x1ee,"output_section")" (( "(") (string_literal ""../../gold/symtab.cc"" (" """) (string_content "../../gold/symtab.cc") (" """)) (, ",") (number_literal "0x1ee") (, ",") (string_literal ""output_section"" (" """) (string_content "output_section") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();" (assignment_expression "lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))()" (identifier "lVar4") (= "=") (call_expression "(**(code **)(**(long **)(param_1 + 0x10) + 0x28))()" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x10) + 0x28))" (( "(") (pointer_expression "**(code **)(**(long **)(param_1 + 0x10) + 0x28)" (* "*") (pointer_expression "*(code **)(**(long **)(param_1 + 0x10) + 0x28)" (* "*") (cast_expression "(code **)(**(long **)(param_1 + 0x10) + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(long **)(param_1 + 0x10) + 0x28)" (( "(") (binary_expression "**(long **)(param_1 + 0x10) + 0x28" (pointer_expression "**(long **)(param_1 + 0x10)" (* "*") (pointer_expression "*(long **)(param_1 + 0x10)" (* "*") (cast_expression "(long **)(param_1 + 0x10)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (lVar4 != 0) {\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }" (if "if") (parenthesized_expression "(lVar4 != 0)" (( "(") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");\n        }" ({ "{") (expression_statement "FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");" (call_expression "FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section")" (identifier "FUN_0018dcf0") (argument_list "("../../gold/symtab.cc",0x1ef,"output_section")" (( "(") (string_literal ""../../gold/symtab.cc"" (" """) (string_content "../../gold/symtab.cc") (" """)) (, ",") (number_literal "0x1ef") (, ",") (string_literal ""output_section"" (" """) (string_content "output_section") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "plVar2 = *(long **)(param_1 + 0x10);" (assignment_expression "plVar2 = *(long **)(param_1 + 0x10)" (identifier "plVar2") (= "=") (pointer_expression "*(long **)(param_1 + 0x10)" (* "*") (cast_expression "(long **)(param_1 + 0x10)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }" (if "if") (parenthesized_expression "(*(code **)(*plVar2 + 0xc0) != FUN_001714a0)" (( "(") (binary_expression "*(code **)(*plVar2 + 0xc0) != FUN_001714a0" (pointer_expression "*(code **)(*plVar2 + 0xc0)" (* "*") (cast_expression "(code **)(*plVar2 + 0xc0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar2 + 0xc0)" (( "(") (binary_expression "*plVar2 + 0xc0" (pointer_expression "*plVar2" (* "*") (identifier "plVar2")) (+ "+") (number_literal "0xc0")) () ")")))) (!= "!=") (identifier "FUN_001714a0")) () ")")) (compound_statement "{\n                    \n                    \n          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);\n          return uVar5;\n        }" ({ "{") (expression_statement "uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);" (assignment_expression "uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1)" (identifier "uVar5") (= "=") (call_expression "(**(code **)(*plVar2 + 0xc0))(plVar2,uVar1)" (parenthesized_expression "(**(code **)(*plVar2 + 0xc0))" (( "(") (pointer_expression "**(code **)(*plVar2 + 0xc0)" (* "*") (pointer_expression "*(code **)(*plVar2 + 0xc0)" (* "*") (cast_expression "(code **)(*plVar2 + 0xc0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar2 + 0xc0)" (( "(") (binary_expression "*plVar2 + 0xc0" (pointer_expression "*plVar2" (* "*") (identifier "plVar2")) (+ "+") (number_literal "0xc0")) () ")"))))) () ")")) (argument_list "(plVar2,uVar1)" (( "(") (identifier "plVar2") (, ",") (identifier "uVar1") () ")")))) (; ";")) (return_statement "return uVar5;" (return "return") (identifier "uVar5") (; ";")) (} "}"))) (if_statement "if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }" (if "if") (parenthesized_expression "((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1)" (( "(") (binary_expression "(ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1" (call_expression "(ulong)(plVar2[0xb] - plVar2[10] >> 3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(plVar2[0xb] - plVar2[10] >> 3)" (( "(") (binary_expression "plVar2[0xb] - plVar2[10] >> 3" (binary_expression "plVar2[0xb] - plVar2[10]" (subscript_expression "plVar2[0xb]" (identifier "plVar2") ([ "[") (number_literal "0xb") (] "]")) (- "-") (subscript_expression "plVar2[10]" (identifier "plVar2") ([ "[") (number_literal "10") (] "]"))) (>> ">>") (number_literal "3")) () ")"))) (<= "<=") (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1"))) () ")")) (compound_statement "{\n                    \n          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");\n        }" ({ "{") (expression_statement "FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section")" (identifier "FUN_0018dcf0") (argument_list "("../../gold/object.h",0x5c8,"do_output_section")" (( "(") (string_literal ""../../gold/object.h"" (" """) (string_content "../../gold/object.h") (" """)) (, ",") (number_literal "0x5c8") (, ",") (string_literal ""do_output_section"" (" """) (string_content "do_output_section") (" """)) () ")"))) (; ";")) (} "}"))) (return_statement "return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);" (return "return") (pointer_expression "*(ulong *)(plVar2[10] + (ulong)uVar1 * 8)" (* "*") (cast_expression "(ulong *)(plVar2[10] + (ulong)uVar1 * 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar2[10] + (ulong)uVar1 * 8)" (( "(") (binary_expression "plVar2[10] + (ulong)uVar1 * 8" (subscript_expression "plVar2[10]" (identifier "plVar2") ([ "[") (number_literal "10") (] "]")) (+ "+") (binary_expression "(ulong)uVar1 * 8" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (* "*") (number_literal "8"))) () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else if (4 < bVar3) {\n                    \n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }" (else "else") (if_statement "if (4 < bVar3) {\n                    \n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }" (if "if") (parenthesized_expression "(4 < bVar3)" (( "(") (binary_expression "4 < bVar3" (number_literal "4") (< "<") (identifier "bVar3")) () ")")) (compound_statement "{\n                    \n      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");\n    }" ({ "{") (expression_statement "FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");" (call_expression "FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section")" (identifier "FUN_0018dcf0") (argument_list "("../../gold/symtab.cc",0x1ff,"output_section")" (( "(") (string_literal ""../../gold/symtab.cc"" (" """) (string_content "../../gold/symtab.cc") (" """)) (, ",") (number_literal "0x1ff") (, ",") (string_literal ""output_section"" (" """) (string_content "output_section") (" """)) () ")"))) (; ";")) (} "}"))))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar3 = PTR_DAT_004586c8[0x21];" (assignment_expression "bVar3 = PTR_DAT_004586c8[0x21]" (identifier "bVar3") (= "=") (subscript_expression "PTR_DAT_004586c8[0x21]" (identifier "PTR_DAT_004586c8") ([ "[") (number_literal "0x21") (] "]"))) (; ";")) (labeled_statement "LAB_00282bf6:\n  return (ulong)bVar3;" (statement_identifier "LAB_00282bf6") (: ":") (return_statement "return (ulong)bVar3;" (return "return") (cast_expression "(ulong)bVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar3")) (; ";"))) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: bool final_value_is_known(Symbol * this) */

bool __thiscall var_3::type_1::function_1(type_1 *this)

{
  type_2 *var_1;
  type_3 *in_RSI;
  
  var_1 = parameters->options_;
  if (var_1 == (type_2 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/parameters.h",0x5c,"options");
  }
  if ((var_1->shared_).value == false) {
    if ((var_1->pie_).value == false) {
      if ((var_1->relocatable_).value != false) {
        return false;
      }
    }
    else if ((this->field_0x38 & 0xf) != 6) {
      return false;
    }
  }
  else {
    if ((this->field_0x38 & 0xf) != 6) {
      return false;
    }
    if ((var_1->pie_).value == false) {
      return false;
    }
  }
  if ((this->field_0x3a & 7) == 0) {
    if (((ulong)((this->u1_).output_segment)->output_lists_[2].
                super__Vector_base<var_3::Output_data*,var_4::allocator<var_3::Output_data*>var_5>._M_impl.
                _M_finish & 0x100000000) != 0) {
      return false;
    }
    if ((this->u2_).shndx != 0) {
      return true;
    }
    if ((this->field_0x3b & 0x20) == 0) {
      return true;
    }
  }
  else if ((this->field_0x3a & 7) != 4) {
    return true;
  }
  if (parameters->doing_static_link_valid_ != false) {
    return parameters->doing_static_link_;
  }
                    /* WARNING: Subroutine does not return */
  Parameters::var_6((type_3 *)this,in_RSI);
}


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

ulong MASKED(long param_1)

{
  uint uVar1;
  long *plVar2;
  byte bVar3;
  long lVar4;
  ulong uVar5;
  
  lVar4 = *(long *)(PTR_DAT_004586c8 + 0x10);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0018dcf0("../../gold/parameters.h",0x5c,"options");
  }
  if (*(char *)(lVar4 + 0x2a61) == '\0') {
    if (*(byte *)(lVar4 + 0x42d1) == 0) {
      if (*(char *)(lVar4 + 0x5051) != '\0') {
        return (ulong)*(byte *)(lVar4 + 0x42d1);
      }
    }
    else if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {
      return 0;
    }
  }
  else {
    if ((*(byte *)(param_1 + 0x38) & 0xf) != 6) {
      return 0;
    }
    bVar3 = *(byte *)(lVar4 + 0x42d1);
    if (bVar3 == 0) goto LAB_00282bf6;
  }
  if ((*(byte *)(param_1 + 0x3a) & 7) == 0) {
    if ((*(byte *)(*(long *)(param_1 + 0x10) + 0x3c) & 1) != 0) {
      return 0;
    }
    if (*(int *)(param_1 + 0x18) != 0) {
      return 1;
    }
    if ((*(byte *)(param_1 + 0x3b) & 0x20) == 0) {
      return 1;
    }
  }
  else if ((*(byte *)(param_1 + 0x3a) & 7) != 4) {
    return 1;
  }
  if (PTR_DAT_004586c8[0x20] == '\0') {
    FUN_002826e0();
    bVar3 = *(byte *)(param_1 + 0x3a) & 7;
    if (bVar3 == 1) {
                    /* WARNING: Could not recover jumptable at 0x00282d1f. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      uVar5 = (**(code **)(**(long **)(param_1 + 0x10) + 0x48))();
      return uVar5;
    }
    if (bVar3 == 0) {
      uVar1 = *(uint *)(param_1 + 0x18);
      if ((uVar1 != 0) && ((*(byte *)(param_1 + 0x3b) & 0x20) != 0)) {
        if ((*(byte *)((long)*(long **)(param_1 + 0x10) + 0x3c) & 1) != 0) {
                    /* WARNING: Subroutine does not return */
          FUN_0018dcf0("../../gold/symtab.cc",0x1ee,"output_section");
        }
        lVar4 = (**(code **)(**(long **)(param_1 + 0x10) + 0x28))();
        if (lVar4 != 0) {
                    /* WARNING: Subroutine does not return */
          FUN_0018dcf0("../../gold/symtab.cc",0x1ef,"output_section");
        }
        plVar2 = *(long **)(param_1 + 0x10);
        if (*(code **)(*plVar2 + 0xc0) != FUN_001714a0) {
                    /* WARNING: Could not recover jumptable at 0x00282d48. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          uVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2,uVar1);
          return uVar5;
        }
        if ((ulong)(plVar2[0xb] - plVar2[10] >> 3) <= (ulong)uVar1) {
                    /* WARNING: Subroutine does not return */
          FUN_0018dcf0("../../gold/object.h",0x5c8,"do_output_section");
        }
        return *(ulong *)(plVar2[10] + (ulong)uVar1 * 8);
      }
    }
    else if (4 < bVar3) {
                    /* WARNING: Subroutine does not return */
      FUN_0018dcf0("../../gold/symtab.cc",0x1ff,"output_section");
    }
    return 0;
  }
  bVar3 = PTR_DAT_004586c8[0x21];
LAB_00282bf6:
  return (ulong)bVar3;
}

