
/* WARNING: Enum "DT": Some values do not have unique names */

Expression * script_exp_function_length(void *closurev,char *name,size_t namelen)

{
  Expression *pEVar1;
  char *format;
  Parser_closure *closure;
  
  pEVar1 = gold::Script_sections::find_memory_region_length
                     ((Script_sections *)(*(long *)((long)closurev + 0x28) + 0x148),name,namelen);
  if (pEVar1 != (Expression *)0x0) {
    return pEVar1;
  }
  format = (char *)gettext("undefined memory region \'%s\' referenced in LENGTH expression");
  gold::gold_error(format,name);
  pEVar1 = gold::script_exp_integer(0);
  return pEVar1;
}



void FUN_002133a0(long param_1,undefined8 param_2)

{
  long lVar1;
  undefined8 uVar2;
  
  lVar1 = FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148);
  if (lVar1 != 0) {
    return;
  }
  uVar2 = gettext("undefined memory region \'%s\' referenced in LENGTH expression");
  FUN_001690a0(uVar2,param_2);
  FUN_0024d400(0);
  return;
}


PUSH RBX
MOV RDI,qword ptr [RDI + 0x28]
MOV RBX,RSI
ADD RDI,0x148
CALL 0x002054a0
TEST RAX,RAX
JZ 0x002133c0
POP RBX
RET
LEA RDI,[0x31e7b8]
CALL 0x0013e320
MOV RSI,RBX
MOV RDI,RAX
XOR EAX,EAX
CALL 0x001690a0
XOR EDI,EDI
POP RBX
JMP 0x0024d400
(translation_unit "void FUN_002133a0(long param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  \n  lVar1 = FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148);\n  if (lVar1 != 0) {\n    return;\n  }\n  uVar2 = gettext("undefined memory region \'%s\' referenced in LENGTH expression");\n  FUN_001690a0(uVar2,param_2);\n  FUN_0024d400(0);\n  return;\n}\n\n" (function_definition "void FUN_002133a0(long param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  \n  lVar1 = FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148);\n  if (lVar1 != 0) {\n    return;\n  }\n  uVar2 = gettext("undefined memory region \'%s\' referenced in LENGTH expression");\n  FUN_001690a0(uVar2,param_2);\n  FUN_0024d400(0);\n  return;\n}" primitive_type (function_declarator "FUN_002133a0(long param_1,undefined8 param_2)" identifier (parameter_list "(long param_1,undefined8 param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  undefined8 uVar2;\n  \n  lVar1 = FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148);\n  if (lVar1 != 0) {\n    return;\n  }\n  uVar2 = gettext("undefined memory region \'%s\' referenced in LENGTH expression");\n  FUN_001690a0(uVar2,param_2);\n  FUN_0024d400(0);\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (expression_statement "lVar1 = FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148);" (assignment_expression "lVar1 = FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148)" identifier = (call_expression "FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148)" identifier (argument_list "(*(long *)(param_1 + 0x28) + 0x148)" ( (binary_expression "*(long *)(param_1 + 0x28) + 0x148" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal) )))) ;) (if_statement "if (lVar1 != 0) {\n    return;\n  }" if (parenthesized_expression "(lVar1 != 0)" ( (binary_expression "lVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar2 = gettext("undefined memory region \'%s\' referenced in LENGTH expression");" (assignment_expression "uVar2 = gettext("undefined memory region \'%s\' referenced in LENGTH expression")" identifier = (call_expression "gettext("undefined memory region \'%s\' referenced in LENGTH expression")" identifier (argument_list "("undefined memory region \'%s\' referenced in LENGTH expression")" ( (string_literal ""undefined memory region \'%s\' referenced in LENGTH expression"" " string_content escape_sequence string_content escape_sequence string_content ") )))) ;) (expression_statement "FUN_001690a0(uVar2,param_2);" (call_expression "FUN_001690a0(uVar2,param_2)" identifier (argument_list "(uVar2,param_2)" ( identifier , identifier ))) ;) (expression_statement "FUN_0024d400(0);" (call_expression "FUN_0024d400(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n\nExpression * script_exp_function_length(void *closurev,char *name,size_t namelen)\n\n{\n  Expression *pEVar1;\n  char *format;\n  Parser_closure *closure;\n  \n  pEVar1 = gold::Script_sections::find_memory_region_length\n                     ((Script_sections *)(*(long *)((long)closurev + 0x28) + 0x148),name,namelen);\n  if (pEVar1 != (Expression *)0x0) {\n    return pEVar1;\n  }\n  format = (char *)gettext("undefined memory region \'%s\' referenced in LENGTH expression");\n  gold::gold_error(format,name);\n  pEVar1 = gold::script_exp_integer(0);\n  return pEVar1;\n}\n\n" comment (function_definition "Expression * script_exp_function_length(void *closurev,char *name,size_t namelen)\n\n{\n  Expression *pEVar1;\n  char *format;\n  Parser_closure *closure;\n  \n  pEVar1 = gold::Script_sections::find_memory_region_length\n                     ((Script_sections *)(*(long *)((long)closurev + 0x28) + 0x148),name,namelen);\n  if (pEVar1 != (Expression *)0x0) {\n    return pEVar1;\n  }\n  format = (char *)gettext("undefined memory region \'%s\' referenced in LENGTH expression");\n  gold::gold_error(format,name);\n  pEVar1 = gold::script_exp_integer(0);\n  return pEVar1;\n}" type_identifier (pointer_declarator "* script_exp_function_length(void *closurev,char *name,size_t namelen)" * (function_declarator "script_exp_function_length(void *closurev,char *name,size_t namelen)" identifier (parameter_list "(void *closurev,char *name,size_t namelen)" ( (parameter_declaration "void *closurev" primitive_type (pointer_declarator "*closurev" * identifier)) , (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "size_t namelen" primitive_type identifier) )))) (compound_statement "{\n  Expression *pEVar1;\n  char *format;\n  Parser_closure *closure;\n  \n  pEVar1 = gold::Script_sections::find_memory_region_length\n                     ((Script_sections *)(*(long *)((long)closurev + 0x28) + 0x148),name,namelen);\n  if (pEVar1 != (Expression *)0x0) {\n    return pEVar1;\n  }\n  format = (char *)gettext("undefined memory region \'%s\' referenced in LENGTH expression");\n  gold::gold_error(format,name);\n  pEVar1 = gold::script_exp_integer(0);\n  return pEVar1;\n}" { (declaration "Expression *pEVar1;" type_identifier (pointer_declarator "*pEVar1" * identifier) ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "Parser_closure *closure;" type_identifier (pointer_declarator "*closure" * identifier) ;) (ERROR "pEVar1 = gold::" (assignment_expression "pEVar1 = gold" identifier = identifier) : :) (labeled_statement "Script_sections::find_memory_region_length\n                     ((Script_sections *)(*(long *)((long)closurev + 0x28) + 0x148),name,namelen);" statement_identifier : (ERROR ":" :) (expression_statement "find_memory_region_length\n                     ((Script_sections *)(*(long *)((long)closurev + 0x28) + 0x148),name,namelen);" (call_expression "find_memory_region_length\n                     ((Script_sections *)(*(long *)((long)closurev + 0x28) + 0x148),name,namelen)" identifier (argument_list "((Script_sections *)(*(long *)((long)closurev + 0x28) + 0x148),name,namelen)" ( (cast_expression "(Script_sections *)(*(long *)((long)closurev + 0x28) + 0x148)" ( (type_descriptor "Script_sections *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)((long)closurev + 0x28) + 0x148)" ( (binary_expression "*(long *)((long)closurev + 0x28) + 0x148" (pointer_expression "*(long *)((long)closurev + 0x28)" * (cast_expression "(long *)((long)closurev + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)closurev + 0x28)" ( (binary_expression "(long)closurev + 0x28" (cast_expression "(long)closurev" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal) ))) , identifier , identifier ))) ;)) (if_statement "if (pEVar1 != (Expression *)0x0) {\n    return pEVar1;\n  }" if (parenthesized_expression "(pEVar1 != (Expression *)0x0)" ( (binary_expression "pEVar1 != (Expression *)0x0" identifier != (cast_expression "(Expression *)0x0" ( (type_descriptor "Expression *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return pEVar1;\n  }" { (return_statement "return pEVar1;" return identifier ;) })) (expression_statement "format = (char *)gettext("undefined memory region \'%s\' referenced in LENGTH expression");" (assignment_expression "format = (char *)gettext("undefined memory region \'%s\' referenced in LENGTH expression")" identifier = (cast_expression "(char *)gettext("undefined memory region \'%s\' referenced in LENGTH expression")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("undefined memory region \'%s\' referenced in LENGTH expression")" identifier (argument_list "("undefined memory region \'%s\' referenced in LENGTH expression")" ( (string_literal ""undefined memory region \'%s\' referenced in LENGTH expression"" " string_content escape_sequence string_content escape_sequence string_content ") ))))) ;) (labeled_statement "gold::gold_error(format,name);" statement_identifier : (ERROR ":" :) (expression_statement "gold_error(format,name);" (call_expression "gold_error(format,name)" identifier (argument_list "(format,name)" ( identifier , identifier ))) ;)) (ERROR "pEVar1 = gold::" (assignment_expression "pEVar1 = gold" identifier = identifier) : :) (expression_statement "script_exp_integer(0);" (call_expression "script_exp_integer(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (return_statement "return pEVar1;" return identifier ;) })))
(translation_unit "void FUN_002133a0(long param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  \n  lVar1 = FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148);\n  if (lVar1 != 0) {\n    return;\n  }\n  uVar2 = gettext("undefined memory region \'%s\' referenced in LENGTH expression");\n  FUN_001690a0(uVar2,param_2);\n  FUN_0024d400(0);\n  return;\n}\n\n" (function_definition "void FUN_002133a0(long param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  \n  lVar1 = FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148);\n  if (lVar1 != 0) {\n    return;\n  }\n  uVar2 = gettext("undefined memory region \'%s\' referenced in LENGTH expression");\n  FUN_001690a0(uVar2,param_2);\n  FUN_0024d400(0);\n  return;\n}" primitive_type (function_declarator "FUN_002133a0(long param_1,undefined8 param_2)" identifier (parameter_list "(long param_1,undefined8 param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  undefined8 uVar2;\n  \n  lVar1 = FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148);\n  if (lVar1 != 0) {\n    return;\n  }\n  uVar2 = gettext("undefined memory region \'%s\' referenced in LENGTH expression");\n  FUN_001690a0(uVar2,param_2);\n  FUN_0024d400(0);\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (expression_statement "lVar1 = FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148);" (assignment_expression "lVar1 = FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148)" identifier = (call_expression "FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148)" identifier (argument_list "(*(long *)(param_1 + 0x28) + 0x148)" ( (binary_expression "*(long *)(param_1 + 0x28) + 0x148" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal) )))) ;) (if_statement "if (lVar1 != 0) {\n    return;\n  }" if (parenthesized_expression "(lVar1 != 0)" ( (binary_expression "lVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar2 = gettext("undefined memory region \'%s\' referenced in LENGTH expression");" (assignment_expression "uVar2 = gettext("undefined memory region \'%s\' referenced in LENGTH expression")" identifier = (call_expression "gettext("undefined memory region \'%s\' referenced in LENGTH expression")" identifier (argument_list "("undefined memory region \'%s\' referenced in LENGTH expression")" ( (string_literal ""undefined memory region \'%s\' referenced in LENGTH expression"" " string_content escape_sequence string_content escape_sequence string_content ") )))) ;) (expression_statement "FUN_001690a0(uVar2,param_2);" (call_expression "FUN_001690a0(uVar2,param_2)" identifier (argument_list "(uVar2,param_2)" ( identifier , identifier ))) ;) (expression_statement "FUN_0024d400(0);" (call_expression "FUN_0024d400(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (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 ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content escape_sequence string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_002133a0(long param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  \n  lVar1 = FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148);\n  if (lVar1 != 0) {\n    return;\n  }\n  uVar2 = gettext("undefined memory region \'%s\' referenced in LENGTH expression");\n  FUN_001690a0(uVar2,param_2);\n  FUN_0024d400(0);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002133a0(long param_1,undefined8 param_2)" (identifier "FUN_002133a0") (parameter_list "(long param_1,undefined8 param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) () ")"))) (compound_statement "{\n  long lVar1;\n  undefined8 uVar2;\n  \n  lVar1 = FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148);\n  if (lVar1 != 0) {\n    return;\n  }\n  uVar2 = gettext("undefined memory region \'%s\' referenced in LENGTH expression");\n  FUN_001690a0(uVar2,param_2);\n  FUN_0024d400(0);\n  return;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (expression_statement "lVar1 = FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148);" (assignment_expression "lVar1 = FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148)" (identifier "lVar1") (= "=") (call_expression "FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148)" (identifier "FUN_002054a0") (argument_list "(*(long *)(param_1 + 0x28) + 0x148)" (( "(") (binary_expression "*(long *)(param_1 + 0x28) + 0x148" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x148")) () ")")))) (; ";")) (if_statement "if (lVar1 != 0) {\n    return;\n  }" (if "if") (parenthesized_expression "(lVar1 != 0)" (( "(") (binary_expression "lVar1 != 0" (identifier "lVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar2 = gettext("undefined memory region \'%s\' referenced in LENGTH expression");" (assignment_expression "uVar2 = gettext("undefined memory region \'%s\' referenced in LENGTH expression")" (identifier "uVar2") (= "=") (call_expression "gettext("undefined memory region \'%s\' referenced in LENGTH expression")" (identifier "gettext") (argument_list "("undefined memory region \'%s\' referenced in LENGTH expression")" (( "(") (string_literal ""undefined memory region \'%s\' referenced in LENGTH expression"" (" """) (string_content "undefined memory region ") (escape_sequence "\'") (string_content "%s") (escape_sequence "\'") (string_content " referenced in LENGTH expression") (" """)) () ")")))) (; ";")) (expression_statement "FUN_001690a0(uVar2,param_2);" (call_expression "FUN_001690a0(uVar2,param_2)" (identifier "FUN_001690a0") (argument_list "(uVar2,param_2)" (( "(") (identifier "uVar2") (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "FUN_0024d400(0);" (call_expression "FUN_0024d400(0)" (identifier "FUN_0024d400") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */

type_1 * function_1(void *closurev,char *name,size_t namelen)

{
  type_1 *var_2;
  char *format;
  type_2 *closure;
  
  var_2 = gold::Script_sections::var_1
                     ((type_3 *)(*(long *)((long)closurev + 0x28) + 0x148),name,namelen);
  if (var_2 != (type_1 *)0x0) {
    return var_2;
  }
  format = (char *)var_3("undefined memory region \'%s\' referenced in LENGTH expression");
  gold::var_4(format,name);
  var_2 = gold::var_5(0);
  return var_2;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))) (return_statement))))

void MASKED(long param_1,undefined8 param_2)

{
  long lVar1;
  undefined8 uVar2;
  
  lVar1 = FUN_002054a0(*(long *)(param_1 + 0x28) + 0x148);
  if (lVar1 != 0) {
    return;
  }
  uVar2 = gettext("undefined memory region \'%s\' referenced in LENGTH expression");
  FUN_001690a0(uVar2,param_2);
  FUN_0024d400(0);
  return;
}

