
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: void create_stack_segment(Layout * this) */

void __thiscall gold::Layout::create_stack_segment(Layout *this)

{
  General_options *pGVar1;
  Output_segment *pOVar2;
  char *pcVar3;
  char cVar4;
  
  pGVar1 = parameters->options_;
  if (pGVar1 == (General_options *)0x0) {
LAB_001ba567:
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
  }
  if (pGVar1->execstack_status_ == EXECSTACK_FROM_INPUT) {
    if (this->input_with_gnu_stack_note_ == false) {
      if ((pGVar1->stack_size_).user_set_via_option == false) {
        return;
      }
      if ((pGVar1->relocatable_).value != false) {
        return;
      }
    }
    cVar4 = this->input_requires_executable_stack_;
    if (((bool)cVar4 == false) &&
       (cVar4 = this->input_without_gnu_stack_note_, (bool)cVar4 != false)) {
      if (parameters->target_ == (Target *)0x0) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable("../../gold/parameters.h",0x69,"target");
      }
      cVar4 = parameters->target_->pti_->is_default_stack_executable;
    }
  }
  else {
    cVar4 = pGVar1->execstack_status_ == EXECSTACK_YES;
    if (((!(bool)cVar4) && (this->input_requires_executable_stack_ != false)) &&
       ((pGVar1->warn_execstack_).value != false)) {
      pcVar3 = (char *)gettext(
                              "one or more inputs require executable stack, but -z noexecstack was given"
                              );
      gold_warning(pcVar3);
      pGVar1 = parameters->options_;
      if (pGVar1 == (General_options *)0x0) goto LAB_001ba567;
    }
  }
  if ((pGVar1->relocatable_).value != false) {
    pcVar3 = Stringpool_template<char>::add(&this->namepool_,".note.GNU-stack",false,(Key *)0x0);
    make_output_section(this,pcVar3,1,(ulong)(cVar4 != '\0') << 2,ORDER_INVALID,false);
    return;
  }
  if (((this->script_options_->script_sections_).saw_sections_clause_ == false) ||
     ((this->script_options_->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)) {
    pOVar2 = make_output_segment(this,0x6474e551,(cVar4 != '\0') + 6);
    if (parameters->options_ == (General_options *)0x0) goto LAB_001ba567;
    pOVar2->memsz_ = (parameters->options_->stack_size_).value;
    if (pOVar2->min_p_align_ < 0x10) {
      pOVar2->min_p_align_ = 0x10;
      return;
    }
  }
  return;
}



void FUN_001ba3d0(long param_1)

{
  long lVar1;
  undefined8 uVar2;
  char cVar3;
  
  lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);
  if (lVar1 == 0) {
LAB_001ba567:
                    /* WARNING: Subroutine does not return */
    FUN_00199900("../../gold/parameters.h",0x5c,"options");
  }
  if (*(int *)(lVar1 + 0x904c) == 0) {
    if (*(char *)(param_1 + 0x36b) == '\0') {
      if (*(char *)(lVar1 + 0x8d20) == '\0') {
        return;
      }
      if (*(char *)(lVar1 + 0x5051) != '\0') {
        return;
      }
    }
    cVar3 = *(char *)(param_1 + 0x36a);
    if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {
      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_00199900("../../gold/parameters.h",0x69,"target");
      }
      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);
    }
  }
  else {
    cVar3 = *(int *)(lVar1 + 0x904c) == 1;
    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&
       (*(char *)(lVar1 + 0x7039) != '\0')) {
      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");
      FUN_00191920(uVar2);
      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);
      if (lVar1 == 0) goto LAB_001ba567;
    }
  }
  if (*(char *)(lVar1 + 0x5051) != '\0') {
    uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);
    FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);
    return;
  }
  if ((*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||
     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)) {
    lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');
    if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;
    *(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);
    if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {
      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;
      return;
    }
  }
  return;
}


PUSH RBP
PUSH RBX
SUB RSP,0x8
MOV RCX,qword ptr [0x003f85c0]
MOV RAX,qword ptr [RCX + 0x10]
TEST RAX,RAX
JZ 0x001ba567
MOV EDX,dword ptr [RAX + 0x904c]
MOV RBX,RDI
TEST EDX,EDX
JZ 0x001ba440
CMP EDX,0x1
SETZ BPL
JZ 0x001ba410
CMP byte ptr [RDI + 0x36a],0x0
JNZ 0x001ba530
NOP dword ptr [RAX]
CMP byte ptr [RAX + 0x5051],0x0
JNZ 0x001ba4f0
MOV RAX,qword ptr [RBX + 0x8]
CMP byte ptr [RAX + 0x148],0x0
JZ 0x001ba490
CMP qword ptr [RAX + 0x168],0x0
JZ 0x001ba490
ADD RSP,0x8
POP RBX
POP RBP
RET
CMP byte ptr [RDI + 0x36b],0x0
JNZ 0x001ba45b
CMP byte ptr [RAX + 0x8d20],0x0
JZ 0x001ba434
CMP byte ptr [RAX + 0x5051],0x0
JNZ 0x001ba434
MOVZX EBP,byte ptr [RBX + 0x36a]
TEST BPL,BPL
JNZ 0x001ba410
MOVZX EBP,byte ptr [RBX + 0x36c]
TEST BPL,BPL
JZ 0x001ba410
MOV RDX,qword ptr [RCX + 0x18]
TEST RDX,RDX
JZ 0x001ba57f
MOV RDX,qword ptr [RDX + 0x8]
MOVZX EBP,byte ptr [RDX + 0xf]
JMP 0x001ba410
XOR EDX,EDX
TEST BPL,BPL
MOV ESI,0x6474e551
MOV RDI,RBX
SETNZ DL
ADD EDX,0x6
CALL 0x001b7840
MOV RDX,qword ptr [0x003f85c0]
MOV RDX,qword ptr [RDX + 0x10]
TEST RDX,RDX
JZ 0x001ba567
MOV RDX,qword ptr [RDX + 0x8d28]
CMP qword ptr [RAX + 0x2d8],0xf
MOV qword ptr [RAX + 0x2c8],RDX
JA 0x001ba434
MOV qword ptr [RAX + 0x2d8],0x10
ADD RSP,0x8
POP RBX
POP RBP
RET
LEA RDI,[RBX + 0x10]
XOR ECX,ECX
LEA RSI,[0x342809]
XOR EDX,EDX
CALL 0x002481b0
XOR ECX,ECX
TEST BPL,BPL
MOV RDI,RBX
SETNZ CL
ADD RSP,0x8
XOR R9D,R9D
XOR R8D,R8D
POP RBX
SHL RCX,0x2
MOV EDX,0x1
MOV RSI,RAX
POP RBP
JMP 0x001b7ef0
CMP byte ptr [RAX + 0x7039],0x0
JZ 0x001ba410
LEA RDI,[0x342f80]
CALL 0x00144320
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00191920
MOV RAX,qword ptr [0x003f85c0]
MOV RAX,qword ptr [RAX + 0x10]
TEST RAX,RAX
JNZ 0x001ba410
LEA RDX,[0x343bc8]
MOV ESI,0x5c
LEA RDI,[0x333279]
CALL 0x00199900
LEA RDX,[0x343b6b]
MOV ESI,0x69
LEA RDI,[0x333279]
CALL 0x00199900
(translation_unit "void FUN_001ba3d0(long param_1)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  char cVar3;\n  \n  lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n  if (lVar1 == 0) {\nLAB_001ba567:\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(int *)(lVar1 + 0x904c) == 0) {\n    if (*(char *)(param_1 + 0x36b) == '\0') {\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }\n    cVar3 = *(char *)(param_1 + 0x36a);\n    if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }\n  }\n  else {\n    cVar3 = *(int *)(lVar1 + 0x904c) == 1;\n    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }\n  }\n  if (*(char *)(lVar1 + 0x5051) != '\0') {\n    uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);\n    FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);\n    return;\n  }\n  if ((*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||\n     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)) {\n    lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');\n    if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;\n    *(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);\n    if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_001ba3d0(long param_1)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  char cVar3;\n  \n  lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n  if (lVar1 == 0) {\nLAB_001ba567:\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(int *)(lVar1 + 0x904c) == 0) {\n    if (*(char *)(param_1 + 0x36b) == '\0') {\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }\n    cVar3 = *(char *)(param_1 + 0x36a);\n    if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }\n  }\n  else {\n    cVar3 = *(int *)(lVar1 + 0x904c) == 1;\n    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }\n  }\n  if (*(char *)(lVar1 + 0x5051) != '\0') {\n    uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);\n    FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);\n    return;\n  }\n  if ((*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||\n     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)) {\n    lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');\n    if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;\n    *(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);\n    if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_001ba3d0(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  undefined8 uVar2;\n  char cVar3;\n  \n  lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n  if (lVar1 == 0) {\nLAB_001ba567:\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(int *)(lVar1 + 0x904c) == 0) {\n    if (*(char *)(param_1 + 0x36b) == '\0') {\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }\n    cVar3 = *(char *)(param_1 + 0x36a);\n    if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }\n  }\n  else {\n    cVar3 = *(int *)(lVar1 + 0x904c) == 1;\n    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }\n  }\n  if (*(char *)(lVar1 + 0x5051) != '\0') {\n    uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);\n    FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);\n    return;\n  }\n  if ((*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||\n     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)) {\n    lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');\n    if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;\n    *(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);\n    if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (expression_statement "lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);" (assignment_expression "lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10)" identifier = (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x10)" ( (binary_expression "PTR_DAT_003f85c0 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (lVar1 == 0) {\nLAB_001ba567:\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(lVar1 == 0)" ( (binary_expression "lVar1 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001ba567:\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/parameters.h",0x5c,"options");\n  }" { (labeled_statement "LAB_001ba567:\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/parameters.h",0x5c,"options");" statement_identifier : comment (expression_statement "FUN_00199900("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_00199900("../../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 (*(int *)(lVar1 + 0x904c) == 0) {\n    if (*(char *)(param_1 + 0x36b) == '\0') {\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }\n    cVar3 = *(char *)(param_1 + 0x36a);\n    if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }\n  }\n  else {\n    cVar3 = *(int *)(lVar1 + 0x904c) == 1;\n    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }\n  }" if (parenthesized_expression "(*(int *)(lVar1 + 0x904c) == 0)" ( (binary_expression "*(int *)(lVar1 + 0x904c) == 0" (pointer_expression "*(int *)(lVar1 + 0x904c)" * (cast_expression "(int *)(lVar1 + 0x904c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x904c)" ( (binary_expression "lVar1 + 0x904c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(char *)(param_1 + 0x36b) == '\0') {\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }\n    cVar3 = *(char *)(param_1 + 0x36a);\n    if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }\n  }" { (if_statement "if (*(char *)(param_1 + 0x36b) == '\0') {\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }" if (parenthesized_expression "(*(char *)(param_1 + 0x36b) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x36b) == '\0'" (pointer_expression "*(char *)(param_1 + 0x36b)" * (cast_expression "(char *)(param_1 + 0x36b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x36b)" ( (binary_expression "param_1 + 0x36b" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }" { (if_statement "if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }" if (parenthesized_expression "(*(char *)(lVar1 + 0x8d20) == '\0')" ( (binary_expression "*(char *)(lVar1 + 0x8d20) == '\0'" (pointer_expression "*(char *)(lVar1 + 0x8d20)" * (cast_expression "(char *)(lVar1 + 0x8d20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x8d20)" ( (binary_expression "lVar1 + 0x8d20" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (if_statement "if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }" if (parenthesized_expression "(*(char *)(lVar1 + 0x5051) != '\0')" ( (binary_expression "*(char *)(lVar1 + 0x5051) != '\0'" (pointer_expression "*(char *)(lVar1 + 0x5051)" * (cast_expression "(char *)(lVar1 + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x5051)" ( (binary_expression "lVar1 + 0x5051" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (expression_statement "cVar3 = *(char *)(param_1 + 0x36a);" (assignment_expression "cVar3 = *(char *)(param_1 + 0x36a)" identifier = (pointer_expression "*(char *)(param_1 + 0x36a)" * (cast_expression "(char *)(param_1 + 0x36a)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x36a)" ( (binary_expression "param_1 + 0x36a" identifier + number_literal) ))))) ;) (if_statement "if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }" if (parenthesized_expression "((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0'))" ( (binary_expression "(cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')" (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')" ( (comma_expression "cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0'" (assignment_expression "cVar3 = *(char *)(param_1 + 0x36c)" identifier = (pointer_expression "*(char *)(param_1 + 0x36c)" * (cast_expression "(char *)(param_1 + 0x36c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x36c)" ( (binary_expression "param_1 + 0x36c" identifier + number_literal) ))))) , (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }" { (if_statement "if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }" if (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x18) == 0)" ( (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" ( (binary_expression "PTR_DAT_003f85c0 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }" { comment (expression_statement "FUN_00199900("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_00199900("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (expression_statement "cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);" (assignment_expression "cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf)" identifier = (pointer_expression "*(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf)" * (cast_expression "(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf)" ( (binary_expression "*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf" (pointer_expression "*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" ( (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" ( (binary_expression "PTR_DAT_003f85c0 + 0x18" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) })) }) (else_clause "else {\n    cVar3 = *(int *)(lVar1 + 0x904c) == 1;\n    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }\n  }" else (compound_statement "{\n    cVar3 = *(int *)(lVar1 + 0x904c) == 1;\n    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }\n  }" { (expression_statement "cVar3 = *(int *)(lVar1 + 0x904c) == 1;" (assignment_expression "cVar3 = *(int *)(lVar1 + 0x904c) == 1" identifier = (binary_expression "*(int *)(lVar1 + 0x904c) == 1" (pointer_expression "*(int *)(lVar1 + 0x904c)" * (cast_expression "(int *)(lVar1 + 0x904c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x904c)" ( (binary_expression "lVar1 + 0x904c" identifier + number_literal) )))) == number_literal)) ;) (if_statement "if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }" if (parenthesized_expression "(((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0'))" ( (binary_expression "((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')" (parenthesized_expression "((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0'))" ( (binary_expression "(!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')" (parenthesized_expression "(!(bool)cVar3)" ( (unary_expression "!(bool)cVar3" ! (cast_expression "(bool)cVar3" ( (type_descriptor "bool" primitive_type) ) identifier)) )) && (parenthesized_expression "(*(char *)(param_1 + 0x36a) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x36a) != '\0'" (pointer_expression "*(char *)(param_1 + 0x36a)" * (cast_expression "(char *)(param_1 + 0x36a)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x36a)" ( (binary_expression "param_1 + 0x36a" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(*(char *)(lVar1 + 0x7039) != '\0')" ( (binary_expression "*(char *)(lVar1 + 0x7039) != '\0'" (pointer_expression "*(char *)(lVar1 + 0x7039)" * (cast_expression "(char *)(lVar1 + 0x7039)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x7039)" ( (binary_expression "lVar1 + 0x7039" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }" { (expression_statement "uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");" (assignment_expression "uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given")" identifier = (call_expression "gettext("one or more inputs require executable stack, but -z noexecstack was given")" identifier (argument_list "("one or more inputs require executable stack, but -z noexecstack was given")" ( (string_literal ""one or more inputs require executable stack, but -z noexecstack was given"" " string_content ") )))) ;) (expression_statement "FUN_00191920(uVar2);" (call_expression "FUN_00191920(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);" (assignment_expression "lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10)" identifier = (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x10)" ( (binary_expression "PTR_DAT_003f85c0 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (lVar1 == 0) goto LAB_001ba567;" if (parenthesized_expression "(lVar1 == 0)" ( (binary_expression "lVar1 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001ba567;" goto statement_identifier ;)) })) }))) (if_statement "if (*(char *)(lVar1 + 0x5051) != '\0') {\n    uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);\n    FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);\n    return;\n  }" if (parenthesized_expression "(*(char *)(lVar1 + 0x5051) != '\0')" ( (binary_expression "*(char *)(lVar1 + 0x5051) != '\0'" (pointer_expression "*(char *)(lVar1 + 0x5051)" * (cast_expression "(char *)(lVar1 + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x5051)" ( (binary_expression "lVar1 + 0x5051" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);\n    FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);\n    return;\n  }" { (expression_statement "uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);" (assignment_expression "uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0)" identifier = (call_expression "FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0)" identifier (argument_list "(param_1 + 0x10,".note.GNU-stack",0,0)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , (string_literal "".note.GNU-stack"" " string_content ") , number_literal , number_literal )))) ;) (expression_statement "FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);" (call_expression "FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0)" identifier (argument_list "(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0)" ( identifier , identifier , number_literal , (binary_expression "(ulong)(cVar3 != '\0') << 2" (call_expression "(ulong)(cVar3 != '\0')" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) ))) << number_literal) , number_literal , number_literal ))) ;) (return_statement "return;" return ;) })) (if_statement "if ((*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||\n     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)) {\n    lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');\n    if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;\n    *(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);\n    if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }\n  }" if (parenthesized_expression "((*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||\n     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0))" ( (binary_expression "(*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||\n     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)" (parenthesized_expression "(*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')" ( (binary_expression "*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0'" (pointer_expression "*(char *)(*(long *)(param_1 + 8) + 0x148)" * (cast_expression "(char *)(*(long *)(param_1 + 8) + 0x148)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 8) + 0x148)" ( (binary_expression "*(long *)(param_1 + 8) + 0x148" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)" ( (binary_expression "*(long *)(*(long *)(param_1 + 8) + 0x168) == 0" (pointer_expression "*(long *)(*(long *)(param_1 + 8) + 0x168)" * (cast_expression "(long *)(*(long *)(param_1 + 8) + 0x168)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 8) + 0x168)" ( (binary_expression "*(long *)(param_1 + 8) + 0x168" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');\n    if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;\n    *(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);\n    if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }\n  }" { (expression_statement "lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');" (assignment_expression "lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06')" identifier = (call_expression "FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06')" identifier (argument_list "(param_1,0x6474e551,(cVar3 != '\0') + '\x06')" ( identifier , number_literal , (binary_expression "(cVar3 != '\0') + '\x06'" (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) + (char_literal "'\x06'" ' escape_sequence ')) )))) ;) (if_statement "if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;" if (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x10)" ( (binary_expression "PTR_DAT_003f85c0 + 0x10" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_001ba567;" goto statement_identifier ;)) (expression_statement "*(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);" (assignment_expression "*(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28)" (pointer_expression "*(undefined8 *)(lVar1 + 0x2c8)" * (cast_expression "(undefined8 *)(lVar1 + 0x2c8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x2c8)" ( (binary_expression "lVar1 + 0x2c8" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28)" * (cast_expression "(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28)" ( (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x10)" ( (binary_expression "PTR_DAT_003f85c0 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }" if (parenthesized_expression "(*(ulong *)(lVar1 + 0x2d8) < 0x10)" ( (binary_expression "*(ulong *)(lVar1 + 0x2d8) < 0x10" (pointer_expression "*(ulong *)(lVar1 + 0x2d8)" * (cast_expression "(ulong *)(lVar1 + 0x2d8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x2d8)" ( (binary_expression "lVar1 + 0x2d8" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }" { (expression_statement "*(undefined8 *)(lVar1 + 0x2d8) = 0x10;" (assignment_expression "*(undefined8 *)(lVar1 + 0x2d8) = 0x10" (pointer_expression "*(undefined8 *)(lVar1 + 0x2d8)" * (cast_expression "(undefined8 *)(lVar1 + 0x2d8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x2d8)" ( (binary_expression "lVar1 + 0x2d8" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })) })) (return_statement "return;" return ;) })))
(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: void create_stack_segment(Layout * this) */\n\nvoid __thiscall gold::Layout::create_stack_segment(Layout *this)\n\n{\n  General_options *pGVar1;\n  Output_segment *pOVar2;\n  char *pcVar3;\n  char cVar4;\n  \n  pGVar1 = parameters->options_;\n  if (pGVar1 == (General_options *)0x0) {\nLAB_001ba567:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  if (pGVar1->execstack_status_ == EXECSTACK_FROM_INPUT) {\n    if (this->input_with_gnu_stack_note_ == false) {\n      if ((pGVar1->stack_size_).user_set_via_option == false) {\n        return;\n      }\n      if ((pGVar1->relocatable_).value != false) {\n        return;\n      }\n    }\n    cVar4 = this->input_requires_executable_stack_;\n    if (((bool)cVar4 == false) &&\n       (cVar4 = this->input_without_gnu_stack_note_, (bool)cVar4 != false)) {\n      if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n      }\n      cVar4 = parameters->target_->pti_->is_default_stack_executable;\n    }\n  }\n  else {\n    cVar4 = pGVar1->execstack_status_ == EXECSTACK_YES;\n    if (((!(bool)cVar4) && (this->input_requires_executable_stack_ != false)) &&\n       ((pGVar1->warn_execstack_).value != false)) {\n      pcVar3 = (char *)gettext(\n                              "one or more inputs require executable stack, but -z noexecstack was given"\n                              );\n      gold_warning(pcVar3);\n      pGVar1 = parameters->options_;\n      if (pGVar1 == (General_options *)0x0) goto LAB_001ba567;\n    }\n  }\n  if ((pGVar1->relocatable_).value != false) {\n    pcVar3 = Stringpool_template<char>::add(&this->namepool_,".note.GNU-stack",false,(Key *)0x0);\n    make_output_section(this,pcVar3,1,(ulong)(cVar4 != '\0') << 2,ORDER_INVALID,false);\n    return;\n  }\n  if (((this->script_options_->script_sections_).saw_sections_clause_ == false) ||\n     ((this->script_options_->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)) {\n    pOVar2 = make_output_segment(this,0x6474e551,(cVar4 != '\0') + 6);\n    if (parameters->options_ == (General_options *)0x0) goto LAB_001ba567;\n    pOVar2->memsz_ = (parameters->options_->stack_size_).value;\n    if (pOVar2->min_p_align_ < 0x10) {\n      pOVar2->min_p_align_ = 0x10;\n      return;\n    }\n  }\n  return;\n}\n\n" comment comment comment (function_definition "void __thiscall gold::Layout::create_stack_segment(Layout *this)\n\n{\n  General_options *pGVar1;\n  Output_segment *pOVar2;\n  char *pcVar3;\n  char cVar4;\n  \n  pGVar1 = parameters->options_;\n  if (pGVar1 == (General_options *)0x0) {\nLAB_001ba567:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  if (pGVar1->execstack_status_ == EXECSTACK_FROM_INPUT) {\n    if (this->input_with_gnu_stack_note_ == false) {\n      if ((pGVar1->stack_size_).user_set_via_option == false) {\n        return;\n      }\n      if ((pGVar1->relocatable_).value != false) {\n        return;\n      }\n    }\n    cVar4 = this->input_requires_executable_stack_;\n    if (((bool)cVar4 == false) &&\n       (cVar4 = this->input_without_gnu_stack_note_, (bool)cVar4 != false)) {\n      if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n      }\n      cVar4 = parameters->target_->pti_->is_default_stack_executable;\n    }\n  }\n  else {\n    cVar4 = pGVar1->execstack_status_ == EXECSTACK_YES;\n    if (((!(bool)cVar4) && (this->input_requires_executable_stack_ != false)) &&\n       ((pGVar1->warn_execstack_).value != false)) {\n      pcVar3 = (char *)gettext(\n                              "one or more inputs require executable stack, but -z noexecstack was given"\n                              );\n      gold_warning(pcVar3);\n      pGVar1 = parameters->options_;\n      if (pGVar1 == (General_options *)0x0) goto LAB_001ba567;\n    }\n  }\n  if ((pGVar1->relocatable_).value != false) {\n    pcVar3 = Stringpool_template<char>::add(&this->namepool_,".note.GNU-stack",false,(Key *)0x0);\n    make_output_section(this,pcVar3,1,(ulong)(cVar4 != '\0') << 2,ORDER_INVALID,false);\n    return;\n  }\n  if (((this->script_options_->script_sections_).saw_sections_clause_ == false) ||\n     ((this->script_options_->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)) {\n    pOVar2 = make_output_segment(this,0x6474e551,(cVar4 != '\0') + 6);\n    if (parameters->options_ == (General_options *)0x0) goto LAB_001ba567;\n    pOVar2->memsz_ = (parameters->options_->stack_size_).value;\n    if (pOVar2->min_p_align_ < 0x10) {\n      pOVar2->min_p_align_ = 0x10;\n      return;\n    }\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Layout::" identifier : : identifier : :) (function_declarator "create_stack_segment(Layout *this)" identifier (parameter_list "(Layout *this)" ( (parameter_declaration "Layout *this" type_identifier (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  General_options *pGVar1;\n  Output_segment *pOVar2;\n  char *pcVar3;\n  char cVar4;\n  \n  pGVar1 = parameters->options_;\n  if (pGVar1 == (General_options *)0x0) {\nLAB_001ba567:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  if (pGVar1->execstack_status_ == EXECSTACK_FROM_INPUT) {\n    if (this->input_with_gnu_stack_note_ == false) {\n      if ((pGVar1->stack_size_).user_set_via_option == false) {\n        return;\n      }\n      if ((pGVar1->relocatable_).value != false) {\n        return;\n      }\n    }\n    cVar4 = this->input_requires_executable_stack_;\n    if (((bool)cVar4 == false) &&\n       (cVar4 = this->input_without_gnu_stack_note_, (bool)cVar4 != false)) {\n      if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n      }\n      cVar4 = parameters->target_->pti_->is_default_stack_executable;\n    }\n  }\n  else {\n    cVar4 = pGVar1->execstack_status_ == EXECSTACK_YES;\n    if (((!(bool)cVar4) && (this->input_requires_executable_stack_ != false)) &&\n       ((pGVar1->warn_execstack_).value != false)) {\n      pcVar3 = (char *)gettext(\n                              "one or more inputs require executable stack, but -z noexecstack was given"\n                              );\n      gold_warning(pcVar3);\n      pGVar1 = parameters->options_;\n      if (pGVar1 == (General_options *)0x0) goto LAB_001ba567;\n    }\n  }\n  if ((pGVar1->relocatable_).value != false) {\n    pcVar3 = Stringpool_template<char>::add(&this->namepool_,".note.GNU-stack",false,(Key *)0x0);\n    make_output_section(this,pcVar3,1,(ulong)(cVar4 != '\0') << 2,ORDER_INVALID,false);\n    return;\n  }\n  if (((this->script_options_->script_sections_).saw_sections_clause_ == false) ||\n     ((this->script_options_->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)) {\n    pOVar2 = make_output_segment(this,0x6474e551,(cVar4 != '\0') + 6);\n    if (parameters->options_ == (General_options *)0x0) goto LAB_001ba567;\n    pOVar2->memsz_ = (parameters->options_->stack_size_).value;\n    if (pOVar2->min_p_align_ < 0x10) {\n      pOVar2->min_p_align_ = 0x10;\n      return;\n    }\n  }\n  return;\n}" { (declaration "General_options *pGVar1;" type_identifier (pointer_declarator "*pGVar1" * identifier) ;) (declaration "Output_segment *pOVar2;" type_identifier (pointer_declarator "*pOVar2" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char cVar4;" primitive_type 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) {\nLAB_001ba567:\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 "{\nLAB_001ba567:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }" { (labeled_statement "LAB_001ba567:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" statement_identifier : 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->execstack_status_ == EXECSTACK_FROM_INPUT) {\n    if (this->input_with_gnu_stack_note_ == false) {\n      if ((pGVar1->stack_size_).user_set_via_option == false) {\n        return;\n      }\n      if ((pGVar1->relocatable_).value != false) {\n        return;\n      }\n    }\n    cVar4 = this->input_requires_executable_stack_;\n    if (((bool)cVar4 == false) &&\n       (cVar4 = this->input_without_gnu_stack_note_, (bool)cVar4 != false)) {\n      if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n      }\n      cVar4 = parameters->target_->pti_->is_default_stack_executable;\n    }\n  }\n  else {\n    cVar4 = pGVar1->execstack_status_ == EXECSTACK_YES;\n    if (((!(bool)cVar4) && (this->input_requires_executable_stack_ != false)) &&\n       ((pGVar1->warn_execstack_).value != false)) {\n      pcVar3 = (char *)gettext(\n                              "one or more inputs require executable stack, but -z noexecstack was given"\n                              );\n      gold_warning(pcVar3);\n      pGVar1 = parameters->options_;\n      if (pGVar1 == (General_options *)0x0) goto LAB_001ba567;\n    }\n  }" if (parenthesized_expression "(pGVar1->execstack_status_ == EXECSTACK_FROM_INPUT)" ( (binary_expression "pGVar1->execstack_status_ == EXECSTACK_FROM_INPUT" (field_expression "pGVar1->execstack_status_" identifier -> field_identifier) == identifier) )) (compound_statement "{\n    if (this->input_with_gnu_stack_note_ == false) {\n      if ((pGVar1->stack_size_).user_set_via_option == false) {\n        return;\n      }\n      if ((pGVar1->relocatable_).value != false) {\n        return;\n      }\n    }\n    cVar4 = this->input_requires_executable_stack_;\n    if (((bool)cVar4 == false) &&\n       (cVar4 = this->input_without_gnu_stack_note_, (bool)cVar4 != false)) {\n      if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n      }\n      cVar4 = parameters->target_->pti_->is_default_stack_executable;\n    }\n  }" { (if_statement "if (this->input_with_gnu_stack_note_ == false) {\n      if ((pGVar1->stack_size_).user_set_via_option == false) {\n        return;\n      }\n      if ((pGVar1->relocatable_).value != false) {\n        return;\n      }\n    }" if (parenthesized_expression "(this->input_with_gnu_stack_note_ == false)" ( (binary_expression "this->input_with_gnu_stack_note_ == false" (field_expression "this->input_with_gnu_stack_note_" identifier -> field_identifier) == false) )) (compound_statement "{\n      if ((pGVar1->stack_size_).user_set_via_option == false) {\n        return;\n      }\n      if ((pGVar1->relocatable_).value != false) {\n        return;\n      }\n    }" { (if_statement "if ((pGVar1->stack_size_).user_set_via_option == false) {\n        return;\n      }" if (parenthesized_expression "((pGVar1->stack_size_).user_set_via_option == false)" ( (binary_expression "(pGVar1->stack_size_).user_set_via_option == false" (field_expression "(pGVar1->stack_size_).user_set_via_option" (parenthesized_expression "(pGVar1->stack_size_)" ( (field_expression "pGVar1->stack_size_" identifier -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (if_statement "if ((pGVar1->relocatable_).value != false) {\n        return;\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;\n      }" { (return_statement "return;" return ;) })) })) (expression_statement "cVar4 = this->input_requires_executable_stack_;" (assignment_expression "cVar4 = this->input_requires_executable_stack_" identifier = (field_expression "this->input_requires_executable_stack_" identifier -> field_identifier)) ;) (if_statement "if (((bool)cVar4 == false) &&\n       (cVar4 = this->input_without_gnu_stack_note_, (bool)cVar4 != false)) {\n      if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n      }\n      cVar4 = parameters->target_->pti_->is_default_stack_executable;\n    }" if (parenthesized_expression "(((bool)cVar4 == false) &&\n       (cVar4 = this->input_without_gnu_stack_note_, (bool)cVar4 != false))" ( (binary_expression "((bool)cVar4 == false) &&\n       (cVar4 = this->input_without_gnu_stack_note_, (bool)cVar4 != false)" (parenthesized_expression "((bool)cVar4 == false)" ( (binary_expression "(bool)cVar4 == false" (cast_expression "(bool)cVar4" ( (type_descriptor "bool" primitive_type) ) identifier) == false) )) && (parenthesized_expression "(cVar4 = this->input_without_gnu_stack_note_, (bool)cVar4 != false)" ( (comma_expression "cVar4 = this->input_without_gnu_stack_note_, (bool)cVar4 != false" (assignment_expression "cVar4 = this->input_without_gnu_stack_note_" identifier = (field_expression "this->input_without_gnu_stack_note_" identifier -> field_identifier)) , (binary_expression "(bool)cVar4 != false" (cast_expression "(bool)cVar4" ( (type_descriptor "bool" primitive_type) ) identifier) != false)) ))) )) (compound_statement "{\n      if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n      }\n      cVar4 = parameters->target_->pti_->is_default_stack_executable;\n    }" { (if_statement "if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n      }" if (parenthesized_expression "(parameters->target_ == (Target *)0x0)" ( (binary_expression "parameters->target_ == (Target *)0x0" (field_expression "parameters->target_" identifier -> field_identifier) == (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n      }" { comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x69,"target");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (expression_statement "cVar4 = parameters->target_->pti_->is_default_stack_executable;" (assignment_expression "cVar4 = parameters->target_->pti_->is_default_stack_executable" identifier = (field_expression "parameters->target_->pti_->is_default_stack_executable" (field_expression "parameters->target_->pti_" (field_expression "parameters->target_" identifier -> field_identifier) -> field_identifier) -> field_identifier)) ;) })) }) (else_clause "else {\n    cVar4 = pGVar1->execstack_status_ == EXECSTACK_YES;\n    if (((!(bool)cVar4) && (this->input_requires_executable_stack_ != false)) &&\n       ((pGVar1->warn_execstack_).value != false)) {\n      pcVar3 = (char *)gettext(\n                              "one or more inputs require executable stack, but -z noexecstack was given"\n                              );\n      gold_warning(pcVar3);\n      pGVar1 = parameters->options_;\n      if (pGVar1 == (General_options *)0x0) goto LAB_001ba567;\n    }\n  }" else (compound_statement "{\n    cVar4 = pGVar1->execstack_status_ == EXECSTACK_YES;\n    if (((!(bool)cVar4) && (this->input_requires_executable_stack_ != false)) &&\n       ((pGVar1->warn_execstack_).value != false)) {\n      pcVar3 = (char *)gettext(\n                              "one or more inputs require executable stack, but -z noexecstack was given"\n                              );\n      gold_warning(pcVar3);\n      pGVar1 = parameters->options_;\n      if (pGVar1 == (General_options *)0x0) goto LAB_001ba567;\n    }\n  }" { (expression_statement "cVar4 = pGVar1->execstack_status_ == EXECSTACK_YES;" (assignment_expression "cVar4 = pGVar1->execstack_status_ == EXECSTACK_YES" identifier = (binary_expression "pGVar1->execstack_status_ == EXECSTACK_YES" (field_expression "pGVar1->execstack_status_" identifier -> field_identifier) == identifier)) ;) (if_statement "if (((!(bool)cVar4) && (this->input_requires_executable_stack_ != false)) &&\n       ((pGVar1->warn_execstack_).value != false)) {\n      pcVar3 = (char *)gettext(\n                              "one or more inputs require executable stack, but -z noexecstack was given"\n                              );\n      gold_warning(pcVar3);\n      pGVar1 = parameters->options_;\n      if (pGVar1 == (General_options *)0x0) goto LAB_001ba567;\n    }" if (parenthesized_expression "(((!(bool)cVar4) && (this->input_requires_executable_stack_ != false)) &&\n       ((pGVar1->warn_execstack_).value != false))" ( (binary_expression "((!(bool)cVar4) && (this->input_requires_executable_stack_ != false)) &&\n       ((pGVar1->warn_execstack_).value != false)" (parenthesized_expression "((!(bool)cVar4) && (this->input_requires_executable_stack_ != false))" ( (binary_expression "(!(bool)cVar4) && (this->input_requires_executable_stack_ != false)" (parenthesized_expression "(!(bool)cVar4)" ( (unary_expression "!(bool)cVar4" ! (cast_expression "(bool)cVar4" ( (type_descriptor "bool" primitive_type) ) identifier)) )) && (parenthesized_expression "(this->input_requires_executable_stack_ != false)" ( (binary_expression "this->input_requires_executable_stack_ != false" (field_expression "this->input_requires_executable_stack_" identifier -> field_identifier) != false) ))) )) && (parenthesized_expression "((pGVar1->warn_execstack_).value != false)" ( (binary_expression "(pGVar1->warn_execstack_).value != false" (field_expression "(pGVar1->warn_execstack_).value" (parenthesized_expression "(pGVar1->warn_execstack_)" ( (field_expression "pGVar1->warn_execstack_" identifier -> field_identifier) )) . field_identifier) != false) ))) )) (compound_statement "{\n      pcVar3 = (char *)gettext(\n                              "one or more inputs require executable stack, but -z noexecstack was given"\n                              );\n      gold_warning(pcVar3);\n      pGVar1 = parameters->options_;\n      if (pGVar1 == (General_options *)0x0) goto LAB_001ba567;\n    }" { (expression_statement "pcVar3 = (char *)gettext(\n                              "one or more inputs require executable stack, but -z noexecstack was given"\n                              );" (assignment_expression "pcVar3 = (char *)gettext(\n                              "one or more inputs require executable stack, but -z noexecstack was given"\n                              )" identifier = (cast_expression "(char *)gettext(\n                              "one or more inputs require executable stack, but -z noexecstack was given"\n                              )" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(\n                              "one or more inputs require executable stack, but -z noexecstack was given"\n                              )" identifier (argument_list "(\n                              "one or more inputs require executable stack, but -z noexecstack was given"\n                              )" ( (string_literal ""one or more inputs require executable stack, but -z noexecstack was given"" " string_content ") ))))) ;) (expression_statement "gold_warning(pcVar3);" (call_expression "gold_warning(pcVar3)" identifier (argument_list "(pcVar3)" ( 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) goto LAB_001ba567;" 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)) )) (goto_statement "goto LAB_001ba567;" goto statement_identifier ;)) })) }))) (if_statement "if ((pGVar1->relocatable_).value != false) {\n    pcVar3 = Stringpool_template<char>::add(&this->namepool_,".note.GNU-stack",false,(Key *)0x0);\n    make_output_section(this,pcVar3,1,(ulong)(cVar4 != '\0') << 2,ORDER_INVALID,false);\n    return;\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    pcVar3 = Stringpool_template<char>::add(&this->namepool_,".note.GNU-stack",false,(Key *)0x0);\n    make_output_section(this,pcVar3,1,(ulong)(cVar4 != '\0') << 2,ORDER_INVALID,false);\n    return;\n  }" { (expression_statement "pcVar3 = Stringpool_template<char>::add(&this->namepool_,".note.GNU-stack",false,(Key *)0x0);" (assignment_expression "pcVar3 = Stringpool_template<char>::add(&this->namepool_,".note.GNU-stack",false,(Key *)0x0)" identifier = (binary_expression "Stringpool_template<char>::add(&this->namepool_,".note.GNU-stack",false,(Key *)0x0)" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) (call_expression "add(&this->namepool_,".note.GNU-stack",false,(Key *)0x0)" identifier (argument_list "(&this->namepool_,".note.GNU-stack",false,(Key *)0x0)" ( (pointer_expression "&this->namepool_" & (field_expression "this->namepool_" identifier -> field_identifier)) , (string_literal "".note.GNU-stack"" " string_content ") , false , (cast_expression "(Key *)0x0" ( (type_descriptor "Key *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))))) ;) (expression_statement "make_output_section(this,pcVar3,1,(ulong)(cVar4 != '\0') << 2,ORDER_INVALID,false);" (call_expression "make_output_section(this,pcVar3,1,(ulong)(cVar4 != '\0') << 2,ORDER_INVALID,false)" identifier (argument_list "(this,pcVar3,1,(ulong)(cVar4 != '\0') << 2,ORDER_INVALID,false)" ( identifier , identifier , number_literal , (binary_expression "(ulong)(cVar4 != '\0') << 2" (call_expression "(ulong)(cVar4 != '\0')" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) ))) << number_literal) , identifier , false ))) ;) (return_statement "return;" return ;) })) (if_statement "if (((this->script_options_->script_sections_).saw_sections_clause_ == false) ||\n     ((this->script_options_->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)) {\n    pOVar2 = make_output_segment(this,0x6474e551,(cVar4 != '\0') + 6);\n    if (parameters->options_ == (General_options *)0x0) goto LAB_001ba567;\n    pOVar2->memsz_ = (parameters->options_->stack_size_).value;\n    if (pOVar2->min_p_align_ < 0x10) {\n      pOVar2->min_p_align_ = 0x10;\n      return;\n    }\n  }" if (parenthesized_expression "(((this->script_options_->script_sections_).saw_sections_clause_ == false) ||\n     ((this->script_options_->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0))" ( (binary_expression "((this->script_options_->script_sections_).saw_sections_clause_ == false) ||\n     ((this->script_options_->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)" (parenthesized_expression "((this->script_options_->script_sections_).saw_sections_clause_ == false)" ( (binary_expression "(this->script_options_->script_sections_).saw_sections_clause_ == false" (field_expression "(this->script_options_->script_sections_).saw_sections_clause_" (parenthesized_expression "(this->script_options_->script_sections_)" ( (field_expression "this->script_options_->script_sections_" (field_expression "this->script_options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) == false) )) || (parenthesized_expression "((this->script_options_->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)" ( (binary_expression "(this->script_options_->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0" (field_expression "(this->script_options_->script_sections_).phdrs_elements_" (parenthesized_expression "(this->script_options_->script_sections_)" ( (field_expression "this->script_options_->script_sections_" (field_expression "this->script_options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) == (cast_expression "(Phdrs_elements *)0x0" ( (type_descriptor "Phdrs_elements *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    pOVar2 = make_output_segment(this,0x6474e551,(cVar4 != '\0') + 6);\n    if (parameters->options_ == (General_options *)0x0) goto LAB_001ba567;\n    pOVar2->memsz_ = (parameters->options_->stack_size_).value;\n    if (pOVar2->min_p_align_ < 0x10) {\n      pOVar2->min_p_align_ = 0x10;\n      return;\n    }\n  }" { (expression_statement "pOVar2 = make_output_segment(this,0x6474e551,(cVar4 != '\0') + 6);" (assignment_expression "pOVar2 = make_output_segment(this,0x6474e551,(cVar4 != '\0') + 6)" identifier = (call_expression "make_output_segment(this,0x6474e551,(cVar4 != '\0') + 6)" identifier (argument_list "(this,0x6474e551,(cVar4 != '\0') + 6)" ( identifier , number_literal , (binary_expression "(cVar4 != '\0') + 6" (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) + number_literal) )))) ;) (if_statement "if (parameters->options_ == (General_options *)0x0) goto LAB_001ba567;" if (parenthesized_expression "(parameters->options_ == (General_options *)0x0)" ( (binary_expression "parameters->options_ == (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001ba567;" goto statement_identifier ;)) (expression_statement "pOVar2->memsz_ = (parameters->options_->stack_size_).value;" (assignment_expression "pOVar2->memsz_ = (parameters->options_->stack_size_).value" (field_expression "pOVar2->memsz_" identifier -> field_identifier) = (field_expression "(parameters->options_->stack_size_).value" (parenthesized_expression "(parameters->options_->stack_size_)" ( (field_expression "parameters->options_->stack_size_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier)) ;) (if_statement "if (pOVar2->min_p_align_ < 0x10) {\n      pOVar2->min_p_align_ = 0x10;\n      return;\n    }" if (parenthesized_expression "(pOVar2->min_p_align_ < 0x10)" ( (binary_expression "pOVar2->min_p_align_ < 0x10" (field_expression "pOVar2->min_p_align_" identifier -> field_identifier) < number_literal) )) (compound_statement "{\n      pOVar2->min_p_align_ = 0x10;\n      return;\n    }" { (expression_statement "pOVar2->min_p_align_ = 0x10;" (assignment_expression "pOVar2->min_p_align_ = 0x10" (field_expression "pOVar2->min_p_align_" identifier -> field_identifier) = number_literal) ;) (return_statement "return;" return ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001ba3d0(long param_1)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  char cVar3;\n  \n  lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n  if (lVar1 == 0) {\nLAB_001ba567:\n                    \n    FUN_00199900("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(int *)(lVar1 + 0x904c) == 0) {\n    if (*(char *)(param_1 + 0x36b) == '\0') {\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }\n    cVar3 = *(char *)(param_1 + 0x36a);\n    if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    \n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }\n  }\n  else {\n    cVar3 = *(int *)(lVar1 + 0x904c) == 1;\n    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }\n  }\n  if (*(char *)(lVar1 + 0x5051) != '\0') {\n    uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);\n    FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);\n    return;\n  }\n  if ((*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||\n     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)) {\n    lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');\n    if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;\n    *(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);\n    if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_001ba3d0(long param_1)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  char cVar3;\n  \n  lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n  if (lVar1 == 0) {\nLAB_001ba567:\n                    \n    FUN_00199900("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(int *)(lVar1 + 0x904c) == 0) {\n    if (*(char *)(param_1 + 0x36b) == '\0') {\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }\n    cVar3 = *(char *)(param_1 + 0x36a);\n    if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    \n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }\n  }\n  else {\n    cVar3 = *(int *)(lVar1 + 0x904c) == 1;\n    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }\n  }\n  if (*(char *)(lVar1 + 0x5051) != '\0') {\n    uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);\n    FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);\n    return;\n  }\n  if ((*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||\n     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)) {\n    lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');\n    if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;\n    *(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);\n    if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_001ba3d0(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  undefined8 uVar2;\n  char cVar3;\n  \n  lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n  if (lVar1 == 0) {\nLAB_001ba567:\n                    \n    FUN_00199900("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(int *)(lVar1 + 0x904c) == 0) {\n    if (*(char *)(param_1 + 0x36b) == '\0') {\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }\n    cVar3 = *(char *)(param_1 + 0x36a);\n    if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    \n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }\n  }\n  else {\n    cVar3 = *(int *)(lVar1 + 0x904c) == 1;\n    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }\n  }\n  if (*(char *)(lVar1 + 0x5051) != '\0') {\n    uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);\n    FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);\n    return;\n  }\n  if ((*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||\n     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)) {\n    lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');\n    if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;\n    *(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);\n    if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (expression_statement "lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);" (assignment_expression "lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10)" identifier = (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x10)" ( (binary_expression "PTR_DAT_003f85c0 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (lVar1 == 0) {\nLAB_001ba567:\n                    \n    FUN_00199900("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(lVar1 == 0)" ( (binary_expression "lVar1 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001ba567:\n                    \n    FUN_00199900("../../gold/parameters.h",0x5c,"options");\n  }" { (labeled_statement "LAB_001ba567:\n                    \n    FUN_00199900("../../gold/parameters.h",0x5c,"options");" statement_identifier : (expression_statement "FUN_00199900("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_00199900("../../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 (*(int *)(lVar1 + 0x904c) == 0) {\n    if (*(char *)(param_1 + 0x36b) == '\0') {\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }\n    cVar3 = *(char *)(param_1 + 0x36a);\n    if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    \n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }\n  }\n  else {\n    cVar3 = *(int *)(lVar1 + 0x904c) == 1;\n    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }\n  }" if (parenthesized_expression "(*(int *)(lVar1 + 0x904c) == 0)" ( (binary_expression "*(int *)(lVar1 + 0x904c) == 0" (pointer_expression "*(int *)(lVar1 + 0x904c)" * (cast_expression "(int *)(lVar1 + 0x904c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x904c)" ( (binary_expression "lVar1 + 0x904c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(char *)(param_1 + 0x36b) == '\0') {\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }\n    cVar3 = *(char *)(param_1 + 0x36a);\n    if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    \n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }\n  }" { (if_statement "if (*(char *)(param_1 + 0x36b) == '\0') {\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }" if (parenthesized_expression "(*(char *)(param_1 + 0x36b) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x36b) == '\0'" (pointer_expression "*(char *)(param_1 + 0x36b)" * (cast_expression "(char *)(param_1 + 0x36b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x36b)" ( (binary_expression "param_1 + 0x36b" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }" { (if_statement "if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }" if (parenthesized_expression "(*(char *)(lVar1 + 0x8d20) == '\0')" ( (binary_expression "*(char *)(lVar1 + 0x8d20) == '\0'" (pointer_expression "*(char *)(lVar1 + 0x8d20)" * (cast_expression "(char *)(lVar1 + 0x8d20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x8d20)" ( (binary_expression "lVar1 + 0x8d20" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (if_statement "if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }" if (parenthesized_expression "(*(char *)(lVar1 + 0x5051) != '\0')" ( (binary_expression "*(char *)(lVar1 + 0x5051) != '\0'" (pointer_expression "*(char *)(lVar1 + 0x5051)" * (cast_expression "(char *)(lVar1 + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x5051)" ( (binary_expression "lVar1 + 0x5051" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (expression_statement "cVar3 = *(char *)(param_1 + 0x36a);" (assignment_expression "cVar3 = *(char *)(param_1 + 0x36a)" identifier = (pointer_expression "*(char *)(param_1 + 0x36a)" * (cast_expression "(char *)(param_1 + 0x36a)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x36a)" ( (binary_expression "param_1 + 0x36a" identifier + number_literal) ))))) ;) (if_statement "if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    \n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }" if (parenthesized_expression "((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0'))" ( (binary_expression "(cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')" (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')" ( (comma_expression "cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0'" (assignment_expression "cVar3 = *(char *)(param_1 + 0x36c)" identifier = (pointer_expression "*(char *)(param_1 + 0x36c)" * (cast_expression "(char *)(param_1 + 0x36c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x36c)" ( (binary_expression "param_1 + 0x36c" identifier + number_literal) ))))) , (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    \n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }" { (if_statement "if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    \n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }" if (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x18) == 0)" ( (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" ( (binary_expression "PTR_DAT_003f85c0 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }" { (expression_statement "FUN_00199900("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_00199900("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (expression_statement "cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);" (assignment_expression "cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf)" identifier = (pointer_expression "*(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf)" * (cast_expression "(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf)" ( (binary_expression "*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf" (pointer_expression "*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" ( (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" ( (binary_expression "PTR_DAT_003f85c0 + 0x18" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) })) }) (else_clause "else {\n    cVar3 = *(int *)(lVar1 + 0x904c) == 1;\n    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }\n  }" else (compound_statement "{\n    cVar3 = *(int *)(lVar1 + 0x904c) == 1;\n    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }\n  }" { (expression_statement "cVar3 = *(int *)(lVar1 + 0x904c) == 1;" (assignment_expression "cVar3 = *(int *)(lVar1 + 0x904c) == 1" identifier = (binary_expression "*(int *)(lVar1 + 0x904c) == 1" (pointer_expression "*(int *)(lVar1 + 0x904c)" * (cast_expression "(int *)(lVar1 + 0x904c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x904c)" ( (binary_expression "lVar1 + 0x904c" identifier + number_literal) )))) == number_literal)) ;) (if_statement "if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }" if (parenthesized_expression "(((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0'))" ( (binary_expression "((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')" (parenthesized_expression "((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0'))" ( (binary_expression "(!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')" (parenthesized_expression "(!(bool)cVar3)" ( (unary_expression "!(bool)cVar3" ! (cast_expression "(bool)cVar3" ( (type_descriptor "bool" primitive_type) ) identifier)) )) && (parenthesized_expression "(*(char *)(param_1 + 0x36a) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x36a) != '\0'" (pointer_expression "*(char *)(param_1 + 0x36a)" * (cast_expression "(char *)(param_1 + 0x36a)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x36a)" ( (binary_expression "param_1 + 0x36a" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(*(char *)(lVar1 + 0x7039) != '\0')" ( (binary_expression "*(char *)(lVar1 + 0x7039) != '\0'" (pointer_expression "*(char *)(lVar1 + 0x7039)" * (cast_expression "(char *)(lVar1 + 0x7039)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x7039)" ( (binary_expression "lVar1 + 0x7039" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }" { (expression_statement "uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");" (assignment_expression "uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given")" identifier = (call_expression "gettext("one or more inputs require executable stack, but -z noexecstack was given")" identifier (argument_list "("one or more inputs require executable stack, but -z noexecstack was given")" ( (string_literal ""one or more inputs require executable stack, but -z noexecstack was given"" " string_content ") )))) ;) (expression_statement "FUN_00191920(uVar2);" (call_expression "FUN_00191920(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);" (assignment_expression "lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10)" identifier = (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x10)" ( (binary_expression "PTR_DAT_003f85c0 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (lVar1 == 0) goto LAB_001ba567;" if (parenthesized_expression "(lVar1 == 0)" ( (binary_expression "lVar1 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001ba567;" goto statement_identifier ;)) })) }))) (if_statement "if (*(char *)(lVar1 + 0x5051) != '\0') {\n    uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);\n    FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);\n    return;\n  }" if (parenthesized_expression "(*(char *)(lVar1 + 0x5051) != '\0')" ( (binary_expression "*(char *)(lVar1 + 0x5051) != '\0'" (pointer_expression "*(char *)(lVar1 + 0x5051)" * (cast_expression "(char *)(lVar1 + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x5051)" ( (binary_expression "lVar1 + 0x5051" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);\n    FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);\n    return;\n  }" { (expression_statement "uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);" (assignment_expression "uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0)" identifier = (call_expression "FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0)" identifier (argument_list "(param_1 + 0x10,".note.GNU-stack",0,0)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , (string_literal "".note.GNU-stack"" " string_content ") , number_literal , number_literal )))) ;) (expression_statement "FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);" (call_expression "FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0)" identifier (argument_list "(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0)" ( identifier , identifier , number_literal , (binary_expression "(ulong)(cVar3 != '\0') << 2" (call_expression "(ulong)(cVar3 != '\0')" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) ))) << number_literal) , number_literal , number_literal ))) ;) (return_statement "return;" return ;) })) (if_statement "if ((*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||\n     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)) {\n    lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');\n    if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;\n    *(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);\n    if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }\n  }" if (parenthesized_expression "((*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||\n     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0))" ( (binary_expression "(*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||\n     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)" (parenthesized_expression "(*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')" ( (binary_expression "*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0'" (pointer_expression "*(char *)(*(long *)(param_1 + 8) + 0x148)" * (cast_expression "(char *)(*(long *)(param_1 + 8) + 0x148)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 8) + 0x148)" ( (binary_expression "*(long *)(param_1 + 8) + 0x148" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)" ( (binary_expression "*(long *)(*(long *)(param_1 + 8) + 0x168) == 0" (pointer_expression "*(long *)(*(long *)(param_1 + 8) + 0x168)" * (cast_expression "(long *)(*(long *)(param_1 + 8) + 0x168)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 8) + 0x168)" ( (binary_expression "*(long *)(param_1 + 8) + 0x168" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');\n    if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;\n    *(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);\n    if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }\n  }" { (expression_statement "lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');" (assignment_expression "lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06')" identifier = (call_expression "FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06')" identifier (argument_list "(param_1,0x6474e551,(cVar3 != '\0') + '\x06')" ( identifier , number_literal , (binary_expression "(cVar3 != '\0') + '\x06'" (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) + (char_literal "'\x06'" ' escape_sequence ')) )))) ;) (if_statement "if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;" if (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x10)" ( (binary_expression "PTR_DAT_003f85c0 + 0x10" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_001ba567;" goto statement_identifier ;)) (expression_statement "*(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);" (assignment_expression "*(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28)" (pointer_expression "*(undefined8 *)(lVar1 + 0x2c8)" * (cast_expression "(undefined8 *)(lVar1 + 0x2c8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x2c8)" ( (binary_expression "lVar1 + 0x2c8" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28)" * (cast_expression "(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28)" ( (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x10)" ( (binary_expression "PTR_DAT_003f85c0 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }" if (parenthesized_expression "(*(ulong *)(lVar1 + 0x2d8) < 0x10)" ( (binary_expression "*(ulong *)(lVar1 + 0x2d8) < 0x10" (pointer_expression "*(ulong *)(lVar1 + 0x2d8)" * (cast_expression "(ulong *)(lVar1 + 0x2d8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x2d8)" ( (binary_expression "lVar1 + 0x2d8" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }" { (expression_statement "*(undefined8 *)(lVar1 + 0x2d8) = 0x10;" (assignment_expression "*(undefined8 *)(lVar1 + 0x2d8) = 0x10" (pointer_expression "*(undefined8 *)(lVar1 + 0x2d8)" * (cast_expression "(undefined8 *)(lVar1 + 0x2d8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x2d8)" ( (binary_expression "lVar1 + 0x2d8" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE 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 { (labeled_statement statement_identifier : (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) )))) == 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 { (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 ;) })) (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 ;) })) })) (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 == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT != (char_literal ' escape_sequence '))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) ))))) ;) })) }) (else_clause else (compound_statement { (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 (parenthesized_expression ( (binary_expression (parenthesized_expression ( (unary_expression ! (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( 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) )) (goto_statement goto statement_identifier ;)) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (string_literal " string_content ") , LIT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != (char_literal ' escape_sequence ')) ))) << LIT) , LIT , LIT ))) ;) (return_statement return ;) })) (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) )))) == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) + (char_literal ' escape_sequence ')) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + 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 { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return ;) })) })) (return_statement return ;) })))
(function_definition "void FUN_001ba3d0(long param_1)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  char cVar3;\n  \n  lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n  if (lVar1 == 0) {\nLAB_001ba567:\n                    \n    FUN_00199900("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(int *)(lVar1 + 0x904c) == 0) {\n    if (*(char *)(param_1 + 0x36b) == '\0') {\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }\n    cVar3 = *(char *)(param_1 + 0x36a);\n    if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    \n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }\n  }\n  else {\n    cVar3 = *(int *)(lVar1 + 0x904c) == 1;\n    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }\n  }\n  if (*(char *)(lVar1 + 0x5051) != '\0') {\n    uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);\n    FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);\n    return;\n  }\n  if ((*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||\n     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)) {\n    lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');\n    if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;\n    *(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);\n    if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001ba3d0(long param_1)" (identifier "FUN_001ba3d0") (parameter_list "(long param_1)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) () ")"))) (compound_statement "{\n  long lVar1;\n  undefined8 uVar2;\n  char cVar3;\n  \n  lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n  if (lVar1 == 0) {\nLAB_001ba567:\n                    \n    FUN_00199900("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(int *)(lVar1 + 0x904c) == 0) {\n    if (*(char *)(param_1 + 0x36b) == '\0') {\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }\n    cVar3 = *(char *)(param_1 + 0x36a);\n    if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    \n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }\n  }\n  else {\n    cVar3 = *(int *)(lVar1 + 0x904c) == 1;\n    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }\n  }\n  if (*(char *)(lVar1 + 0x5051) != '\0') {\n    uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);\n    FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);\n    return;\n  }\n  if ((*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||\n     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)) {\n    lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');\n    if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;\n    *(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);\n    if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }\n  }\n  return;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (expression_statement "lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);" (assignment_expression "lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003f85c0 + 0x10)" (( "(") (binary_expression "PTR_DAT_003f85c0 + 0x10" (identifier "PTR_DAT_003f85c0") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (lVar1 == 0) {\nLAB_001ba567:\n                    \n    FUN_00199900("../../gold/parameters.h",0x5c,"options");\n  }" (if "if") (parenthesized_expression "(lVar1 == 0)" (( "(") (binary_expression "lVar1 == 0" (identifier "lVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001ba567:\n                    \n    FUN_00199900("../../gold/parameters.h",0x5c,"options");\n  }" ({ "{") (labeled_statement "LAB_001ba567:\n                    \n    FUN_00199900("../../gold/parameters.h",0x5c,"options");" (statement_identifier "LAB_001ba567") (: ":") (expression_statement "FUN_00199900("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_00199900("../../gold/parameters.h",0x5c,"options")" (identifier "FUN_00199900") (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 (*(int *)(lVar1 + 0x904c) == 0) {\n    if (*(char *)(param_1 + 0x36b) == '\0') {\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }\n    cVar3 = *(char *)(param_1 + 0x36a);\n    if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    \n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }\n  }\n  else {\n    cVar3 = *(int *)(lVar1 + 0x904c) == 1;\n    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }\n  }" (if "if") (parenthesized_expression "(*(int *)(lVar1 + 0x904c) == 0)" (( "(") (binary_expression "*(int *)(lVar1 + 0x904c) == 0" (pointer_expression "*(int *)(lVar1 + 0x904c)" (* "*") (cast_expression "(int *)(lVar1 + 0x904c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x904c)" (( "(") (binary_expression "lVar1 + 0x904c" (identifier "lVar1") (+ "+") (number_literal "0x904c")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(char *)(param_1 + 0x36b) == '\0') {\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }\n    cVar3 = *(char *)(param_1 + 0x36a);\n    if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    \n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }\n  }" ({ "{") (if_statement "if (*(char *)(param_1 + 0x36b) == '\0') {\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x36b) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x36b) == '\0'" (pointer_expression "*(char *)(param_1 + 0x36b)" (* "*") (cast_expression "(char *)(param_1 + 0x36b)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x36b)" (( "(") (binary_expression "param_1 + 0x36b" (identifier "param_1") (+ "+") (number_literal "0x36b")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }\n      if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }\n    }" ({ "{") (if_statement "if (*(char *)(lVar1 + 0x8d20) == '\0') {\n        return;\n      }" (if "if") (parenthesized_expression "(*(char *)(lVar1 + 0x8d20) == '\0')" (( "(") (binary_expression "*(char *)(lVar1 + 0x8d20) == '\0'" (pointer_expression "*(char *)(lVar1 + 0x8d20)" (* "*") (cast_expression "(char *)(lVar1 + 0x8d20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x8d20)" (( "(") (binary_expression "lVar1 + 0x8d20" (identifier "lVar1") (+ "+") (number_literal "0x8d20")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (*(char *)(lVar1 + 0x5051) != '\0') {\n        return;\n      }" (if "if") (parenthesized_expression "(*(char *)(lVar1 + 0x5051) != '\0')" (( "(") (binary_expression "*(char *)(lVar1 + 0x5051) != '\0'" (pointer_expression "*(char *)(lVar1 + 0x5051)" (* "*") (cast_expression "(char *)(lVar1 + 0x5051)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x5051)" (( "(") (binary_expression "lVar1 + 0x5051" (identifier "lVar1") (+ "+") (number_literal "0x5051")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "cVar3 = *(char *)(param_1 + 0x36a);" (assignment_expression "cVar3 = *(char *)(param_1 + 0x36a)" (identifier "cVar3") (= "=") (pointer_expression "*(char *)(param_1 + 0x36a)" (* "*") (cast_expression "(char *)(param_1 + 0x36a)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x36a)" (( "(") (binary_expression "param_1 + 0x36a" (identifier "param_1") (+ "+") (number_literal "0x36a")) () ")"))))) (; ";")) (if_statement "if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    \n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }" (if "if") (parenthesized_expression "((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0'))" (( "(") (binary_expression "(cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')" (parenthesized_expression "(cVar3 == '\0')" (( "(") (binary_expression "cVar3 == '\0'" (identifier "cVar3") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')" (( "(") (comma_expression "cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0'" (assignment_expression "cVar3 = *(char *)(param_1 + 0x36c)" (identifier "cVar3") (= "=") (pointer_expression "*(char *)(param_1 + 0x36c)" (* "*") (cast_expression "(char *)(param_1 + 0x36c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x36c)" (( "(") (binary_expression "param_1 + 0x36c" (identifier "param_1") (+ "+") (number_literal "0x36c")) () ")"))))) (, ",") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (compound_statement "{\n      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    \n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }\n      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);\n    }" ({ "{") (if_statement "if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {\n                    \n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x18) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" (( "(") (binary_expression "PTR_DAT_003f85c0 + 0x18" (identifier "PTR_DAT_003f85c0") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        FUN_00199900("../../gold/parameters.h",0x69,"target");\n      }" ({ "{") (expression_statement "FUN_00199900("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_00199900("../../gold/parameters.h",0x69,"target")" (identifier "FUN_00199900") (argument_list "("../../gold/parameters.h",0x69,"target")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x69") (, ",") (string_literal ""target"" (" """) (string_content "target") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);" (assignment_expression "cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf)" (identifier "cVar3") (= "=") (pointer_expression "*(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf)" (* "*") (cast_expression "(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf)" (( "(") (binary_expression "*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf" (pointer_expression "*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" (* "*") (cast_expression "(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8)" (( "(") (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" (( "(") (binary_expression "PTR_DAT_003f85c0 + 0x18" (identifier "PTR_DAT_003f85c0") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0xf")) () ")"))))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    cVar3 = *(int *)(lVar1 + 0x904c) == 1;\n    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }\n  }" (else "else") (compound_statement "{\n    cVar3 = *(int *)(lVar1 + 0x904c) == 1;\n    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }\n  }" ({ "{") (expression_statement "cVar3 = *(int *)(lVar1 + 0x904c) == 1;" (assignment_expression "cVar3 = *(int *)(lVar1 + 0x904c) == 1" (identifier "cVar3") (= "=") (binary_expression "*(int *)(lVar1 + 0x904c) == 1" (pointer_expression "*(int *)(lVar1 + 0x904c)" (* "*") (cast_expression "(int *)(lVar1 + 0x904c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x904c)" (( "(") (binary_expression "lVar1 + 0x904c" (identifier "lVar1") (+ "+") (number_literal "0x904c")) () ")")))) (== "==") (number_literal "1"))) (; ";")) (if_statement "if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')) {\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }" (if "if") (parenthesized_expression "(((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0'))" (( "(") (binary_expression "((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&\n       (*(char *)(lVar1 + 0x7039) != '\0')" (parenthesized_expression "((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0'))" (( "(") (binary_expression "(!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')" (parenthesized_expression "(!(bool)cVar3)" (( "(") (unary_expression "!(bool)cVar3" (! "!") (cast_expression "(bool)cVar3" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "cVar3"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(param_1 + 0x36a) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x36a) != '\0'" (pointer_expression "*(char *)(param_1 + 0x36a)" (* "*") (cast_expression "(char *)(param_1 + 0x36a)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x36a)" (( "(") (binary_expression "param_1 + 0x36a" (identifier "param_1") (+ "+") (number_literal "0x36a")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(lVar1 + 0x7039) != '\0')" (( "(") (binary_expression "*(char *)(lVar1 + 0x7039) != '\0'" (pointer_expression "*(char *)(lVar1 + 0x7039)" (* "*") (cast_expression "(char *)(lVar1 + 0x7039)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x7039)" (( "(") (binary_expression "lVar1 + 0x7039" (identifier "lVar1") (+ "+") (number_literal "0x7039")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");\n      FUN_00191920(uVar2);\n      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);\n      if (lVar1 == 0) goto LAB_001ba567;\n    }" ({ "{") (expression_statement "uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");" (assignment_expression "uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given")" (identifier "uVar2") (= "=") (call_expression "gettext("one or more inputs require executable stack, but -z noexecstack was given")" (identifier "gettext") (argument_list "("one or more inputs require executable stack, but -z noexecstack was given")" (( "(") (string_literal ""one or more inputs require executable stack, but -z noexecstack was given"" (" """) (string_content "one or more inputs require executable stack, but -z noexecstack was given") (" """)) () ")")))) (; ";")) (expression_statement "FUN_00191920(uVar2);" (call_expression "FUN_00191920(uVar2)" (identifier "FUN_00191920") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);" (assignment_expression "lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003f85c0 + 0x10)" (( "(") (binary_expression "PTR_DAT_003f85c0 + 0x10" (identifier "PTR_DAT_003f85c0") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (lVar1 == 0) goto LAB_001ba567;" (if "if") (parenthesized_expression "(lVar1 == 0)" (( "(") (binary_expression "lVar1 == 0" (identifier "lVar1") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001ba567;" (goto "goto") (statement_identifier "LAB_001ba567") (; ";"))) (} "}"))) (} "}")))) (if_statement "if (*(char *)(lVar1 + 0x5051) != '\0') {\n    uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);\n    FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);\n    return;\n  }" (if "if") (parenthesized_expression "(*(char *)(lVar1 + 0x5051) != '\0')" (( "(") (binary_expression "*(char *)(lVar1 + 0x5051) != '\0'" (pointer_expression "*(char *)(lVar1 + 0x5051)" (* "*") (cast_expression "(char *)(lVar1 + 0x5051)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x5051)" (( "(") (binary_expression "lVar1 + 0x5051" (identifier "lVar1") (+ "+") (number_literal "0x5051")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);\n    FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);\n    return;\n  }" ({ "{") (expression_statement "uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);" (assignment_expression "uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0)" (identifier "uVar2") (= "=") (call_expression "FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0)" (identifier "FUN_002481b0") (argument_list "(param_1 + 0x10,".note.GNU-stack",0,0)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) (, ",") (string_literal "".note.GNU-stack"" (" """) (string_content ".note.GNU-stack") (" """)) (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);" (call_expression "FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0)" (identifier "FUN_001b7ef0") (argument_list "(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0)" (( "(") (identifier "param_1") (, ",") (identifier "uVar2") (, ",") (number_literal "1") (, ",") (binary_expression "(ulong)(cVar3 != '\0') << 2" (call_expression "(ulong)(cVar3 != '\0')" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) (<< "<<") (number_literal "2")) (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if ((*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||\n     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)) {\n    lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');\n    if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;\n    *(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);\n    if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }\n  }" (if "if") (parenthesized_expression "((*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||\n     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0))" (( "(") (binary_expression "(*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||\n     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)" (parenthesized_expression "(*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')" (( "(") (binary_expression "*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0'" (pointer_expression "*(char *)(*(long *)(param_1 + 8) + 0x148)" (* "*") (cast_expression "(char *)(*(long *)(param_1 + 8) + 0x148)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 8) + 0x148)" (( "(") (binary_expression "*(long *)(param_1 + 8) + 0x148" (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x148")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)" (( "(") (binary_expression "*(long *)(*(long *)(param_1 + 8) + 0x168) == 0" (pointer_expression "*(long *)(*(long *)(param_1 + 8) + 0x168)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 8) + 0x168)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 8) + 0x168)" (( "(") (binary_expression "*(long *)(param_1 + 8) + 0x168" (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x168")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');\n    if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;\n    *(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);\n    if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }\n  }" ({ "{") (expression_statement "lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');" (assignment_expression "lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06')" (identifier "lVar1") (= "=") (call_expression "FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06')" (identifier "FUN_001b7840") (argument_list "(param_1,0x6474e551,(cVar3 != '\0') + '\x06')" (( "(") (identifier "param_1") (, ",") (number_literal "0x6474e551") (, ",") (binary_expression "(cVar3 != '\0') + '\x06'" (parenthesized_expression "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (+ "+") (char_literal "'\x06'" (' "'") (escape_sequence "\x06") (' "'"))) () ")")))) (; ";")) (if_statement "if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003f85c0 + 0x10)" (( "(") (binary_expression "PTR_DAT_003f85c0 + 0x10" (identifier "PTR_DAT_003f85c0") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001ba567;" (goto "goto") (statement_identifier "LAB_001ba567") (; ";"))) (expression_statement "*(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);" (assignment_expression "*(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28)" (pointer_expression "*(undefined8 *)(lVar1 + 0x2c8)" (* "*") (cast_expression "(undefined8 *)(lVar1 + 0x2c8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x2c8)" (( "(") (binary_expression "lVar1 + 0x2c8" (identifier "lVar1") (+ "+") (number_literal "0x2c8")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28)" (* "*") (cast_expression "(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28)" (( "(") (binary_expression "*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28" (pointer_expression "*(long *)(PTR_DAT_003f85c0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_003f85c0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003f85c0 + 0x10)" (( "(") (binary_expression "PTR_DAT_003f85c0 + 0x10" (identifier "PTR_DAT_003f85c0") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x8d28")) () ")"))))) (; ";")) (if_statement "if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }" (if "if") (parenthesized_expression "(*(ulong *)(lVar1 + 0x2d8) < 0x10)" (( "(") (binary_expression "*(ulong *)(lVar1 + 0x2d8) < 0x10" (pointer_expression "*(ulong *)(lVar1 + 0x2d8)" (* "*") (cast_expression "(ulong *)(lVar1 + 0x2d8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x2d8)" (( "(") (binary_expression "lVar1 + 0x2d8" (identifier "lVar1") (+ "+") (number_literal "0x2d8")) () ")")))) (< "<") (number_literal "0x10")) () ")")) (compound_statement "{\n      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;\n      return;\n    }" ({ "{") (expression_statement "*(undefined8 *)(lVar1 + 0x2d8) = 0x10;" (assignment_expression "*(undefined8 *)(lVar1 + 0x2d8) = 0x10" (pointer_expression "*(undefined8 *)(lVar1 + 0x2d8)" (* "*") (cast_expression "(undefined8 *)(lVar1 + 0x2d8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x2d8)" (( "(") (binary_expression "lVar1 + 0x2d8" (identifier "lVar1") (+ "+") (number_literal "0x2d8")) () ")")))) (= "=") (number_literal "0x10")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: void create_stack_segment(Layout * this) */

void __thiscall gold::type_1::function_1(type_1 *this)

{
  type_2 *var_1;
  type_3 *pOVar2;
  char *pcVar3;
  char var_11;
  
  var_1 = parameters->options_;
  if (var_1 == (type_2 *)0x0) {
LAB_001ba567:
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/parameters.h",0x5c,"options");
  }
  if (var_1->execstack_status_ == var_3) {
    if (this->input_with_gnu_stack_note_ == false) {
      if ((var_1->stack_size_).user_set_via_option == false) {
        return;
      }
      if ((var_1->relocatable_).value != false) {
        return;
      }
    }
    var_11 = this->input_requires_executable_stack_;
    if (((bool)var_11 == false) &&
       (var_11 = this->input_without_gnu_stack_note_, (bool)var_11 != false)) {
      if (parameters->target_ == (type_4 *)0x0) {
                    /* WARNING: Subroutine does not return */
        var_2("../../gold/parameters.h",0x69,"target");
      }
      var_11 = parameters->target_->pti_->is_default_stack_executable;
    }
  }
  else {
    var_11 = var_1->execstack_status_ == var_4;
    if (((!(bool)var_11) && (this->input_requires_executable_stack_ != false)) &&
       ((var_1->warn_execstack_).value != false)) {
      pcVar3 = (char *)var_5(
                              "one or more inputs require executable stack, but -z noexecstack was given"
                              );
      var_6(pcVar3);
      var_1 = parameters->options_;
      if (var_1 == (type_2 *)0x0) goto LAB_001ba567;
    }
  }
  if ((var_1->relocatable_).value != false) {
    pcVar3 = var_7<var_8>::var_9(&this->namepool_,".note.GNU-stack",false,(type_5 *)0x0);
    var_10(this,pcVar3,1,(ulong)(var_11 != '\0') << 2,ORDER_INVALID,false);
    return;
  }
  if (((this->script_options_->script_sections_).saw_sections_clause_ == false) ||
     ((this->script_options_->script_sections_).phdrs_elements_ == (type_6 *)0x0)) {
    pOVar2 = var_12(this,0x6474e551,(var_11 != '\0') + 6);
    if (parameters->options_ == (type_2 *)0x0) goto LAB_001ba567;
    pOVar2->memsz_ = (parameters->options_->stack_size_).value;
    if (pOVar2->min_p_align_ < 0x10) {
      pOVar2->min_p_align_ = 0x10;
      return;
    }
  }
  return;
}


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

void MASKED(long param_1)

{
  long lVar1;
  undefined8 uVar2;
  char cVar3;
  
  lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);
  if (lVar1 == 0) {
LAB_001ba567:
                    /* WARNING: Subroutine does not return */
    FUN_00199900("../../gold/parameters.h",0x5c,"options");
  }
  if (*(int *)(lVar1 + 0x904c) == 0) {
    if (*(char *)(param_1 + 0x36b) == '\0') {
      if (*(char *)(lVar1 + 0x8d20) == '\0') {
        return;
      }
      if (*(char *)(lVar1 + 0x5051) != '\0') {
        return;
      }
    }
    cVar3 = *(char *)(param_1 + 0x36a);
    if ((cVar3 == '\0') && (cVar3 = *(char *)(param_1 + 0x36c), cVar3 != '\0')) {
      if (*(long *)(PTR_DAT_003f85c0 + 0x18) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_00199900("../../gold/parameters.h",0x69,"target");
      }
      cVar3 = *(char *)(*(long *)(*(long *)(PTR_DAT_003f85c0 + 0x18) + 8) + 0xf);
    }
  }
  else {
    cVar3 = *(int *)(lVar1 + 0x904c) == 1;
    if (((!(bool)cVar3) && (*(char *)(param_1 + 0x36a) != '\0')) &&
       (*(char *)(lVar1 + 0x7039) != '\0')) {
      uVar2 = gettext("one or more inputs require executable stack, but -z noexecstack was given");
      FUN_00191920(uVar2);
      lVar1 = *(long *)(PTR_DAT_003f85c0 + 0x10);
      if (lVar1 == 0) goto LAB_001ba567;
    }
  }
  if (*(char *)(lVar1 + 0x5051) != '\0') {
    uVar2 = FUN_002481b0(param_1 + 0x10,".note.GNU-stack",0,0);
    FUN_001b7ef0(param_1,uVar2,1,(ulong)(cVar3 != '\0') << 2,0,0);
    return;
  }
  if ((*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') ||
     (*(long *)(*(long *)(param_1 + 8) + 0x168) == 0)) {
    lVar1 = FUN_001b7840(param_1,0x6474e551,(cVar3 != '\0') + '\x06');
    if (*(long *)(PTR_DAT_003f85c0 + 0x10) == 0) goto LAB_001ba567;
    *(undefined8 *)(lVar1 + 0x2c8) = *(undefined8 *)(*(long *)(PTR_DAT_003f85c0 + 0x10) + 0x8d28);
    if (*(ulong *)(lVar1 + 0x2d8) < 0x10) {
      *(undefined8 *)(lVar1 + 0x2d8) = 0x10;
      return;
    }
  }
  return;
}

