
Source_File * source_file_lookup_path(char *path)

{
  Source_File *pSVar1;
  int iVar2;
  Source_File *pSVar3;
  char *pcVar4;
  source_file *psVar5;
  
  psVar5 = first_src_file;
  if (first_src_file != (Source_File *)0x0) {
    do {
      iVar2 = filename_cmp(path,psVar5->name);
      if (iVar2 == 0) {
        return psVar5;
      }
      psVar5 = psVar5->next;
    } while (psVar5 != (source_file *)0x0);
  }
  pSVar3 = (Source_File *)xmalloc(0x28);
  pSVar3->line = (void **)0x0;
  pSVar3->next = (source_file *)0x0;
  pSVar3->name = (char *)0x0;
  pSVar3->ncalls = 0;
  pSVar3->num_lines = 0;
  pSVar3->nalloced = 0;
  pcVar4 = (char *)xstrdup(path);
  pSVar3->name = pcVar4;
  pSVar1 = pSVar3;
  pSVar3->next = first_src_file;
  first_src_file = pSVar1;
  return pSVar3;
}



undefined1 (*) [16] FUN_0010ba80(undefined8 param_1)

{
  int iVar1;
  undefined1 (*pauVar2) [16];
  undefined8 uVar3;
  undefined1 (*pauVar4) [16];
  
  pauVar4 = DAT_00119610;
  if (DAT_00119610 != (undefined1 (*) [16])0x0) {
    do {
      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));
      if (iVar1 == 0) {
        return pauVar4;
      }
      pauVar4 = *(undefined1 (**) [16])*pauVar4;
    } while (pauVar4 != (undefined1 (*) [16])0x0);
  }
  pauVar2 = (undefined1 (*) [16])xmalloc(0x28);
  *(undefined8 *)pauVar2[2] = 0;
  *pauVar2 = (undefined1  [16])0x0;
  pauVar2[1] = (undefined1  [16])0x0;
  uVar3 = xstrdup(param_1);
  *(undefined8 *)(*pauVar2 + 8) = uVar3;
  pauVar4 = pauVar2;
  *(undefined1 (**) [16])*pauVar2 = DAT_00119610;
  DAT_00119610 = pauVar4;
  return pauVar2;
}


PUSH RBP
MOV RBP,RDI
PUSH RBX
SUB RSP,0x8
MOV RBX,qword ptr [0x00119610]
TEST RBX,RBX
JNZ 0x0010baa8
JMP 0x0010bac8
MOV RBX,qword ptr [RBX]
TEST RBX,RBX
JZ 0x0010bac8
MOV RSI,qword ptr [RBX + 0x8]
MOV RDI,RBP
CALL 0x00102100
TEST EAX,EAX
JNZ 0x0010baa0
ADD RSP,0x8
MOV RAX,RBX
POP RBX
POP RBP
RET
MOV EDI,0x28
CALL 0x00102240
PXOR XMM0,XMM0
MOV RDI,RBP
MOV qword ptr [RAX + 0x20],0x0
MOV RBX,RAX
MOVUPS xmmword ptr [RAX],XMM0
MOVUPS xmmword ptr [RAX + 0x10],XMM0
CALL 0x00102270
MOV qword ptr [RBX + 0x8],RAX
MOV RAX,qword ptr [0x00119610]
MOV qword ptr [0x00119610],RBX
MOV qword ptr [RBX],RAX
ADD RSP,0x8
MOV RAX,RBX
POP RBX
POP RBP
RET
(translation_unit "undefined1 (*) [16] FUN_0010ba80(undefined8 param_1)\n\n{\n  int iVar1;\n  undefined1 (*pauVar2) [16];\n  undefined8 uVar3;\n  undefined1 (*pauVar4) [16];\n  \n  pauVar4 = DAT_00119610;\n  if (DAT_00119610 != (undefined1 (*) [16])0x0) {\n    do {\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    } while (pauVar4 != (undefined1 (*) [16])0x0);\n  }\n  pauVar2 = (undefined1 (*) [16])xmalloc(0x28);\n  *(undefined8 *)pauVar2[2] = 0;\n  *pauVar2 = (undefined1  [16])0x0;\n  pauVar2[1] = (undefined1  [16])0x0;\n  uVar3 = xstrdup(param_1);\n  *(undefined8 *)(*pauVar2 + 8) = uVar3;\n  pauVar4 = pauVar2;\n  *(undefined1 (**) [16])*pauVar2 = DAT_00119610;\n  DAT_00119610 = pauVar4;\n  return pauVar2;\n}\n\n" (function_definition "undefined1 (*) [16] FUN_0010ba80(undefined8 param_1)\n\n{\n  int iVar1;\n  undefined1 (*pauVar2) [16];\n  undefined8 uVar3;\n  undefined1 (*pauVar4) [16];\n  \n  pauVar4 = DAT_00119610;\n  if (DAT_00119610 != (undefined1 (*) [16])0x0) {\n    do {\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    } while (pauVar4 != (undefined1 (*) [16])0x0);\n  }\n  pauVar2 = (undefined1 (*) [16])xmalloc(0x28);\n  *(undefined8 *)pauVar2[2] = 0;\n  *pauVar2 = (undefined1  [16])0x0;\n  pauVar2[1] = (undefined1  [16])0x0;\n  uVar3 = xstrdup(param_1);\n  *(undefined8 *)(*pauVar2 + 8) = uVar3;\n  pauVar4 = pauVar2;\n  *(undefined1 (**) [16])*pauVar2 = DAT_00119610;\n  DAT_00119610 = pauVar4;\n  return pauVar2;\n}" type_identifier (ERROR "(*) [16]" (array_declarator "(*) [16]" (parenthesized_declarator "(*)" ( (pointer_declarator "*" * identifier) )) [ number_literal ])) (function_declarator "FUN_0010ba80(undefined8 param_1)" identifier (parameter_list "(undefined8 param_1)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined1 (*pauVar2) [16];\n  undefined8 uVar3;\n  undefined1 (*pauVar4) [16];\n  \n  pauVar4 = DAT_00119610;\n  if (DAT_00119610 != (undefined1 (*) [16])0x0) {\n    do {\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    } while (pauVar4 != (undefined1 (*) [16])0x0);\n  }\n  pauVar2 = (undefined1 (*) [16])xmalloc(0x28);\n  *(undefined8 *)pauVar2[2] = 0;\n  *pauVar2 = (undefined1  [16])0x0;\n  pauVar2[1] = (undefined1  [16])0x0;\n  uVar3 = xstrdup(param_1);\n  *(undefined8 *)(*pauVar2 + 8) = uVar3;\n  pauVar4 = pauVar2;\n  *(undefined1 (**) [16])*pauVar2 = DAT_00119610;\n  DAT_00119610 = pauVar4;\n  return pauVar2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (expression_statement "undefined1 (*pauVar2) [16];" (subscript_expression "undefined1 (*pauVar2) [16]" (call_expression "undefined1 (*pauVar2)" identifier (argument_list "(*pauVar2)" ( (pointer_expression "*pauVar2" * identifier) ))) [ number_literal ]) ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (expression_statement "undefined1 (*pauVar4) [16];" (subscript_expression "undefined1 (*pauVar4) [16]" (call_expression "undefined1 (*pauVar4)" identifier (argument_list "(*pauVar4)" ( (pointer_expression "*pauVar4" * identifier) ))) [ number_literal ]) ;) (expression_statement "pauVar4 = DAT_00119610;" (assignment_expression "pauVar4 = DAT_00119610" identifier = identifier) ;) (if_statement "if (DAT_00119610 != (undefined1 (*) [16])0x0) {\n    do {\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    } while (pauVar4 != (undefined1 (*) [16])0x0);\n  }" if (parenthesized_expression "(DAT_00119610 != (undefined1 (*) [16])0x0)" ( (binary_expression "DAT_00119610 != (undefined1 (*) [16])0x0" identifier != (cast_expression "(undefined1 (*) [16])0x0" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) number_literal)) )) (compound_statement "{\n    do {\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    } while (pauVar4 != (undefined1 (*) [16])0x0);\n  }" { (do_statement "do {\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    } while (pauVar4 != (undefined1 (*) [16])0x0);" do (compound_statement "{\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    }" { (expression_statement "iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));" (assignment_expression "iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8))" identifier = (call_expression "filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8))" identifier (argument_list "(param_1,*(undefined8 *)(*pauVar4 + 8))" ( identifier , (pointer_expression "*(undefined8 *)(*pauVar4 + 8)" * (cast_expression "(undefined8 *)(*pauVar4 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pauVar4 + 8)" ( (binary_expression "*pauVar4 + 8" (pointer_expression "*pauVar4" * identifier) + number_literal) )))) )))) ;) (if_statement "if (iVar1 == 0) {\n        return pauVar4;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return pauVar4;\n      }" { (return_statement "return pauVar4;" return identifier ;) })) (expression_statement "pauVar4 = *(undefined1 (**) [16])*pauVar4;" (assignment_expression "pauVar4 = *(undefined1 (**) [16])*pauVar4" identifier = (pointer_expression "*(undefined1 (**) [16])*pauVar4" * (cast_expression "(undefined1 (**) [16])*pauVar4" ( (type_descriptor "undefined1 (**) [16]" type_identifier (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" ( (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)) )) [ number_literal ])) ) (pointer_expression "*pauVar4" * identifier)))) ;) }) while (parenthesized_expression "(pauVar4 != (undefined1 (*) [16])0x0)" ( (binary_expression "pauVar4 != (undefined1 (*) [16])0x0" identifier != (cast_expression "(undefined1 (*) [16])0x0" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) number_literal)) )) ;) })) (expression_statement "pauVar2 = (undefined1 (*) [16])xmalloc(0x28);" (assignment_expression "pauVar2 = (undefined1 (*) [16])xmalloc(0x28)" identifier = (cast_expression "(undefined1 (*) [16])xmalloc(0x28)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (call_expression "xmalloc(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined8 *)pauVar2[2] = 0;" (assignment_expression "*(undefined8 *)pauVar2[2] = 0" (pointer_expression "*(undefined8 *)pauVar2[2]" * (cast_expression "(undefined8 *)pauVar2[2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pauVar2[2]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "*pauVar2 = (undefined1  [16])0x0;" (assignment_expression "*pauVar2 = (undefined1  [16])0x0" (pointer_expression "*pauVar2" * identifier) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "pauVar2[1] = (undefined1  [16])0x0;" (assignment_expression "pauVar2[1] = (undefined1  [16])0x0" (subscript_expression "pauVar2[1]" identifier [ number_literal ]) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "uVar3 = xstrdup(param_1);" (assignment_expression "uVar3 = xstrdup(param_1)" identifier = (call_expression "xstrdup(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined8 *)(*pauVar2 + 8) = uVar3;" (assignment_expression "*(undefined8 *)(*pauVar2 + 8) = uVar3" (pointer_expression "*(undefined8 *)(*pauVar2 + 8)" * (cast_expression "(undefined8 *)(*pauVar2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pauVar2 + 8)" ( (binary_expression "*pauVar2 + 8" (pointer_expression "*pauVar2" * identifier) + number_literal) )))) = identifier) ;) (expression_statement "pauVar4 = pauVar2;" (assignment_expression "pauVar4 = pauVar2" identifier = identifier) ;) (expression_statement "*(undefined1 (**) [16])*pauVar2 = DAT_00119610;" (assignment_expression "*(undefined1 (**) [16])*pauVar2 = DAT_00119610" (pointer_expression "*(undefined1 (**) [16])*pauVar2" * (cast_expression "(undefined1 (**) [16])*pauVar2" ( (type_descriptor "undefined1 (**) [16]" type_identifier (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" ( (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)) )) [ number_literal ])) ) (pointer_expression "*pauVar2" * identifier))) = identifier) ;) (expression_statement "DAT_00119610 = pauVar4;" (assignment_expression "DAT_00119610 = pauVar4" identifier = identifier) ;) (return_statement "return pauVar2;" return identifier ;) })))
(translation_unit "Source_File * source_file_lookup_path(char *path)\n\n{\n  Source_File *pSVar1;\n  int iVar2;\n  Source_File *pSVar3;\n  char *pcVar4;\n  source_file *psVar5;\n  \n  psVar5 = first_src_file;\n  if (first_src_file != (Source_File *)0x0) {\n    do {\n      iVar2 = filename_cmp(path,psVar5->name);\n      if (iVar2 == 0) {\n        return psVar5;\n      }\n      psVar5 = psVar5->next;\n    } while (psVar5 != (source_file *)0x0);\n  }\n  pSVar3 = (Source_File *)xmalloc(0x28);\n  pSVar3->line = (void **)0x0;\n  pSVar3->next = (source_file *)0x0;\n  pSVar3->name = (char *)0x0;\n  pSVar3->ncalls = 0;\n  pSVar3->num_lines = 0;\n  pSVar3->nalloced = 0;\n  pcVar4 = (char *)xstrdup(path);\n  pSVar3->name = pcVar4;\n  pSVar1 = pSVar3;\n  pSVar3->next = first_src_file;\n  first_src_file = pSVar1;\n  return pSVar3;\n}\n\n" (function_definition "Source_File * source_file_lookup_path(char *path)\n\n{\n  Source_File *pSVar1;\n  int iVar2;\n  Source_File *pSVar3;\n  char *pcVar4;\n  source_file *psVar5;\n  \n  psVar5 = first_src_file;\n  if (first_src_file != (Source_File *)0x0) {\n    do {\n      iVar2 = filename_cmp(path,psVar5->name);\n      if (iVar2 == 0) {\n        return psVar5;\n      }\n      psVar5 = psVar5->next;\n    } while (psVar5 != (source_file *)0x0);\n  }\n  pSVar3 = (Source_File *)xmalloc(0x28);\n  pSVar3->line = (void **)0x0;\n  pSVar3->next = (source_file *)0x0;\n  pSVar3->name = (char *)0x0;\n  pSVar3->ncalls = 0;\n  pSVar3->num_lines = 0;\n  pSVar3->nalloced = 0;\n  pcVar4 = (char *)xstrdup(path);\n  pSVar3->name = pcVar4;\n  pSVar1 = pSVar3;\n  pSVar3->next = first_src_file;\n  first_src_file = pSVar1;\n  return pSVar3;\n}" type_identifier (pointer_declarator "* source_file_lookup_path(char *path)" * (function_declarator "source_file_lookup_path(char *path)" identifier (parameter_list "(char *path)" ( (parameter_declaration "char *path" primitive_type (pointer_declarator "*path" * identifier)) )))) (compound_statement "{\n  Source_File *pSVar1;\n  int iVar2;\n  Source_File *pSVar3;\n  char *pcVar4;\n  source_file *psVar5;\n  \n  psVar5 = first_src_file;\n  if (first_src_file != (Source_File *)0x0) {\n    do {\n      iVar2 = filename_cmp(path,psVar5->name);\n      if (iVar2 == 0) {\n        return psVar5;\n      }\n      psVar5 = psVar5->next;\n    } while (psVar5 != (source_file *)0x0);\n  }\n  pSVar3 = (Source_File *)xmalloc(0x28);\n  pSVar3->line = (void **)0x0;\n  pSVar3->next = (source_file *)0x0;\n  pSVar3->name = (char *)0x0;\n  pSVar3->ncalls = 0;\n  pSVar3->num_lines = 0;\n  pSVar3->nalloced = 0;\n  pcVar4 = (char *)xstrdup(path);\n  pSVar3->name = pcVar4;\n  pSVar1 = pSVar3;\n  pSVar3->next = first_src_file;\n  first_src_file = pSVar1;\n  return pSVar3;\n}" { (declaration "Source_File *pSVar1;" type_identifier (pointer_declarator "*pSVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "Source_File *pSVar3;" type_identifier (pointer_declarator "*pSVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "source_file *psVar5;" type_identifier (pointer_declarator "*psVar5" * identifier) ;) (expression_statement "psVar5 = first_src_file;" (assignment_expression "psVar5 = first_src_file" identifier = identifier) ;) (if_statement "if (first_src_file != (Source_File *)0x0) {\n    do {\n      iVar2 = filename_cmp(path,psVar5->name);\n      if (iVar2 == 0) {\n        return psVar5;\n      }\n      psVar5 = psVar5->next;\n    } while (psVar5 != (source_file *)0x0);\n  }" if (parenthesized_expression "(first_src_file != (Source_File *)0x0)" ( (binary_expression "first_src_file != (Source_File *)0x0" identifier != (cast_expression "(Source_File *)0x0" ( (type_descriptor "Source_File *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      iVar2 = filename_cmp(path,psVar5->name);\n      if (iVar2 == 0) {\n        return psVar5;\n      }\n      psVar5 = psVar5->next;\n    } while (psVar5 != (source_file *)0x0);\n  }" { (do_statement "do {\n      iVar2 = filename_cmp(path,psVar5->name);\n      if (iVar2 == 0) {\n        return psVar5;\n      }\n      psVar5 = psVar5->next;\n    } while (psVar5 != (source_file *)0x0);" do (compound_statement "{\n      iVar2 = filename_cmp(path,psVar5->name);\n      if (iVar2 == 0) {\n        return psVar5;\n      }\n      psVar5 = psVar5->next;\n    }" { (expression_statement "iVar2 = filename_cmp(path,psVar5->name);" (assignment_expression "iVar2 = filename_cmp(path,psVar5->name)" identifier = (call_expression "filename_cmp(path,psVar5->name)" identifier (argument_list "(path,psVar5->name)" ( identifier , (field_expression "psVar5->name" identifier -> field_identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n        return psVar5;\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        return psVar5;\n      }" { (return_statement "return psVar5;" return identifier ;) })) (expression_statement "psVar5 = psVar5->next;" (assignment_expression "psVar5 = psVar5->next" identifier = (field_expression "psVar5->next" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(psVar5 != (source_file *)0x0)" ( (binary_expression "psVar5 != (source_file *)0x0" identifier != (cast_expression "(source_file *)0x0" ( (type_descriptor "source_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "pSVar3 = (Source_File *)xmalloc(0x28);" (assignment_expression "pSVar3 = (Source_File *)xmalloc(0x28)" identifier = (cast_expression "(Source_File *)xmalloc(0x28)" ( (type_descriptor "Source_File *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "pSVar3->line = (void **)0x0;" (assignment_expression "pSVar3->line = (void **)0x0" (field_expression "pSVar3->line" identifier -> field_identifier) = (cast_expression "(void **)0x0" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "pSVar3->next = (source_file *)0x0;" (assignment_expression "pSVar3->next = (source_file *)0x0" (field_expression "pSVar3->next" identifier -> field_identifier) = (cast_expression "(source_file *)0x0" ( (type_descriptor "source_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pSVar3->name = (char *)0x0;" (assignment_expression "pSVar3->name = (char *)0x0" (field_expression "pSVar3->name" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pSVar3->ncalls = 0;" (assignment_expression "pSVar3->ncalls = 0" (field_expression "pSVar3->ncalls" identifier -> field_identifier) = number_literal) ;) (expression_statement "pSVar3->num_lines = 0;" (assignment_expression "pSVar3->num_lines = 0" (field_expression "pSVar3->num_lines" identifier -> field_identifier) = number_literal) ;) (expression_statement "pSVar3->nalloced = 0;" (assignment_expression "pSVar3->nalloced = 0" (field_expression "pSVar3->nalloced" identifier -> field_identifier) = number_literal) ;) (expression_statement "pcVar4 = (char *)xstrdup(path);" (assignment_expression "pcVar4 = (char *)xstrdup(path)" identifier = (cast_expression "(char *)xstrdup(path)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xstrdup(path)" identifier (argument_list "(path)" ( identifier ))))) ;) (expression_statement "pSVar3->name = pcVar4;" (assignment_expression "pSVar3->name = pcVar4" (field_expression "pSVar3->name" identifier -> field_identifier) = identifier) ;) (expression_statement "pSVar1 = pSVar3;" (assignment_expression "pSVar1 = pSVar3" identifier = identifier) ;) (expression_statement "pSVar3->next = first_src_file;" (assignment_expression "pSVar3->next = first_src_file" (field_expression "pSVar3->next" identifier -> field_identifier) = identifier) ;) (expression_statement "first_src_file = pSVar1;" (assignment_expression "first_src_file = pSVar1" identifier = identifier) ;) (return_statement "return pSVar3;" return identifier ;) })))
(translation_unit "undefined1 (*) [16] FUN_0010ba80(undefined8 param_1)\n\n{\n  int iVar1;\n  undefined1 (*pauVar2) [16];\n  undefined8 uVar3;\n  undefined1 (*pauVar4) [16];\n  \n  pauVar4 = DAT_00119610;\n  if (DAT_00119610 != (undefined1 (*) [16])0x0) {\n    do {\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    } while (pauVar4 != (undefined1 (*) [16])0x0);\n  }\n  pauVar2 = (undefined1 (*) [16])xmalloc(0x28);\n  *(undefined8 *)pauVar2[2] = 0;\n  *pauVar2 = (undefined1  [16])0x0;\n  pauVar2[1] = (undefined1  [16])0x0;\n  uVar3 = xstrdup(param_1);\n  *(undefined8 *)(*pauVar2 + 8) = uVar3;\n  pauVar4 = pauVar2;\n  *(undefined1 (**) [16])*pauVar2 = DAT_00119610;\n  DAT_00119610 = pauVar4;\n  return pauVar2;\n}\n\n" (function_definition "undefined1 (*) [16] FUN_0010ba80(undefined8 param_1)\n\n{\n  int iVar1;\n  undefined1 (*pauVar2) [16];\n  undefined8 uVar3;\n  undefined1 (*pauVar4) [16];\n  \n  pauVar4 = DAT_00119610;\n  if (DAT_00119610 != (undefined1 (*) [16])0x0) {\n    do {\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    } while (pauVar4 != (undefined1 (*) [16])0x0);\n  }\n  pauVar2 = (undefined1 (*) [16])xmalloc(0x28);\n  *(undefined8 *)pauVar2[2] = 0;\n  *pauVar2 = (undefined1  [16])0x0;\n  pauVar2[1] = (undefined1  [16])0x0;\n  uVar3 = xstrdup(param_1);\n  *(undefined8 *)(*pauVar2 + 8) = uVar3;\n  pauVar4 = pauVar2;\n  *(undefined1 (**) [16])*pauVar2 = DAT_00119610;\n  DAT_00119610 = pauVar4;\n  return pauVar2;\n}" type_identifier (ERROR "(*) [16]" (array_declarator "(*) [16]" (parenthesized_declarator "(*)" ( (pointer_declarator "*" * identifier) )) [ number_literal ])) (function_declarator "FUN_0010ba80(undefined8 param_1)" identifier (parameter_list "(undefined8 param_1)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined1 (*pauVar2) [16];\n  undefined8 uVar3;\n  undefined1 (*pauVar4) [16];\n  \n  pauVar4 = DAT_00119610;\n  if (DAT_00119610 != (undefined1 (*) [16])0x0) {\n    do {\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    } while (pauVar4 != (undefined1 (*) [16])0x0);\n  }\n  pauVar2 = (undefined1 (*) [16])xmalloc(0x28);\n  *(undefined8 *)pauVar2[2] = 0;\n  *pauVar2 = (undefined1  [16])0x0;\n  pauVar2[1] = (undefined1  [16])0x0;\n  uVar3 = xstrdup(param_1);\n  *(undefined8 *)(*pauVar2 + 8) = uVar3;\n  pauVar4 = pauVar2;\n  *(undefined1 (**) [16])*pauVar2 = DAT_00119610;\n  DAT_00119610 = pauVar4;\n  return pauVar2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (expression_statement "undefined1 (*pauVar2) [16];" (subscript_expression "undefined1 (*pauVar2) [16]" (call_expression "undefined1 (*pauVar2)" identifier (argument_list "(*pauVar2)" ( (pointer_expression "*pauVar2" * identifier) ))) [ number_literal ]) ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (expression_statement "undefined1 (*pauVar4) [16];" (subscript_expression "undefined1 (*pauVar4) [16]" (call_expression "undefined1 (*pauVar4)" identifier (argument_list "(*pauVar4)" ( (pointer_expression "*pauVar4" * identifier) ))) [ number_literal ]) ;) (expression_statement "pauVar4 = DAT_00119610;" (assignment_expression "pauVar4 = DAT_00119610" identifier = identifier) ;) (if_statement "if (DAT_00119610 != (undefined1 (*) [16])0x0) {\n    do {\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    } while (pauVar4 != (undefined1 (*) [16])0x0);\n  }" if (parenthesized_expression "(DAT_00119610 != (undefined1 (*) [16])0x0)" ( (binary_expression "DAT_00119610 != (undefined1 (*) [16])0x0" identifier != (cast_expression "(undefined1 (*) [16])0x0" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) number_literal)) )) (compound_statement "{\n    do {\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    } while (pauVar4 != (undefined1 (*) [16])0x0);\n  }" { (do_statement "do {\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    } while (pauVar4 != (undefined1 (*) [16])0x0);" do (compound_statement "{\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    }" { (expression_statement "iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));" (assignment_expression "iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8))" identifier = (call_expression "filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8))" identifier (argument_list "(param_1,*(undefined8 *)(*pauVar4 + 8))" ( identifier , (pointer_expression "*(undefined8 *)(*pauVar4 + 8)" * (cast_expression "(undefined8 *)(*pauVar4 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pauVar4 + 8)" ( (binary_expression "*pauVar4 + 8" (pointer_expression "*pauVar4" * identifier) + number_literal) )))) )))) ;) (if_statement "if (iVar1 == 0) {\n        return pauVar4;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return pauVar4;\n      }" { (return_statement "return pauVar4;" return identifier ;) })) (expression_statement "pauVar4 = *(undefined1 (**) [16])*pauVar4;" (assignment_expression "pauVar4 = *(undefined1 (**) [16])*pauVar4" identifier = (pointer_expression "*(undefined1 (**) [16])*pauVar4" * (cast_expression "(undefined1 (**) [16])*pauVar4" ( (type_descriptor "undefined1 (**) [16]" type_identifier (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" ( (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)) )) [ number_literal ])) ) (pointer_expression "*pauVar4" * identifier)))) ;) }) while (parenthesized_expression "(pauVar4 != (undefined1 (*) [16])0x0)" ( (binary_expression "pauVar4 != (undefined1 (*) [16])0x0" identifier != (cast_expression "(undefined1 (*) [16])0x0" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) number_literal)) )) ;) })) (expression_statement "pauVar2 = (undefined1 (*) [16])xmalloc(0x28);" (assignment_expression "pauVar2 = (undefined1 (*) [16])xmalloc(0x28)" identifier = (cast_expression "(undefined1 (*) [16])xmalloc(0x28)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (call_expression "xmalloc(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined8 *)pauVar2[2] = 0;" (assignment_expression "*(undefined8 *)pauVar2[2] = 0" (pointer_expression "*(undefined8 *)pauVar2[2]" * (cast_expression "(undefined8 *)pauVar2[2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pauVar2[2]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "*pauVar2 = (undefined1  [16])0x0;" (assignment_expression "*pauVar2 = (undefined1  [16])0x0" (pointer_expression "*pauVar2" * identifier) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "pauVar2[1] = (undefined1  [16])0x0;" (assignment_expression "pauVar2[1] = (undefined1  [16])0x0" (subscript_expression "pauVar2[1]" identifier [ number_literal ]) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "uVar3 = xstrdup(param_1);" (assignment_expression "uVar3 = xstrdup(param_1)" identifier = (call_expression "xstrdup(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined8 *)(*pauVar2 + 8) = uVar3;" (assignment_expression "*(undefined8 *)(*pauVar2 + 8) = uVar3" (pointer_expression "*(undefined8 *)(*pauVar2 + 8)" * (cast_expression "(undefined8 *)(*pauVar2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pauVar2 + 8)" ( (binary_expression "*pauVar2 + 8" (pointer_expression "*pauVar2" * identifier) + number_literal) )))) = identifier) ;) (expression_statement "pauVar4 = pauVar2;" (assignment_expression "pauVar4 = pauVar2" identifier = identifier) ;) (expression_statement "*(undefined1 (**) [16])*pauVar2 = DAT_00119610;" (assignment_expression "*(undefined1 (**) [16])*pauVar2 = DAT_00119610" (pointer_expression "*(undefined1 (**) [16])*pauVar2" * (cast_expression "(undefined1 (**) [16])*pauVar2" ( (type_descriptor "undefined1 (**) [16]" type_identifier (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" ( (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)) )) [ number_literal ])) ) (pointer_expression "*pauVar2" * identifier))) = identifier) ;) (expression_statement "DAT_00119610 = pauVar4;" (assignment_expression "DAT_00119610 = pauVar4" identifier = identifier) ;) (return_statement "return pauVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR (array_declarator (parenthesized_declarator ( (pointer_declarator * IDENT) )) [ LIT ])) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (expression_statement (subscript_expression (call_expression IDENT (argument_list ( (pointer_expression * IDENT) ))) [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (subscript_expression (call_expression IDENT (argument_list ( (pointer_expression * IDENT) ))) [ LIT ]) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator *) )) [ LIT ])) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator * (abstract_pointer_declarator *)) )) [ LIT ])) ) (pointer_expression * IDENT)))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator *) )) [ LIT ])) ) LIT)) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator *) )) [ LIT ])) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator [ LIT ])) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator [ LIT ])) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator * (abstract_pointer_declarator *)) )) [ LIT ])) ) (pointer_expression * IDENT))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (return_statement return IDENT ;) })))
(function_definition "undefined1 (*) [16] FUN_0010ba80(undefined8 param_1)\n\n{\n  int iVar1;\n  undefined1 (*pauVar2) [16];\n  undefined8 uVar3;\n  undefined1 (*pauVar4) [16];\n  \n  pauVar4 = DAT_00119610;\n  if (DAT_00119610 != (undefined1 (*) [16])0x0) {\n    do {\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    } while (pauVar4 != (undefined1 (*) [16])0x0);\n  }\n  pauVar2 = (undefined1 (*) [16])xmalloc(0x28);\n  *(undefined8 *)pauVar2[2] = 0;\n  *pauVar2 = (undefined1  [16])0x0;\n  pauVar2[1] = (undefined1  [16])0x0;\n  uVar3 = xstrdup(param_1);\n  *(undefined8 *)(*pauVar2 + 8) = uVar3;\n  pauVar4 = pauVar2;\n  *(undefined1 (**) [16])*pauVar2 = DAT_00119610;\n  DAT_00119610 = pauVar4;\n  return pauVar2;\n}" (type_identifier "undefined1") (ERROR "(*) [16]" (array_declarator "(*) [16]" (parenthesized_declarator "(*)" (( "(") (pointer_declarator "*" (* "*") (identifier "")) () ")")) ([ "[") (number_literal "16") (] "]"))) (function_declarator "FUN_0010ba80(undefined8 param_1)" (identifier "FUN_0010ba80") (parameter_list "(undefined8 param_1)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined1 (*pauVar2) [16];\n  undefined8 uVar3;\n  undefined1 (*pauVar4) [16];\n  \n  pauVar4 = DAT_00119610;\n  if (DAT_00119610 != (undefined1 (*) [16])0x0) {\n    do {\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    } while (pauVar4 != (undefined1 (*) [16])0x0);\n  }\n  pauVar2 = (undefined1 (*) [16])xmalloc(0x28);\n  *(undefined8 *)pauVar2[2] = 0;\n  *pauVar2 = (undefined1  [16])0x0;\n  pauVar2[1] = (undefined1  [16])0x0;\n  uVar3 = xstrdup(param_1);\n  *(undefined8 *)(*pauVar2 + 8) = uVar3;\n  pauVar4 = pauVar2;\n  *(undefined1 (**) [16])*pauVar2 = DAT_00119610;\n  DAT_00119610 = pauVar4;\n  return pauVar2;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (expression_statement "undefined1 (*pauVar2) [16];" (subscript_expression "undefined1 (*pauVar2) [16]" (call_expression "undefined1 (*pauVar2)" (identifier "undefined1") (argument_list "(*pauVar2)" (( "(") (pointer_expression "*pauVar2" (* "*") (identifier "pauVar2")) () ")"))) ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (expression_statement "undefined1 (*pauVar4) [16];" (subscript_expression "undefined1 (*pauVar4) [16]" (call_expression "undefined1 (*pauVar4)" (identifier "undefined1") (argument_list "(*pauVar4)" (( "(") (pointer_expression "*pauVar4" (* "*") (identifier "pauVar4")) () ")"))) ([ "[") (number_literal "16") (] "]")) (; ";")) (expression_statement "pauVar4 = DAT_00119610;" (assignment_expression "pauVar4 = DAT_00119610" (identifier "pauVar4") (= "=") (identifier "DAT_00119610")) (; ";")) (if_statement "if (DAT_00119610 != (undefined1 (*) [16])0x0) {\n    do {\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    } while (pauVar4 != (undefined1 (*) [16])0x0);\n  }" (if "if") (parenthesized_expression "(DAT_00119610 != (undefined1 (*) [16])0x0)" (( "(") (binary_expression "DAT_00119610 != (undefined1 (*) [16])0x0" (identifier "DAT_00119610") (!= "!=") (cast_expression "(undefined1 (*) [16])0x0" (( "(") (type_descriptor "undefined1 (*) [16]" (type_identifier "undefined1") (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" (( "(") (abstract_pointer_declarator "*" (* "*")) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    do {\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    } while (pauVar4 != (undefined1 (*) [16])0x0);\n  }" ({ "{") (do_statement "do {\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    } while (pauVar4 != (undefined1 (*) [16])0x0);" (do "do") (compound_statement "{\n      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));\n      if (iVar1 == 0) {\n        return pauVar4;\n      }\n      pauVar4 = *(undefined1 (**) [16])*pauVar4;\n    }" ({ "{") (expression_statement "iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));" (assignment_expression "iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8))" (identifier "iVar1") (= "=") (call_expression "filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8))" (identifier "filename_cmp") (argument_list "(param_1,*(undefined8 *)(*pauVar4 + 8))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)(*pauVar4 + 8)" (* "*") (cast_expression "(undefined8 *)(*pauVar4 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*pauVar4 + 8)" (( "(") (binary_expression "*pauVar4 + 8" (pointer_expression "*pauVar4" (* "*") (identifier "pauVar4")) (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n        return pauVar4;\n      }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return pauVar4;\n      }" ({ "{") (return_statement "return pauVar4;" (return "return") (identifier "pauVar4") (; ";")) (} "}"))) (expression_statement "pauVar4 = *(undefined1 (**) [16])*pauVar4;" (assignment_expression "pauVar4 = *(undefined1 (**) [16])*pauVar4" (identifier "pauVar4") (= "=") (pointer_expression "*(undefined1 (**) [16])*pauVar4" (* "*") (cast_expression "(undefined1 (**) [16])*pauVar4" (( "(") (type_descriptor "undefined1 (**) [16]" (type_identifier "undefined1") (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" (( "(") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (pointer_expression "*pauVar4" (* "*") (identifier "pauVar4"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pauVar4 != (undefined1 (*) [16])0x0)" (( "(") (binary_expression "pauVar4 != (undefined1 (*) [16])0x0" (identifier "pauVar4") (!= "!=") (cast_expression "(undefined1 (*) [16])0x0" (( "(") (type_descriptor "undefined1 (*) [16]" (type_identifier "undefined1") (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" (( "(") (abstract_pointer_declarator "*" (* "*")) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}"))) (expression_statement "pauVar2 = (undefined1 (*) [16])xmalloc(0x28);" (assignment_expression "pauVar2 = (undefined1 (*) [16])xmalloc(0x28)" (identifier "pauVar2") (= "=") (cast_expression "(undefined1 (*) [16])xmalloc(0x28)" (( "(") (type_descriptor "undefined1 (*) [16]" (type_identifier "undefined1") (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" (( "(") (abstract_pointer_declarator "*" (* "*")) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (call_expression "xmalloc(0x28)" (identifier "xmalloc") (argument_list "(0x28)" (( "(") (number_literal "0x28") () ")"))))) (; ";")) (expression_statement "*(undefined8 *)pauVar2[2] = 0;" (assignment_expression "*(undefined8 *)pauVar2[2] = 0" (pointer_expression "*(undefined8 *)pauVar2[2]" (* "*") (cast_expression "(undefined8 *)pauVar2[2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "pauVar2[2]" (identifier "pauVar2") ([ "[") (number_literal "2") (] "]")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*pauVar2 = (undefined1  [16])0x0;" (assignment_expression "*pauVar2 = (undefined1  [16])0x0" (pointer_expression "*pauVar2" (* "*") (identifier "pauVar2")) (= "=") (cast_expression "(undefined1  [16])0x0" (( "(") (type_descriptor "undefined1  [16]" (type_identifier "undefined1") (abstract_array_declarator "[16]" ([ "[") (number_literal "16") (] "]"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "pauVar2[1] = (undefined1  [16])0x0;" (assignment_expression "pauVar2[1] = (undefined1  [16])0x0" (subscript_expression "pauVar2[1]" (identifier "pauVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(undefined1  [16])0x0" (( "(") (type_descriptor "undefined1  [16]" (type_identifier "undefined1") (abstract_array_declarator "[16]" ([ "[") (number_literal "16") (] "]"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar3 = xstrdup(param_1);" (assignment_expression "uVar3 = xstrdup(param_1)" (identifier "uVar3") (= "=") (call_expression "xstrdup(param_1)" (identifier "xstrdup") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "*(undefined8 *)(*pauVar2 + 8) = uVar3;" (assignment_expression "*(undefined8 *)(*pauVar2 + 8) = uVar3" (pointer_expression "*(undefined8 *)(*pauVar2 + 8)" (* "*") (cast_expression "(undefined8 *)(*pauVar2 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*pauVar2 + 8)" (( "(") (binary_expression "*pauVar2 + 8" (pointer_expression "*pauVar2" (* "*") (identifier "pauVar2")) (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "pauVar4 = pauVar2;" (assignment_expression "pauVar4 = pauVar2" (identifier "pauVar4") (= "=") (identifier "pauVar2")) (; ";")) (expression_statement "*(undefined1 (**) [16])*pauVar2 = DAT_00119610;" (assignment_expression "*(undefined1 (**) [16])*pauVar2 = DAT_00119610" (pointer_expression "*(undefined1 (**) [16])*pauVar2" (* "*") (cast_expression "(undefined1 (**) [16])*pauVar2" (( "(") (type_descriptor "undefined1 (**) [16]" (type_identifier "undefined1") (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" (( "(") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (pointer_expression "*pauVar2" (* "*") (identifier "pauVar2")))) (= "=") (identifier "DAT_00119610")) (; ";")) (expression_statement "DAT_00119610 = pauVar4;" (assignment_expression "DAT_00119610 = pauVar4" (identifier "DAT_00119610") (= "=") (identifier "pauVar4")) (; ";")) (return_statement "return pauVar2;" (return "return") (identifier "pauVar2") (; ";")) (} "}")))

type_1 * function_1(char *path)

{
  type_1 *pSVar1;
  int var_3;
  type_1 *pSVar3;
  char *pcVar4;
  type_2 *var_4;
  
  var_4 = var_1;
  if (var_1 != (type_1 *)0x0) {
    do {
      var_3 = var_2(path,var_4->name);
      if (var_3 == 0) {
        return var_4;
      }
      var_4 = var_4->next;
    } while (var_4 != (type_2 *)0x0);
  }
  pSVar3 = (type_1 *)var_5(0x28);
  pSVar3->line = (void **)0x0;
  pSVar3->next = (type_2 *)0x0;
  pSVar3->name = (char *)0x0;
  pSVar3->ncalls = 0;
  pSVar3->num_lines = 0;
  pSVar3->nalloced = 0;
  pcVar4 = (char *)var_6(path);
  pSVar3->name = pcVar4;
  pSVar1 = pSVar3;
  pSVar3->next = var_1;
  var_1 = pSVar1;
  return pSVar3;
}


(translation_unit (function_definition type: (type_identifier) (ERROR (array_declarator declarator: (parenthesized_declarator (pointer_declarator declarator: (MISSING identifier))) size: (number_literal))) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (subscript_expression argument: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (subscript_expression argument: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator declarator: (abstract_parenthesized_declarator (abstract_pointer_declarator)) size: (number_literal))) value: (number_literal)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator declarator: (abstract_parenthesized_declarator (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) size: (number_literal))) value: (pointer_expression argument: (identifier))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator declarator: (abstract_parenthesized_declarator (abstract_pointer_declarator)) size: (number_literal))) value: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator declarator: (abstract_parenthesized_declarator (abstract_pointer_declarator)) size: (number_literal))) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator size: (number_literal))) value: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator size: (number_literal))) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator declarator: (abstract_parenthesized_declarator (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) size: (number_literal))) value: (pointer_expression argument: (identifier)))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (return_statement (identifier)))))

undefined1 (*) [16] MASKED(undefined8 param_1)

{
  int iVar1;
  undefined1 (*pauVar2) [16];
  undefined8 uVar3;
  undefined1 (*pauVar4) [16];
  
  pauVar4 = DAT_00119610;
  if (DAT_00119610 != (undefined1 (*) [16])0x0) {
    do {
      iVar1 = filename_cmp(param_1,*(undefined8 *)(*pauVar4 + 8));
      if (iVar1 == 0) {
        return pauVar4;
      }
      pauVar4 = *(undefined1 (**) [16])*pauVar4;
    } while (pauVar4 != (undefined1 (*) [16])0x0);
  }
  pauVar2 = (undefined1 (*) [16])xmalloc(0x28);
  *(undefined8 *)pauVar2[2] = 0;
  *pauVar2 = (undefined1  [16])0x0;
  pauVar2[1] = (undefined1  [16])0x0;
  uVar3 = xstrdup(param_1);
  *(undefined8 *)(*pauVar2 + 8) = uVar3;
  pauVar4 = pauVar2;
  *(undefined1 (**) [16])*pauVar2 = DAT_00119610;
  DAT_00119610 = pauVar4;
  return pauVar2;
}

