
/* WARNING: Unknown calling convention */

char * current_working_directory(void)

{
  undefined *puVar1;
  char *pcVar2;
  int iVar3;
  
  pcVar2 = get_string_value(PTR_LAB_00144578 + 0x46fc);
  puVar1 = PTR_data_start_00144568;
  if ((pcVar2 == (char *)0x0) &&
     ((pcVar2 = *(char **)PTR_the_current_working_directory_00145148, pcVar2 == (char *)0x0 ||
      (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {
    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);
    if (iVar3 != 0) {
      return puVar1 + 0x7f24;
    }
    pcVar2 = PTR_LAB_00144578 + 0x7ad8;
  }
  return pcVar2;
}



undefined * FUN_000649c8(void)

{
  undefined *puVar1;
  undefined *puVar2;
  int iVar3;
  
  puVar2 = (undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc);
  puVar1 = PTR_data_start_00144568;
  if ((puVar2 == (undefined *)0x0) &&
     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,
      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {
    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);
    if (iVar3 != 0) {
      return puVar1 + 0x7f24;
    }
    puVar2 = PTR_LAB_00144578 + 0x7ad8;
  }
  return puVar2;
}


lui gp,0xe
addiu gp,gp,0x7b78
addu gp,gp,t9
lw a0,-0x7fc8(gp)
addiu sp,sp,-0x20
lw t9,-0x7db0(gp)
addiu a0,a0,0x46fc
sw gp,0x10(sp)
sw ra,0x1c(sp)
bal 0x000569f0
_sw s0,0x18(sp)
beq v0,zero,0x00064a0c
_lw gp,0x10(sp)
lw ra,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x20
lw v0,-0x73f8(gp)
lw v0,0x0(v0)
beq v0,zero,0x00064a28
_lw v1,-0x741c(gp)
lw v1,0x0(v1)
bne v1,zero,0x00064a00
_lw ra,0x1c(sp)
lw s0,-0x7fd8(gp)
li a1,0x1000
lw t9,-0x7bc4(gp)
jalr t9
_addiu a0,s0,0x7f24
beq v0,zero,0x00064a58
_lw gp,0x10(sp)
lw ra,0x1c(sp)
addiu v0,s0,0x7f24
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x20
lw v0,-0x7fc8(gp)
b 0x000649fc
_addiu v0,v0,0x7ad8
(translation_unit "undefined * FUN_000649c8(void)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  \n  puVar2 = (undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc);\n  puVar1 = PTR_data_start_00144568;\n  if ((puVar2 == (undefined *)0x0) &&\n     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    puVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }\n  return puVar2;\n}\n\n" (function_definition "undefined * FUN_000649c8(void)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  \n  puVar2 = (undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc);\n  puVar1 = PTR_data_start_00144568;\n  if ((puVar2 == (undefined *)0x0) &&\n     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    puVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }\n  return puVar2;\n}" type_identifier (pointer_declarator "* FUN_000649c8(void)" * (function_declarator "FUN_000649c8(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  \n  puVar2 = (undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc);\n  puVar1 = PTR_data_start_00144568;\n  if ((puVar2 == (undefined *)0x0) &&\n     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    puVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }\n  return puVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "puVar2 = (undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc);" (assignment_expression "puVar2 = (undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc)" identifier = (cast_expression "(undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "get_string_value(PTR_LAB_00144578 + 0x46fc)" identifier (argument_list "(PTR_LAB_00144578 + 0x46fc)" ( (binary_expression "PTR_LAB_00144578 + 0x46fc" identifier + number_literal) ))))) ;) (expression_statement "puVar1 = PTR_data_start_00144568;" (assignment_expression "puVar1 = PTR_data_start_00144568" identifier = identifier) ;) (if_statement "if ((puVar2 == (undefined *)0x0) &&\n     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    puVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }" if (parenthesized_expression "((puVar2 == (undefined *)0x0) &&\n     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0))))" ( (binary_expression "(puVar2 == (undefined *)0x0) &&\n     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))" (parenthesized_expression "(puVar2 == (undefined *)0x0)" ( (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))" ( (parenthesized_expression "(puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0))" ( (comma_expression "puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)" (assignment_expression "puVar2 = *(undefined **)PTR_the_current_working_directory_00145148" identifier = (pointer_expression "*(undefined **)PTR_the_current_working_directory_00145148" * (cast_expression "(undefined **)PTR_the_current_working_directory_00145148" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) , (binary_expression "puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)" (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(*(int *)PTR_no_symbolic_links_00145124 == 0)" ( (binary_expression "*(int *)PTR_no_symbolic_links_00145124 == 0" (pointer_expression "*(int *)PTR_no_symbolic_links_00145124" * (cast_expression "(int *)PTR_no_symbolic_links_00145124" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) == number_literal) )))) )) ))) )) (compound_statement "{\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    puVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }" { (expression_statement "iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);" (assignment_expression "iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000)" identifier = (call_expression "(*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000)" (parenthesized_expression "(*(code *)PTR_getcwd_0014497c)" ( (pointer_expression "*(code *)PTR_getcwd_0014497c" * (cast_expression "(code *)PTR_getcwd_0014497c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_data_start_00144568 + 0x7f24,0x1000)" ( (binary_expression "PTR_data_start_00144568 + 0x7f24" identifier + number_literal) , number_literal )))) ;) (if_statement "if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      return puVar1 + 0x7f24;\n    }" { (return_statement "return puVar1 + 0x7f24;" return (binary_expression "puVar1 + 0x7f24" identifier + number_literal) ;) })) (expression_statement "puVar2 = PTR_LAB_00144578 + 0x7ad8;" (assignment_expression "puVar2 = PTR_LAB_00144578 + 0x7ad8" identifier = (binary_expression "PTR_LAB_00144578 + 0x7ad8" identifier + number_literal)) ;) })) (return_statement "return puVar2;" return identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nchar * current_working_directory(void)\n\n{\n  undefined *puVar1;\n  char *pcVar2;\n  int iVar3;\n  \n  pcVar2 = get_string_value(PTR_LAB_00144578 + 0x46fc);\n  puVar1 = PTR_data_start_00144568;\n  if ((pcVar2 == (char *)0x0) &&\n     ((pcVar2 = *(char **)PTR_the_current_working_directory_00145148, pcVar2 == (char *)0x0 ||\n      (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    pcVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }\n  return pcVar2;\n}\n\n" comment (function_definition "char * current_working_directory(void)\n\n{\n  undefined *puVar1;\n  char *pcVar2;\n  int iVar3;\n  \n  pcVar2 = get_string_value(PTR_LAB_00144578 + 0x46fc);\n  puVar1 = PTR_data_start_00144568;\n  if ((pcVar2 == (char *)0x0) &&\n     ((pcVar2 = *(char **)PTR_the_current_working_directory_00145148, pcVar2 == (char *)0x0 ||\n      (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    pcVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }\n  return pcVar2;\n}" primitive_type (pointer_declarator "* current_working_directory(void)" * (function_declarator "current_working_directory(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  undefined *puVar1;\n  char *pcVar2;\n  int iVar3;\n  \n  pcVar2 = get_string_value(PTR_LAB_00144578 + 0x46fc);\n  puVar1 = PTR_data_start_00144568;\n  if ((pcVar2 == (char *)0x0) &&\n     ((pcVar2 = *(char **)PTR_the_current_working_directory_00145148, pcVar2 == (char *)0x0 ||\n      (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    pcVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }\n  return pcVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "pcVar2 = get_string_value(PTR_LAB_00144578 + 0x46fc);" (assignment_expression "pcVar2 = get_string_value(PTR_LAB_00144578 + 0x46fc)" identifier = (call_expression "get_string_value(PTR_LAB_00144578 + 0x46fc)" identifier (argument_list "(PTR_LAB_00144578 + 0x46fc)" ( (binary_expression "PTR_LAB_00144578 + 0x46fc" identifier + number_literal) )))) ;) (expression_statement "puVar1 = PTR_data_start_00144568;" (assignment_expression "puVar1 = PTR_data_start_00144568" identifier = identifier) ;) (if_statement "if ((pcVar2 == (char *)0x0) &&\n     ((pcVar2 = *(char **)PTR_the_current_working_directory_00145148, pcVar2 == (char *)0x0 ||\n      (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    pcVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }" if (parenthesized_expression "((pcVar2 == (char *)0x0) &&\n     ((pcVar2 = *(char **)PTR_the_current_working_directory_00145148, pcVar2 == (char *)0x0 ||\n      (*(int *)PTR_no_symbolic_links_00145124 == 0))))" ( (binary_expression "(pcVar2 == (char *)0x0) &&\n     ((pcVar2 = *(char **)PTR_the_current_working_directory_00145148, pcVar2 == (char *)0x0 ||\n      (*(int *)PTR_no_symbolic_links_00145124 == 0)))" (parenthesized_expression "(pcVar2 == (char *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((pcVar2 = *(char **)PTR_the_current_working_directory_00145148, pcVar2 == (char *)0x0 ||\n      (*(int *)PTR_no_symbolic_links_00145124 == 0)))" ( (parenthesized_expression "(pcVar2 = *(char **)PTR_the_current_working_directory_00145148, pcVar2 == (char *)0x0 ||\n      (*(int *)PTR_no_symbolic_links_00145124 == 0))" ( (comma_expression "pcVar2 = *(char **)PTR_the_current_working_directory_00145148, pcVar2 == (char *)0x0 ||\n      (*(int *)PTR_no_symbolic_links_00145124 == 0)" (assignment_expression "pcVar2 = *(char **)PTR_the_current_working_directory_00145148" identifier = (pointer_expression "*(char **)PTR_the_current_working_directory_00145148" * (cast_expression "(char **)PTR_the_current_working_directory_00145148" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) , (binary_expression "pcVar2 == (char *)0x0 ||\n      (*(int *)PTR_no_symbolic_links_00145124 == 0)" (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(*(int *)PTR_no_symbolic_links_00145124 == 0)" ( (binary_expression "*(int *)PTR_no_symbolic_links_00145124 == 0" (pointer_expression "*(int *)PTR_no_symbolic_links_00145124" * (cast_expression "(int *)PTR_no_symbolic_links_00145124" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) == number_literal) )))) )) ))) )) (compound_statement "{\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    pcVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }" { (expression_statement "iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);" (assignment_expression "iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000)" identifier = (call_expression "(*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000)" (parenthesized_expression "(*(code *)PTR_getcwd_0014497c)" ( (pointer_expression "*(code *)PTR_getcwd_0014497c" * (cast_expression "(code *)PTR_getcwd_0014497c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_data_start_00144568 + 0x7f24,0x1000)" ( (binary_expression "PTR_data_start_00144568 + 0x7f24" identifier + number_literal) , number_literal )))) ;) (if_statement "if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      return puVar1 + 0x7f24;\n    }" { (return_statement "return puVar1 + 0x7f24;" return (binary_expression "puVar1 + 0x7f24" identifier + number_literal) ;) })) (expression_statement "pcVar2 = PTR_LAB_00144578 + 0x7ad8;" (assignment_expression "pcVar2 = PTR_LAB_00144578 + 0x7ad8" identifier = (binary_expression "PTR_LAB_00144578 + 0x7ad8" identifier + number_literal)) ;) })) (return_statement "return pcVar2;" return identifier ;) })))
(translation_unit "undefined * FUN_000649c8(void)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  \n  puVar2 = (undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc);\n  puVar1 = PTR_data_start_00144568;\n  if ((puVar2 == (undefined *)0x0) &&\n     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    puVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }\n  return puVar2;\n}\n\n" (function_definition "undefined * FUN_000649c8(void)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  \n  puVar2 = (undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc);\n  puVar1 = PTR_data_start_00144568;\n  if ((puVar2 == (undefined *)0x0) &&\n     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    puVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }\n  return puVar2;\n}" type_identifier (pointer_declarator "* FUN_000649c8(void)" * (function_declarator "FUN_000649c8(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  \n  puVar2 = (undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc);\n  puVar1 = PTR_data_start_00144568;\n  if ((puVar2 == (undefined *)0x0) &&\n     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    puVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }\n  return puVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "puVar2 = (undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc);" (assignment_expression "puVar2 = (undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc)" identifier = (cast_expression "(undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "get_string_value(PTR_LAB_00144578 + 0x46fc)" identifier (argument_list "(PTR_LAB_00144578 + 0x46fc)" ( (binary_expression "PTR_LAB_00144578 + 0x46fc" identifier + number_literal) ))))) ;) (expression_statement "puVar1 = PTR_data_start_00144568;" (assignment_expression "puVar1 = PTR_data_start_00144568" identifier = identifier) ;) (if_statement "if ((puVar2 == (undefined *)0x0) &&\n     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    puVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }" if (parenthesized_expression "((puVar2 == (undefined *)0x0) &&\n     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0))))" ( (binary_expression "(puVar2 == (undefined *)0x0) &&\n     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))" (parenthesized_expression "(puVar2 == (undefined *)0x0)" ( (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))" ( (parenthesized_expression "(puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0))" ( (comma_expression "puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)" (assignment_expression "puVar2 = *(undefined **)PTR_the_current_working_directory_00145148" identifier = (pointer_expression "*(undefined **)PTR_the_current_working_directory_00145148" * (cast_expression "(undefined **)PTR_the_current_working_directory_00145148" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) , (binary_expression "puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)" (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(*(int *)PTR_no_symbolic_links_00145124 == 0)" ( (binary_expression "*(int *)PTR_no_symbolic_links_00145124 == 0" (pointer_expression "*(int *)PTR_no_symbolic_links_00145124" * (cast_expression "(int *)PTR_no_symbolic_links_00145124" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) == number_literal) )))) )) ))) )) (compound_statement "{\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    puVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }" { (expression_statement "iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);" (assignment_expression "iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000)" identifier = (call_expression "(*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000)" (parenthesized_expression "(*(code *)PTR_getcwd_0014497c)" ( (pointer_expression "*(code *)PTR_getcwd_0014497c" * (cast_expression "(code *)PTR_getcwd_0014497c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_data_start_00144568 + 0x7f24,0x1000)" ( (binary_expression "PTR_data_start_00144568 + 0x7f24" identifier + number_literal) , number_literal )))) ;) (if_statement "if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      return puVar1 + 0x7f24;\n    }" { (return_statement "return puVar1 + 0x7f24;" return (binary_expression "puVar1 + 0x7f24" identifier + number_literal) ;) })) (expression_statement "puVar2 = PTR_LAB_00144578 + 0x7ad8;" (assignment_expression "puVar2 = PTR_LAB_00144578 + 0x7ad8" identifier = (binary_expression "PTR_LAB_00144578 + 0x7ad8" identifier + number_literal)) ;) })) (return_statement "return puVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) , (binary_expression (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) == LIT) )))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return (binary_expression IDENT + LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (return_statement return IDENT ;) })))
(function_definition "undefined * FUN_000649c8(void)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  \n  puVar2 = (undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc);\n  puVar1 = PTR_data_start_00144568;\n  if ((puVar2 == (undefined *)0x0) &&\n     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    puVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }\n  return puVar2;\n}" (type_identifier "undefined") (pointer_declarator "* FUN_000649c8(void)" (* "*") (function_declarator "FUN_000649c8(void)" (identifier "FUN_000649c8") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")")))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  \n  puVar2 = (undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc);\n  puVar1 = PTR_data_start_00144568;\n  if ((puVar2 == (undefined *)0x0) &&\n     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    puVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }\n  return puVar2;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (expression_statement "puVar2 = (undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc);" (assignment_expression "puVar2 = (undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc)" (identifier "puVar2") (= "=") (cast_expression "(undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "get_string_value(PTR_LAB_00144578 + 0x46fc)" (identifier "get_string_value") (argument_list "(PTR_LAB_00144578 + 0x46fc)" (( "(") (binary_expression "PTR_LAB_00144578 + 0x46fc" (identifier "PTR_LAB_00144578") (+ "+") (number_literal "0x46fc")) () ")"))))) (; ";")) (expression_statement "puVar1 = PTR_data_start_00144568;" (assignment_expression "puVar1 = PTR_data_start_00144568" (identifier "puVar1") (= "=") (identifier "PTR_data_start_00144568")) (; ";")) (if_statement "if ((puVar2 == (undefined *)0x0) &&\n     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    puVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }" (if "if") (parenthesized_expression "((puVar2 == (undefined *)0x0) &&\n     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0))))" (( "(") (binary_expression "(puVar2 == (undefined *)0x0) &&\n     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))" (parenthesized_expression "(puVar2 == (undefined *)0x0)" (( "(") (binary_expression "puVar2 == (undefined *)0x0" (identifier "puVar2") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))" (( "(") (parenthesized_expression "(puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0))" (( "(") (comma_expression "puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,\n      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)" (assignment_expression "puVar2 = *(undefined **)PTR_the_current_working_directory_00145148" (identifier "puVar2") (= "=") (pointer_expression "*(undefined **)PTR_the_current_working_directory_00145148" (* "*") (cast_expression "(undefined **)PTR_the_current_working_directory_00145148" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_the_current_working_directory_00145148")))) (, ",") (binary_expression "puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)" (binary_expression "puVar2 == (undefined *)0x0" (identifier "puVar2") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (|| "||") (parenthesized_expression "(*(int *)PTR_no_symbolic_links_00145124 == 0)" (( "(") (binary_expression "*(int *)PTR_no_symbolic_links_00145124 == 0" (pointer_expression "*(int *)PTR_no_symbolic_links_00145124" (* "*") (cast_expression "(int *)PTR_no_symbolic_links_00145124" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_no_symbolic_links_00145124"))) (== "==") (number_literal "0")) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);\n    if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }\n    puVar2 = PTR_LAB_00144578 + 0x7ad8;\n  }" ({ "{") (expression_statement "iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);" (assignment_expression "iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000)" (parenthesized_expression "(*(code *)PTR_getcwd_0014497c)" (( "(") (pointer_expression "*(code *)PTR_getcwd_0014497c" (* "*") (cast_expression "(code *)PTR_getcwd_0014497c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_getcwd_0014497c"))) () ")")) (argument_list "(PTR_data_start_00144568 + 0x7f24,0x1000)" (( "(") (binary_expression "PTR_data_start_00144568 + 0x7f24" (identifier "PTR_data_start_00144568") (+ "+") (number_literal "0x7f24")) (, ",") (number_literal "0x1000") () ")")))) (; ";")) (if_statement "if (iVar3 != 0) {\n      return puVar1 + 0x7f24;\n    }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return puVar1 + 0x7f24;\n    }" ({ "{") (return_statement "return puVar1 + 0x7f24;" (return "return") (binary_expression "puVar1 + 0x7f24" (identifier "puVar1") (+ "+") (number_literal "0x7f24")) (; ";")) (} "}"))) (expression_statement "puVar2 = PTR_LAB_00144578 + 0x7ad8;" (assignment_expression "puVar2 = PTR_LAB_00144578 + 0x7ad8" (identifier "puVar2") (= "=") (binary_expression "PTR_LAB_00144578 + 0x7ad8" (identifier "PTR_LAB_00144578") (+ "+") (number_literal "0x7ad8"))) (; ";")) (} "}"))) (return_statement "return puVar2;" (return "return") (identifier "puVar2") (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

char * function_1(void)

{
  type_1 *var_6;
  char *var_3;
  int var_5;
  
  var_3 = var_1(var_2 + 0x46fc);
  var_6 = var_4;
  if ((var_3 == (char *)0x0) &&
     ((var_3 = *(char **)PTR_the_current_working_directory_00145148, var_3 == (char *)0x0 ||
      (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {
    var_5 = (*(type_2 *)PTR_getcwd_0014497c)(var_4 + 0x7f24,0x1000);
    if (var_5 != 0) {
      return var_6 + 0x7f24;
    }
    var_3 = var_2 + 0x7ad8;
  }
  return var_3;
}


(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (return_statement (identifier)))))

undefined * MASKED(void)

{
  undefined *puVar1;
  undefined *puVar2;
  int iVar3;
  
  puVar2 = (undefined *)get_string_value(PTR_LAB_00144578 + 0x46fc);
  puVar1 = PTR_data_start_00144568;
  if ((puVar2 == (undefined *)0x0) &&
     ((puVar2 = *(undefined **)PTR_the_current_working_directory_00145148,
      puVar2 == (undefined *)0x0 || (*(int *)PTR_no_symbolic_links_00145124 == 0)))) {
    iVar3 = (*(code *)PTR_getcwd_0014497c)(PTR_data_start_00144568 + 0x7f24,0x1000);
    if (iVar3 != 0) {
      return puVar1 + 0x7f24;
    }
    puVar2 = PTR_LAB_00144578 + 0x7ad8;
  }
  return puVar2;
}

