
linebuffer * readlinebuffer_delim(linebuffer *linebuffer,FILE *stream,char delimiter)

{
  char *p;
  byte *pbVar1;
  undefined3 in_register_00000018;
  uint uVar2;
  char *pcVar3;
  size_t sVar4;
  char *pcVar5;
  char *pcVar6;
  uint uVar7;
  
  uVar2 = CONCAT31(in_register_00000018,delimiter);
  pcVar6 = linebuffer->buffer;
  pcVar5 = pcVar6 + linebuffer->size;
  p = pcVar6;
  if ((stream->_flags & 0x10U) == 0) {
    do {
      pbVar1 = (byte *)stream->_IO_read_ptr;
      if (pbVar1 < stream->_IO_read_end) {
        stream->_IO_read_ptr = (char *)(pbVar1 + 1);
        uVar7 = (uint)*pbVar1;
LAB_00014094:
        if (pcVar6 == pcVar5) {
          sVar4 = linebuffer->size;
          goto LAB_00014040;
        }
      }
      else {
        uVar7 = (*(code *)PTR___uflow_000302d8)(stream);
        if (uVar7 != 0xffffffff) goto LAB_00014094;
        if (p == pcVar6) {
          return (linebuffer *)0x0;
        }
        if ((stream->_flags & 0x20U) != 0) {
          return (linebuffer *)0x0;
        }
        pcVar3 = pcVar6;
        if ((int)pcVar6[-1] == uVar2) break;
        if (pcVar6 != pcVar5) {
          pcVar3 = pcVar6 + 1;
          *pcVar6 = delimiter;
          break;
        }
        sVar4 = linebuffer->size;
        uVar7 = uVar2;
LAB_00014040:
        p = (char *)x2realloc(p,&linebuffer->size);
        pcVar6 = p + sVar4;
        linebuffer->buffer = p;
        pcVar5 = p + linebuffer->size;
      }
      pcVar3 = pcVar6 + 1;
      *pcVar6 = (char)uVar7;
      pcVar6 = pcVar3;
    } while (uVar2 != uVar7);
    linebuffer->length = (int)pcVar3 - (int)p;
  }
  else {
    linebuffer = (linebuffer *)0x0;
  }
  return linebuffer;
}



int * readlinebuffer_delim(int *param_1,uint *param_2,uint param_3)

{
  undefined1 *puVar1;
  byte *pbVar2;
  undefined1 *puVar3;
  int iVar4;
  undefined1 *puVar5;
  undefined1 *puVar6;
  uint uVar7;
  
  puVar6 = (undefined1 *)param_1[2];
  puVar5 = puVar6 + *param_1;
  puVar1 = puVar6;
  if ((*param_2 & 0x10) == 0) {
    do {
      pbVar2 = (byte *)param_2[1];
      if (pbVar2 < (byte *)param_2[2]) {
        param_2[1] = (uint)(pbVar2 + 1);
        uVar7 = (uint)*pbVar2;
LAB_00014094:
        if (puVar6 == puVar5) {
          iVar4 = *param_1;
          goto LAB_00014040;
        }
      }
      else {
        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);
        if (uVar7 != 0xffffffff) goto LAB_00014094;
        if (puVar1 == puVar6) {
          return (int *)0x0;
        }
        if ((*param_2 & 0x20) != 0) {
          return (int *)0x0;
        }
        puVar3 = puVar6;
        if ((int)(char)puVar6[-1] == param_3) break;
        if (puVar6 != puVar5) {
          puVar3 = puVar6 + 1;
          *puVar6 = (char)param_3;
          break;
        }
        iVar4 = *param_1;
        uVar7 = param_3;
LAB_00014040:
        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);
        puVar6 = puVar1 + iVar4;
        param_1[2] = (int)puVar1;
        puVar5 = puVar1 + *param_1;
      }
      puVar3 = puVar6 + 1;
      *puVar6 = (char)uVar7;
      puVar6 = puVar3;
    } while (param_3 != uVar7);
    param_1[1] = (int)puVar3 - (int)puVar1;
  }
  else {
    param_1 = (int *)0x0;
  }
  return param_1;
}


lui gp,0x2
addiu gp,gp,0x414c
addu gp,gp,t9
addiu sp,sp,-0x40
sw ra,0x3c(sp)
sw s8,0x38(sp)
sw s7,0x34(sp)
sw s6,0x30(sp)
sw s5,0x2c(sp)
sw s4,0x28(sp)
sw s3,0x24(sp)
sw s2,0x20(sp)
sw s1,0x1c(sp)
sw s0,0x18(sp)
sw gp,0x10(sp)
lw s4,0x8(a0)
lw s2,0x0(a0)
lw v1,0x0(a1)
andi v1,v1,0x10
bne v1,zero,0x000140ac
_addu s2,s4,s2
or s3,a2,zero
or s0,a1,zero
or s5,a0,zero
or s1,s4,zero
li s6,-0x1
b 0x00014078
_or s7,a2,zero
or a0,s0,zero
lw t9,-0x7df8(gp)
jalr t9
_nop
lw gp,0x10(sp)
bne v0,s6,0x00014094
_or s8,v0,zero
beq s4,s1,0x000140d0
_or v0,zero,zero
lw v0,0x0(s0)
andi v0,v0,0x20
bne v0,zero,0x000140d0
_or v0,zero,zero
lb v0,-0x1(s1)
beq v0,s3,0x000140c4
_or v0,s1,zero
bne s1,s2,0x000140bc
_or s8,s7,zero
lw s1,0x0(s5)
or a1,s5,zero
or a0,s4,zero
lw t9,-0x7f38(gp)
bal 0x00018b88
_nop
lw gp,0x10(sp)
or s4,v0,zero
addu v0,v0,s1
sw s4,0x8(s5)
lw s2,0x0(s5)
addu s2,s4,s2
addiu s1,v0,0x1
beq s3,s8,0x000140a4
_sb s8,0x0(v0)
lw v0,0x4(s0)
lw v1,0x8(s0)
sltu v1,v0,v1
beq v1,zero,0x00013ff4
_addiu v1,v0,0x1
sw v1,0x4(s0)
lbu s8,0x0(v0)
bne s1,s2,0x0001406c
_or v0,s1,zero
b 0x00014040
_lw s1,0x0(s5)
b 0x000140c4
_or v0,s1,zero
b 0x000140d0
_or v0,zero,zero
addiu v0,s1,0x1
sb s3,0x0(s1)
subu s4,v0,s4
sw s4,0x4(s5)
or v0,s5,zero
lw ra,0x3c(sp)
lw s8,0x38(sp)
lw s7,0x34(sp)
lw s6,0x30(sp)
lw s5,0x2c(sp)
lw s4,0x28(sp)
lw s3,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x40
(translation_unit "int * readlinebuffer_delim(int *param_1,uint *param_2,uint param_3)\n\n{\n  undefined1 *puVar1;\n  byte *pbVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  \n  puVar6 = (undefined1 *)param_1[2];\n  puVar5 = puVar6 + *param_1;\n  puVar1 = puVar6;\n  if ((*param_2 & 0x10) == 0) {\n    do {\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    } while (param_3 != uVar7);\n    param_1[1] = (int)puVar3 - (int)puVar1;\n  }\n  else {\n    param_1 = (int *)0x0;\n  }\n  return param_1;\n}\n\n" (function_definition "int * readlinebuffer_delim(int *param_1,uint *param_2,uint param_3)\n\n{\n  undefined1 *puVar1;\n  byte *pbVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  \n  puVar6 = (undefined1 *)param_1[2];\n  puVar5 = puVar6 + *param_1;\n  puVar1 = puVar6;\n  if ((*param_2 & 0x10) == 0) {\n    do {\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    } while (param_3 != uVar7);\n    param_1[1] = (int)puVar3 - (int)puVar1;\n  }\n  else {\n    param_1 = (int *)0x0;\n  }\n  return param_1;\n}" primitive_type (pointer_declarator "* readlinebuffer_delim(int *param_1,uint *param_2,uint param_3)" * (function_declarator "readlinebuffer_delim(int *param_1,uint *param_2,uint param_3)" identifier (parameter_list "(int *param_1,uint *param_2,uint param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) )))) (compound_statement "{\n  undefined1 *puVar1;\n  byte *pbVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  \n  puVar6 = (undefined1 *)param_1[2];\n  puVar5 = puVar6 + *param_1;\n  puVar1 = puVar6;\n  if ((*param_2 & 0x10) == 0) {\n    do {\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    } while (param_3 != uVar7);\n    param_1[1] = (int)puVar3 - (int)puVar1;\n  }\n  else {\n    param_1 = (int *)0x0;\n  }\n  return param_1;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (expression_statement "puVar6 = (undefined1 *)param_1[2];" (assignment_expression "puVar6 = (undefined1 *)param_1[2]" identifier = (cast_expression "(undefined1 *)param_1[2]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar5 = puVar6 + *param_1;" (assignment_expression "puVar5 = puVar6 + *param_1" identifier = (binary_expression "puVar6 + *param_1" identifier + (pointer_expression "*param_1" * identifier))) ;) (expression_statement "puVar1 = puVar6;" (assignment_expression "puVar1 = puVar6" identifier = identifier) ;) (if_statement "if ((*param_2 & 0x10) == 0) {\n    do {\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    } while (param_3 != uVar7);\n    param_1[1] = (int)puVar3 - (int)puVar1;\n  }\n  else {\n    param_1 = (int *)0x0;\n  }" if (parenthesized_expression "((*param_2 & 0x10) == 0)" ( (binary_expression "(*param_2 & 0x10) == 0" (parenthesized_expression "(*param_2 & 0x10)" ( (binary_expression "*param_2 & 0x10" (pointer_expression "*param_2" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    do {\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    } while (param_3 != uVar7);\n    param_1[1] = (int)puVar3 - (int)puVar1;\n  }" { (do_statement "do {\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    } while (param_3 != uVar7);" do (compound_statement "{\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    }" { (expression_statement "pbVar2 = (byte *)param_2[1];" (assignment_expression "pbVar2 = (byte *)param_2[1]" identifier = (cast_expression "(byte *)param_2[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }" if (parenthesized_expression "(pbVar2 < (byte *)param_2[2])" ( (binary_expression "pbVar2 < (byte *)param_2[2]" identifier < (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (compound_statement "{\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }" { (expression_statement "param_2[1] = (uint)(pbVar2 + 1);" (assignment_expression "param_2[1] = (uint)(pbVar2 + 1)" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (call_expression "(uint)(pbVar2 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar2 + 1)" ( (binary_expression "pbVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar7 = (uint)*pbVar2;" (assignment_expression "uVar7 = (uint)*pbVar2" identifier = (binary_expression "(uint)*pbVar2" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (labeled_statement "LAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }" statement_identifier : (if_statement "if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }" if (parenthesized_expression "(puVar6 == puVar5)" ( (binary_expression "puVar6 == puVar5" identifier == identifier) )) (compound_statement "{\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }" { (expression_statement "iVar4 = *param_1;" (assignment_expression "iVar4 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (goto_statement "goto LAB_00014040;" goto statement_identifier ;) }))) }) (else_clause "else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }" else (compound_statement "{\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }" { (expression_statement "uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);" (assignment_expression "uVar7 = (*(code *)PTR___uflow_000302d8)(param_2)" identifier = (call_expression "(*(code *)PTR___uflow_000302d8)(param_2)" (parenthesized_expression "(*(code *)PTR___uflow_000302d8)" ( (pointer_expression "*(code *)PTR___uflow_000302d8" * (cast_expression "(code *)PTR___uflow_000302d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (uVar7 != 0xffffffff) goto LAB_00014094;" if (parenthesized_expression "(uVar7 != 0xffffffff)" ( (binary_expression "uVar7 != 0xffffffff" identifier != number_literal) )) (goto_statement "goto LAB_00014094;" goto statement_identifier ;)) (if_statement "if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }" if (parenthesized_expression "(puVar1 == puVar6)" ( (binary_expression "puVar1 == puVar6" identifier == identifier) )) (compound_statement "{\n          return (int *)0x0;\n        }" { (return_statement "return (int *)0x0;" return (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }" if (parenthesized_expression "((*param_2 & 0x20) != 0)" ( (binary_expression "(*param_2 & 0x20) != 0" (parenthesized_expression "(*param_2 & 0x20)" ( (binary_expression "*param_2 & 0x20" (pointer_expression "*param_2" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n          return (int *)0x0;\n        }" { (return_statement "return (int *)0x0;" return (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar3 = puVar6;" (assignment_expression "puVar3 = puVar6" identifier = identifier) ;) (if_statement "if ((int)(char)puVar6[-1] == param_3) break;" if (parenthesized_expression "((int)(char)puVar6[-1] == param_3)" ( (binary_expression "(int)(char)puVar6[-1] == param_3" (cast_expression "(int)(char)puVar6[-1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)puVar6[-1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "puVar6[-1]" identifier [ number_literal ]))) == identifier) )) (break_statement "break;" break ;)) (if_statement "if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }" if (parenthesized_expression "(puVar6 != puVar5)" ( (binary_expression "puVar6 != puVar5" identifier != identifier) )) (compound_statement "{\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }" { (expression_statement "puVar3 = puVar6 + 1;" (assignment_expression "puVar3 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "*puVar6 = (char)param_3;" (assignment_expression "*puVar6 = (char)param_3" (pointer_expression "*puVar6" * identifier) = (cast_expression "(char)param_3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (break_statement "break;" break ;) })) (expression_statement "iVar4 = *param_1;" (assignment_expression "iVar4 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar7 = param_3;" (assignment_expression "uVar7 = param_3" identifier = identifier) ;) (labeled_statement "LAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);" statement_identifier : (expression_statement "puVar1 = (undefined1 *)x2realloc(puVar1,param_1);" (assignment_expression "puVar1 = (undefined1 *)x2realloc(puVar1,param_1)" identifier = (cast_expression "(undefined1 *)x2realloc(puVar1,param_1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "x2realloc(puVar1,param_1)" identifier (argument_list "(puVar1,param_1)" ( identifier , identifier ))))) ;)) (expression_statement "puVar6 = puVar1 + iVar4;" (assignment_expression "puVar6 = puVar1 + iVar4" identifier = (binary_expression "puVar1 + iVar4" identifier + identifier)) ;) (expression_statement "param_1[2] = (int)puVar1;" (assignment_expression "param_1[2] = (int)puVar1" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar5 = puVar1 + *param_1;" (assignment_expression "puVar5 = puVar1 + *param_1" identifier = (binary_expression "puVar1 + *param_1" identifier + (pointer_expression "*param_1" * identifier))) ;) }))) (expression_statement "puVar3 = puVar6 + 1;" (assignment_expression "puVar3 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "*puVar6 = (char)uVar7;" (assignment_expression "*puVar6 = (char)uVar7" (pointer_expression "*puVar6" * identifier) = (cast_expression "(char)uVar7" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar6 = puVar3;" (assignment_expression "puVar6 = puVar3" identifier = identifier) ;) }) while (parenthesized_expression "(param_3 != uVar7)" ( (binary_expression "param_3 != uVar7" identifier != identifier) )) ;) (expression_statement "param_1[1] = (int)puVar3 - (int)puVar1;" (assignment_expression "param_1[1] = (int)puVar3 - (int)puVar1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "(int)puVar3 - (int)puVar1" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\n    param_1 = (int *)0x0;\n  }" else (compound_statement "{\n    param_1 = (int *)0x0;\n  }" { (expression_statement "param_1 = (int *)0x0;" (assignment_expression "param_1 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "linebuffer * readlinebuffer_delim(linebuffer *linebuffer,FILE *stream,char delimiter)\n\n{\n  char *p;\n  byte *pbVar1;\n  undefined3 in_register_00000018;\n  uint uVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  char *pcVar6;\n  uint uVar7;\n  \n  uVar2 = CONCAT31(in_register_00000018,delimiter);\n  pcVar6 = linebuffer->buffer;\n  pcVar5 = pcVar6 + linebuffer->size;\n  p = pcVar6;\n  if ((stream->_flags & 0x10U) == 0) {\n    do {\n      pbVar1 = (byte *)stream->_IO_read_ptr;\n      if (pbVar1 < stream->_IO_read_end) {\n        stream->_IO_read_ptr = (char *)(pbVar1 + 1);\n        uVar7 = (uint)*pbVar1;\nLAB_00014094:\n        if (pcVar6 == pcVar5) {\n          sVar4 = linebuffer->size;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(stream);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (p == pcVar6) {\n          return (linebuffer *)0x0;\n        }\n        if ((stream->_flags & 0x20U) != 0) {\n          return (linebuffer *)0x0;\n        }\n        pcVar3 = pcVar6;\n        if ((int)pcVar6[-1] == uVar2) break;\n        if (pcVar6 != pcVar5) {\n          pcVar3 = pcVar6 + 1;\n          *pcVar6 = delimiter;\n          break;\n        }\n        sVar4 = linebuffer->size;\n        uVar7 = uVar2;\nLAB_00014040:\n        p = (char *)x2realloc(p,&linebuffer->size);\n        pcVar6 = p + sVar4;\n        linebuffer->buffer = p;\n        pcVar5 = p + linebuffer->size;\n      }\n      pcVar3 = pcVar6 + 1;\n      *pcVar6 = (char)uVar7;\n      pcVar6 = pcVar3;\n    } while (uVar2 != uVar7);\n    linebuffer->length = (int)pcVar3 - (int)p;\n  }\n  else {\n    linebuffer = (linebuffer *)0x0;\n  }\n  return linebuffer;\n}\n\n" (function_definition "linebuffer * readlinebuffer_delim(linebuffer *linebuffer,FILE *stream,char delimiter)\n\n{\n  char *p;\n  byte *pbVar1;\n  undefined3 in_register_00000018;\n  uint uVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  char *pcVar6;\n  uint uVar7;\n  \n  uVar2 = CONCAT31(in_register_00000018,delimiter);\n  pcVar6 = linebuffer->buffer;\n  pcVar5 = pcVar6 + linebuffer->size;\n  p = pcVar6;\n  if ((stream->_flags & 0x10U) == 0) {\n    do {\n      pbVar1 = (byte *)stream->_IO_read_ptr;\n      if (pbVar1 < stream->_IO_read_end) {\n        stream->_IO_read_ptr = (char *)(pbVar1 + 1);\n        uVar7 = (uint)*pbVar1;\nLAB_00014094:\n        if (pcVar6 == pcVar5) {\n          sVar4 = linebuffer->size;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(stream);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (p == pcVar6) {\n          return (linebuffer *)0x0;\n        }\n        if ((stream->_flags & 0x20U) != 0) {\n          return (linebuffer *)0x0;\n        }\n        pcVar3 = pcVar6;\n        if ((int)pcVar6[-1] == uVar2) break;\n        if (pcVar6 != pcVar5) {\n          pcVar3 = pcVar6 + 1;\n          *pcVar6 = delimiter;\n          break;\n        }\n        sVar4 = linebuffer->size;\n        uVar7 = uVar2;\nLAB_00014040:\n        p = (char *)x2realloc(p,&linebuffer->size);\n        pcVar6 = p + sVar4;\n        linebuffer->buffer = p;\n        pcVar5 = p + linebuffer->size;\n      }\n      pcVar3 = pcVar6 + 1;\n      *pcVar6 = (char)uVar7;\n      pcVar6 = pcVar3;\n    } while (uVar2 != uVar7);\n    linebuffer->length = (int)pcVar3 - (int)p;\n  }\n  else {\n    linebuffer = (linebuffer *)0x0;\n  }\n  return linebuffer;\n}" type_identifier (pointer_declarator "* readlinebuffer_delim(linebuffer *linebuffer,FILE *stream,char delimiter)" * (function_declarator "readlinebuffer_delim(linebuffer *linebuffer,FILE *stream,char delimiter)" identifier (parameter_list "(linebuffer *linebuffer,FILE *stream,char delimiter)" ( (parameter_declaration "linebuffer *linebuffer" type_identifier (pointer_declarator "*linebuffer" * identifier)) , (parameter_declaration "FILE *stream" type_identifier (pointer_declarator "*stream" * identifier)) , (parameter_declaration "char delimiter" primitive_type identifier) )))) (compound_statement "{\n  char *p;\n  byte *pbVar1;\n  undefined3 in_register_00000018;\n  uint uVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  char *pcVar6;\n  uint uVar7;\n  \n  uVar2 = CONCAT31(in_register_00000018,delimiter);\n  pcVar6 = linebuffer->buffer;\n  pcVar5 = pcVar6 + linebuffer->size;\n  p = pcVar6;\n  if ((stream->_flags & 0x10U) == 0) {\n    do {\n      pbVar1 = (byte *)stream->_IO_read_ptr;\n      if (pbVar1 < stream->_IO_read_end) {\n        stream->_IO_read_ptr = (char *)(pbVar1 + 1);\n        uVar7 = (uint)*pbVar1;\nLAB_00014094:\n        if (pcVar6 == pcVar5) {\n          sVar4 = linebuffer->size;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(stream);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (p == pcVar6) {\n          return (linebuffer *)0x0;\n        }\n        if ((stream->_flags & 0x20U) != 0) {\n          return (linebuffer *)0x0;\n        }\n        pcVar3 = pcVar6;\n        if ((int)pcVar6[-1] == uVar2) break;\n        if (pcVar6 != pcVar5) {\n          pcVar3 = pcVar6 + 1;\n          *pcVar6 = delimiter;\n          break;\n        }\n        sVar4 = linebuffer->size;\n        uVar7 = uVar2;\nLAB_00014040:\n        p = (char *)x2realloc(p,&linebuffer->size);\n        pcVar6 = p + sVar4;\n        linebuffer->buffer = p;\n        pcVar5 = p + linebuffer->size;\n      }\n      pcVar3 = pcVar6 + 1;\n      *pcVar6 = (char)uVar7;\n      pcVar6 = pcVar3;\n    } while (uVar2 != uVar7);\n    linebuffer->length = (int)pcVar3 - (int)p;\n  }\n  else {\n    linebuffer = (linebuffer *)0x0;\n  }\n  return linebuffer;\n}" { (declaration "char *p;" primitive_type (pointer_declarator "*p" * identifier) ;) (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "undefined3 in_register_00000018;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (expression_statement "uVar2 = CONCAT31(in_register_00000018,delimiter);" (assignment_expression "uVar2 = CONCAT31(in_register_00000018,delimiter)" identifier = (call_expression "CONCAT31(in_register_00000018,delimiter)" identifier (argument_list "(in_register_00000018,delimiter)" ( identifier , identifier )))) ;) (expression_statement "pcVar6 = linebuffer->buffer;" (assignment_expression "pcVar6 = linebuffer->buffer" identifier = (field_expression "linebuffer->buffer" identifier -> field_identifier)) ;) (expression_statement "pcVar5 = pcVar6 + linebuffer->size;" (assignment_expression "pcVar5 = pcVar6 + linebuffer->size" identifier = (binary_expression "pcVar6 + linebuffer->size" identifier + (field_expression "linebuffer->size" identifier -> field_identifier))) ;) (expression_statement "p = pcVar6;" (assignment_expression "p = pcVar6" identifier = identifier) ;) (if_statement "if ((stream->_flags & 0x10U) == 0) {\n    do {\n      pbVar1 = (byte *)stream->_IO_read_ptr;\n      if (pbVar1 < stream->_IO_read_end) {\n        stream->_IO_read_ptr = (char *)(pbVar1 + 1);\n        uVar7 = (uint)*pbVar1;\nLAB_00014094:\n        if (pcVar6 == pcVar5) {\n          sVar4 = linebuffer->size;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(stream);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (p == pcVar6) {\n          return (linebuffer *)0x0;\n        }\n        if ((stream->_flags & 0x20U) != 0) {\n          return (linebuffer *)0x0;\n        }\n        pcVar3 = pcVar6;\n        if ((int)pcVar6[-1] == uVar2) break;\n        if (pcVar6 != pcVar5) {\n          pcVar3 = pcVar6 + 1;\n          *pcVar6 = delimiter;\n          break;\n        }\n        sVar4 = linebuffer->size;\n        uVar7 = uVar2;\nLAB_00014040:\n        p = (char *)x2realloc(p,&linebuffer->size);\n        pcVar6 = p + sVar4;\n        linebuffer->buffer = p;\n        pcVar5 = p + linebuffer->size;\n      }\n      pcVar3 = pcVar6 + 1;\n      *pcVar6 = (char)uVar7;\n      pcVar6 = pcVar3;\n    } while (uVar2 != uVar7);\n    linebuffer->length = (int)pcVar3 - (int)p;\n  }\n  else {\n    linebuffer = (linebuffer *)0x0;\n  }" if (parenthesized_expression "((stream->_flags & 0x10U) == 0)" ( (binary_expression "(stream->_flags & 0x10U) == 0" (parenthesized_expression "(stream->_flags & 0x10U)" ( (binary_expression "stream->_flags & 0x10U" (field_expression "stream->_flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    do {\n      pbVar1 = (byte *)stream->_IO_read_ptr;\n      if (pbVar1 < stream->_IO_read_end) {\n        stream->_IO_read_ptr = (char *)(pbVar1 + 1);\n        uVar7 = (uint)*pbVar1;\nLAB_00014094:\n        if (pcVar6 == pcVar5) {\n          sVar4 = linebuffer->size;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(stream);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (p == pcVar6) {\n          return (linebuffer *)0x0;\n        }\n        if ((stream->_flags & 0x20U) != 0) {\n          return (linebuffer *)0x0;\n        }\n        pcVar3 = pcVar6;\n        if ((int)pcVar6[-1] == uVar2) break;\n        if (pcVar6 != pcVar5) {\n          pcVar3 = pcVar6 + 1;\n          *pcVar6 = delimiter;\n          break;\n        }\n        sVar4 = linebuffer->size;\n        uVar7 = uVar2;\nLAB_00014040:\n        p = (char *)x2realloc(p,&linebuffer->size);\n        pcVar6 = p + sVar4;\n        linebuffer->buffer = p;\n        pcVar5 = p + linebuffer->size;\n      }\n      pcVar3 = pcVar6 + 1;\n      *pcVar6 = (char)uVar7;\n      pcVar6 = pcVar3;\n    } while (uVar2 != uVar7);\n    linebuffer->length = (int)pcVar3 - (int)p;\n  }" { (do_statement "do {\n      pbVar1 = (byte *)stream->_IO_read_ptr;\n      if (pbVar1 < stream->_IO_read_end) {\n        stream->_IO_read_ptr = (char *)(pbVar1 + 1);\n        uVar7 = (uint)*pbVar1;\nLAB_00014094:\n        if (pcVar6 == pcVar5) {\n          sVar4 = linebuffer->size;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(stream);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (p == pcVar6) {\n          return (linebuffer *)0x0;\n        }\n        if ((stream->_flags & 0x20U) != 0) {\n          return (linebuffer *)0x0;\n        }\n        pcVar3 = pcVar6;\n        if ((int)pcVar6[-1] == uVar2) break;\n        if (pcVar6 != pcVar5) {\n          pcVar3 = pcVar6 + 1;\n          *pcVar6 = delimiter;\n          break;\n        }\n        sVar4 = linebuffer->size;\n        uVar7 = uVar2;\nLAB_00014040:\n        p = (char *)x2realloc(p,&linebuffer->size);\n        pcVar6 = p + sVar4;\n        linebuffer->buffer = p;\n        pcVar5 = p + linebuffer->size;\n      }\n      pcVar3 = pcVar6 + 1;\n      *pcVar6 = (char)uVar7;\n      pcVar6 = pcVar3;\n    } while (uVar2 != uVar7);" do (compound_statement "{\n      pbVar1 = (byte *)stream->_IO_read_ptr;\n      if (pbVar1 < stream->_IO_read_end) {\n        stream->_IO_read_ptr = (char *)(pbVar1 + 1);\n        uVar7 = (uint)*pbVar1;\nLAB_00014094:\n        if (pcVar6 == pcVar5) {\n          sVar4 = linebuffer->size;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(stream);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (p == pcVar6) {\n          return (linebuffer *)0x0;\n        }\n        if ((stream->_flags & 0x20U) != 0) {\n          return (linebuffer *)0x0;\n        }\n        pcVar3 = pcVar6;\n        if ((int)pcVar6[-1] == uVar2) break;\n        if (pcVar6 != pcVar5) {\n          pcVar3 = pcVar6 + 1;\n          *pcVar6 = delimiter;\n          break;\n        }\n        sVar4 = linebuffer->size;\n        uVar7 = uVar2;\nLAB_00014040:\n        p = (char *)x2realloc(p,&linebuffer->size);\n        pcVar6 = p + sVar4;\n        linebuffer->buffer = p;\n        pcVar5 = p + linebuffer->size;\n      }\n      pcVar3 = pcVar6 + 1;\n      *pcVar6 = (char)uVar7;\n      pcVar6 = pcVar3;\n    }" { (expression_statement "pbVar1 = (byte *)stream->_IO_read_ptr;" (assignment_expression "pbVar1 = (byte *)stream->_IO_read_ptr" identifier = (cast_expression "(byte *)stream->_IO_read_ptr" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "stream->_IO_read_ptr" identifier -> field_identifier))) ;) (if_statement "if (pbVar1 < stream->_IO_read_end) {\n        stream->_IO_read_ptr = (char *)(pbVar1 + 1);\n        uVar7 = (uint)*pbVar1;\nLAB_00014094:\n        if (pcVar6 == pcVar5) {\n          sVar4 = linebuffer->size;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(stream);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (p == pcVar6) {\n          return (linebuffer *)0x0;\n        }\n        if ((stream->_flags & 0x20U) != 0) {\n          return (linebuffer *)0x0;\n        }\n        pcVar3 = pcVar6;\n        if ((int)pcVar6[-1] == uVar2) break;\n        if (pcVar6 != pcVar5) {\n          pcVar3 = pcVar6 + 1;\n          *pcVar6 = delimiter;\n          break;\n        }\n        sVar4 = linebuffer->size;\n        uVar7 = uVar2;\nLAB_00014040:\n        p = (char *)x2realloc(p,&linebuffer->size);\n        pcVar6 = p + sVar4;\n        linebuffer->buffer = p;\n        pcVar5 = p + linebuffer->size;\n      }" if (parenthesized_expression "(pbVar1 < stream->_IO_read_end)" ( (binary_expression "pbVar1 < stream->_IO_read_end" identifier < (field_expression "stream->_IO_read_end" identifier -> field_identifier)) )) (compound_statement "{\n        stream->_IO_read_ptr = (char *)(pbVar1 + 1);\n        uVar7 = (uint)*pbVar1;\nLAB_00014094:\n        if (pcVar6 == pcVar5) {\n          sVar4 = linebuffer->size;\n          goto LAB_00014040;\n        }\n      }" { (expression_statement "stream->_IO_read_ptr = (char *)(pbVar1 + 1);" (assignment_expression "stream->_IO_read_ptr = (char *)(pbVar1 + 1)" (field_expression "stream->_IO_read_ptr" identifier -> field_identifier) = (cast_expression "(char *)(pbVar1 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar1 + 1)" ( (binary_expression "pbVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar7 = (uint)*pbVar1;" (assignment_expression "uVar7 = (uint)*pbVar1" identifier = (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (labeled_statement "LAB_00014094:\n        if (pcVar6 == pcVar5) {\n          sVar4 = linebuffer->size;\n          goto LAB_00014040;\n        }" statement_identifier : (if_statement "if (pcVar6 == pcVar5) {\n          sVar4 = linebuffer->size;\n          goto LAB_00014040;\n        }" if (parenthesized_expression "(pcVar6 == pcVar5)" ( (binary_expression "pcVar6 == pcVar5" identifier == identifier) )) (compound_statement "{\n          sVar4 = linebuffer->size;\n          goto LAB_00014040;\n        }" { (expression_statement "sVar4 = linebuffer->size;" (assignment_expression "sVar4 = linebuffer->size" identifier = (field_expression "linebuffer->size" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00014040;" goto statement_identifier ;) }))) }) (else_clause "else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(stream);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (p == pcVar6) {\n          return (linebuffer *)0x0;\n        }\n        if ((stream->_flags & 0x20U) != 0) {\n          return (linebuffer *)0x0;\n        }\n        pcVar3 = pcVar6;\n        if ((int)pcVar6[-1] == uVar2) break;\n        if (pcVar6 != pcVar5) {\n          pcVar3 = pcVar6 + 1;\n          *pcVar6 = delimiter;\n          break;\n        }\n        sVar4 = linebuffer->size;\n        uVar7 = uVar2;\nLAB_00014040:\n        p = (char *)x2realloc(p,&linebuffer->size);\n        pcVar6 = p + sVar4;\n        linebuffer->buffer = p;\n        pcVar5 = p + linebuffer->size;\n      }" else (compound_statement "{\n        uVar7 = (*(code *)PTR___uflow_000302d8)(stream);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (p == pcVar6) {\n          return (linebuffer *)0x0;\n        }\n        if ((stream->_flags & 0x20U) != 0) {\n          return (linebuffer *)0x0;\n        }\n        pcVar3 = pcVar6;\n        if ((int)pcVar6[-1] == uVar2) break;\n        if (pcVar6 != pcVar5) {\n          pcVar3 = pcVar6 + 1;\n          *pcVar6 = delimiter;\n          break;\n        }\n        sVar4 = linebuffer->size;\n        uVar7 = uVar2;\nLAB_00014040:\n        p = (char *)x2realloc(p,&linebuffer->size);\n        pcVar6 = p + sVar4;\n        linebuffer->buffer = p;\n        pcVar5 = p + linebuffer->size;\n      }" { (expression_statement "uVar7 = (*(code *)PTR___uflow_000302d8)(stream);" (assignment_expression "uVar7 = (*(code *)PTR___uflow_000302d8)(stream)" identifier = (call_expression "(*(code *)PTR___uflow_000302d8)(stream)" (parenthesized_expression "(*(code *)PTR___uflow_000302d8)" ( (pointer_expression "*(code *)PTR___uflow_000302d8" * (cast_expression "(code *)PTR___uflow_000302d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(stream)" ( identifier )))) ;) (if_statement "if (uVar7 != 0xffffffff) goto LAB_00014094;" if (parenthesized_expression "(uVar7 != 0xffffffff)" ( (binary_expression "uVar7 != 0xffffffff" identifier != number_literal) )) (goto_statement "goto LAB_00014094;" goto statement_identifier ;)) (if_statement "if (p == pcVar6) {\n          return (linebuffer *)0x0;\n        }" if (parenthesized_expression "(p == pcVar6)" ( (binary_expression "p == pcVar6" identifier == identifier) )) (compound_statement "{\n          return (linebuffer *)0x0;\n        }" { (return_statement "return (linebuffer *)0x0;" return (cast_expression "(linebuffer *)0x0" ( (type_descriptor "linebuffer *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((stream->_flags & 0x20U) != 0) {\n          return (linebuffer *)0x0;\n        }" if (parenthesized_expression "((stream->_flags & 0x20U) != 0)" ( (binary_expression "(stream->_flags & 0x20U) != 0" (parenthesized_expression "(stream->_flags & 0x20U)" ( (binary_expression "stream->_flags & 0x20U" (field_expression "stream->_flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n          return (linebuffer *)0x0;\n        }" { (return_statement "return (linebuffer *)0x0;" return (cast_expression "(linebuffer *)0x0" ( (type_descriptor "linebuffer *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pcVar3 = pcVar6;" (assignment_expression "pcVar3 = pcVar6" identifier = identifier) ;) (if_statement "if ((int)pcVar6[-1] == uVar2) break;" if (parenthesized_expression "((int)pcVar6[-1] == uVar2)" ( (binary_expression "(int)pcVar6[-1] == uVar2" (cast_expression "(int)pcVar6[-1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pcVar6[-1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) (if_statement "if (pcVar6 != pcVar5) {\n          pcVar3 = pcVar6 + 1;\n          *pcVar6 = delimiter;\n          break;\n        }" if (parenthesized_expression "(pcVar6 != pcVar5)" ( (binary_expression "pcVar6 != pcVar5" identifier != identifier) )) (compound_statement "{\n          pcVar3 = pcVar6 + 1;\n          *pcVar6 = delimiter;\n          break;\n        }" { (expression_statement "pcVar3 = pcVar6 + 1;" (assignment_expression "pcVar3 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar6 = delimiter;" (assignment_expression "*pcVar6 = delimiter" (pointer_expression "*pcVar6" * identifier) = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "sVar4 = linebuffer->size;" (assignment_expression "sVar4 = linebuffer->size" identifier = (field_expression "linebuffer->size" identifier -> field_identifier)) ;) (expression_statement "uVar7 = uVar2;" (assignment_expression "uVar7 = uVar2" identifier = identifier) ;) (labeled_statement "LAB_00014040:\n        p = (char *)x2realloc(p,&linebuffer->size);" statement_identifier : (expression_statement "p = (char *)x2realloc(p,&linebuffer->size);" (assignment_expression "p = (char *)x2realloc(p,&linebuffer->size)" identifier = (cast_expression "(char *)x2realloc(p,&linebuffer->size)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "x2realloc(p,&linebuffer->size)" identifier (argument_list "(p,&linebuffer->size)" ( identifier , (pointer_expression "&linebuffer->size" & (field_expression "linebuffer->size" identifier -> field_identifier)) ))))) ;)) (expression_statement "pcVar6 = p + sVar4;" (assignment_expression "pcVar6 = p + sVar4" identifier = (binary_expression "p + sVar4" identifier + identifier)) ;) (expression_statement "linebuffer->buffer = p;" (assignment_expression "linebuffer->buffer = p" (field_expression "linebuffer->buffer" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar5 = p + linebuffer->size;" (assignment_expression "pcVar5 = p + linebuffer->size" identifier = (binary_expression "p + linebuffer->size" identifier + (field_expression "linebuffer->size" identifier -> field_identifier))) ;) }))) (expression_statement "pcVar3 = pcVar6 + 1;" (assignment_expression "pcVar3 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar6 = (char)uVar7;" (assignment_expression "*pcVar6 = (char)uVar7" (pointer_expression "*pcVar6" * identifier) = (cast_expression "(char)uVar7" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pcVar6 = pcVar3;" (assignment_expression "pcVar6 = pcVar3" identifier = identifier) ;) }) while (parenthesized_expression "(uVar2 != uVar7)" ( (binary_expression "uVar2 != uVar7" identifier != identifier) )) ;) (expression_statement "linebuffer->length = (int)pcVar3 - (int)p;" (assignment_expression "linebuffer->length = (int)pcVar3 - (int)p" (field_expression "linebuffer->length" identifier -> field_identifier) = (binary_expression "(int)pcVar3 - (int)p" (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\n    linebuffer = (linebuffer *)0x0;\n  }" else (compound_statement "{\n    linebuffer = (linebuffer *)0x0;\n  }" { (expression_statement "linebuffer = (linebuffer *)0x0;" (assignment_expression "linebuffer = (linebuffer *)0x0" identifier = (cast_expression "(linebuffer *)0x0" ( (type_descriptor "linebuffer *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (return_statement "return linebuffer;" return identifier ;) })))
(translation_unit "int * readlinebuffer_delim(int *param_1,uint *param_2,uint param_3)\n\n{\n  undefined1 *puVar1;\n  byte *pbVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  \n  puVar6 = (undefined1 *)param_1[2];\n  puVar5 = puVar6 + *param_1;\n  puVar1 = puVar6;\n  if ((*param_2 & 0x10) == 0) {\n    do {\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    } while (param_3 != uVar7);\n    param_1[1] = (int)puVar3 - (int)puVar1;\n  }\n  else {\n    param_1 = (int *)0x0;\n  }\n  return param_1;\n}\n\n" (function_definition "int * readlinebuffer_delim(int *param_1,uint *param_2,uint param_3)\n\n{\n  undefined1 *puVar1;\n  byte *pbVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  \n  puVar6 = (undefined1 *)param_1[2];\n  puVar5 = puVar6 + *param_1;\n  puVar1 = puVar6;\n  if ((*param_2 & 0x10) == 0) {\n    do {\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    } while (param_3 != uVar7);\n    param_1[1] = (int)puVar3 - (int)puVar1;\n  }\n  else {\n    param_1 = (int *)0x0;\n  }\n  return param_1;\n}" primitive_type (pointer_declarator "* readlinebuffer_delim(int *param_1,uint *param_2,uint param_3)" * (function_declarator "readlinebuffer_delim(int *param_1,uint *param_2,uint param_3)" identifier (parameter_list "(int *param_1,uint *param_2,uint param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) )))) (compound_statement "{\n  undefined1 *puVar1;\n  byte *pbVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  \n  puVar6 = (undefined1 *)param_1[2];\n  puVar5 = puVar6 + *param_1;\n  puVar1 = puVar6;\n  if ((*param_2 & 0x10) == 0) {\n    do {\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    } while (param_3 != uVar7);\n    param_1[1] = (int)puVar3 - (int)puVar1;\n  }\n  else {\n    param_1 = (int *)0x0;\n  }\n  return param_1;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (expression_statement "puVar6 = (undefined1 *)param_1[2];" (assignment_expression "puVar6 = (undefined1 *)param_1[2]" identifier = (cast_expression "(undefined1 *)param_1[2]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar5 = puVar6 + *param_1;" (assignment_expression "puVar5 = puVar6 + *param_1" identifier = (binary_expression "puVar6 + *param_1" identifier + (pointer_expression "*param_1" * identifier))) ;) (expression_statement "puVar1 = puVar6;" (assignment_expression "puVar1 = puVar6" identifier = identifier) ;) (if_statement "if ((*param_2 & 0x10) == 0) {\n    do {\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    } while (param_3 != uVar7);\n    param_1[1] = (int)puVar3 - (int)puVar1;\n  }\n  else {\n    param_1 = (int *)0x0;\n  }" if (parenthesized_expression "((*param_2 & 0x10) == 0)" ( (binary_expression "(*param_2 & 0x10) == 0" (parenthesized_expression "(*param_2 & 0x10)" ( (binary_expression "*param_2 & 0x10" (pointer_expression "*param_2" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    do {\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    } while (param_3 != uVar7);\n    param_1[1] = (int)puVar3 - (int)puVar1;\n  }" { (do_statement "do {\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    } while (param_3 != uVar7);" do (compound_statement "{\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    }" { (expression_statement "pbVar2 = (byte *)param_2[1];" (assignment_expression "pbVar2 = (byte *)param_2[1]" identifier = (cast_expression "(byte *)param_2[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }" if (parenthesized_expression "(pbVar2 < (byte *)param_2[2])" ( (binary_expression "pbVar2 < (byte *)param_2[2]" identifier < (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (compound_statement "{\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }" { (expression_statement "param_2[1] = (uint)(pbVar2 + 1);" (assignment_expression "param_2[1] = (uint)(pbVar2 + 1)" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (call_expression "(uint)(pbVar2 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar2 + 1)" ( (binary_expression "pbVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar7 = (uint)*pbVar2;" (assignment_expression "uVar7 = (uint)*pbVar2" identifier = (binary_expression "(uint)*pbVar2" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (labeled_statement "LAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }" statement_identifier : (if_statement "if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }" if (parenthesized_expression "(puVar6 == puVar5)" ( (binary_expression "puVar6 == puVar5" identifier == identifier) )) (compound_statement "{\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }" { (expression_statement "iVar4 = *param_1;" (assignment_expression "iVar4 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (goto_statement "goto LAB_00014040;" goto statement_identifier ;) }))) }) (else_clause "else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }" else (compound_statement "{\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }" { (expression_statement "uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);" (assignment_expression "uVar7 = (*(code *)PTR___uflow_000302d8)(param_2)" identifier = (call_expression "(*(code *)PTR___uflow_000302d8)(param_2)" (parenthesized_expression "(*(code *)PTR___uflow_000302d8)" ( (pointer_expression "*(code *)PTR___uflow_000302d8" * (cast_expression "(code *)PTR___uflow_000302d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (uVar7 != 0xffffffff) goto LAB_00014094;" if (parenthesized_expression "(uVar7 != 0xffffffff)" ( (binary_expression "uVar7 != 0xffffffff" identifier != number_literal) )) (goto_statement "goto LAB_00014094;" goto statement_identifier ;)) (if_statement "if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }" if (parenthesized_expression "(puVar1 == puVar6)" ( (binary_expression "puVar1 == puVar6" identifier == identifier) )) (compound_statement "{\n          return (int *)0x0;\n        }" { (return_statement "return (int *)0x0;" return (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }" if (parenthesized_expression "((*param_2 & 0x20) != 0)" ( (binary_expression "(*param_2 & 0x20) != 0" (parenthesized_expression "(*param_2 & 0x20)" ( (binary_expression "*param_2 & 0x20" (pointer_expression "*param_2" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n          return (int *)0x0;\n        }" { (return_statement "return (int *)0x0;" return (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar3 = puVar6;" (assignment_expression "puVar3 = puVar6" identifier = identifier) ;) (if_statement "if ((int)(char)puVar6[-1] == param_3) break;" if (parenthesized_expression "((int)(char)puVar6[-1] == param_3)" ( (binary_expression "(int)(char)puVar6[-1] == param_3" (cast_expression "(int)(char)puVar6[-1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)puVar6[-1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "puVar6[-1]" identifier [ number_literal ]))) == identifier) )) (break_statement "break;" break ;)) (if_statement "if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }" if (parenthesized_expression "(puVar6 != puVar5)" ( (binary_expression "puVar6 != puVar5" identifier != identifier) )) (compound_statement "{\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }" { (expression_statement "puVar3 = puVar6 + 1;" (assignment_expression "puVar3 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "*puVar6 = (char)param_3;" (assignment_expression "*puVar6 = (char)param_3" (pointer_expression "*puVar6" * identifier) = (cast_expression "(char)param_3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (break_statement "break;" break ;) })) (expression_statement "iVar4 = *param_1;" (assignment_expression "iVar4 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar7 = param_3;" (assignment_expression "uVar7 = param_3" identifier = identifier) ;) (labeled_statement "LAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);" statement_identifier : (expression_statement "puVar1 = (undefined1 *)x2realloc(puVar1,param_1);" (assignment_expression "puVar1 = (undefined1 *)x2realloc(puVar1,param_1)" identifier = (cast_expression "(undefined1 *)x2realloc(puVar1,param_1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "x2realloc(puVar1,param_1)" identifier (argument_list "(puVar1,param_1)" ( identifier , identifier ))))) ;)) (expression_statement "puVar6 = puVar1 + iVar4;" (assignment_expression "puVar6 = puVar1 + iVar4" identifier = (binary_expression "puVar1 + iVar4" identifier + identifier)) ;) (expression_statement "param_1[2] = (int)puVar1;" (assignment_expression "param_1[2] = (int)puVar1" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar5 = puVar1 + *param_1;" (assignment_expression "puVar5 = puVar1 + *param_1" identifier = (binary_expression "puVar1 + *param_1" identifier + (pointer_expression "*param_1" * identifier))) ;) }))) (expression_statement "puVar3 = puVar6 + 1;" (assignment_expression "puVar3 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "*puVar6 = (char)uVar7;" (assignment_expression "*puVar6 = (char)uVar7" (pointer_expression "*puVar6" * identifier) = (cast_expression "(char)uVar7" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar6 = puVar3;" (assignment_expression "puVar6 = puVar3" identifier = identifier) ;) }) while (parenthesized_expression "(param_3 != uVar7)" ( (binary_expression "param_3 != uVar7" identifier != identifier) )) ;) (expression_statement "param_1[1] = (int)puVar3 - (int)puVar1;" (assignment_expression "param_1[1] = (int)puVar3 - (int)puVar1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "(int)puVar3 - (int)puVar1" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\n    param_1 = (int *)0x0;\n  }" else (compound_statement "{\n    param_1 = (int *)0x0;\n  }" { (expression_statement "param_1 = (int *)0x0;" (assignment_expression "param_1 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (return_statement "return param_1;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) == LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) != LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) == IDENT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int * readlinebuffer_delim(int *param_1,uint *param_2,uint param_3)\n\n{\n  undefined1 *puVar1;\n  byte *pbVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  \n  puVar6 = (undefined1 *)param_1[2];\n  puVar5 = puVar6 + *param_1;\n  puVar1 = puVar6;\n  if ((*param_2 & 0x10) == 0) {\n    do {\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    } while (param_3 != uVar7);\n    param_1[1] = (int)puVar3 - (int)puVar1;\n  }\n  else {\n    param_1 = (int *)0x0;\n  }\n  return param_1;\n}" (primitive_type "int") (pointer_declarator "* readlinebuffer_delim(int *param_1,uint *param_2,uint param_3)" (* "*") (function_declarator "readlinebuffer_delim(int *param_1,uint *param_2,uint param_3)" (identifier "readlinebuffer_delim") (parameter_list "(int *param_1,uint *param_2,uint param_3)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")")))) (compound_statement "{\n  undefined1 *puVar1;\n  byte *pbVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  \n  puVar6 = (undefined1 *)param_1[2];\n  puVar5 = puVar6 + *param_1;\n  puVar1 = puVar6;\n  if ((*param_2 & 0x10) == 0) {\n    do {\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    } while (param_3 != uVar7);\n    param_1[1] = (int)puVar3 - (int)puVar1;\n  }\n  else {\n    param_1 = (int *)0x0;\n  }\n  return param_1;\n}" ({ "{") (declaration "undefined1 *puVar1;" (type_identifier "undefined1") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "byte *pbVar2;" (type_identifier "byte") (pointer_declarator "*pbVar2" (* "*") (identifier "pbVar2")) (; ";")) (declaration "undefined1 *puVar3;" (type_identifier "undefined1") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined1 *puVar5;" (type_identifier "undefined1") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined1 *puVar6;" (type_identifier "undefined1") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (expression_statement "puVar6 = (undefined1 *)param_1[2];" (assignment_expression "puVar6 = (undefined1 *)param_1[2]" (identifier "puVar6") (= "=") (cast_expression "(undefined1 *)param_1[2]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "puVar5 = puVar6 + *param_1;" (assignment_expression "puVar5 = puVar6 + *param_1" (identifier "puVar5") (= "=") (binary_expression "puVar6 + *param_1" (identifier "puVar6") (+ "+") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "puVar1 = puVar6;" (assignment_expression "puVar1 = puVar6" (identifier "puVar1") (= "=") (identifier "puVar6")) (; ";")) (if_statement "if ((*param_2 & 0x10) == 0) {\n    do {\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    } while (param_3 != uVar7);\n    param_1[1] = (int)puVar3 - (int)puVar1;\n  }\n  else {\n    param_1 = (int *)0x0;\n  }" (if "if") (parenthesized_expression "((*param_2 & 0x10) == 0)" (( "(") (binary_expression "(*param_2 & 0x10) == 0" (parenthesized_expression "(*param_2 & 0x10)" (( "(") (binary_expression "*param_2 & 0x10" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    do {\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    } while (param_3 != uVar7);\n    param_1[1] = (int)puVar3 - (int)puVar1;\n  }" ({ "{") (do_statement "do {\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    } while (param_3 != uVar7);" (do "do") (compound_statement "{\n      pbVar2 = (byte *)param_2[1];\n      if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }\n      puVar3 = puVar6 + 1;\n      *puVar6 = (char)uVar7;\n      puVar6 = puVar3;\n    }" ({ "{") (expression_statement "pbVar2 = (byte *)param_2[1];" (assignment_expression "pbVar2 = (byte *)param_2[1]" (identifier "pbVar2") (= "=") (cast_expression "(byte *)param_2[1]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (pbVar2 < (byte *)param_2[2]) {\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }\n      else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }" (if "if") (parenthesized_expression "(pbVar2 < (byte *)param_2[2])" (( "(") (binary_expression "pbVar2 < (byte *)param_2[2]" (identifier "pbVar2") (< "<") (cast_expression "(byte *)param_2[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n        param_2[1] = (uint)(pbVar2 + 1);\n        uVar7 = (uint)*pbVar2;\nLAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }\n      }" ({ "{") (expression_statement "param_2[1] = (uint)(pbVar2 + 1);" (assignment_expression "param_2[1] = (uint)(pbVar2 + 1)" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (call_expression "(uint)(pbVar2 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(pbVar2 + 1)" (( "(") (binary_expression "pbVar2 + 1" (identifier "pbVar2") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar7 = (uint)*pbVar2;" (assignment_expression "uVar7 = (uint)*pbVar2" (identifier "uVar7") (= "=") (binary_expression "(uint)*pbVar2" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar2"))) (; ";")) (labeled_statement "LAB_00014094:\n        if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }" (statement_identifier "LAB_00014094") (: ":") (if_statement "if (puVar6 == puVar5) {\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }" (if "if") (parenthesized_expression "(puVar6 == puVar5)" (( "(") (binary_expression "puVar6 == puVar5" (identifier "puVar6") (== "==") (identifier "puVar5")) () ")")) (compound_statement "{\n          iVar4 = *param_1;\n          goto LAB_00014040;\n        }" ({ "{") (expression_statement "iVar4 = *param_1;" (assignment_expression "iVar4 = *param_1" (identifier "iVar4") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (goto_statement "goto LAB_00014040;" (goto "goto") (statement_identifier "LAB_00014040") (; ";")) (} "}")))) (} "}")) (else_clause "else {\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }" (else "else") (compound_statement "{\n        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);\n        if (uVar7 != 0xffffffff) goto LAB_00014094;\n        if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }\n        if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }\n        puVar3 = puVar6;\n        if ((int)(char)puVar6[-1] == param_3) break;\n        if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }\n        iVar4 = *param_1;\n        uVar7 = param_3;\nLAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);\n        puVar6 = puVar1 + iVar4;\n        param_1[2] = (int)puVar1;\n        puVar5 = puVar1 + *param_1;\n      }" ({ "{") (expression_statement "uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);" (assignment_expression "uVar7 = (*(code *)PTR___uflow_000302d8)(param_2)" (identifier "uVar7") (= "=") (call_expression "(*(code *)PTR___uflow_000302d8)(param_2)" (parenthesized_expression "(*(code *)PTR___uflow_000302d8)" (( "(") (pointer_expression "*(code *)PTR___uflow_000302d8" (* "*") (cast_expression "(code *)PTR___uflow_000302d8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___uflow_000302d8"))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (uVar7 != 0xffffffff) goto LAB_00014094;" (if "if") (parenthesized_expression "(uVar7 != 0xffffffff)" (( "(") (binary_expression "uVar7 != 0xffffffff" (identifier "uVar7") (!= "!=") (number_literal "0xffffffff")) () ")")) (goto_statement "goto LAB_00014094;" (goto "goto") (statement_identifier "LAB_00014094") (; ";"))) (if_statement "if (puVar1 == puVar6) {\n          return (int *)0x0;\n        }" (if "if") (parenthesized_expression "(puVar1 == puVar6)" (( "(") (binary_expression "puVar1 == puVar6" (identifier "puVar1") (== "==") (identifier "puVar6")) () ")")) (compound_statement "{\n          return (int *)0x0;\n        }" ({ "{") (return_statement "return (int *)0x0;" (return "return") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (if_statement "if ((*param_2 & 0x20) != 0) {\n          return (int *)0x0;\n        }" (if "if") (parenthesized_expression "((*param_2 & 0x20) != 0)" (( "(") (binary_expression "(*param_2 & 0x20) != 0" (parenthesized_expression "(*param_2 & 0x20)" (( "(") (binary_expression "*param_2 & 0x20" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          return (int *)0x0;\n        }" ({ "{") (return_statement "return (int *)0x0;" (return "return") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "puVar3 = puVar6;" (assignment_expression "puVar3 = puVar6" (identifier "puVar3") (= "=") (identifier "puVar6")) (; ";")) (if_statement "if ((int)(char)puVar6[-1] == param_3) break;" (if "if") (parenthesized_expression "((int)(char)puVar6[-1] == param_3)" (( "(") (binary_expression "(int)(char)puVar6[-1] == param_3" (cast_expression "(int)(char)puVar6[-1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)puVar6[-1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "puVar6[-1]" (identifier "puVar6") ([ "[") (number_literal "-1") (] "]")))) (== "==") (identifier "param_3")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (puVar6 != puVar5) {\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }" (if "if") (parenthesized_expression "(puVar6 != puVar5)" (( "(") (binary_expression "puVar6 != puVar5" (identifier "puVar6") (!= "!=") (identifier "puVar5")) () ")")) (compound_statement "{\n          puVar3 = puVar6 + 1;\n          *puVar6 = (char)param_3;\n          break;\n        }" ({ "{") (expression_statement "puVar3 = puVar6 + 1;" (assignment_expression "puVar3 = puVar6 + 1" (identifier "puVar3") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar6 = (char)param_3;" (assignment_expression "*puVar6 = (char)param_3" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (cast_expression "(char)param_3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_3"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "iVar4 = *param_1;" (assignment_expression "iVar4 = *param_1" (identifier "iVar4") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar7 = param_3;" (assignment_expression "uVar7 = param_3" (identifier "uVar7") (= "=") (identifier "param_3")) (; ";")) (labeled_statement "LAB_00014040:\n        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);" (statement_identifier "LAB_00014040") (: ":") (expression_statement "puVar1 = (undefined1 *)x2realloc(puVar1,param_1);" (assignment_expression "puVar1 = (undefined1 *)x2realloc(puVar1,param_1)" (identifier "puVar1") (= "=") (cast_expression "(undefined1 *)x2realloc(puVar1,param_1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "x2realloc(puVar1,param_1)" (identifier "x2realloc") (argument_list "(puVar1,param_1)" (( "(") (identifier "puVar1") (, ",") (identifier "param_1") () ")"))))) (; ";"))) (expression_statement "puVar6 = puVar1 + iVar4;" (assignment_expression "puVar6 = puVar1 + iVar4" (identifier "puVar6") (= "=") (binary_expression "puVar1 + iVar4" (identifier "puVar1") (+ "+") (identifier "iVar4"))) (; ";")) (expression_statement "param_1[2] = (int)puVar1;" (assignment_expression "param_1[2] = (int)puVar1" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1"))) (; ";")) (expression_statement "puVar5 = puVar1 + *param_1;" (assignment_expression "puVar5 = puVar1 + *param_1" (identifier "puVar5") (= "=") (binary_expression "puVar1 + *param_1" (identifier "puVar1") (+ "+") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (} "}")))) (expression_statement "puVar3 = puVar6 + 1;" (assignment_expression "puVar3 = puVar6 + 1" (identifier "puVar3") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar6 = (char)uVar7;" (assignment_expression "*puVar6 = (char)uVar7" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (cast_expression "(char)uVar7" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar7"))) (; ";")) (expression_statement "puVar6 = puVar3;" (assignment_expression "puVar6 = puVar3" (identifier "puVar6") (= "=") (identifier "puVar3")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_3 != uVar7)" (( "(") (binary_expression "param_3 != uVar7" (identifier "param_3") (!= "!=") (identifier "uVar7")) () ")")) (; ";")) (expression_statement "param_1[1] = (int)puVar3 - (int)puVar1;" (assignment_expression "param_1[1] = (int)puVar3 - (int)puVar1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "(int)puVar3 - (int)puVar1" (cast_expression "(int)puVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar3")) (- "-") (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")))) (; ";")) (} "}")) (else_clause "else {\n    param_1 = (int *)0x0;\n  }" (else "else") (compound_statement "{\n    param_1 = (int *)0x0;\n  }" ({ "{") (expression_statement "param_1 = (int *)0x0;" (assignment_expression "param_1 = (int *)0x0" (identifier "param_1") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))

type_1 * function_1(type_1 *type_1,type_2 *stream,char delimiter)

{
  char *var_6;
  type_3 *var_3;
  type_4 in_register_00000018;
  type_5 var_7;
  char *pcVar3;
  size_t var_9;
  char *var_4;
  char *var_2;
  type_5 var_5;
  
  var_7 = var_1(in_register_00000018,delimiter);
  var_2 = type_1->buffer;
  var_4 = var_2 + type_1->size;
  var_6 = var_2;
  if ((stream->_flags & 0x10U) == 0) {
    do {
      var_3 = (type_3 *)stream->_IO_read_ptr;
      if (var_3 < stream->_IO_read_end) {
        stream->_IO_read_ptr = (char *)(var_3 + 1);
        var_5 = (type_5)*var_3;
LAB_00014094:
        if (var_2 == var_4) {
          var_9 = type_1->size;
          goto LAB_00014040;
        }
      }
      else {
        var_5 = (*(type_6 *)PTR___uflow_000302d8)(stream);
        if (var_5 != 0xffffffff) goto LAB_00014094;
        if (var_6 == var_2) {
          return (type_1 *)0x0;
        }
        if ((stream->_flags & 0x20U) != 0) {
          return (type_1 *)0x0;
        }
        pcVar3 = var_2;
        if ((int)var_2[-1] == var_7) break;
        if (var_2 != var_4) {
          pcVar3 = var_2 + 1;
          *var_2 = delimiter;
          break;
        }
        var_9 = type_1->size;
        var_5 = var_7;
LAB_00014040:
        var_6 = (char *)var_8(var_6,&type_1->size);
        var_2 = var_6 + var_9;
        type_1->buffer = var_6;
        var_4 = var_6 + type_1->size;
      }
      pcVar3 = var_2 + 1;
      *var_2 = (char)var_5;
      var_2 = pcVar3;
    } while (var_7 != var_5);
    type_1->length = (int)pcVar3 - (int)var_6;
  }
  else {
    type_1 = (type_1 *)0x0;
  }
  return type_1;
}


(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (goto_statement label: (statement_identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (identifier))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) (return_statement (identifier)))))

int * MASKED(int *param_1,uint *param_2,uint param_3)

{
  undefined1 *puVar1;
  byte *pbVar2;
  undefined1 *puVar3;
  int iVar4;
  undefined1 *puVar5;
  undefined1 *puVar6;
  uint uVar7;
  
  puVar6 = (undefined1 *)param_1[2];
  puVar5 = puVar6 + *param_1;
  puVar1 = puVar6;
  if ((*param_2 & 0x10) == 0) {
    do {
      pbVar2 = (byte *)param_2[1];
      if (pbVar2 < (byte *)param_2[2]) {
        param_2[1] = (uint)(pbVar2 + 1);
        uVar7 = (uint)*pbVar2;
LAB_00014094:
        if (puVar6 == puVar5) {
          iVar4 = *param_1;
          goto LAB_00014040;
        }
      }
      else {
        uVar7 = (*(code *)PTR___uflow_000302d8)(param_2);
        if (uVar7 != 0xffffffff) goto LAB_00014094;
        if (puVar1 == puVar6) {
          return (int *)0x0;
        }
        if ((*param_2 & 0x20) != 0) {
          return (int *)0x0;
        }
        puVar3 = puVar6;
        if ((int)(char)puVar6[-1] == param_3) break;
        if (puVar6 != puVar5) {
          puVar3 = puVar6 + 1;
          *puVar6 = (char)param_3;
          break;
        }
        iVar4 = *param_1;
        uVar7 = param_3;
LAB_00014040:
        puVar1 = (undefined1 *)x2realloc(puVar1,param_1);
        puVar6 = puVar1 + iVar4;
        param_1[2] = (int)puVar1;
        puVar5 = puVar1 + *param_1;
      }
      puVar3 = puVar6 + 1;
      *puVar6 = (char)uVar7;
      puVar6 = puVar3;
    } while (param_3 != uVar7);
    param_1[1] = (int)puVar3 - (int)puVar1;
  }
  else {
    param_1 = (int *)0x0;
  }
  return param_1;
}

