
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Task_token * is_runnable(Read_relocs * this) */

Task_token * __thiscall gold::Read_relocs::is_runnable(Read_relocs *this)

{
  Input_file *pIVar1;
  bool bVar2;
  
  pIVar1 = (this->object_->super_Object).input_file_;
  if (pIVar1 == (Input_file *)0x0) {
    return (Task_token *)0x0;
  }
  bVar2 = File_read::is_locked(&pIVar1->file_);
  if ((bVar2) && (pIVar1 = (this->object_->super_Object).input_file_, pIVar1 != (Input_file *)0x0))
  {
    return &(pIVar1->file_).token_;
  }
  return (Task_token *)0x0;
}



long FUN_00243820(long param_1)

{
  long lVar1;
  char cVar2;
  
  lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28);
  if (lVar1 == 0) {
    return 0;
  }
  cVar2 = FUN_00179b60(lVar1 + 0x28);
  if ((cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)) {
    return lVar1 + 0x60;
  }
  return 0;
}


MOV RAX,qword ptr [RDI + 0x48]
MOV RAX,qword ptr [RAX + 0x28]
TEST RAX,RAX
JZ 0x00243860
PUSH RBX
MOV RBX,RDI
LEA RDI,[RAX + 0x28]
CALL 0x00179b60
TEST AL,AL
JZ 0x00243858
MOV RAX,qword ptr [RBX + 0x48]
MOV RAX,qword ptr [RAX + 0x28]
TEST RAX,RAX
JZ 0x00243858
ADD RAX,0x60
POP RBX
RET
XOR EAX,EAX
POP RBX
RET
XOR EAX,EAX
RET
(translation_unit "long FUN_00243820(long param_1)\n\n{\n  long lVar1;\n  char cVar2;\n  \n  lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28);\n  if (lVar1 == 0) {\n    return 0;\n  }\n  cVar2 = FUN_00179b60(lVar1 + 0x28);\n  if ((cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)) {\n    return lVar1 + 0x60;\n  }\n  return 0;\n}\n\n" (function_definition "long FUN_00243820(long param_1)\n\n{\n  long lVar1;\n  char cVar2;\n  \n  lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28);\n  if (lVar1 == 0) {\n    return 0;\n  }\n  cVar2 = FUN_00179b60(lVar1 + 0x28);\n  if ((cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)) {\n    return lVar1 + 0x60;\n  }\n  return 0;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_00243820(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  char cVar2;\n  \n  lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28);\n  if (lVar1 == 0) {\n    return 0;\n  }\n  cVar2 = FUN_00179b60(lVar1 + 0x28);\n  if ((cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)) {\n    return lVar1 + 0x60;\n  }\n  return 0;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (expression_statement "lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28);" (assignment_expression "lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28)" identifier = (pointer_expression "*(long *)(*(long *)(param_1 + 0x48) + 0x28)" * (cast_expression "(long *)(*(long *)(param_1 + 0x48) + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x48) + 0x28)" ( (binary_expression "*(long *)(param_1 + 0x48) + 0x28" (pointer_expression "*(long *)(param_1 + 0x48)" * (cast_expression "(long *)(param_1 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (lVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(lVar1 == 0)" ( (binary_expression "lVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "cVar2 = FUN_00179b60(lVar1 + 0x28);" (assignment_expression "cVar2 = FUN_00179b60(lVar1 + 0x28)" identifier = (call_expression "FUN_00179b60(lVar1 + 0x28)" identifier (argument_list "(lVar1 + 0x28)" ( (binary_expression "lVar1 + 0x28" identifier + number_literal) )))) ;) (if_statement "if ((cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)) {\n    return lVar1 + 0x60;\n  }" if (parenthesized_expression "((cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0))" ( (binary_expression "(cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)" (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)" ( (comma_expression "lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0" (assignment_expression "lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28)" identifier = (pointer_expression "*(long *)(*(long *)(param_1 + 0x48) + 0x28)" * (cast_expression "(long *)(*(long *)(param_1 + 0x48) + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x48) + 0x28)" ( (binary_expression "*(long *)(param_1 + 0x48) + 0x28" (pointer_expression "*(long *)(param_1 + 0x48)" * (cast_expression "(long *)(param_1 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) + number_literal) ))))) , (binary_expression "lVar1 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    return lVar1 + 0x60;\n  }" { (return_statement "return lVar1 + 0x60;" return (binary_expression "lVar1 + 0x60" identifier + number_literal) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: Task_token * is_runnable(Read_relocs * this) */\n\nTask_token * __thiscall gold::Read_relocs::is_runnable(Read_relocs *this)\n\n{\n  Input_file *pIVar1;\n  bool bVar2;\n  \n  pIVar1 = (this->object_->super_Object).input_file_;\n  if (pIVar1 == (Input_file *)0x0) {\n    return (Task_token *)0x0;\n  }\n  bVar2 = File_read::is_locked(&pIVar1->file_);\n  if ((bVar2) && (pIVar1 = (this->object_->super_Object).input_file_, pIVar1 != (Input_file *)0x0))\n  {\n    return &(pIVar1->file_).token_;\n  }\n  return (Task_token *)0x0;\n}\n\n" comment comment (ERROR "Task_token * __thiscall gold::Read_relocs::is_runnable(Read_relocs *this)" (binary_expression "Task_token * __thiscall gold::Read_relocs::is_runnable(Read_relocs *this" (binary_expression "Task_token * __thiscall" identifier * identifier) (ERROR "gold::Read_relocs::is_runnable(Read_relocs" identifier : : identifier : : identifier ( identifier) * identifier) )) (compound_statement "{\n  Input_file *pIVar1;\n  bool bVar2;\n  \n  pIVar1 = (this->object_->super_Object).input_file_;\n  if (pIVar1 == (Input_file *)0x0) {\n    return (Task_token *)0x0;\n  }\n  bVar2 = File_read::is_locked(&pIVar1->file_);\n  if ((bVar2) && (pIVar1 = (this->object_->super_Object).input_file_, pIVar1 != (Input_file *)0x0))\n  {\n    return &(pIVar1->file_).token_;\n  }\n  return (Task_token *)0x0;\n}" { (declaration "Input_file *pIVar1;" type_identifier (pointer_declarator "*pIVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (expression_statement "pIVar1 = (this->object_->super_Object).input_file_;" (assignment_expression "pIVar1 = (this->object_->super_Object).input_file_" identifier = (field_expression "(this->object_->super_Object).input_file_" (parenthesized_expression "(this->object_->super_Object)" ( (field_expression "this->object_->super_Object" (field_expression "this->object_" identifier -> field_identifier) -> field_identifier) )) . field_identifier)) ;) (if_statement "if (pIVar1 == (Input_file *)0x0) {\n    return (Task_token *)0x0;\n  }" if (parenthesized_expression "(pIVar1 == (Input_file *)0x0)" ( (binary_expression "pIVar1 == (Input_file *)0x0" identifier == (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (Task_token *)0x0;\n  }" { (return_statement "return (Task_token *)0x0;" return (cast_expression "(Task_token *)0x0" ( (type_descriptor "Task_token *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (ERROR "bVar2 = File_read::" (assignment_expression "bVar2 = File_read" identifier = identifier) : :) (expression_statement "is_locked(&pIVar1->file_);" (call_expression "is_locked(&pIVar1->file_)" identifier (argument_list "(&pIVar1->file_)" ( (pointer_expression "&pIVar1->file_" & (field_expression "pIVar1->file_" identifier -> field_identifier)) ))) ;) (if_statement "if ((bVar2) && (pIVar1 = (this->object_->super_Object).input_file_, pIVar1 != (Input_file *)0x0))\n  {\n    return &(pIVar1->file_).token_;\n  }" if (parenthesized_expression "((bVar2) && (pIVar1 = (this->object_->super_Object).input_file_, pIVar1 != (Input_file *)0x0))" ( (binary_expression "(bVar2) && (pIVar1 = (this->object_->super_Object).input_file_, pIVar1 != (Input_file *)0x0)" (parenthesized_expression "(bVar2)" ( identifier )) && (parenthesized_expression "(pIVar1 = (this->object_->super_Object).input_file_, pIVar1 != (Input_file *)0x0)" ( (comma_expression "pIVar1 = (this->object_->super_Object).input_file_, pIVar1 != (Input_file *)0x0" (assignment_expression "pIVar1 = (this->object_->super_Object).input_file_" identifier = (field_expression "(this->object_->super_Object).input_file_" (parenthesized_expression "(this->object_->super_Object)" ( (field_expression "this->object_->super_Object" (field_expression "this->object_" identifier -> field_identifier) -> field_identifier) )) . field_identifier)) , (binary_expression "pIVar1 != (Input_file *)0x0" identifier != (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    return &(pIVar1->file_).token_;\n  }" { (return_statement "return &(pIVar1->file_).token_;" return (pointer_expression "&(pIVar1->file_).token_" & (field_expression "(pIVar1->file_).token_" (parenthesized_expression "(pIVar1->file_)" ( (field_expression "pIVar1->file_" identifier -> field_identifier) )) . field_identifier)) ;) })) (return_statement "return (Task_token *)0x0;" return (cast_expression "(Task_token *)0x0" ( (type_descriptor "Task_token *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))
(translation_unit "long FUN_00243820(long param_1)\n\n{\n  long lVar1;\n  char cVar2;\n  \n  lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28);\n  if (lVar1 == 0) {\n    return 0;\n  }\n  cVar2 = FUN_00179b60(lVar1 + 0x28);\n  if ((cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)) {\n    return lVar1 + 0x60;\n  }\n  return 0;\n}\n\n" (function_definition "long FUN_00243820(long param_1)\n\n{\n  long lVar1;\n  char cVar2;\n  \n  lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28);\n  if (lVar1 == 0) {\n    return 0;\n  }\n  cVar2 = FUN_00179b60(lVar1 + 0x28);\n  if ((cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)) {\n    return lVar1 + 0x60;\n  }\n  return 0;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_00243820(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  char cVar2;\n  \n  lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28);\n  if (lVar1 == 0) {\n    return 0;\n  }\n  cVar2 = FUN_00179b60(lVar1 + 0x28);\n  if ((cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)) {\n    return lVar1 + 0x60;\n  }\n  return 0;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (expression_statement "lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28);" (assignment_expression "lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28)" identifier = (pointer_expression "*(long *)(*(long *)(param_1 + 0x48) + 0x28)" * (cast_expression "(long *)(*(long *)(param_1 + 0x48) + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x48) + 0x28)" ( (binary_expression "*(long *)(param_1 + 0x48) + 0x28" (pointer_expression "*(long *)(param_1 + 0x48)" * (cast_expression "(long *)(param_1 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (lVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(lVar1 == 0)" ( (binary_expression "lVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "cVar2 = FUN_00179b60(lVar1 + 0x28);" (assignment_expression "cVar2 = FUN_00179b60(lVar1 + 0x28)" identifier = (call_expression "FUN_00179b60(lVar1 + 0x28)" identifier (argument_list "(lVar1 + 0x28)" ( (binary_expression "lVar1 + 0x28" identifier + number_literal) )))) ;) (if_statement "if ((cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)) {\n    return lVar1 + 0x60;\n  }" if (parenthesized_expression "((cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0))" ( (binary_expression "(cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)" (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)" ( (comma_expression "lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0" (assignment_expression "lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28)" identifier = (pointer_expression "*(long *)(*(long *)(param_1 + 0x48) + 0x28)" * (cast_expression "(long *)(*(long *)(param_1 + 0x48) + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x48) + 0x28)" ( (binary_expression "*(long *)(param_1 + 0x48) + 0x28" (pointer_expression "*(long *)(param_1 + 0x48)" * (cast_expression "(long *)(param_1 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) + number_literal) ))))) , (binary_expression "lVar1 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    return lVar1 + 0x60;\n  }" { (return_statement "return lVar1 + 0x60;" return (binary_expression "lVar1 + 0x60" identifier + number_literal) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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 IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (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 (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) ))))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (return_statement return (binary_expression IDENT + LIT) ;) })) (return_statement return LIT ;) })))
(function_definition "long FUN_00243820(long param_1)\n\n{\n  long lVar1;\n  char cVar2;\n  \n  lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28);\n  if (lVar1 == 0) {\n    return 0;\n  }\n  cVar2 = FUN_00179b60(lVar1 + 0x28);\n  if ((cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)) {\n    return lVar1 + 0x60;\n  }\n  return 0;\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_00243820(long param_1)" (identifier "FUN_00243820") (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  char cVar2;\n  \n  lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28);\n  if (lVar1 == 0) {\n    return 0;\n  }\n  cVar2 = FUN_00179b60(lVar1 + 0x28);\n  if ((cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)) {\n    return lVar1 + 0x60;\n  }\n  return 0;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (expression_statement "lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28);" (assignment_expression "lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(*(long *)(param_1 + 0x48) + 0x28)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x48) + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x48) + 0x28)" (( "(") (binary_expression "*(long *)(param_1 + 0x48) + 0x28" (pointer_expression "*(long *)(param_1 + 0x48)" (* "*") (cast_expression "(long *)(param_1 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (lVar1 == 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(lVar1 == 0)" (( "(") (binary_expression "lVar1 == 0" (identifier "lVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "cVar2 = FUN_00179b60(lVar1 + 0x28);" (assignment_expression "cVar2 = FUN_00179b60(lVar1 + 0x28)" (identifier "cVar2") (= "=") (call_expression "FUN_00179b60(lVar1 + 0x28)" (identifier "FUN_00179b60") (argument_list "(lVar1 + 0x28)" (( "(") (binary_expression "lVar1 + 0x28" (identifier "lVar1") (+ "+") (number_literal "0x28")) () ")")))) (; ";")) (if_statement "if ((cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)) {\n    return lVar1 + 0x60;\n  }" (if "if") (parenthesized_expression "((cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0))" (( "(") (binary_expression "(cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)" (parenthesized_expression "(cVar2 != '\0')" (( "(") (binary_expression "cVar2 != '\0'" (identifier "cVar2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)" (( "(") (comma_expression "lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0" (assignment_expression "lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(*(long *)(param_1 + 0x48) + 0x28)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x48) + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x48) + 0x28)" (( "(") (binary_expression "*(long *)(param_1 + 0x48) + 0x28" (pointer_expression "*(long *)(param_1 + 0x48)" (* "*") (cast_expression "(long *)(param_1 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (+ "+") (number_literal "0x28")) () ")"))))) (, ",") (binary_expression "lVar1 != 0" (identifier "lVar1") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    return lVar1 + 0x60;\n  }" ({ "{") (return_statement "return lVar1 + 0x60;" (return "return") (binary_expression "lVar1 + 0x60" (identifier "lVar1") (+ "+") (number_literal "0x60")) (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Task_token * is_runnable(Read_relocs * this) */

type_2 * __thiscall gold::Read_relocs::is_runnable(Read_relocs *this)

{
  type_1 *var_1;
  bool bVar2;
  
  var_1 = (this->object_->super_Object).input_file_;
  if (var_1 == (type_1 *)0x0) {
    return (type_2 *)0x0;
  }
  bVar2 = File_read::var_2(&var_1->file_);
  if ((bVar2) && (var_1 = (this->object_->super_Object).input_file_, var_1 != (type_1 *)0x0))
  {
    return &(var_1->file_).token_;
  }
  return (type_2 *)0x0;
}


(translation_unit (function_definition type: (sized_type_specifier) 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: (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: (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: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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: (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: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (return_statement (binary_expression left: (identifier) right: (number_literal))))) (return_statement (number_literal)))))

long MASKED(long param_1)

{
  long lVar1;
  char cVar2;
  
  lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28);
  if (lVar1 == 0) {
    return 0;
  }
  cVar2 = FUN_00179b60(lVar1 + 0x28);
  if ((cVar2 != '\0') && (lVar1 = *(long *)(*(long *)(param_1 + 0x48) + 0x28), lVar1 != 0)) {
    return lVar1 + 0x60;
  }
  return 0;
}

