
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

char * __regparm3 buffer_line(file_info_type *file,char *line,uint size)

{
  file_info_type *pfVar1;
  long lVar2;
  int iVar3;
  int __c;
  uint uVar4;
  char *pcVar5;
  char *pcVar6;
  
  pfVar1 = last_open_file_info;
  if ((last_open_file_info == (file_info_type *)0x0) || (last_open_file_info != file)) {
    if (last_open_file != (FILE *)0x0) {
      lVar2 = ftell((FILE *)last_open_file);
      pfVar1->pos = lVar2;
      fclose((FILE *)last_open_file);
    }
    last_open_file_info = file;
    last_open_file = (FILE *)fopen64(file->filename,"r");
    if ((FILE *)last_open_file == (FILE *)0x0) {
      file->at_end = 1;
      return "";
    }
    if (file->pos != 0) {
      fseek((FILE *)last_open_file,file->pos,0);
    }
  }
  iVar3 = fgetc((FILE *)last_open_file);
  pcVar5 = line;
  if ((iVar3 == 10) || (iVar3 == -1)) {
    uVar4 = 0;
LAB_00025b62:
    if (((iVar3 != 0xd) && (iVar3 != 10)) ||
       (((__c = fgetc((FILE *)last_open_file), __c == 10 || (iVar3 != 0xd)) &&
        ((__c == 0xd || (iVar3 != 10)))))) {
      pcVar6 = pcVar5;
      if ((iVar3 == -1) && (file->at_end = 1, uVar4 + 2 < size - 1)) {
        pcVar5[2] = '.';
        pcVar6 = pcVar5 + 3;
        pcVar5[0] = '.';
        pcVar5[1] = '.';
      }
      goto LAB_00025b24;
    }
  }
  else {
    if (iVar3 != 0xd) {
      uVar4 = 0;
      do {
        if (uVar4 < size - 1) {
          *pcVar5 = (char)iVar3;
          pcVar5 = pcVar5 + 1;
        }
        uVar4 = uVar4 + 1;
        iVar3 = fgetc((FILE *)last_open_file);
        if ((iVar3 == -1) || (iVar3 == 10)) goto LAB_00025b62;
      } while (iVar3 != 0xd);
    }
    __c = fgetc((FILE *)last_open_file);
    pcVar6 = pcVar5;
    if (__c == 10) goto LAB_00025b24;
  }
  ungetc(__c,(FILE *)last_open_file);
  pcVar6 = pcVar5;
LAB_00025b24:
  file->linenum = file->linenum + 1;
  *pcVar6 = '\0';
  return line;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined2 * __regparm3 FUN_00025a10(int param_1,undefined2 *param_2,int param_3)

{
  long lVar1;
  int iVar2;
  int __c;
  uint uVar3;
  undefined2 *puVar4;
  undefined2 *puVar5;
  
  iVar2 = DAT_000729b0;
  if ((DAT_000729b0 == 0) || (DAT_000729b0 != param_1)) {
    if (DAT_000729ac != (FILE *)0x0) {
      lVar1 = ftell(DAT_000729ac);
      *(long *)(iVar2 + 8) = lVar1;
      fclose(DAT_000729ac);
    }
    DAT_000729b0 = param_1;
    DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r");
    if (DAT_000729ac == (FILE *)0x0) {
      *(undefined4 *)(param_1 + 0x10) = 1;
      return (undefined2 *)&DAT_0004cb45;
    }
    if (*(int *)(param_1 + 8) != 0) {
      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);
    }
  }
  iVar2 = fgetc(DAT_000729ac);
  puVar4 = param_2;
  if ((iVar2 == 10) || (iVar2 == -1)) {
    uVar3 = 0;
LAB_00025b62:
    if (((iVar2 != 0xd) && (iVar2 != 10)) ||
       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))
        ))) {
      puVar5 = puVar4;
      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {
        *(undefined1 *)(puVar4 + 1) = 0x2e;
        puVar5 = (undefined2 *)((int)puVar4 + 3);
        *puVar4 = 0x2e2e;
      }
      goto LAB_00025b24;
    }
  }
  else {
    if (iVar2 != 0xd) {
      uVar3 = 0;
      do {
        if (uVar3 < param_3 - 1U) {
          *(char *)puVar4 = (char)iVar2;
          puVar4 = (undefined2 *)((int)puVar4 + 1);
        }
        uVar3 = uVar3 + 1;
        iVar2 = fgetc(DAT_000729ac);
        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;
      } while (iVar2 != 0xd);
    }
    __c = fgetc(DAT_000729ac);
    puVar5 = puVar4;
    if (__c == 10) goto LAB_00025b24;
  }
  ungetc(__c,DAT_000729ac);
  puVar5 = puVar4;
LAB_00025b24:
  *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
  *(undefined1 *)puVar5 = 0;
  return param_2;
}


PUSH EBP
MOV EBP,EAX
PUSH EDI
MOV EDI,ECX
PUSH ESI
PUSH EBX
CALL 0x000160b0
ADD EBX,0x445e3
SUB ESP,0x1c
MOV dword ptr [ESP],EAX
MOV dword ptr [ESP + 0x4],EDX
MOV ESI,dword ptr [EBX + 0x89b0]
MOV EAX,dword ptr [EBX + 0x89ac]
TEST ESI,ESI
JZ 0x00025a41
CMP ESI,EBP
JZ 0x00025a9a
TEST EAX,EAX
JZ 0x00025a60
SUB ESP,0xc
PUSH EAX
CALL 0x000144f0
MOV dword ptr [ESI + 0x8],EAX
POP EDX
PUSH dword ptr [EBX + 0x89ac]
CALL 0x00014140
ADD ESP,0x10
MOV ECX,dword ptr [ESP]
LEA EAX,[EBX + 0xfffe73d3]
SUB ESP,0x8
PUSH EAX
PUSH dword ptr [ECX + 0x4]
MOV dword ptr [EBX + 0x89b0],ECX
CALL 0x000142c0
ADD ESP,0x10
MOV dword ptr [EBX + 0x89ac],EAX
TEST EAX,EAX
JZ 0x00025bb0
MOV EDX,dword ptr [ESP]
MOV EDX,dword ptr [EDX + 0x8]
TEST EDX,EDX
JNZ 0x00025b40
SUB ESP,0xc
SUB EDI,0x1
PUSH EAX
CALL 0x00014560
ADD ESP,0x10
MOV ESI,dword ptr [ESP + 0x4]
MOV EDX,EAX
CMP EAX,0xa
JZ 0x00025bc8
CMP EAX,-0x1
JZ 0x00025bc8
CMP EAX,0xd
JZ 0x00025afc
XOR EBP,EBP
LEA ESI,[ESI]
NOP
CMP EDI,EBP
JBE 0x00025ad9
MOV byte ptr [ESI],AL
ADD ESI,0x1
SUB ESP,0xc
PUSH dword ptr [EBX + 0x89ac]
ADD EBP,0x1
CALL 0x00014560
ADD ESP,0x10
CMP EAX,-0x1
JZ 0x00025b60
CMP EAX,0xa
JZ 0x00025b60
CMP EAX,0xd
JNZ 0x00025ad0
SUB ESP,0xc
PUSH dword ptr [EBX + 0x89ac]
CALL 0x00014560
ADD ESP,0x10
CMP EAX,0xa
JZ 0x00025b24
SUB ESP,0x8
PUSH dword ptr [EBX + 0x89ac]
PUSH EAX
CALL 0x00014510
ADD ESP,0x10
MOV EAX,dword ptr [ESP]
ADD dword ptr [EAX + 0xc],0x1
MOV EAX,dword ptr [ESP + 0x4]
MOV byte ptr [ESI],0x0
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x4
PUSH 0x0
PUSH EDX
PUSH EAX
CALL 0x00014280
MOV EAX,dword ptr [EBX + 0x89ac]
ADD ESP,0x10
JMP 0x00025a9a
MOV EDX,EAX
CMP EDX,0xd
SETZ byte ptr [ESP + 0xe]
MOVZX EAX,byte ptr [ESP + 0xe]
CMP EDX,0xa
SETZ CL
TEST AL,AL
JNZ 0x00025bcc
TEST CL,CL
JNZ 0x00025bcc
CMP EDX,-0x1
JNZ 0x00025b24
MOV EAX,dword ptr [ESP]
LEA ECX,[EBP + 0x2]
MOV dword ptr [EAX + 0x10],0x1
CMP EDI,ECX
JBE 0x00025b24
MOV EAX,0x2e2e
MOV byte ptr [ESI + 0x2],0x2e
ADD ESI,0x3
MOV word ptr [ESI + -0x3],AX
JMP 0x00025b24
MOV EAX,dword ptr [ESP]
MOV dword ptr [EAX + 0x10],0x1
ADD ESP,0x1c
LEA EAX,[EBX + 0xfffe2b45]
POP EBX
POP ESI
POP EDI
POP EBP
RET
XOR EBP,EBP
JMP 0x00025b62
MOV byte ptr [ESP + 0xf],CL
SUB ESP,0xc
MOV dword ptr [ESP + 0x14],EDX
PUSH dword ptr [EBX + 0x89ac]
CALL 0x00014560
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
MOVZX ECX,byte ptr [ESP + 0xf]
CMP EAX,0xa
JZ 0x00025bfe
CMP byte ptr [ESP + 0xe],0x0
JNZ 0x00025b12
CMP EAX,0xd
JZ 0x00025b7d
TEST CL,CL
JNZ 0x00025b12
JMP 0x00025b7d
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined2 * __regparm3 FUN_00025a10(int param_1,undefined2 *param_2,int param_3)\n\n{\n  long lVar1;\n  int iVar2;\n  int __c;\n  uint uVar3;\n  undefined2 *puVar4;\n  undefined2 *puVar5;\n  \n  iVar2 = DAT_000729b0;\n  if ((DAT_000729b0 == 0) || (DAT_000729b0 != param_1)) {\n    if (DAT_000729ac != (FILE *)0x0) {\n      lVar1 = ftell(DAT_000729ac);\n      *(long *)(iVar2 + 8) = lVar1;\n      fclose(DAT_000729ac);\n    }\n    DAT_000729b0 = param_1;\n    DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r");\n    if (DAT_000729ac == (FILE *)0x0) {\n      *(undefined4 *)(param_1 + 0x10) = 1;\n      return (undefined2 *)&DAT_0004cb45;\n    }\n    if (*(int *)(param_1 + 8) != 0) {\n      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);\n    }\n  }\n  iVar2 = fgetc(DAT_000729ac);\n  puVar4 = param_2;\n  if ((iVar2 == 10) || (iVar2 == -1)) {\n    uVar3 = 0;\nLAB_00025b62:\n    if (((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))) {\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }\n  }\n  else {\n    if (iVar2 != 0xd) {\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }\n    __c = fgetc(DAT_000729ac);\n    puVar5 = puVar4;\n    if (__c == 10) goto LAB_00025b24;\n  }\n  ungetc(__c,DAT_000729ac);\n  puVar5 = puVar4;\nLAB_00025b24:\n  *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n  *(undefined1 *)puVar5 = 0;\n  return param_2;\n}\n\n" comment (ERROR "undefined2 * __regparm3 FUN_00025a10(int param_1,undefined2 *param_2,int param_3)" (binary_expression "undefined2 * __regparm3 FUN_00025a10(int param_1,undefined2 *param_2,int param_3)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_00025a10(int param_1,undefined2 *param_2,int param_3)" identifier (argument_list "(int param_1,undefined2 *param_2,int param_3)" ( (ERROR "int" identifier) identifier , (binary_expression "undefined2 *param_2" identifier * identifier) , (ERROR "int" identifier) identifier ))))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  int __c;\n  uint uVar3;\n  undefined2 *puVar4;\n  undefined2 *puVar5;\n  \n  iVar2 = DAT_000729b0;\n  if ((DAT_000729b0 == 0) || (DAT_000729b0 != param_1)) {\n    if (DAT_000729ac != (FILE *)0x0) {\n      lVar1 = ftell(DAT_000729ac);\n      *(long *)(iVar2 + 8) = lVar1;\n      fclose(DAT_000729ac);\n    }\n    DAT_000729b0 = param_1;\n    DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r");\n    if (DAT_000729ac == (FILE *)0x0) {\n      *(undefined4 *)(param_1 + 0x10) = 1;\n      return (undefined2 *)&DAT_0004cb45;\n    }\n    if (*(int *)(param_1 + 8) != 0) {\n      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);\n    }\n  }\n  iVar2 = fgetc(DAT_000729ac);\n  puVar4 = param_2;\n  if ((iVar2 == 10) || (iVar2 == -1)) {\n    uVar3 = 0;\nLAB_00025b62:\n    if (((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))) {\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }\n  }\n  else {\n    if (iVar2 != 0xd) {\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }\n    __c = fgetc(DAT_000729ac);\n    puVar5 = puVar4;\n    if (__c == 10) goto LAB_00025b24;\n  }\n  ungetc(__c,DAT_000729ac);\n  puVar5 = puVar4;\nLAB_00025b24:\n  *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n  *(undefined1 *)puVar5 = 0;\n  return param_2;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int __c;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined2 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined2 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (expression_statement "iVar2 = DAT_000729b0;" (assignment_expression "iVar2 = DAT_000729b0" identifier = identifier) ;) (if_statement "if ((DAT_000729b0 == 0) || (DAT_000729b0 != param_1)) {\n    if (DAT_000729ac != (FILE *)0x0) {\n      lVar1 = ftell(DAT_000729ac);\n      *(long *)(iVar2 + 8) = lVar1;\n      fclose(DAT_000729ac);\n    }\n    DAT_000729b0 = param_1;\n    DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r");\n    if (DAT_000729ac == (FILE *)0x0) {\n      *(undefined4 *)(param_1 + 0x10) = 1;\n      return (undefined2 *)&DAT_0004cb45;\n    }\n    if (*(int *)(param_1 + 8) != 0) {\n      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);\n    }\n  }" if (parenthesized_expression "((DAT_000729b0 == 0) || (DAT_000729b0 != param_1))" ( (binary_expression "(DAT_000729b0 == 0) || (DAT_000729b0 != param_1)" (parenthesized_expression "(DAT_000729b0 == 0)" ( (binary_expression "DAT_000729b0 == 0" identifier == number_literal) )) || (parenthesized_expression "(DAT_000729b0 != param_1)" ( (binary_expression "DAT_000729b0 != param_1" identifier != identifier) ))) )) (compound_statement "{\n    if (DAT_000729ac != (FILE *)0x0) {\n      lVar1 = ftell(DAT_000729ac);\n      *(long *)(iVar2 + 8) = lVar1;\n      fclose(DAT_000729ac);\n    }\n    DAT_000729b0 = param_1;\n    DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r");\n    if (DAT_000729ac == (FILE *)0x0) {\n      *(undefined4 *)(param_1 + 0x10) = 1;\n      return (undefined2 *)&DAT_0004cb45;\n    }\n    if (*(int *)(param_1 + 8) != 0) {\n      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);\n    }\n  }" { (if_statement "if (DAT_000729ac != (FILE *)0x0) {\n      lVar1 = ftell(DAT_000729ac);\n      *(long *)(iVar2 + 8) = lVar1;\n      fclose(DAT_000729ac);\n    }" if (parenthesized_expression "(DAT_000729ac != (FILE *)0x0)" ( (binary_expression "DAT_000729ac != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      lVar1 = ftell(DAT_000729ac);\n      *(long *)(iVar2 + 8) = lVar1;\n      fclose(DAT_000729ac);\n    }" { (expression_statement "lVar1 = ftell(DAT_000729ac);" (assignment_expression "lVar1 = ftell(DAT_000729ac)" identifier = (call_expression "ftell(DAT_000729ac)" identifier (argument_list "(DAT_000729ac)" ( identifier )))) ;) (expression_statement "*(long *)(iVar2 + 8) = lVar1;" (assignment_expression "*(long *)(iVar2 + 8) = lVar1" (pointer_expression "*(long *)(iVar2 + 8)" * (cast_expression "(long *)(iVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "fclose(DAT_000729ac);" (call_expression "fclose(DAT_000729ac)" identifier (argument_list "(DAT_000729ac)" ( identifier ))) ;) })) (expression_statement "DAT_000729b0 = param_1;" (assignment_expression "DAT_000729b0 = param_1" identifier = identifier) ;) (expression_statement "DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r");" (assignment_expression "DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r")" identifier = (call_expression "fopen64(*(char **)(param_1 + 4),"r")" identifier (argument_list "(*(char **)(param_1 + 4),"r")" ( (pointer_expression "*(char **)(param_1 + 4)" * (cast_expression "(char **)(param_1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , (string_literal ""r"" " string_content ") )))) ;) (if_statement "if (DAT_000729ac == (FILE *)0x0) {\n      *(undefined4 *)(param_1 + 0x10) = 1;\n      return (undefined2 *)&DAT_0004cb45;\n    }" if (parenthesized_expression "(DAT_000729ac == (FILE *)0x0)" ( (binary_expression "DAT_000729ac == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *(undefined4 *)(param_1 + 0x10) = 1;\n      return (undefined2 *)&DAT_0004cb45;\n    }" { (expression_statement "*(undefined4 *)(param_1 + 0x10) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = number_literal) ;) (return_statement "return (undefined2 *)&DAT_0004cb45;" return (cast_expression "(undefined2 *)&DAT_0004cb45" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_0004cb45" & identifier)) ;) })) (if_statement "if (*(int *)(param_1 + 8) != 0) {\n      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);\n    }" if (parenthesized_expression "(*(int *)(param_1 + 8) != 0)" ( (binary_expression "*(int *)(param_1 + 8) != 0" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);\n    }" { (expression_statement "fseek(DAT_000729ac,*(int *)(param_1 + 8),0);" (call_expression "fseek(DAT_000729ac,*(int *)(param_1 + 8),0)" identifier (argument_list "(DAT_000729ac,*(int *)(param_1 + 8),0)" ( identifier , (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , number_literal ))) ;) })) })) (expression_statement "iVar2 = fgetc(DAT_000729ac);" (assignment_expression "iVar2 = fgetc(DAT_000729ac)" identifier = (call_expression "fgetc(DAT_000729ac)" identifier (argument_list "(DAT_000729ac)" ( identifier )))) ;) (expression_statement "puVar4 = param_2;" (assignment_expression "puVar4 = param_2" identifier = identifier) ;) (if_statement "if ((iVar2 == 10) || (iVar2 == -1)) {\n    uVar3 = 0;\nLAB_00025b62:\n    if (((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))) {\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }\n  }\n  else {\n    if (iVar2 != 0xd) {\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }\n    __c = fgetc(DAT_000729ac);\n    puVar5 = puVar4;\n    if (__c == 10) goto LAB_00025b24;\n  }" if (parenthesized_expression "((iVar2 == 10) || (iVar2 == -1))" ( (binary_expression "(iVar2 == 10) || (iVar2 == -1)" (parenthesized_expression "(iVar2 == 10)" ( (binary_expression "iVar2 == 10" identifier == number_literal) )) || (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) ))) )) (compound_statement "{\n    uVar3 = 0;\nLAB_00025b62:\n    if (((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))) {\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }\n  }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00025b62:\n    if (((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))) {\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }" statement_identifier : (if_statement "if (((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))) {\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }" if (parenthesized_expression "(((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        )))" ( (binary_expression "((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))" (parenthesized_expression "((iVar2 != 0xd) && (iVar2 != 10))" ( (binary_expression "(iVar2 != 0xd) && (iVar2 != 10)" (parenthesized_expression "(iVar2 != 0xd)" ( (binary_expression "iVar2 != 0xd" identifier != number_literal) )) && (parenthesized_expression "(iVar2 != 10)" ( (binary_expression "iVar2 != 10" identifier != number_literal) ))) )) || (parenthesized_expression "(((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))" ( (parenthesized_expression "((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        )" ( (binary_expression "(__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))" (parenthesized_expression "(__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd))" ( (comma_expression "__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)" (assignment_expression "__c = fgetc(DAT_000729ac)" identifier = (call_expression "fgetc(DAT_000729ac)" identifier (argument_list "(DAT_000729ac)" ( identifier )))) , (binary_expression "__c == 10 || (iVar2 != 0xd)" (binary_expression "__c == 10" identifier == number_literal) || (parenthesized_expression "(iVar2 != 0xd)" ( (binary_expression "iVar2 != 0xd" identifier != number_literal) )))) )) && (parenthesized_expression "((__c == 0xd || (iVar2 != 10)))" ( (parenthesized_expression "(__c == 0xd || (iVar2 != 10))" ( (binary_expression "__c == 0xd || (iVar2 != 10)" (binary_expression "__c == 0xd" identifier == number_literal) || (parenthesized_expression "(iVar2 != 10)" ( (binary_expression "iVar2 != 10" identifier != number_literal) ))) )) ))) )) ))) )) (compound_statement "{\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }" { (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) (if_statement "if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }" if (parenthesized_expression "((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U))" ( (binary_expression "(iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)" (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) && (parenthesized_expression "(*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)" ( (comma_expression "*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = number_literal) , (binary_expression "uVar3 + 2 < param_3 - 1U" (binary_expression "uVar3 + 2" identifier + number_literal) < (binary_expression "param_3 - 1U" identifier - number_literal))) ))) )) (compound_statement "{\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }" { (expression_statement "*(undefined1 *)(puVar4 + 1) = 0x2e;" (assignment_expression "*(undefined1 *)(puVar4 + 1) = 0x2e" (pointer_expression "*(undefined1 *)(puVar4 + 1)" * (cast_expression "(undefined1 *)(puVar4 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar5 = (undefined2 *)((int)puVar4 + 3);" (assignment_expression "puVar5 = (undefined2 *)((int)puVar4 + 3)" identifier = (cast_expression "(undefined2 *)((int)puVar4 + 3)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 3)" ( (binary_expression "(int)puVar4 + 3" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar4 = 0x2e2e;" (assignment_expression "*puVar4 = 0x2e2e" (pointer_expression "*puVar4" * identifier) = number_literal) ;) })) (goto_statement "goto LAB_00025b24;" goto statement_identifier ;) }))) }) (else_clause "else {\n    if (iVar2 != 0xd) {\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }\n    __c = fgetc(DAT_000729ac);\n    puVar5 = puVar4;\n    if (__c == 10) goto LAB_00025b24;\n  }" else (compound_statement "{\n    if (iVar2 != 0xd) {\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }\n    __c = fgetc(DAT_000729ac);\n    puVar5 = puVar4;\n    if (__c == 10) goto LAB_00025b24;\n  }" { (if_statement "if (iVar2 != 0xd) {\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }" if (parenthesized_expression "(iVar2 != 0xd)" ( (binary_expression "iVar2 != 0xd" identifier != number_literal) )) (compound_statement "{\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);" do (compound_statement "{\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      }" { (if_statement "if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }" if (parenthesized_expression "(uVar3 < param_3 - 1U)" ( (binary_expression "uVar3 < param_3 - 1U" identifier < (binary_expression "param_3 - 1U" identifier - number_literal)) )) (compound_statement "{\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }" { (expression_statement "*(char *)puVar4 = (char)iVar2;" (assignment_expression "*(char *)puVar4 = (char)iVar2" (pointer_expression "*(char *)puVar4" * (cast_expression "(char *)puVar4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(char)iVar2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar4 = (undefined2 *)((int)puVar4 + 1);" (assignment_expression "puVar4 = (undefined2 *)((int)puVar4 + 1)" identifier = (cast_expression "(undefined2 *)((int)puVar4 + 1)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 1)" ( (binary_expression "(int)puVar4 + 1" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "iVar2 = fgetc(DAT_000729ac);" (assignment_expression "iVar2 = fgetc(DAT_000729ac)" identifier = (call_expression "fgetc(DAT_000729ac)" identifier (argument_list "(DAT_000729ac)" ( identifier )))) ;) (if_statement "if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;" if (parenthesized_expression "((iVar2 == -1) || (iVar2 == 10))" ( (binary_expression "(iVar2 == -1) || (iVar2 == 10)" (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) || (parenthesized_expression "(iVar2 == 10)" ( (binary_expression "iVar2 == 10" identifier == number_literal) ))) )) (goto_statement "goto LAB_00025b62;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar2 != 0xd)" ( (binary_expression "iVar2 != 0xd" identifier != number_literal) )) ;) })) (expression_statement "__c = fgetc(DAT_000729ac);" (assignment_expression "__c = fgetc(DAT_000729ac)" identifier = (call_expression "fgetc(DAT_000729ac)" identifier (argument_list "(DAT_000729ac)" ( identifier )))) ;) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) (if_statement "if (__c == 10) goto LAB_00025b24;" if (parenthesized_expression "(__c == 10)" ( (binary_expression "__c == 10" identifier == number_literal) )) (goto_statement "goto LAB_00025b24;" goto statement_identifier ;)) }))) (expression_statement "ungetc(__c,DAT_000729ac);" (call_expression "ungetc(__c,DAT_000729ac)" identifier (argument_list "(__c,DAT_000729ac)" ( identifier , identifier ))) ;) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) (labeled_statement "LAB_00025b24:\n  *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;" statement_identifier : (expression_statement "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;" (assignment_expression "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0xc) + 1" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal)) ;)) (expression_statement "*(undefined1 *)puVar5 = 0;" (assignment_expression "*(undefined1 *)puVar5 = 0" (pointer_expression "*(undefined1 *)puVar5" * (cast_expression "(undefined1 *)puVar5" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (return_statement "return param_2;" return identifier ;) }))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * __regparm3 buffer_line(file_info_type *file,char *line,uint size)\n\n{\n  file_info_type *pfVar1;\n  long lVar2;\n  int iVar3;\n  int __c;\n  uint uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  \n  pfVar1 = last_open_file_info;\n  if ((last_open_file_info == (file_info_type *)0x0) || (last_open_file_info != file)) {\n    if (last_open_file != (FILE *)0x0) {\n      lVar2 = ftell((FILE *)last_open_file);\n      pfVar1->pos = lVar2;\n      fclose((FILE *)last_open_file);\n    }\n    last_open_file_info = file;\n    last_open_file = (FILE *)fopen64(file->filename,"r");\n    if ((FILE *)last_open_file == (FILE *)0x0) {\n      file->at_end = 1;\n      return "";\n    }\n    if (file->pos != 0) {\n      fseek((FILE *)last_open_file,file->pos,0);\n    }\n  }\n  iVar3 = fgetc((FILE *)last_open_file);\n  pcVar5 = line;\n  if ((iVar3 == 10) || (iVar3 == -1)) {\n    uVar4 = 0;\nLAB_00025b62:\n    if (((iVar3 != 0xd) && (iVar3 != 10)) ||\n       (((__c = fgetc((FILE *)last_open_file), __c == 10 || (iVar3 != 0xd)) &&\n        ((__c == 0xd || (iVar3 != 10)))))) {\n      pcVar6 = pcVar5;\n      if ((iVar3 == -1) && (file->at_end = 1, uVar4 + 2 < size - 1)) {\n        pcVar5[2] = '.';\n        pcVar6 = pcVar5 + 3;\n        pcVar5[0] = '.';\n        pcVar5[1] = '.';\n      }\n      goto LAB_00025b24;\n    }\n  }\n  else {\n    if (iVar3 != 0xd) {\n      uVar4 = 0;\n      do {\n        if (uVar4 < size - 1) {\n          *pcVar5 = (char)iVar3;\n          pcVar5 = pcVar5 + 1;\n        }\n        uVar4 = uVar4 + 1;\n        iVar3 = fgetc((FILE *)last_open_file);\n        if ((iVar3 == -1) || (iVar3 == 10)) goto LAB_00025b62;\n      } while (iVar3 != 0xd);\n    }\n    __c = fgetc((FILE *)last_open_file);\n    pcVar6 = pcVar5;\n    if (__c == 10) goto LAB_00025b24;\n  }\n  ungetc(__c,(FILE *)last_open_file);\n  pcVar6 = pcVar5;\nLAB_00025b24:\n  file->linenum = file->linenum + 1;\n  *pcVar6 = '\0';\n  return line;\n}\n\n" comment (function_definition "char * __regparm3 buffer_line(file_info_type *file,char *line,uint size)\n\n{\n  file_info_type *pfVar1;\n  long lVar2;\n  int iVar3;\n  int __c;\n  uint uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  \n  pfVar1 = last_open_file_info;\n  if ((last_open_file_info == (file_info_type *)0x0) || (last_open_file_info != file)) {\n    if (last_open_file != (FILE *)0x0) {\n      lVar2 = ftell((FILE *)last_open_file);\n      pfVar1->pos = lVar2;\n      fclose((FILE *)last_open_file);\n    }\n    last_open_file_info = file;\n    last_open_file = (FILE *)fopen64(file->filename,"r");\n    if ((FILE *)last_open_file == (FILE *)0x0) {\n      file->at_end = 1;\n      return "";\n    }\n    if (file->pos != 0) {\n      fseek((FILE *)last_open_file,file->pos,0);\n    }\n  }\n  iVar3 = fgetc((FILE *)last_open_file);\n  pcVar5 = line;\n  if ((iVar3 == 10) || (iVar3 == -1)) {\n    uVar4 = 0;\nLAB_00025b62:\n    if (((iVar3 != 0xd) && (iVar3 != 10)) ||\n       (((__c = fgetc((FILE *)last_open_file), __c == 10 || (iVar3 != 0xd)) &&\n        ((__c == 0xd || (iVar3 != 10)))))) {\n      pcVar6 = pcVar5;\n      if ((iVar3 == -1) && (file->at_end = 1, uVar4 + 2 < size - 1)) {\n        pcVar5[2] = '.';\n        pcVar6 = pcVar5 + 3;\n        pcVar5[0] = '.';\n        pcVar5[1] = '.';\n      }\n      goto LAB_00025b24;\n    }\n  }\n  else {\n    if (iVar3 != 0xd) {\n      uVar4 = 0;\n      do {\n        if (uVar4 < size - 1) {\n          *pcVar5 = (char)iVar3;\n          pcVar5 = pcVar5 + 1;\n        }\n        uVar4 = uVar4 + 1;\n        iVar3 = fgetc((FILE *)last_open_file);\n        if ((iVar3 == -1) || (iVar3 == 10)) goto LAB_00025b62;\n      } while (iVar3 != 0xd);\n    }\n    __c = fgetc((FILE *)last_open_file);\n    pcVar6 = pcVar5;\n    if (__c == 10) goto LAB_00025b24;\n  }\n  ungetc(__c,(FILE *)last_open_file);\n  pcVar6 = pcVar5;\nLAB_00025b24:\n  file->linenum = file->linenum + 1;\n  *pcVar6 = '\0';\n  return line;\n}" primitive_type (pointer_declarator "* __regparm3 buffer_line(file_info_type *file,char *line,uint size)" * (ERROR "__regparm3" identifier) (function_declarator "buffer_line(file_info_type *file,char *line,uint size)" identifier (parameter_list "(file_info_type *file,char *line,uint size)" ( (parameter_declaration "file_info_type *file" type_identifier (pointer_declarator "*file" * identifier)) , (parameter_declaration "char *line" primitive_type (pointer_declarator "*line" * identifier)) , (parameter_declaration "uint size" type_identifier identifier) )))) (compound_statement "{\n  file_info_type *pfVar1;\n  long lVar2;\n  int iVar3;\n  int __c;\n  uint uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  \n  pfVar1 = last_open_file_info;\n  if ((last_open_file_info == (file_info_type *)0x0) || (last_open_file_info != file)) {\n    if (last_open_file != (FILE *)0x0) {\n      lVar2 = ftell((FILE *)last_open_file);\n      pfVar1->pos = lVar2;\n      fclose((FILE *)last_open_file);\n    }\n    last_open_file_info = file;\n    last_open_file = (FILE *)fopen64(file->filename,"r");\n    if ((FILE *)last_open_file == (FILE *)0x0) {\n      file->at_end = 1;\n      return "";\n    }\n    if (file->pos != 0) {\n      fseek((FILE *)last_open_file,file->pos,0);\n    }\n  }\n  iVar3 = fgetc((FILE *)last_open_file);\n  pcVar5 = line;\n  if ((iVar3 == 10) || (iVar3 == -1)) {\n    uVar4 = 0;\nLAB_00025b62:\n    if (((iVar3 != 0xd) && (iVar3 != 10)) ||\n       (((__c = fgetc((FILE *)last_open_file), __c == 10 || (iVar3 != 0xd)) &&\n        ((__c == 0xd || (iVar3 != 10)))))) {\n      pcVar6 = pcVar5;\n      if ((iVar3 == -1) && (file->at_end = 1, uVar4 + 2 < size - 1)) {\n        pcVar5[2] = '.';\n        pcVar6 = pcVar5 + 3;\n        pcVar5[0] = '.';\n        pcVar5[1] = '.';\n      }\n      goto LAB_00025b24;\n    }\n  }\n  else {\n    if (iVar3 != 0xd) {\n      uVar4 = 0;\n      do {\n        if (uVar4 < size - 1) {\n          *pcVar5 = (char)iVar3;\n          pcVar5 = pcVar5 + 1;\n        }\n        uVar4 = uVar4 + 1;\n        iVar3 = fgetc((FILE *)last_open_file);\n        if ((iVar3 == -1) || (iVar3 == 10)) goto LAB_00025b62;\n      } while (iVar3 != 0xd);\n    }\n    __c = fgetc((FILE *)last_open_file);\n    pcVar6 = pcVar5;\n    if (__c == 10) goto LAB_00025b24;\n  }\n  ungetc(__c,(FILE *)last_open_file);\n  pcVar6 = pcVar5;\nLAB_00025b24:\n  file->linenum = file->linenum + 1;\n  *pcVar6 = '\0';\n  return line;\n}" { (declaration "file_info_type *pfVar1;" type_identifier (pointer_declarator "*pfVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int __c;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (expression_statement "pfVar1 = last_open_file_info;" (assignment_expression "pfVar1 = last_open_file_info" identifier = identifier) ;) (if_statement "if ((last_open_file_info == (file_info_type *)0x0) || (last_open_file_info != file)) {\n    if (last_open_file != (FILE *)0x0) {\n      lVar2 = ftell((FILE *)last_open_file);\n      pfVar1->pos = lVar2;\n      fclose((FILE *)last_open_file);\n    }\n    last_open_file_info = file;\n    last_open_file = (FILE *)fopen64(file->filename,"r");\n    if ((FILE *)last_open_file == (FILE *)0x0) {\n      file->at_end = 1;\n      return "";\n    }\n    if (file->pos != 0) {\n      fseek((FILE *)last_open_file,file->pos,0);\n    }\n  }" if (parenthesized_expression "((last_open_file_info == (file_info_type *)0x0) || (last_open_file_info != file))" ( (binary_expression "(last_open_file_info == (file_info_type *)0x0) || (last_open_file_info != file)" (parenthesized_expression "(last_open_file_info == (file_info_type *)0x0)" ( (binary_expression "last_open_file_info == (file_info_type *)0x0" identifier == (cast_expression "(file_info_type *)0x0" ( (type_descriptor "file_info_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(last_open_file_info != file)" ( (binary_expression "last_open_file_info != file" identifier != identifier) ))) )) (compound_statement "{\n    if (last_open_file != (FILE *)0x0) {\n      lVar2 = ftell((FILE *)last_open_file);\n      pfVar1->pos = lVar2;\n      fclose((FILE *)last_open_file);\n    }\n    last_open_file_info = file;\n    last_open_file = (FILE *)fopen64(file->filename,"r");\n    if ((FILE *)last_open_file == (FILE *)0x0) {\n      file->at_end = 1;\n      return "";\n    }\n    if (file->pos != 0) {\n      fseek((FILE *)last_open_file,file->pos,0);\n    }\n  }" { (if_statement "if (last_open_file != (FILE *)0x0) {\n      lVar2 = ftell((FILE *)last_open_file);\n      pfVar1->pos = lVar2;\n      fclose((FILE *)last_open_file);\n    }" if (parenthesized_expression "(last_open_file != (FILE *)0x0)" ( (binary_expression "last_open_file != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      lVar2 = ftell((FILE *)last_open_file);\n      pfVar1->pos = lVar2;\n      fclose((FILE *)last_open_file);\n    }" { (expression_statement "lVar2 = ftell((FILE *)last_open_file);" (assignment_expression "lVar2 = ftell((FILE *)last_open_file)" identifier = (call_expression "ftell((FILE *)last_open_file)" identifier (argument_list "((FILE *)last_open_file)" ( (cast_expression "(FILE *)last_open_file" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "pfVar1->pos = lVar2;" (assignment_expression "pfVar1->pos = lVar2" (field_expression "pfVar1->pos" identifier -> field_identifier) = identifier) ;) (expression_statement "fclose((FILE *)last_open_file);" (call_expression "fclose((FILE *)last_open_file)" identifier (argument_list "((FILE *)last_open_file)" ( (cast_expression "(FILE *)last_open_file" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) })) (expression_statement "last_open_file_info = file;" (assignment_expression "last_open_file_info = file" identifier = identifier) ;) (expression_statement "last_open_file = (FILE *)fopen64(file->filename,"r");" (assignment_expression "last_open_file = (FILE *)fopen64(file->filename,"r")" identifier = (cast_expression "(FILE *)fopen64(file->filename,"r")" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "fopen64(file->filename,"r")" identifier (argument_list "(file->filename,"r")" ( (field_expression "file->filename" identifier -> field_identifier) , (string_literal ""r"" " string_content ") ))))) ;) (if_statement "if ((FILE *)last_open_file == (FILE *)0x0) {\n      file->at_end = 1;\n      return "";\n    }" if (parenthesized_expression "((FILE *)last_open_file == (FILE *)0x0)" ( (binary_expression "(FILE *)last_open_file == (FILE *)0x0" (cast_expression "(FILE *)last_open_file" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      file->at_end = 1;\n      return "";\n    }" { (expression_statement "file->at_end = 1;" (assignment_expression "file->at_end = 1" (field_expression "file->at_end" identifier -> field_identifier) = number_literal) ;) (return_statement "return "";" return (string_literal """" " ") ;) })) (if_statement "if (file->pos != 0) {\n      fseek((FILE *)last_open_file,file->pos,0);\n    }" if (parenthesized_expression "(file->pos != 0)" ( (binary_expression "file->pos != 0" (field_expression "file->pos" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n      fseek((FILE *)last_open_file,file->pos,0);\n    }" { (expression_statement "fseek((FILE *)last_open_file,file->pos,0);" (call_expression "fseek((FILE *)last_open_file,file->pos,0)" identifier (argument_list "((FILE *)last_open_file,file->pos,0)" ( (cast_expression "(FILE *)last_open_file" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (field_expression "file->pos" identifier -> field_identifier) , number_literal ))) ;) })) })) (expression_statement "iVar3 = fgetc((FILE *)last_open_file);" (assignment_expression "iVar3 = fgetc((FILE *)last_open_file)" identifier = (call_expression "fgetc((FILE *)last_open_file)" identifier (argument_list "((FILE *)last_open_file)" ( (cast_expression "(FILE *)last_open_file" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "pcVar5 = line;" (assignment_expression "pcVar5 = line" identifier = identifier) ;) (if_statement "if ((iVar3 == 10) || (iVar3 == -1)) {\n    uVar4 = 0;\nLAB_00025b62:\n    if (((iVar3 != 0xd) && (iVar3 != 10)) ||\n       (((__c = fgetc((FILE *)last_open_file), __c == 10 || (iVar3 != 0xd)) &&\n        ((__c == 0xd || (iVar3 != 10)))))) {\n      pcVar6 = pcVar5;\n      if ((iVar3 == -1) && (file->at_end = 1, uVar4 + 2 < size - 1)) {\n        pcVar5[2] = '.';\n        pcVar6 = pcVar5 + 3;\n        pcVar5[0] = '.';\n        pcVar5[1] = '.';\n      }\n      goto LAB_00025b24;\n    }\n  }\n  else {\n    if (iVar3 != 0xd) {\n      uVar4 = 0;\n      do {\n        if (uVar4 < size - 1) {\n          *pcVar5 = (char)iVar3;\n          pcVar5 = pcVar5 + 1;\n        }\n        uVar4 = uVar4 + 1;\n        iVar3 = fgetc((FILE *)last_open_file);\n        if ((iVar3 == -1) || (iVar3 == 10)) goto LAB_00025b62;\n      } while (iVar3 != 0xd);\n    }\n    __c = fgetc((FILE *)last_open_file);\n    pcVar6 = pcVar5;\n    if (__c == 10) goto LAB_00025b24;\n  }" if (parenthesized_expression "((iVar3 == 10) || (iVar3 == -1))" ( (binary_expression "(iVar3 == 10) || (iVar3 == -1)" (parenthesized_expression "(iVar3 == 10)" ( (binary_expression "iVar3 == 10" identifier == number_literal) )) || (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) ))) )) (compound_statement "{\n    uVar4 = 0;\nLAB_00025b62:\n    if (((iVar3 != 0xd) && (iVar3 != 10)) ||\n       (((__c = fgetc((FILE *)last_open_file), __c == 10 || (iVar3 != 0xd)) &&\n        ((__c == 0xd || (iVar3 != 10)))))) {\n      pcVar6 = pcVar5;\n      if ((iVar3 == -1) && (file->at_end = 1, uVar4 + 2 < size - 1)) {\n        pcVar5[2] = '.';\n        pcVar6 = pcVar5 + 3;\n        pcVar5[0] = '.';\n        pcVar5[1] = '.';\n      }\n      goto LAB_00025b24;\n    }\n  }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00025b62:\n    if (((iVar3 != 0xd) && (iVar3 != 10)) ||\n       (((__c = fgetc((FILE *)last_open_file), __c == 10 || (iVar3 != 0xd)) &&\n        ((__c == 0xd || (iVar3 != 10)))))) {\n      pcVar6 = pcVar5;\n      if ((iVar3 == -1) && (file->at_end = 1, uVar4 + 2 < size - 1)) {\n        pcVar5[2] = '.';\n        pcVar6 = pcVar5 + 3;\n        pcVar5[0] = '.';\n        pcVar5[1] = '.';\n      }\n      goto LAB_00025b24;\n    }" statement_identifier : (if_statement "if (((iVar3 != 0xd) && (iVar3 != 10)) ||\n       (((__c = fgetc((FILE *)last_open_file), __c == 10 || (iVar3 != 0xd)) &&\n        ((__c == 0xd || (iVar3 != 10)))))) {\n      pcVar6 = pcVar5;\n      if ((iVar3 == -1) && (file->at_end = 1, uVar4 + 2 < size - 1)) {\n        pcVar5[2] = '.';\n        pcVar6 = pcVar5 + 3;\n        pcVar5[0] = '.';\n        pcVar5[1] = '.';\n      }\n      goto LAB_00025b24;\n    }" if (parenthesized_expression "(((iVar3 != 0xd) && (iVar3 != 10)) ||\n       (((__c = fgetc((FILE *)last_open_file), __c == 10 || (iVar3 != 0xd)) &&\n        ((__c == 0xd || (iVar3 != 10))))))" ( (binary_expression "((iVar3 != 0xd) && (iVar3 != 10)) ||\n       (((__c = fgetc((FILE *)last_open_file), __c == 10 || (iVar3 != 0xd)) &&\n        ((__c == 0xd || (iVar3 != 10)))))" (parenthesized_expression "((iVar3 != 0xd) && (iVar3 != 10))" ( (binary_expression "(iVar3 != 0xd) && (iVar3 != 10)" (parenthesized_expression "(iVar3 != 0xd)" ( (binary_expression "iVar3 != 0xd" identifier != number_literal) )) && (parenthesized_expression "(iVar3 != 10)" ( (binary_expression "iVar3 != 10" identifier != number_literal) ))) )) || (parenthesized_expression "(((__c = fgetc((FILE *)last_open_file), __c == 10 || (iVar3 != 0xd)) &&\n        ((__c == 0xd || (iVar3 != 10)))))" ( (parenthesized_expression "((__c = fgetc((FILE *)last_open_file), __c == 10 || (iVar3 != 0xd)) &&\n        ((__c == 0xd || (iVar3 != 10))))" ( (binary_expression "(__c = fgetc((FILE *)last_open_file), __c == 10 || (iVar3 != 0xd)) &&\n        ((__c == 0xd || (iVar3 != 10)))" (parenthesized_expression "(__c = fgetc((FILE *)last_open_file), __c == 10 || (iVar3 != 0xd))" ( (comma_expression "__c = fgetc((FILE *)last_open_file), __c == 10 || (iVar3 != 0xd)" (assignment_expression "__c = fgetc((FILE *)last_open_file)" identifier = (call_expression "fgetc((FILE *)last_open_file)" identifier (argument_list "((FILE *)last_open_file)" ( (cast_expression "(FILE *)last_open_file" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) , (binary_expression "__c == 10 || (iVar3 != 0xd)" (binary_expression "__c == 10" identifier == number_literal) || (parenthesized_expression "(iVar3 != 0xd)" ( (binary_expression "iVar3 != 0xd" identifier != number_literal) )))) )) && (parenthesized_expression "((__c == 0xd || (iVar3 != 10)))" ( (parenthesized_expression "(__c == 0xd || (iVar3 != 10))" ( (binary_expression "__c == 0xd || (iVar3 != 10)" (binary_expression "__c == 0xd" identifier == number_literal) || (parenthesized_expression "(iVar3 != 10)" ( (binary_expression "iVar3 != 10" identifier != number_literal) ))) )) ))) )) ))) )) (compound_statement "{\n      pcVar6 = pcVar5;\n      if ((iVar3 == -1) && (file->at_end = 1, uVar4 + 2 < size - 1)) {\n        pcVar5[2] = '.';\n        pcVar6 = pcVar5 + 3;\n        pcVar5[0] = '.';\n        pcVar5[1] = '.';\n      }\n      goto LAB_00025b24;\n    }" { (expression_statement "pcVar6 = pcVar5;" (assignment_expression "pcVar6 = pcVar5" identifier = identifier) ;) (if_statement "if ((iVar3 == -1) && (file->at_end = 1, uVar4 + 2 < size - 1)) {\n        pcVar5[2] = '.';\n        pcVar6 = pcVar5 + 3;\n        pcVar5[0] = '.';\n        pcVar5[1] = '.';\n      }" if (parenthesized_expression "((iVar3 == -1) && (file->at_end = 1, uVar4 + 2 < size - 1))" ( (binary_expression "(iVar3 == -1) && (file->at_end = 1, uVar4 + 2 < size - 1)" (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) && (parenthesized_expression "(file->at_end = 1, uVar4 + 2 < size - 1)" ( (comma_expression "file->at_end = 1, uVar4 + 2 < size - 1" (assignment_expression "file->at_end = 1" (field_expression "file->at_end" identifier -> field_identifier) = number_literal) , (binary_expression "uVar4 + 2 < size - 1" (binary_expression "uVar4 + 2" identifier + number_literal) < (binary_expression "size - 1" identifier - number_literal))) ))) )) (compound_statement "{\n        pcVar5[2] = '.';\n        pcVar6 = pcVar5 + 3;\n        pcVar5[0] = '.';\n        pcVar5[1] = '.';\n      }" { (expression_statement "pcVar5[2] = '.';" (assignment_expression "pcVar5[2] = '.'" (subscript_expression "pcVar5[2]" identifier [ number_literal ]) = (char_literal "'.'" ' character ')) ;) (expression_statement "pcVar6 = pcVar5 + 3;" (assignment_expression "pcVar6 = pcVar5 + 3" identifier = (binary_expression "pcVar5 + 3" identifier + number_literal)) ;) (expression_statement "pcVar5[0] = '.';" (assignment_expression "pcVar5[0] = '.'" (subscript_expression "pcVar5[0]" identifier [ number_literal ]) = (char_literal "'.'" ' character ')) ;) (expression_statement "pcVar5[1] = '.';" (assignment_expression "pcVar5[1] = '.'" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) = (char_literal "'.'" ' character ')) ;) })) (goto_statement "goto LAB_00025b24;" goto statement_identifier ;) }))) }) (else_clause "else {\n    if (iVar3 != 0xd) {\n      uVar4 = 0;\n      do {\n        if (uVar4 < size - 1) {\n          *pcVar5 = (char)iVar3;\n          pcVar5 = pcVar5 + 1;\n        }\n        uVar4 = uVar4 + 1;\n        iVar3 = fgetc((FILE *)last_open_file);\n        if ((iVar3 == -1) || (iVar3 == 10)) goto LAB_00025b62;\n      } while (iVar3 != 0xd);\n    }\n    __c = fgetc((FILE *)last_open_file);\n    pcVar6 = pcVar5;\n    if (__c == 10) goto LAB_00025b24;\n  }" else (compound_statement "{\n    if (iVar3 != 0xd) {\n      uVar4 = 0;\n      do {\n        if (uVar4 < size - 1) {\n          *pcVar5 = (char)iVar3;\n          pcVar5 = pcVar5 + 1;\n        }\n        uVar4 = uVar4 + 1;\n        iVar3 = fgetc((FILE *)last_open_file);\n        if ((iVar3 == -1) || (iVar3 == 10)) goto LAB_00025b62;\n      } while (iVar3 != 0xd);\n    }\n    __c = fgetc((FILE *)last_open_file);\n    pcVar6 = pcVar5;\n    if (__c == 10) goto LAB_00025b24;\n  }" { (if_statement "if (iVar3 != 0xd) {\n      uVar4 = 0;\n      do {\n        if (uVar4 < size - 1) {\n          *pcVar5 = (char)iVar3;\n          pcVar5 = pcVar5 + 1;\n        }\n        uVar4 = uVar4 + 1;\n        iVar3 = fgetc((FILE *)last_open_file);\n        if ((iVar3 == -1) || (iVar3 == 10)) goto LAB_00025b62;\n      } while (iVar3 != 0xd);\n    }" if (parenthesized_expression "(iVar3 != 0xd)" ( (binary_expression "iVar3 != 0xd" identifier != number_literal) )) (compound_statement "{\n      uVar4 = 0;\n      do {\n        if (uVar4 < size - 1) {\n          *pcVar5 = (char)iVar3;\n          pcVar5 = pcVar5 + 1;\n        }\n        uVar4 = uVar4 + 1;\n        iVar3 = fgetc((FILE *)last_open_file);\n        if ((iVar3 == -1) || (iVar3 == 10)) goto LAB_00025b62;\n      } while (iVar3 != 0xd);\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n        if (uVar4 < size - 1) {\n          *pcVar5 = (char)iVar3;\n          pcVar5 = pcVar5 + 1;\n        }\n        uVar4 = uVar4 + 1;\n        iVar3 = fgetc((FILE *)last_open_file);\n        if ((iVar3 == -1) || (iVar3 == 10)) goto LAB_00025b62;\n      } while (iVar3 != 0xd);" do (compound_statement "{\n        if (uVar4 < size - 1) {\n          *pcVar5 = (char)iVar3;\n          pcVar5 = pcVar5 + 1;\n        }\n        uVar4 = uVar4 + 1;\n        iVar3 = fgetc((FILE *)last_open_file);\n        if ((iVar3 == -1) || (iVar3 == 10)) goto LAB_00025b62;\n      }" { (if_statement "if (uVar4 < size - 1) {\n          *pcVar5 = (char)iVar3;\n          pcVar5 = pcVar5 + 1;\n        }" if (parenthesized_expression "(uVar4 < size - 1)" ( (binary_expression "uVar4 < size - 1" identifier < (binary_expression "size - 1" identifier - number_literal)) )) (compound_statement "{\n          *pcVar5 = (char)iVar3;\n          pcVar5 = pcVar5 + 1;\n        }" { (expression_statement "*pcVar5 = (char)iVar3;" (assignment_expression "*pcVar5 = (char)iVar3" (pointer_expression "*pcVar5" * identifier) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = fgetc((FILE *)last_open_file);" (assignment_expression "iVar3 = fgetc((FILE *)last_open_file)" identifier = (call_expression "fgetc((FILE *)last_open_file)" identifier (argument_list "((FILE *)last_open_file)" ( (cast_expression "(FILE *)last_open_file" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if ((iVar3 == -1) || (iVar3 == 10)) goto LAB_00025b62;" if (parenthesized_expression "((iVar3 == -1) || (iVar3 == 10))" ( (binary_expression "(iVar3 == -1) || (iVar3 == 10)" (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) || (parenthesized_expression "(iVar3 == 10)" ( (binary_expression "iVar3 == 10" identifier == number_literal) ))) )) (goto_statement "goto LAB_00025b62;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar3 != 0xd)" ( (binary_expression "iVar3 != 0xd" identifier != number_literal) )) ;) })) (expression_statement "__c = fgetc((FILE *)last_open_file);" (assignment_expression "__c = fgetc((FILE *)last_open_file)" identifier = (call_expression "fgetc((FILE *)last_open_file)" identifier (argument_list "((FILE *)last_open_file)" ( (cast_expression "(FILE *)last_open_file" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "pcVar6 = pcVar5;" (assignment_expression "pcVar6 = pcVar5" identifier = identifier) ;) (if_statement "if (__c == 10) goto LAB_00025b24;" if (parenthesized_expression "(__c == 10)" ( (binary_expression "__c == 10" identifier == number_literal) )) (goto_statement "goto LAB_00025b24;" goto statement_identifier ;)) }))) (expression_statement "ungetc(__c,(FILE *)last_open_file);" (call_expression "ungetc(__c,(FILE *)last_open_file)" identifier (argument_list "(__c,(FILE *)last_open_file)" ( identifier , (cast_expression "(FILE *)last_open_file" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "pcVar6 = pcVar5;" (assignment_expression "pcVar6 = pcVar5" identifier = identifier) ;) (labeled_statement "LAB_00025b24:\n  file->linenum = file->linenum + 1;" statement_identifier : (expression_statement "file->linenum = file->linenum + 1;" (assignment_expression "file->linenum = file->linenum + 1" (field_expression "file->linenum" identifier -> field_identifier) = (binary_expression "file->linenum + 1" (field_expression "file->linenum" identifier -> field_identifier) + number_literal)) ;)) (expression_statement "*pcVar6 = '\0';" (assignment_expression "*pcVar6 = '\0'" (pointer_expression "*pcVar6" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return line;" return identifier ;) })))
(translation_unit "undefined2 * __regparm3 FUN_00025a10(int param_1,undefined2 *param_2,int param_3)\n\n{\n  long lVar1;\n  int iVar2;\n  int __c;\n  uint uVar3;\n  undefined2 *puVar4;\n  undefined2 *puVar5;\n  \n  iVar2 = DAT_000729b0;\n  if ((DAT_000729b0 == 0) || (DAT_000729b0 != param_1)) {\n    if (DAT_000729ac != (FILE *)0x0) {\n      lVar1 = ftell(DAT_000729ac);\n      *(long *)(iVar2 + 8) = lVar1;\n      fclose(DAT_000729ac);\n    }\n    DAT_000729b0 = param_1;\n    DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r");\n    if (DAT_000729ac == (FILE *)0x0) {\n      *(undefined4 *)(param_1 + 0x10) = 1;\n      return (undefined2 *)&DAT_0004cb45;\n    }\n    if (*(int *)(param_1 + 8) != 0) {\n      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);\n    }\n  }\n  iVar2 = fgetc(DAT_000729ac);\n  puVar4 = param_2;\n  if ((iVar2 == 10) || (iVar2 == -1)) {\n    uVar3 = 0;\nLAB_00025b62:\n    if (((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))) {\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }\n  }\n  else {\n    if (iVar2 != 0xd) {\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }\n    __c = fgetc(DAT_000729ac);\n    puVar5 = puVar4;\n    if (__c == 10) goto LAB_00025b24;\n  }\n  ungetc(__c,DAT_000729ac);\n  puVar5 = puVar4;\nLAB_00025b24:\n  *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n  *(undefined1 *)puVar5 = 0;\n  return param_2;\n}\n\n" (ERROR "undefined2 * __regparm3 FUN_00025a10(int param_1,undefined2 *param_2,int param_3)" (binary_expression "undefined2 * __regparm3 FUN_00025a10(int param_1,undefined2 *param_2,int param_3)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_00025a10(int param_1,undefined2 *param_2,int param_3)" identifier (argument_list "(int param_1,undefined2 *param_2,int param_3)" ( (ERROR "int" identifier) identifier , (binary_expression "undefined2 *param_2" identifier * identifier) , (ERROR "int" identifier) identifier ))))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  int __c;\n  uint uVar3;\n  undefined2 *puVar4;\n  undefined2 *puVar5;\n  \n  iVar2 = DAT_000729b0;\n  if ((DAT_000729b0 == 0) || (DAT_000729b0 != param_1)) {\n    if (DAT_000729ac != (FILE *)0x0) {\n      lVar1 = ftell(DAT_000729ac);\n      *(long *)(iVar2 + 8) = lVar1;\n      fclose(DAT_000729ac);\n    }\n    DAT_000729b0 = param_1;\n    DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r");\n    if (DAT_000729ac == (FILE *)0x0) {\n      *(undefined4 *)(param_1 + 0x10) = 1;\n      return (undefined2 *)&DAT_0004cb45;\n    }\n    if (*(int *)(param_1 + 8) != 0) {\n      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);\n    }\n  }\n  iVar2 = fgetc(DAT_000729ac);\n  puVar4 = param_2;\n  if ((iVar2 == 10) || (iVar2 == -1)) {\n    uVar3 = 0;\nLAB_00025b62:\n    if (((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))) {\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }\n  }\n  else {\n    if (iVar2 != 0xd) {\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }\n    __c = fgetc(DAT_000729ac);\n    puVar5 = puVar4;\n    if (__c == 10) goto LAB_00025b24;\n  }\n  ungetc(__c,DAT_000729ac);\n  puVar5 = puVar4;\nLAB_00025b24:\n  *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n  *(undefined1 *)puVar5 = 0;\n  return param_2;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int __c;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined2 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined2 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (expression_statement "iVar2 = DAT_000729b0;" (assignment_expression "iVar2 = DAT_000729b0" identifier = identifier) ;) (if_statement "if ((DAT_000729b0 == 0) || (DAT_000729b0 != param_1)) {\n    if (DAT_000729ac != (FILE *)0x0) {\n      lVar1 = ftell(DAT_000729ac);\n      *(long *)(iVar2 + 8) = lVar1;\n      fclose(DAT_000729ac);\n    }\n    DAT_000729b0 = param_1;\n    DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r");\n    if (DAT_000729ac == (FILE *)0x0) {\n      *(undefined4 *)(param_1 + 0x10) = 1;\n      return (undefined2 *)&DAT_0004cb45;\n    }\n    if (*(int *)(param_1 + 8) != 0) {\n      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);\n    }\n  }" if (parenthesized_expression "((DAT_000729b0 == 0) || (DAT_000729b0 != param_1))" ( (binary_expression "(DAT_000729b0 == 0) || (DAT_000729b0 != param_1)" (parenthesized_expression "(DAT_000729b0 == 0)" ( (binary_expression "DAT_000729b0 == 0" identifier == number_literal) )) || (parenthesized_expression "(DAT_000729b0 != param_1)" ( (binary_expression "DAT_000729b0 != param_1" identifier != identifier) ))) )) (compound_statement "{\n    if (DAT_000729ac != (FILE *)0x0) {\n      lVar1 = ftell(DAT_000729ac);\n      *(long *)(iVar2 + 8) = lVar1;\n      fclose(DAT_000729ac);\n    }\n    DAT_000729b0 = param_1;\n    DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r");\n    if (DAT_000729ac == (FILE *)0x0) {\n      *(undefined4 *)(param_1 + 0x10) = 1;\n      return (undefined2 *)&DAT_0004cb45;\n    }\n    if (*(int *)(param_1 + 8) != 0) {\n      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);\n    }\n  }" { (if_statement "if (DAT_000729ac != (FILE *)0x0) {\n      lVar1 = ftell(DAT_000729ac);\n      *(long *)(iVar2 + 8) = lVar1;\n      fclose(DAT_000729ac);\n    }" if (parenthesized_expression "(DAT_000729ac != (FILE *)0x0)" ( (binary_expression "DAT_000729ac != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      lVar1 = ftell(DAT_000729ac);\n      *(long *)(iVar2 + 8) = lVar1;\n      fclose(DAT_000729ac);\n    }" { (expression_statement "lVar1 = ftell(DAT_000729ac);" (assignment_expression "lVar1 = ftell(DAT_000729ac)" identifier = (call_expression "ftell(DAT_000729ac)" identifier (argument_list "(DAT_000729ac)" ( identifier )))) ;) (expression_statement "*(long *)(iVar2 + 8) = lVar1;" (assignment_expression "*(long *)(iVar2 + 8) = lVar1" (pointer_expression "*(long *)(iVar2 + 8)" * (cast_expression "(long *)(iVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "fclose(DAT_000729ac);" (call_expression "fclose(DAT_000729ac)" identifier (argument_list "(DAT_000729ac)" ( identifier ))) ;) })) (expression_statement "DAT_000729b0 = param_1;" (assignment_expression "DAT_000729b0 = param_1" identifier = identifier) ;) (expression_statement "DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r");" (assignment_expression "DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r")" identifier = (call_expression "fopen64(*(char **)(param_1 + 4),"r")" identifier (argument_list "(*(char **)(param_1 + 4),"r")" ( (pointer_expression "*(char **)(param_1 + 4)" * (cast_expression "(char **)(param_1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , (string_literal ""r"" " string_content ") )))) ;) (if_statement "if (DAT_000729ac == (FILE *)0x0) {\n      *(undefined4 *)(param_1 + 0x10) = 1;\n      return (undefined2 *)&DAT_0004cb45;\n    }" if (parenthesized_expression "(DAT_000729ac == (FILE *)0x0)" ( (binary_expression "DAT_000729ac == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *(undefined4 *)(param_1 + 0x10) = 1;\n      return (undefined2 *)&DAT_0004cb45;\n    }" { (expression_statement "*(undefined4 *)(param_1 + 0x10) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = number_literal) ;) (return_statement "return (undefined2 *)&DAT_0004cb45;" return (cast_expression "(undefined2 *)&DAT_0004cb45" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_0004cb45" & identifier)) ;) })) (if_statement "if (*(int *)(param_1 + 8) != 0) {\n      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);\n    }" if (parenthesized_expression "(*(int *)(param_1 + 8) != 0)" ( (binary_expression "*(int *)(param_1 + 8) != 0" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);\n    }" { (expression_statement "fseek(DAT_000729ac,*(int *)(param_1 + 8),0);" (call_expression "fseek(DAT_000729ac,*(int *)(param_1 + 8),0)" identifier (argument_list "(DAT_000729ac,*(int *)(param_1 + 8),0)" ( identifier , (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , number_literal ))) ;) })) })) (expression_statement "iVar2 = fgetc(DAT_000729ac);" (assignment_expression "iVar2 = fgetc(DAT_000729ac)" identifier = (call_expression "fgetc(DAT_000729ac)" identifier (argument_list "(DAT_000729ac)" ( identifier )))) ;) (expression_statement "puVar4 = param_2;" (assignment_expression "puVar4 = param_2" identifier = identifier) ;) (if_statement "if ((iVar2 == 10) || (iVar2 == -1)) {\n    uVar3 = 0;\nLAB_00025b62:\n    if (((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))) {\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }\n  }\n  else {\n    if (iVar2 != 0xd) {\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }\n    __c = fgetc(DAT_000729ac);\n    puVar5 = puVar4;\n    if (__c == 10) goto LAB_00025b24;\n  }" if (parenthesized_expression "((iVar2 == 10) || (iVar2 == -1))" ( (binary_expression "(iVar2 == 10) || (iVar2 == -1)" (parenthesized_expression "(iVar2 == 10)" ( (binary_expression "iVar2 == 10" identifier == number_literal) )) || (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) ))) )) (compound_statement "{\n    uVar3 = 0;\nLAB_00025b62:\n    if (((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))) {\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }\n  }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00025b62:\n    if (((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))) {\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }" statement_identifier : (if_statement "if (((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))) {\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }" if (parenthesized_expression "(((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        )))" ( (binary_expression "((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))" (parenthesized_expression "((iVar2 != 0xd) && (iVar2 != 10))" ( (binary_expression "(iVar2 != 0xd) && (iVar2 != 10)" (parenthesized_expression "(iVar2 != 0xd)" ( (binary_expression "iVar2 != 0xd" identifier != number_literal) )) && (parenthesized_expression "(iVar2 != 10)" ( (binary_expression "iVar2 != 10" identifier != number_literal) ))) )) || (parenthesized_expression "(((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))" ( (parenthesized_expression "((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        )" ( (binary_expression "(__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))" (parenthesized_expression "(__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd))" ( (comma_expression "__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)" (assignment_expression "__c = fgetc(DAT_000729ac)" identifier = (call_expression "fgetc(DAT_000729ac)" identifier (argument_list "(DAT_000729ac)" ( identifier )))) , (binary_expression "__c == 10 || (iVar2 != 0xd)" (binary_expression "__c == 10" identifier == number_literal) || (parenthesized_expression "(iVar2 != 0xd)" ( (binary_expression "iVar2 != 0xd" identifier != number_literal) )))) )) && (parenthesized_expression "((__c == 0xd || (iVar2 != 10)))" ( (parenthesized_expression "(__c == 0xd || (iVar2 != 10))" ( (binary_expression "__c == 0xd || (iVar2 != 10)" (binary_expression "__c == 0xd" identifier == number_literal) || (parenthesized_expression "(iVar2 != 10)" ( (binary_expression "iVar2 != 10" identifier != number_literal) ))) )) ))) )) ))) )) (compound_statement "{\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }" { (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) (if_statement "if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }" if (parenthesized_expression "((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U))" ( (binary_expression "(iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)" (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) && (parenthesized_expression "(*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)" ( (comma_expression "*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = number_literal) , (binary_expression "uVar3 + 2 < param_3 - 1U" (binary_expression "uVar3 + 2" identifier + number_literal) < (binary_expression "param_3 - 1U" identifier - number_literal))) ))) )) (compound_statement "{\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }" { (expression_statement "*(undefined1 *)(puVar4 + 1) = 0x2e;" (assignment_expression "*(undefined1 *)(puVar4 + 1) = 0x2e" (pointer_expression "*(undefined1 *)(puVar4 + 1)" * (cast_expression "(undefined1 *)(puVar4 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar5 = (undefined2 *)((int)puVar4 + 3);" (assignment_expression "puVar5 = (undefined2 *)((int)puVar4 + 3)" identifier = (cast_expression "(undefined2 *)((int)puVar4 + 3)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 3)" ( (binary_expression "(int)puVar4 + 3" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar4 = 0x2e2e;" (assignment_expression "*puVar4 = 0x2e2e" (pointer_expression "*puVar4" * identifier) = number_literal) ;) })) (goto_statement "goto LAB_00025b24;" goto statement_identifier ;) }))) }) (else_clause "else {\n    if (iVar2 != 0xd) {\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }\n    __c = fgetc(DAT_000729ac);\n    puVar5 = puVar4;\n    if (__c == 10) goto LAB_00025b24;\n  }" else (compound_statement "{\n    if (iVar2 != 0xd) {\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }\n    __c = fgetc(DAT_000729ac);\n    puVar5 = puVar4;\n    if (__c == 10) goto LAB_00025b24;\n  }" { (if_statement "if (iVar2 != 0xd) {\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }" if (parenthesized_expression "(iVar2 != 0xd)" ( (binary_expression "iVar2 != 0xd" identifier != number_literal) )) (compound_statement "{\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);" do (compound_statement "{\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      }" { (if_statement "if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }" if (parenthesized_expression "(uVar3 < param_3 - 1U)" ( (binary_expression "uVar3 < param_3 - 1U" identifier < (binary_expression "param_3 - 1U" identifier - number_literal)) )) (compound_statement "{\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }" { (expression_statement "*(char *)puVar4 = (char)iVar2;" (assignment_expression "*(char *)puVar4 = (char)iVar2" (pointer_expression "*(char *)puVar4" * (cast_expression "(char *)puVar4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(char)iVar2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar4 = (undefined2 *)((int)puVar4 + 1);" (assignment_expression "puVar4 = (undefined2 *)((int)puVar4 + 1)" identifier = (cast_expression "(undefined2 *)((int)puVar4 + 1)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 1)" ( (binary_expression "(int)puVar4 + 1" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "iVar2 = fgetc(DAT_000729ac);" (assignment_expression "iVar2 = fgetc(DAT_000729ac)" identifier = (call_expression "fgetc(DAT_000729ac)" identifier (argument_list "(DAT_000729ac)" ( identifier )))) ;) (if_statement "if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;" if (parenthesized_expression "((iVar2 == -1) || (iVar2 == 10))" ( (binary_expression "(iVar2 == -1) || (iVar2 == 10)" (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) || (parenthesized_expression "(iVar2 == 10)" ( (binary_expression "iVar2 == 10" identifier == number_literal) ))) )) (goto_statement "goto LAB_00025b62;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar2 != 0xd)" ( (binary_expression "iVar2 != 0xd" identifier != number_literal) )) ;) })) (expression_statement "__c = fgetc(DAT_000729ac);" (assignment_expression "__c = fgetc(DAT_000729ac)" identifier = (call_expression "fgetc(DAT_000729ac)" identifier (argument_list "(DAT_000729ac)" ( identifier )))) ;) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) (if_statement "if (__c == 10) goto LAB_00025b24;" if (parenthesized_expression "(__c == 10)" ( (binary_expression "__c == 10" identifier == number_literal) )) (goto_statement "goto LAB_00025b24;" goto statement_identifier ;)) }))) (expression_statement "ungetc(__c,DAT_000729ac);" (call_expression "ungetc(__c,DAT_000729ac)" identifier (argument_list "(__c,DAT_000729ac)" ( identifier , identifier ))) ;) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) (labeled_statement "LAB_00025b24:\n  *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;" statement_identifier : (expression_statement "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;" (assignment_expression "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0xc) + 1" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal)) ;)) (expression_statement "*(undefined1 *)puVar5 = 0;" (assignment_expression "*(undefined1 *)puVar5 = 0" (pointer_expression "*(undefined1 *)puVar5" * (cast_expression "(undefined1 *)puVar5" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (return_statement "return param_2;" return identifier ;) }))
(translation_unit (ERROR (binary_expression IDENT * (ERROR IDENT) (call_expression IDENT (argument_list ( (ERROR IDENT) IDENT , (binary_expression IDENT * IDENT) , (ERROR IDENT) IDENT ))))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT != IDENT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))) ;) })) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (binary_expression IDENT != LIT) )))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) , (binary_expression (binary_expression IDENT + LIT) < (binary_expression IDENT - LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (goto_statement goto statement_identifier ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT - LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (return_statement return IDENT ;) }))
(ERROR "undefined2 * __regparm3 FUN_00025a10(int param_1,undefined2 *param_2,int param_3)" (binary_expression "undefined2 * __regparm3 FUN_00025a10(int param_1,undefined2 *param_2,int param_3)" (identifier "undefined2") (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (call_expression "FUN_00025a10(int param_1,undefined2 *param_2,int param_3)" (identifier "FUN_00025a10") (argument_list "(int param_1,undefined2 *param_2,int param_3)" (( "(") (ERROR "int" (identifier "int")) (identifier "param_1") (, ",") (binary_expression "undefined2 *param_2" (identifier "undefined2") (* "*") (identifier "param_2")) (, ",") (ERROR "int" (identifier "int")) (identifier "param_3") () ")"))))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  int __c;\n  uint uVar3;\n  undefined2 *puVar4;\n  undefined2 *puVar5;\n  \n  iVar2 = DAT_000729b0;\n  if ((DAT_000729b0 == 0) || (DAT_000729b0 != param_1)) {\n    if (DAT_000729ac != (FILE *)0x0) {\n      lVar1 = ftell(DAT_000729ac);\n      *(long *)(iVar2 + 8) = lVar1;\n      fclose(DAT_000729ac);\n    }\n    DAT_000729b0 = param_1;\n    DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r");\n    if (DAT_000729ac == (FILE *)0x0) {\n      *(undefined4 *)(param_1 + 0x10) = 1;\n      return (undefined2 *)&DAT_0004cb45;\n    }\n    if (*(int *)(param_1 + 8) != 0) {\n      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);\n    }\n  }\n  iVar2 = fgetc(DAT_000729ac);\n  puVar4 = param_2;\n  if ((iVar2 == 10) || (iVar2 == -1)) {\n    uVar3 = 0;\nLAB_00025b62:\n    if (((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))) {\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }\n  }\n  else {\n    if (iVar2 != 0xd) {\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }\n    __c = fgetc(DAT_000729ac);\n    puVar5 = puVar4;\n    if (__c == 10) goto LAB_00025b24;\n  }\n  ungetc(__c,DAT_000729ac);\n  puVar5 = puVar4;\nLAB_00025b24:\n  *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n  *(undefined1 *)puVar5 = 0;\n  return param_2;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int __c;" (primitive_type "int") (identifier "__c") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined2 *puVar4;" (type_identifier "undefined2") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined2 *puVar5;" (type_identifier "undefined2") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (expression_statement "iVar2 = DAT_000729b0;" (assignment_expression "iVar2 = DAT_000729b0" (identifier "iVar2") (= "=") (identifier "DAT_000729b0")) (; ";")) (if_statement "if ((DAT_000729b0 == 0) || (DAT_000729b0 != param_1)) {\n    if (DAT_000729ac != (FILE *)0x0) {\n      lVar1 = ftell(DAT_000729ac);\n      *(long *)(iVar2 + 8) = lVar1;\n      fclose(DAT_000729ac);\n    }\n    DAT_000729b0 = param_1;\n    DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r");\n    if (DAT_000729ac == (FILE *)0x0) {\n      *(undefined4 *)(param_1 + 0x10) = 1;\n      return (undefined2 *)&DAT_0004cb45;\n    }\n    if (*(int *)(param_1 + 8) != 0) {\n      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);\n    }\n  }" (if "if") (parenthesized_expression "((DAT_000729b0 == 0) || (DAT_000729b0 != param_1))" (( "(") (binary_expression "(DAT_000729b0 == 0) || (DAT_000729b0 != param_1)" (parenthesized_expression "(DAT_000729b0 == 0)" (( "(") (binary_expression "DAT_000729b0 == 0" (identifier "DAT_000729b0") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(DAT_000729b0 != param_1)" (( "(") (binary_expression "DAT_000729b0 != param_1" (identifier "DAT_000729b0") (!= "!=") (identifier "param_1")) () ")"))) () ")")) (compound_statement "{\n    if (DAT_000729ac != (FILE *)0x0) {\n      lVar1 = ftell(DAT_000729ac);\n      *(long *)(iVar2 + 8) = lVar1;\n      fclose(DAT_000729ac);\n    }\n    DAT_000729b0 = param_1;\n    DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r");\n    if (DAT_000729ac == (FILE *)0x0) {\n      *(undefined4 *)(param_1 + 0x10) = 1;\n      return (undefined2 *)&DAT_0004cb45;\n    }\n    if (*(int *)(param_1 + 8) != 0) {\n      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);\n    }\n  }" ({ "{") (if_statement "if (DAT_000729ac != (FILE *)0x0) {\n      lVar1 = ftell(DAT_000729ac);\n      *(long *)(iVar2 + 8) = lVar1;\n      fclose(DAT_000729ac);\n    }" (if "if") (parenthesized_expression "(DAT_000729ac != (FILE *)0x0)" (( "(") (binary_expression "DAT_000729ac != (FILE *)0x0" (identifier "DAT_000729ac") (!= "!=") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      lVar1 = ftell(DAT_000729ac);\n      *(long *)(iVar2 + 8) = lVar1;\n      fclose(DAT_000729ac);\n    }" ({ "{") (expression_statement "lVar1 = ftell(DAT_000729ac);" (assignment_expression "lVar1 = ftell(DAT_000729ac)" (identifier "lVar1") (= "=") (call_expression "ftell(DAT_000729ac)" (identifier "ftell") (argument_list "(DAT_000729ac)" (( "(") (identifier "DAT_000729ac") () ")")))) (; ";")) (expression_statement "*(long *)(iVar2 + 8) = lVar1;" (assignment_expression "*(long *)(iVar2 + 8) = lVar1" (pointer_expression "*(long *)(iVar2 + 8)" (* "*") (cast_expression "(long *)(iVar2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "lVar1")) (; ";")) (expression_statement "fclose(DAT_000729ac);" (call_expression "fclose(DAT_000729ac)" (identifier "fclose") (argument_list "(DAT_000729ac)" (( "(") (identifier "DAT_000729ac") () ")"))) (; ";")) (} "}"))) (expression_statement "DAT_000729b0 = param_1;" (assignment_expression "DAT_000729b0 = param_1" (identifier "DAT_000729b0") (= "=") (identifier "param_1")) (; ";")) (expression_statement "DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r");" (assignment_expression "DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r")" (identifier "DAT_000729ac") (= "=") (call_expression "fopen64(*(char **)(param_1 + 4),"r")" (identifier "fopen64") (argument_list "(*(char **)(param_1 + 4),"r")" (( "(") (pointer_expression "*(char **)(param_1 + 4)" (* "*") (cast_expression "(char **)(param_1 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (, ",") (string_literal ""r"" (" """) (string_content "r") (" """)) () ")")))) (; ";")) (if_statement "if (DAT_000729ac == (FILE *)0x0) {\n      *(undefined4 *)(param_1 + 0x10) = 1;\n      return (undefined2 *)&DAT_0004cb45;\n    }" (if "if") (parenthesized_expression "(DAT_000729ac == (FILE *)0x0)" (( "(") (binary_expression "DAT_000729ac == (FILE *)0x0" (identifier "DAT_000729ac") (== "==") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      *(undefined4 *)(param_1 + 0x10) = 1;\n      return (undefined2 *)&DAT_0004cb45;\n    }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x10) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "1")) (; ";")) (return_statement "return (undefined2 *)&DAT_0004cb45;" (return "return") (cast_expression "(undefined2 *)&DAT_0004cb45" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_0004cb45" (& "&") (identifier "DAT_0004cb45"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 8) != 0) {\n      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);\n    }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 8) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 8) != 0" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);\n    }" ({ "{") (expression_statement "fseek(DAT_000729ac,*(int *)(param_1 + 8),0);" (call_expression "fseek(DAT_000729ac,*(int *)(param_1 + 8),0)" (identifier "fseek") (argument_list "(DAT_000729ac,*(int *)(param_1 + 8),0)" (( "(") (identifier "DAT_000729ac") (, ",") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar2 = fgetc(DAT_000729ac);" (assignment_expression "iVar2 = fgetc(DAT_000729ac)" (identifier "iVar2") (= "=") (call_expression "fgetc(DAT_000729ac)" (identifier "fgetc") (argument_list "(DAT_000729ac)" (( "(") (identifier "DAT_000729ac") () ")")))) (; ";")) (expression_statement "puVar4 = param_2;" (assignment_expression "puVar4 = param_2" (identifier "puVar4") (= "=") (identifier "param_2")) (; ";")) (if_statement "if ((iVar2 == 10) || (iVar2 == -1)) {\n    uVar3 = 0;\nLAB_00025b62:\n    if (((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))) {\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }\n  }\n  else {\n    if (iVar2 != 0xd) {\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }\n    __c = fgetc(DAT_000729ac);\n    puVar5 = puVar4;\n    if (__c == 10) goto LAB_00025b24;\n  }" (if "if") (parenthesized_expression "((iVar2 == 10) || (iVar2 == -1))" (( "(") (binary_expression "(iVar2 == 10) || (iVar2 == -1)" (parenthesized_expression "(iVar2 == 10)" (( "(") (binary_expression "iVar2 == 10" (identifier "iVar2") (== "==") (number_literal "10")) () ")")) (|| "||") (parenthesized_expression "(iVar2 == -1)" (( "(") (binary_expression "iVar2 == -1" (identifier "iVar2") (== "==") (number_literal "-1")) () ")"))) () ")")) (compound_statement "{\n    uVar3 = 0;\nLAB_00025b62:\n    if (((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))) {\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }\n  }" ({ "{") (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00025b62:\n    if (((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))) {\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }" (statement_identifier "LAB_00025b62") (: ":") (if_statement "if (((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))) {\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }" (if "if") (parenthesized_expression "(((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        )))" (( "(") (binary_expression "((iVar2 != 0xd) && (iVar2 != 10)) ||\n       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))" (parenthesized_expression "((iVar2 != 0xd) && (iVar2 != 10))" (( "(") (binary_expression "(iVar2 != 0xd) && (iVar2 != 10)" (parenthesized_expression "(iVar2 != 0xd)" (( "(") (binary_expression "iVar2 != 0xd" (identifier "iVar2") (!= "!=") (number_literal "0xd")) () ")")) (&& "&&") (parenthesized_expression "(iVar2 != 10)" (( "(") (binary_expression "iVar2 != 10" (identifier "iVar2") (!= "!=") (number_literal "10")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        ))" (( "(") (parenthesized_expression "((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))\n        )" (( "(") (binary_expression "(__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))" (parenthesized_expression "(__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd))" (( "(") (comma_expression "__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)" (assignment_expression "__c = fgetc(DAT_000729ac)" (identifier "__c") (= "=") (call_expression "fgetc(DAT_000729ac)" (identifier "fgetc") (argument_list "(DAT_000729ac)" (( "(") (identifier "DAT_000729ac") () ")")))) (, ",") (binary_expression "__c == 10 || (iVar2 != 0xd)" (binary_expression "__c == 10" (identifier "__c") (== "==") (number_literal "10")) (|| "||") (parenthesized_expression "(iVar2 != 0xd)" (( "(") (binary_expression "iVar2 != 0xd" (identifier "iVar2") (!= "!=") (number_literal "0xd")) () ")")))) () ")")) (&& "&&") (parenthesized_expression "((__c == 0xd || (iVar2 != 10)))" (( "(") (parenthesized_expression "(__c == 0xd || (iVar2 != 10))" (( "(") (binary_expression "__c == 0xd || (iVar2 != 10)" (binary_expression "__c == 0xd" (identifier "__c") (== "==") (number_literal "0xd")) (|| "||") (parenthesized_expression "(iVar2 != 10)" (( "(") (binary_expression "iVar2 != 10" (identifier "iVar2") (!= "!=") (number_literal "10")) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      puVar5 = puVar4;\n      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }\n      goto LAB_00025b24;\n    }" ({ "{") (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" (identifier "puVar5") (= "=") (identifier "puVar4")) (; ";")) (if_statement "if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }" (if "if") (parenthesized_expression "((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U))" (( "(") (binary_expression "(iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)" (parenthesized_expression "(iVar2 == -1)" (( "(") (binary_expression "iVar2 == -1" (identifier "iVar2") (== "==") (number_literal "-1")) () ")")) (&& "&&") (parenthesized_expression "(*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)" (( "(") (comma_expression "*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "1")) (, ",") (binary_expression "uVar3 + 2 < param_3 - 1U" (binary_expression "uVar3 + 2" (identifier "uVar3") (+ "+") (number_literal "2")) (< "<") (binary_expression "param_3 - 1U" (identifier "param_3") (- "-") (number_literal "1U")))) () ")"))) () ")")) (compound_statement "{\n        *(undefined1 *)(puVar4 + 1) = 0x2e;\n        puVar5 = (undefined2 *)((int)puVar4 + 3);\n        *puVar4 = 0x2e2e;\n      }" ({ "{") (expression_statement "*(undefined1 *)(puVar4 + 1) = 0x2e;" (assignment_expression "*(undefined1 *)(puVar4 + 1) = 0x2e" (pointer_expression "*(undefined1 *)(puVar4 + 1)" (* "*") (cast_expression "(undefined1 *)(puVar4 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 1)" (( "(") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0x2e")) (; ";")) (expression_statement "puVar5 = (undefined2 *)((int)puVar4 + 3);" (assignment_expression "puVar5 = (undefined2 *)((int)puVar4 + 3)" (identifier "puVar5") (= "=") (cast_expression "(undefined2 *)((int)puVar4 + 3)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar4 + 3)" (( "(") (binary_expression "(int)puVar4 + 3" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (+ "+") (number_literal "3")) () ")")))) (; ";")) (expression_statement "*puVar4 = 0x2e2e;" (assignment_expression "*puVar4 = 0x2e2e" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0x2e2e")) (; ";")) (} "}"))) (goto_statement "goto LAB_00025b24;" (goto "goto") (statement_identifier "LAB_00025b24") (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    if (iVar2 != 0xd) {\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }\n    __c = fgetc(DAT_000729ac);\n    puVar5 = puVar4;\n    if (__c == 10) goto LAB_00025b24;\n  }" (else "else") (compound_statement "{\n    if (iVar2 != 0xd) {\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }\n    __c = fgetc(DAT_000729ac);\n    puVar5 = puVar4;\n    if (__c == 10) goto LAB_00025b24;\n  }" ({ "{") (if_statement "if (iVar2 != 0xd) {\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }" (if "if") (parenthesized_expression "(iVar2 != 0xd)" (( "(") (binary_expression "iVar2 != 0xd" (identifier "iVar2") (!= "!=") (number_literal "0xd")) () ")")) (compound_statement "{\n      uVar3 = 0;\n      do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);\n    }" ({ "{") (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      } while (iVar2 != 0xd);" (do "do") (compound_statement "{\n        if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }\n        uVar3 = uVar3 + 1;\n        iVar2 = fgetc(DAT_000729ac);\n        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;\n      }" ({ "{") (if_statement "if (uVar3 < param_3 - 1U) {\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }" (if "if") (parenthesized_expression "(uVar3 < param_3 - 1U)" (( "(") (binary_expression "uVar3 < param_3 - 1U" (identifier "uVar3") (< "<") (binary_expression "param_3 - 1U" (identifier "param_3") (- "-") (number_literal "1U"))) () ")")) (compound_statement "{\n          *(char *)puVar4 = (char)iVar2;\n          puVar4 = (undefined2 *)((int)puVar4 + 1);\n        }" ({ "{") (expression_statement "*(char *)puVar4 = (char)iVar2;" (assignment_expression "*(char *)puVar4 = (char)iVar2" (pointer_expression "*(char *)puVar4" (* "*") (cast_expression "(char *)puVar4" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar4"))) (= "=") (cast_expression "(char)iVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar2"))) (; ";")) (expression_statement "puVar4 = (undefined2 *)((int)puVar4 + 1);" (assignment_expression "puVar4 = (undefined2 *)((int)puVar4 + 1)" (identifier "puVar4") (= "=") (cast_expression "(undefined2 *)((int)puVar4 + 1)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar4 + 1)" (( "(") (binary_expression "(int)puVar4 + 1" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar2 = fgetc(DAT_000729ac);" (assignment_expression "iVar2 = fgetc(DAT_000729ac)" (identifier "iVar2") (= "=") (call_expression "fgetc(DAT_000729ac)" (identifier "fgetc") (argument_list "(DAT_000729ac)" (( "(") (identifier "DAT_000729ac") () ")")))) (; ";")) (if_statement "if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;" (if "if") (parenthesized_expression "((iVar2 == -1) || (iVar2 == 10))" (( "(") (binary_expression "(iVar2 == -1) || (iVar2 == 10)" (parenthesized_expression "(iVar2 == -1)" (( "(") (binary_expression "iVar2 == -1" (identifier "iVar2") (== "==") (number_literal "-1")) () ")")) (|| "||") (parenthesized_expression "(iVar2 == 10)" (( "(") (binary_expression "iVar2 == 10" (identifier "iVar2") (== "==") (number_literal "10")) () ")"))) () ")")) (goto_statement "goto LAB_00025b62;" (goto "goto") (statement_identifier "LAB_00025b62") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(iVar2 != 0xd)" (( "(") (binary_expression "iVar2 != 0xd" (identifier "iVar2") (!= "!=") (number_literal "0xd")) () ")")) (; ";")) (} "}"))) (expression_statement "__c = fgetc(DAT_000729ac);" (assignment_expression "__c = fgetc(DAT_000729ac)" (identifier "__c") (= "=") (call_expression "fgetc(DAT_000729ac)" (identifier "fgetc") (argument_list "(DAT_000729ac)" (( "(") (identifier "DAT_000729ac") () ")")))) (; ";")) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" (identifier "puVar5") (= "=") (identifier "puVar4")) (; ";")) (if_statement "if (__c == 10) goto LAB_00025b24;" (if "if") (parenthesized_expression "(__c == 10)" (( "(") (binary_expression "__c == 10" (identifier "__c") (== "==") (number_literal "10")) () ")")) (goto_statement "goto LAB_00025b24;" (goto "goto") (statement_identifier "LAB_00025b24") (; ";"))) (} "}")))) (expression_statement "ungetc(__c,DAT_000729ac);" (call_expression "ungetc(__c,DAT_000729ac)" (identifier "ungetc") (argument_list "(__c,DAT_000729ac)" (( "(") (identifier "__c") (, ",") (identifier "DAT_000729ac") () ")"))) (; ";")) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" (identifier "puVar5") (= "=") (identifier "puVar4")) (; ";")) (labeled_statement "LAB_00025b24:\n  *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;" (statement_identifier "LAB_00025b24") (: ":") (expression_statement "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;" (assignment_expression "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0xc) + 1" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "*(undefined1 *)puVar5 = 0;" (assignment_expression "*(undefined1 *)puVar5 = 0" (pointer_expression "*(undefined1 *)puVar5" (* "*") (cast_expression "(undefined1 *)puVar5" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar5"))) (= "=") (number_literal "0")) (; ";")) (return_statement "return param_2;" (return "return") (identifier "param_2") (; ";")) (} "}"))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

char * __regparm3 function_1(type_1 *var_2,char *line,type_2 var_12)

{
  type_1 *pfVar1;
  long lVar2;
  int var_9;
  int var_10;
  type_2 var_11;
  char *var_13;
  char *pcVar6;
  
  pfVar1 = var_1;
  if ((var_1 == (type_1 *)0x0) || (var_1 != var_2)) {
    if (var_3 != (type_3 *)0x0) {
      lVar2 = var_4((type_3 *)var_3);
      pfVar1->pos = lVar2;
      var_5((type_3 *)var_3);
    }
    var_1 = var_2;
    var_3 = (type_3 *)var_6(var_2->filename,"r");
    if ((type_3 *)var_3 == (type_3 *)0x0) {
      var_2->at_end = 1;
      return "";
    }
    if (var_2->pos != 0) {
      var_7((type_3 *)var_3,var_2->pos,0);
    }
  }
  var_9 = var_8((type_3 *)var_3);
  var_13 = line;
  if ((var_9 == 10) || (var_9 == -1)) {
    var_11 = 0;
LAB_00025b62:
    if (((var_9 != 0xd) && (var_9 != 10)) ||
       (((var_10 = var_8((type_3 *)var_3), var_10 == 10 || (var_9 != 0xd)) &&
        ((var_10 == 0xd || (var_9 != 10)))))) {
      pcVar6 = var_13;
      if ((var_9 == -1) && (var_2->at_end = 1, var_11 + 2 < var_12 - 1)) {
        var_13[2] = '.';
        pcVar6 = var_13 + 3;
        var_13[0] = '.';
        var_13[1] = '.';
      }
      goto LAB_00025b24;
    }
  }
  else {
    if (var_9 != 0xd) {
      var_11 = 0;
      do {
        if (var_11 < var_12 - 1) {
          *var_13 = (char)var_9;
          var_13 = var_13 + 1;
        }
        var_11 = var_11 + 1;
        var_9 = var_8((type_3 *)var_3);
        if ((var_9 == -1) || (var_9 == 10)) goto LAB_00025b62;
      } while (var_9 != 0xd);
    }
    var_10 = var_8((type_3 *)var_3);
    pcVar6 = var_13;
    if (var_10 == 10) goto LAB_00025b24;
  }
  var_14(var_10,(type_3 *)var_3);
  pcVar6 = var_13;
LAB_00025b24:
  var_2->linenum = var_2->linenum + 1;
  *pcVar6 = '\0';
  return line;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined2 * __regparm3 MASKED(int param_1,undefined2 *param_2,int param_3)

{
  long lVar1;
  int iVar2;
  int __c;
  uint uVar3;
  undefined2 *puVar4;
  undefined2 *puVar5;
  
  iVar2 = DAT_000729b0;
  if ((DAT_000729b0 == 0) || (DAT_000729b0 != param_1)) {
    if (DAT_000729ac != (FILE *)0x0) {
      lVar1 = ftell(DAT_000729ac);
      *(long *)(iVar2 + 8) = lVar1;
      fclose(DAT_000729ac);
    }
    DAT_000729b0 = param_1;
    DAT_000729ac = fopen64(*(char **)(param_1 + 4),"r");
    if (DAT_000729ac == (FILE *)0x0) {
      *(undefined4 *)(param_1 + 0x10) = 1;
      return (undefined2 *)&DAT_0004cb45;
    }
    if (*(int *)(param_1 + 8) != 0) {
      fseek(DAT_000729ac,*(int *)(param_1 + 8),0);
    }
  }
  iVar2 = fgetc(DAT_000729ac);
  puVar4 = param_2;
  if ((iVar2 == 10) || (iVar2 == -1)) {
    uVar3 = 0;
LAB_00025b62:
    if (((iVar2 != 0xd) && (iVar2 != 10)) ||
       (((__c = fgetc(DAT_000729ac), __c == 10 || (iVar2 != 0xd)) && ((__c == 0xd || (iVar2 != 10)))
        ))) {
      puVar5 = puVar4;
      if ((iVar2 == -1) && (*(undefined4 *)(param_1 + 0x10) = 1, uVar3 + 2 < param_3 - 1U)) {
        *(undefined1 *)(puVar4 + 1) = 0x2e;
        puVar5 = (undefined2 *)((int)puVar4 + 3);
        *puVar4 = 0x2e2e;
      }
      goto LAB_00025b24;
    }
  }
  else {
    if (iVar2 != 0xd) {
      uVar3 = 0;
      do {
        if (uVar3 < param_3 - 1U) {
          *(char *)puVar4 = (char)iVar2;
          puVar4 = (undefined2 *)((int)puVar4 + 1);
        }
        uVar3 = uVar3 + 1;
        iVar2 = fgetc(DAT_000729ac);
        if ((iVar2 == -1) || (iVar2 == 10)) goto LAB_00025b62;
      } while (iVar2 != 0xd);
    }
    __c = fgetc(DAT_000729ac);
    puVar5 = puVar4;
    if (__c == 10) goto LAB_00025b24;
  }
  ungetc(__c,DAT_000729ac);
  puVar5 = puVar4;
LAB_00025b24:
  *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
  *(undefined1 *)puVar5 = 0;
  return param_2;
}

