
/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void close_file(void)

{
  char cVar1;
  bool bVar2;
  int iVar3;
  int iVar4;
  char *pcVar5;
  scrpos *psVar6;
  scrpos *in_a1;
  undefined4 *puVar7;
  int *piVar8;
  scrpos *psVar9;
  undefined4 *puVar10;
  char *pcVar11;
  int in_t9;
  code *pcVar12;
  char *pcVar13;
  scrpos scrpos;
  
  piVar8 = *(int **)(in_t9 + 0x2dbb4);
  psVar6 = &scrpos;
  iVar3 = *piVar8;
  get_scrpos(psVar6);
  puVar10 = *(undefined4 **)(in_t9 + 0x2d5f4);
  if ((scrpos.pos._0_4_ != -1) || (scrpos.pos._4_4_ != -1)) {
    store_pos((void *)*puVar10,psVar6);
    lastmark();
    in_a1 = psVar6;
  }
  puVar7 = *(undefined4 **)(in_t9 + 0x2d760);
  ch_close();
  pcVar11 = (char *)*puVar7;
  if (pcVar11 != (char *)0x0) {
    in_a1 = (scrpos *)get_filename((void *)*puVar10);
    close_altfile(pcVar11,(char *)in_a1,*(void **)(*(int *)(in_t9 + 0x2d438) + 0x428));
    (**(code **)(in_t9 + 0x2dbbc))(*puVar7);
    *puVar7 = 0;
  }
  puVar7 = *(undefined4 **)(in_t9 + 0x2d600);
  iVar4 = *piVar8;
  *puVar10 = 0;
  puVar7[1] = 0;
  *puVar7 = 0;
  puVar10 = *(undefined4 **)(in_t9 + 0x2d5fc);
  puVar10[1] = 0;
  *puVar10 = 0;
  if (iVar3 == iVar4) {
    return;
  }
  pcVar12 = *(code **)(in_t9 + 0x2db94);
  (*pcVar12)();
  pcVar11 = get_meta_escape();
  iVar3 = (**(code **)(pcVar12 + 0x2da08))(pcVar11);
  pcVar5 = skipsp((char *)in_a1);
  *puVar10 = pcVar5;
  iVar4 = (**(code **)(pcVar12 + 0x2da08))(pcVar5);
  psVar6 = (scrpos *)(pcVar5 + iVar4);
  puVar10[1] = psVar6;
  if (in_a1 < psVar6) {
    pcVar5 = *(char **)(pcVar12 + 0x2d55c);
    bVar2 = false;
    pcVar13 = *(char **)(pcVar12 + 0x2d554);
    do {
      while (((psVar9 = (scrpos *)((int)&in_a1->pos + iVar3), iVar3 != 0 && (psVar9 < psVar6)) &&
             (iVar4 = (**(code **)(pcVar12 + 0x2d994))(in_a1,pcVar11,iVar3), iVar4 == 0))) {
        psVar6 = (scrpos *)puVar10[1];
        if (psVar6 <= psVar9) {
          return;
        }
        in_a1 = (scrpos *)((int)&in_a1->pos + iVar3 + 1);
        if (psVar6 <= in_a1) {
          return;
        }
      }
      cVar1 = *(char *)&in_a1->pos;
      psVar9 = (scrpos *)((int)&in_a1->pos + 1);
      if (bVar2) {
        psVar6 = (scrpos *)puVar10[1];
        if (*pcVar13 == cVar1) {
          bVar2 = false;
        }
      }
      else if (*pcVar5 == cVar1) {
        psVar6 = (scrpos *)puVar10[1];
        bVar2 = true;
      }
      else if (cVar1 == ' ') {
        *(char *)&in_a1->pos = '\0';
        psVar6 = (scrpos *)puVar10[1];
      }
      else {
        psVar6 = (scrpos *)puVar10[1];
      }
      in_a1 = psVar9;
    } while (psVar9 < psVar6);
  }
  return;
}



void FUN_000217c0(undefined4 param_1,int *param_2)

{
  char cVar1;
  bool bVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  int *piVar8;
  int *piVar9;
  int *piVar10;
  int iVar11;
  char *pcVar12;
  undefined *puVar13;
  char *pcVar14;
  int local_30;
  int local_2c;
  int local_1c;
  
  puVar4 = PTR___stack_chk_guard_0004f374;
  piVar9 = &local_30;
  local_1c = *(int *)PTR___stack_chk_guard_0004f374;
  get_scrpos(piVar9);
  puVar13 = PTR_curr_ifile_0004edb4;
  if ((local_30 != -1) || (local_2c != -1)) {
    store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);
    lastmark();
    param_2 = piVar9;
  }
  puVar3 = PTR_curr_altfilename_0004ef20;
  ch_close();
  iVar11 = *(int *)puVar3;
  if (iVar11 != 0) {
    param_2 = (int *)get_filename(*(undefined4 *)puVar13);
    close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));
    (*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);
    *(undefined4 *)puVar3 = 0;
  }
  puVar3 = PTR_curr_dev_0004edc0;
  iVar11 = *(int *)puVar4;
  *(undefined4 *)puVar13 = 0;
  *(undefined4 *)(puVar3 + 4) = 0;
  *(undefined4 *)puVar3 = 0;
  piVar9 = (int *)PTR_curr_ino_0004edbc;
  *(undefined4 *)(PTR_curr_ino_0004edbc + 4) = 0;
  *piVar9 = 0;
  if (local_1c == iVar11) {
    return;
  }
  puVar13 = PTR___stack_chk_fail_0004f354;
  (*(code *)PTR___stack_chk_fail_0004f354)();
  uVar5 = get_meta_escape();
  iVar11 = (**(code **)(puVar13 + 0x2da08))(uVar5);
  iVar6 = skipsp(param_2);
  *piVar9 = iVar6;
  iVar7 = (**(code **)(puVar13 + 0x2da08))(iVar6);
  piVar8 = (int *)(iVar6 + iVar7);
  piVar9[1] = (int)piVar8;
  if (param_2 < piVar8) {
    pcVar12 = *(char **)(puVar13 + 0x2d55c);
    bVar2 = false;
    pcVar14 = *(char **)(puVar13 + 0x2d554);
    do {
      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&
             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {
        piVar8 = (int *)piVar9[1];
        if (piVar8 <= (int *)((int)param_2 + iVar11)) {
          return;
        }
        param_2 = (int *)((int)param_2 + iVar11 + 1);
        if (piVar8 <= param_2) {
          return;
        }
      }
      cVar1 = *(char *)param_2;
      piVar10 = (int *)((int)param_2 + 1);
      if (bVar2) {
        piVar8 = (int *)piVar9[1];
        if (*pcVar14 == cVar1) {
          bVar2 = false;
        }
      }
      else if (*pcVar12 == cVar1) {
        piVar8 = (int *)piVar9[1];
        bVar2 = true;
      }
      else if (cVar1 == ' ') {
        *(char *)param_2 = '\0';
        piVar8 = (int *)piVar9[1];
      }
      else {
        piVar8 = (int *)piVar9[1];
      }
      param_2 = piVar10;
    } while (piVar10 < piVar8);
  }
  return;
}


lui gp,0x3
addiu gp,gp,0x5410
addu gp,gp,t9
addiu sp,sp,-0x48
lw t9,-0x7be4(gp)
sw s1,0x38(sp)
lw s1,-0x785c(gp)
sw s0,0x34(sp)
addiu s0,sp,0x18
sw gp,0x10(sp)
sw s2,0x3c(sp)
or a0,s0,zero
sw ra,0x44(sp)
sw s3,0x40(sp)
lw v0,0x0(s1)
sw v0,0x2c(sp)
bal 0x0002f860
_nop
li v1,-0x1
lw gp,0x10(sp)
lw v0,0x18(sp)
bne v0,v1,0x000218d0
_lw s2,-0x7e1c(gp)
lw v1,0x1c(sp)
bne v1,v0,0x000218d4
_lw t9,-0x7be0(gp)
lw s0,-0x7cb0(gp)
lw t9,-0x7bdc(gp)
bal 0x000190ec
_nop
lw s3,0x0(s0)
beq s3,zero,0x00021884
_lw gp,0x10(sp)
lw t9,-0x7e18(gp)
bal 0x00025984
_lw a0,0x0(s2)
or a0,s3,zero
lw gp,0x10(sp)
or a1,v0,zero
lw v0,-0x7fd8(gp)
lw t9,-0x7bd8(gp)
bal 0x00024268
_lw a2,0x428(v0)
lw gp,0x10(sp)
lw t9,-0x7854(gp)
jalr t9
_lw a0,0x0(s0)
lw gp,0x10(sp)
sw zero,0x0(s0)
lw a0,-0x7e10(gp)
or a3,zero,zero
or a2,zero,zero
lw v1,0x2c(sp)
lw v0,0x0(s1)
sw zero,0x0(s2)
sw a3,0x4(a0)
sw a2,0x0(a0)
lw a0,-0x7e14(gp)
sw a3,0x4(a0)
bne v1,v0,0x000218f8
_sw a2,0x0(a0)
lw ra,0x44(sp)
lw s3,0x40(sp)
lw s2,0x3c(sp)
lw s1,0x38(sp)
lw s0,0x34(sp)
jr ra
_addiu sp,sp,0x48
lw t9,-0x7be0(gp)
or a1,s0,zero
bal 0x000259a4
_lw a0,0x0(s2)
lw gp,0x10(sp)
lw t9,-0x7bd4(gp)
bal 0x0002b520
_nop
b 0x00021828
_lw gp,0x10(sp)
lw t9,-0x787c(gp)
jalr t9
_nop
(translation_unit "void FUN_000217c0(undefined4 param_1,int *param_2)\n\n{\n  char cVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  int iVar11;\n  char *pcVar12;\n  undefined *puVar13;\n  char *pcVar14;\n  int local_30;\n  int local_2c;\n  int local_1c;\n  \n  puVar4 = PTR___stack_chk_guard_0004f374;\n  piVar9 = &local_30;\n  local_1c = *(int *)PTR___stack_chk_guard_0004f374;\n  get_scrpos(piVar9);\n  puVar13 = PTR_curr_ifile_0004edb4;\n  if ((local_30 != -1) || (local_2c != -1)) {\n    store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);\n    lastmark();\n    param_2 = piVar9;\n  }\n  puVar3 = PTR_curr_altfilename_0004ef20;\n  ch_close();\n  iVar11 = *(int *)puVar3;\n  if (iVar11 != 0) {\n    param_2 = (int *)get_filename(*(undefined4 *)puVar13);\n    close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));\n    (*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);\n    *(undefined4 *)puVar3 = 0;\n  }\n  puVar3 = PTR_curr_dev_0004edc0;\n  iVar11 = *(int *)puVar4;\n  *(undefined4 *)puVar13 = 0;\n  *(undefined4 *)(puVar3 + 4) = 0;\n  *(undefined4 *)puVar3 = 0;\n  piVar9 = (int *)PTR_curr_ino_0004edbc;\n  *(undefined4 *)(PTR_curr_ino_0004edbc + 4) = 0;\n  *piVar9 = 0;\n  if (local_1c == iVar11) {\n    return;\n  }\n  puVar13 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  uVar5 = get_meta_escape();\n  iVar11 = (**(code **)(puVar13 + 0x2da08))(uVar5);\n  iVar6 = skipsp(param_2);\n  *piVar9 = iVar6;\n  iVar7 = (**(code **)(puVar13 + 0x2da08))(iVar6);\n  piVar8 = (int *)(iVar6 + iVar7);\n  piVar9[1] = (int)piVar8;\n  if (param_2 < piVar8) {\n    pcVar12 = *(char **)(puVar13 + 0x2d55c);\n    bVar2 = false;\n    pcVar14 = *(char **)(puVar13 + 0x2d554);\n    do {\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    } while (piVar10 < piVar8);\n  }\n  return;\n}\n\n" (function_definition "void FUN_000217c0(undefined4 param_1,int *param_2)\n\n{\n  char cVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  int iVar11;\n  char *pcVar12;\n  undefined *puVar13;\n  char *pcVar14;\n  int local_30;\n  int local_2c;\n  int local_1c;\n  \n  puVar4 = PTR___stack_chk_guard_0004f374;\n  piVar9 = &local_30;\n  local_1c = *(int *)PTR___stack_chk_guard_0004f374;\n  get_scrpos(piVar9);\n  puVar13 = PTR_curr_ifile_0004edb4;\n  if ((local_30 != -1) || (local_2c != -1)) {\n    store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);\n    lastmark();\n    param_2 = piVar9;\n  }\n  puVar3 = PTR_curr_altfilename_0004ef20;\n  ch_close();\n  iVar11 = *(int *)puVar3;\n  if (iVar11 != 0) {\n    param_2 = (int *)get_filename(*(undefined4 *)puVar13);\n    close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));\n    (*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);\n    *(undefined4 *)puVar3 = 0;\n  }\n  puVar3 = PTR_curr_dev_0004edc0;\n  iVar11 = *(int *)puVar4;\n  *(undefined4 *)puVar13 = 0;\n  *(undefined4 *)(puVar3 + 4) = 0;\n  *(undefined4 *)puVar3 = 0;\n  piVar9 = (int *)PTR_curr_ino_0004edbc;\n  *(undefined4 *)(PTR_curr_ino_0004edbc + 4) = 0;\n  *piVar9 = 0;\n  if (local_1c == iVar11) {\n    return;\n  }\n  puVar13 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  uVar5 = get_meta_escape();\n  iVar11 = (**(code **)(puVar13 + 0x2da08))(uVar5);\n  iVar6 = skipsp(param_2);\n  *piVar9 = iVar6;\n  iVar7 = (**(code **)(puVar13 + 0x2da08))(iVar6);\n  piVar8 = (int *)(iVar6 + iVar7);\n  piVar9[1] = (int)piVar8;\n  if (param_2 < piVar8) {\n    pcVar12 = *(char **)(puVar13 + 0x2d55c);\n    bVar2 = false;\n    pcVar14 = *(char **)(puVar13 + 0x2d554);\n    do {\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    } while (piVar10 < piVar8);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000217c0(undefined4 param_1,int *param_2)" identifier (parameter_list "(undefined4 param_1,int *param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  int iVar11;\n  char *pcVar12;\n  undefined *puVar13;\n  char *pcVar14;\n  int local_30;\n  int local_2c;\n  int local_1c;\n  \n  puVar4 = PTR___stack_chk_guard_0004f374;\n  piVar9 = &local_30;\n  local_1c = *(int *)PTR___stack_chk_guard_0004f374;\n  get_scrpos(piVar9);\n  puVar13 = PTR_curr_ifile_0004edb4;\n  if ((local_30 != -1) || (local_2c != -1)) {\n    store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);\n    lastmark();\n    param_2 = piVar9;\n  }\n  puVar3 = PTR_curr_altfilename_0004ef20;\n  ch_close();\n  iVar11 = *(int *)puVar3;\n  if (iVar11 != 0) {\n    param_2 = (int *)get_filename(*(undefined4 *)puVar13);\n    close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));\n    (*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);\n    *(undefined4 *)puVar3 = 0;\n  }\n  puVar3 = PTR_curr_dev_0004edc0;\n  iVar11 = *(int *)puVar4;\n  *(undefined4 *)puVar13 = 0;\n  *(undefined4 *)(puVar3 + 4) = 0;\n  *(undefined4 *)puVar3 = 0;\n  piVar9 = (int *)PTR_curr_ino_0004edbc;\n  *(undefined4 *)(PTR_curr_ino_0004edbc + 4) = 0;\n  *piVar9 = 0;\n  if (local_1c == iVar11) {\n    return;\n  }\n  puVar13 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  uVar5 = get_meta_escape();\n  iVar11 = (**(code **)(puVar13 + 0x2da08))(uVar5);\n  iVar6 = skipsp(param_2);\n  *piVar9 = iVar6;\n  iVar7 = (**(code **)(puVar13 + 0x2da08))(iVar6);\n  piVar8 = (int *)(iVar6 + iVar7);\n  piVar9[1] = (int)piVar8;\n  if (param_2 < piVar8) {\n    pcVar12 = *(char **)(puVar13 + 0x2d55c);\n    bVar2 = false;\n    pcVar14 = *(char **)(puVar13 + 0x2d554);\n    do {\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    } while (piVar10 < piVar8);\n  }\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar4 = PTR___stack_chk_guard_0004f374;" (assignment_expression "puVar4 = PTR___stack_chk_guard_0004f374" identifier = identifier) ;) (expression_statement "piVar9 = &local_30;" (assignment_expression "piVar9 = &local_30" identifier = (pointer_expression "&local_30" & identifier)) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_0004f374;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_0004f374" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0004f374" * (cast_expression "(int *)PTR___stack_chk_guard_0004f374" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "get_scrpos(piVar9);" (call_expression "get_scrpos(piVar9)" identifier (argument_list "(piVar9)" ( identifier ))) ;) (expression_statement "puVar13 = PTR_curr_ifile_0004edb4;" (assignment_expression "puVar13 = PTR_curr_ifile_0004edb4" identifier = identifier) ;) (if_statement "if ((local_30 != -1) || (local_2c != -1)) {\n    store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);\n    lastmark();\n    param_2 = piVar9;\n  }" if (parenthesized_expression "((local_30 != -1) || (local_2c != -1))" ( (binary_expression "(local_30 != -1) || (local_2c != -1)" (parenthesized_expression "(local_30 != -1)" ( (binary_expression "local_30 != -1" identifier != number_literal) )) || (parenthesized_expression "(local_2c != -1)" ( (binary_expression "local_2c != -1" identifier != number_literal) ))) )) (compound_statement "{\n    store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);\n    lastmark();\n    param_2 = piVar9;\n  }" { (expression_statement "store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);" (call_expression "store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4)" identifier (argument_list "(*(undefined4 *)PTR_curr_ifile_0004edb4)" ( (pointer_expression "*(undefined4 *)PTR_curr_ifile_0004edb4" * (cast_expression "(undefined4 *)PTR_curr_ifile_0004edb4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "lastmark();" (call_expression "lastmark()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_2 = piVar9;" (assignment_expression "param_2 = piVar9" identifier = identifier) ;) })) (expression_statement "puVar3 = PTR_curr_altfilename_0004ef20;" (assignment_expression "puVar3 = PTR_curr_altfilename_0004ef20" identifier = identifier) ;) (expression_statement "ch_close();" (call_expression "ch_close()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar11 = *(int *)puVar3;" (assignment_expression "iVar11 = *(int *)puVar3" identifier = (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (iVar11 != 0) {\n    param_2 = (int *)get_filename(*(undefined4 *)puVar13);\n    close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));\n    (*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);\n    *(undefined4 *)puVar3 = 0;\n  }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n    param_2 = (int *)get_filename(*(undefined4 *)puVar13);\n    close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));\n    (*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);\n    *(undefined4 *)puVar3 = 0;\n  }" { (expression_statement "param_2 = (int *)get_filename(*(undefined4 *)puVar13);" (assignment_expression "param_2 = (int *)get_filename(*(undefined4 *)puVar13)" identifier = (cast_expression "(int *)get_filename(*(undefined4 *)puVar13)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "get_filename(*(undefined4 *)puVar13)" identifier (argument_list "(*(undefined4 *)puVar13)" ( (pointer_expression "*(undefined4 *)puVar13" * (cast_expression "(undefined4 *)puVar13" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))))) ;) (expression_statement "close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));" (call_expression "close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428))" identifier (argument_list "(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428)" * (cast_expression "(undefined4 *)(PTR_DAT_0004ebf8 + 0x428)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0004ebf8 + 0x428)" ( (binary_expression "PTR_DAT_0004ebf8 + 0x428" identifier + number_literal) )))) ))) ;) (expression_statement "(*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_free_0004f37c)" ( (pointer_expression "*(code *)PTR_free_0004f37c" * (cast_expression "(code *)PTR_free_0004f37c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "*(undefined4 *)puVar3 = 0;" (assignment_expression "*(undefined4 *)puVar3 = 0" (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) })) (expression_statement "puVar3 = PTR_curr_dev_0004edc0;" (assignment_expression "puVar3 = PTR_curr_dev_0004edc0" identifier = identifier) ;) (expression_statement "iVar11 = *(int *)puVar4;" (assignment_expression "iVar11 = *(int *)puVar4" identifier = (pointer_expression "*(int *)puVar4" * (cast_expression "(int *)puVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(undefined4 *)puVar13 = 0;" (assignment_expression "*(undefined4 *)puVar13 = 0" (pointer_expression "*(undefined4 *)puVar13" * (cast_expression "(undefined4 *)puVar13" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 4)" * (cast_expression "(undefined4 *)(puVar3 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 4)" ( (binary_expression "puVar3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)puVar3 = 0;" (assignment_expression "*(undefined4 *)puVar3 = 0" (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "piVar9 = (int *)PTR_curr_ino_0004edbc;" (assignment_expression "piVar9 = (int *)PTR_curr_ino_0004edbc" identifier = (cast_expression "(int *)PTR_curr_ino_0004edbc" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*(undefined4 *)(PTR_curr_ino_0004edbc + 4) = 0;" (assignment_expression "*(undefined4 *)(PTR_curr_ino_0004edbc + 4) = 0" (pointer_expression "*(undefined4 *)(PTR_curr_ino_0004edbc + 4)" * (cast_expression "(undefined4 *)(PTR_curr_ino_0004edbc + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_curr_ino_0004edbc + 4)" ( (binary_expression "PTR_curr_ino_0004edbc + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*piVar9 = 0;" (assignment_expression "*piVar9 = 0" (pointer_expression "*piVar9" * identifier) = number_literal) ;) (if_statement "if (local_1c == iVar11) {\n    return;\n  }" if (parenthesized_expression "(local_1c == iVar11)" ( (binary_expression "local_1c == iVar11" identifier == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "puVar13 = PTR___stack_chk_fail_0004f354;" (assignment_expression "puVar13 = PTR___stack_chk_fail_0004f354" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0004f354)();" (call_expression "(*(code *)PTR___stack_chk_fail_0004f354)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0004f354)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0004f354" * (cast_expression "(code *)PTR___stack_chk_fail_0004f354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar5 = get_meta_escape();" (assignment_expression "uVar5 = get_meta_escape()" identifier = (call_expression "get_meta_escape()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar11 = (**(code **)(puVar13 + 0x2da08))(uVar5);" (assignment_expression "iVar11 = (**(code **)(puVar13 + 0x2da08))(uVar5)" identifier = (call_expression "(**(code **)(puVar13 + 0x2da08))(uVar5)" (parenthesized_expression "(**(code **)(puVar13 + 0x2da08))" ( (pointer_expression "**(code **)(puVar13 + 0x2da08)" * (pointer_expression "*(code **)(puVar13 + 0x2da08)" * (cast_expression "(code **)(puVar13 + 0x2da08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x2da08)" ( (binary_expression "puVar13 + 0x2da08" identifier + number_literal) ))))) )) (argument_list "(uVar5)" ( identifier )))) ;) (expression_statement "iVar6 = skipsp(param_2);" (assignment_expression "iVar6 = skipsp(param_2)" identifier = (call_expression "skipsp(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "*piVar9 = iVar6;" (assignment_expression "*piVar9 = iVar6" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "iVar7 = (**(code **)(puVar13 + 0x2da08))(iVar6);" (assignment_expression "iVar7 = (**(code **)(puVar13 + 0x2da08))(iVar6)" identifier = (call_expression "(**(code **)(puVar13 + 0x2da08))(iVar6)" (parenthesized_expression "(**(code **)(puVar13 + 0x2da08))" ( (pointer_expression "**(code **)(puVar13 + 0x2da08)" * (pointer_expression "*(code **)(puVar13 + 0x2da08)" * (cast_expression "(code **)(puVar13 + 0x2da08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x2da08)" ( (binary_expression "puVar13 + 0x2da08" identifier + number_literal) ))))) )) (argument_list "(iVar6)" ( identifier )))) ;) (expression_statement "piVar8 = (int *)(iVar6 + iVar7);" (assignment_expression "piVar8 = (int *)(iVar6 + iVar7)" identifier = (cast_expression "(int *)(iVar6 + iVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar7)" ( (binary_expression "iVar6 + iVar7" identifier + identifier) )))) ;) (expression_statement "piVar9[1] = (int)piVar8;" (assignment_expression "piVar9[1] = (int)piVar8" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (param_2 < piVar8) {\n    pcVar12 = *(char **)(puVar13 + 0x2d55c);\n    bVar2 = false;\n    pcVar14 = *(char **)(puVar13 + 0x2d554);\n    do {\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    } while (piVar10 < piVar8);\n  }" if (parenthesized_expression "(param_2 < piVar8)" ( (binary_expression "param_2 < piVar8" identifier < identifier) )) (compound_statement "{\n    pcVar12 = *(char **)(puVar13 + 0x2d55c);\n    bVar2 = false;\n    pcVar14 = *(char **)(puVar13 + 0x2d554);\n    do {\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    } while (piVar10 < piVar8);\n  }" { (expression_statement "pcVar12 = *(char **)(puVar13 + 0x2d55c);" (assignment_expression "pcVar12 = *(char **)(puVar13 + 0x2d55c)" identifier = (pointer_expression "*(char **)(puVar13 + 0x2d55c)" * (cast_expression "(char **)(puVar13 + 0x2d55c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x2d55c)" ( (binary_expression "puVar13 + 0x2d55c" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "pcVar14 = *(char **)(puVar13 + 0x2d554);" (assignment_expression "pcVar14 = *(char **)(puVar13 + 0x2d554)" identifier = (pointer_expression "*(char **)(puVar13 + 0x2d554)" * (cast_expression "(char **)(puVar13 + 0x2d554)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x2d554)" ( (binary_expression "puVar13 + 0x2d554" identifier + number_literal) ))))) ;) (do_statement "do {\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    } while (piVar10 < piVar8);" do (compound_statement "{\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    }" { (while_statement "while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }" while (parenthesized_expression "(((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0)))" ( (parenthesized_expression "((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))" ( (binary_expression "(iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0)" (parenthesized_expression "(iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8))" ( (binary_expression "iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)" (binary_expression "iVar11 != 0" identifier != number_literal) && (parenthesized_expression "((int *)((int)param_2 + iVar11) < piVar8)" ( (binary_expression "(int *)((int)param_2 + iVar11) < piVar8" (cast_expression "(int *)((int)param_2 + iVar11)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + iVar11)" ( (binary_expression "(int)param_2 + iVar11" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) < identifier) ))) )) && (parenthesized_expression "(iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0)" ( (comma_expression "iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0" (assignment_expression "iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11)" identifier = (call_expression "(**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11)" (parenthesized_expression "(**(code **)(puVar13 + 0x2d994))" ( (pointer_expression "**(code **)(puVar13 + 0x2d994)" * (pointer_expression "*(code **)(puVar13 + 0x2d994)" * (cast_expression "(code **)(puVar13 + 0x2d994)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x2d994)" ( (binary_expression "puVar13 + 0x2d994" identifier + number_literal) ))))) )) (argument_list "(param_2,uVar5,iVar11)" ( identifier , identifier , identifier )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) )) (compound_statement "{\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }" { (expression_statement "piVar8 = (int *)piVar9[1];" (assignment_expression "piVar8 = (int *)piVar9[1]" identifier = (cast_expression "(int *)piVar9[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[1]" identifier [ number_literal ]))) ;) (if_statement "if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }" if (parenthesized_expression "(piVar8 <= (int *)((int)param_2 + iVar11))" ( (binary_expression "piVar8 <= (int *)((int)param_2 + iVar11)" identifier <= (cast_expression "(int *)((int)param_2 + iVar11)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + iVar11)" ( (binary_expression "(int)param_2 + iVar11" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "param_2 = (int *)((int)param_2 + iVar11 + 1);" (assignment_expression "param_2 = (int *)((int)param_2 + iVar11 + 1)" identifier = (cast_expression "(int *)((int)param_2 + iVar11 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + iVar11 + 1)" ( (binary_expression "(int)param_2 + iVar11 + 1" (binary_expression "(int)param_2 + iVar11" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (if_statement "if (piVar8 <= param_2) {\n          return;\n        }" if (parenthesized_expression "(piVar8 <= param_2)" ( (binary_expression "piVar8 <= param_2" identifier <= identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) })) (expression_statement "cVar1 = *(char *)param_2;" (assignment_expression "cVar1 = *(char *)param_2" identifier = (pointer_expression "*(char *)param_2" * (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "piVar10 = (int *)((int)param_2 + 1);" (assignment_expression "piVar10 = (int *)((int)param_2 + 1)" identifier = (cast_expression "(int *)((int)param_2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 1)" ( (binary_expression "(int)param_2 + 1" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }" { (expression_statement "piVar8 = (int *)piVar9[1];" (assignment_expression "piVar8 = (int *)piVar9[1]" identifier = (cast_expression "(int *)piVar9[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[1]" identifier [ number_literal ]))) ;) (if_statement "if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }" if (parenthesized_expression "(*pcVar14 == cVar1)" ( (binary_expression "*pcVar14 == cVar1" (pointer_expression "*pcVar14" * identifier) == identifier) )) (compound_statement "{\n          bVar2 = false;\n        }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) })) }) (else_clause "else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }" else (if_statement "if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }" if (parenthesized_expression "(*pcVar12 == cVar1)" ( (binary_expression "*pcVar12 == cVar1" (pointer_expression "*pcVar12" * identifier) == identifier) )) (compound_statement "{\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }" { (expression_statement "piVar8 = (int *)piVar9[1];" (assignment_expression "piVar8 = (int *)piVar9[1]" identifier = (cast_expression "(int *)piVar9[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[1]" identifier [ number_literal ]))) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }) (else_clause "else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }" else (if_statement "if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }" if (parenthesized_expression "(cVar1 == ' ')" ( (binary_expression "cVar1 == ' '" identifier == (char_literal "' '" ' character ')) )) (compound_statement "{\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }" { (expression_statement "*(char *)param_2 = '\0';" (assignment_expression "*(char *)param_2 = '\0'" (pointer_expression "*(char *)param_2" * (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "piVar8 = (int *)piVar9[1];" (assignment_expression "piVar8 = (int *)piVar9[1]" identifier = (cast_expression "(int *)piVar9[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[1]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        piVar8 = (int *)piVar9[1];\n      }" else (compound_statement "{\n        piVar8 = (int *)piVar9[1];\n      }" { (expression_statement "piVar8 = (int *)piVar9[1];" (assignment_expression "piVar8 = (int *)piVar9[1]" identifier = (cast_expression "(int *)piVar9[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[1]" identifier [ number_literal ]))) ;) }))))))) (expression_statement "param_2 = piVar10;" (assignment_expression "param_2 = piVar10" identifier = identifier) ;) }) while (parenthesized_expression "(piVar10 < piVar8)" ( (binary_expression "piVar10 < piVar8" identifier < identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n\nvoid close_file(void)\n\n{\n  char cVar1;\n  bool bVar2;\n  int iVar3;\n  int iVar4;\n  char *pcVar5;\n  scrpos *psVar6;\n  scrpos *in_a1;\n  undefined4 *puVar7;\n  int *piVar8;\n  scrpos *psVar9;\n  undefined4 *puVar10;\n  char *pcVar11;\n  int in_t9;\n  code *pcVar12;\n  char *pcVar13;\n  scrpos scrpos;\n  \n  piVar8 = *(int **)(in_t9 + 0x2dbb4);\n  psVar6 = &scrpos;\n  iVar3 = *piVar8;\n  get_scrpos(psVar6);\n  puVar10 = *(undefined4 **)(in_t9 + 0x2d5f4);\n  if ((scrpos.pos._0_4_ != -1) || (scrpos.pos._4_4_ != -1)) {\n    store_pos((void *)*puVar10,psVar6);\n    lastmark();\n    in_a1 = psVar6;\n  }\n  puVar7 = *(undefined4 **)(in_t9 + 0x2d760);\n  ch_close();\n  pcVar11 = (char *)*puVar7;\n  if (pcVar11 != (char *)0x0) {\n    in_a1 = (scrpos *)get_filename((void *)*puVar10);\n    close_altfile(pcVar11,(char *)in_a1,*(void **)(*(int *)(in_t9 + 0x2d438) + 0x428));\n    (**(code **)(in_t9 + 0x2dbbc))(*puVar7);\n    *puVar7 = 0;\n  }\n  puVar7 = *(undefined4 **)(in_t9 + 0x2d600);\n  iVar4 = *piVar8;\n  *puVar10 = 0;\n  puVar7[1] = 0;\n  *puVar7 = 0;\n  puVar10 = *(undefined4 **)(in_t9 + 0x2d5fc);\n  puVar10[1] = 0;\n  *puVar10 = 0;\n  if (iVar3 == iVar4) {\n    return;\n  }\n  pcVar12 = *(code **)(in_t9 + 0x2db94);\n  (*pcVar12)();\n  pcVar11 = get_meta_escape();\n  iVar3 = (**(code **)(pcVar12 + 0x2da08))(pcVar11);\n  pcVar5 = skipsp((char *)in_a1);\n  *puVar10 = pcVar5;\n  iVar4 = (**(code **)(pcVar12 + 0x2da08))(pcVar5);\n  psVar6 = (scrpos *)(pcVar5 + iVar4);\n  puVar10[1] = psVar6;\n  if (in_a1 < psVar6) {\n    pcVar5 = *(char **)(pcVar12 + 0x2d55c);\n    bVar2 = false;\n    pcVar13 = *(char **)(pcVar12 + 0x2d554);\n    do {\n      while (((psVar9 = (scrpos *)((int)&in_a1->pos + iVar3), iVar3 != 0 && (psVar9 < psVar6)) &&\n             (iVar4 = (**(code **)(pcVar12 + 0x2d994))(in_a1,pcVar11,iVar3), iVar4 == 0))) {\n        psVar6 = (scrpos *)puVar10[1];\n        if (psVar6 <= psVar9) {\n          return;\n        }\n        in_a1 = (scrpos *)((int)&in_a1->pos + iVar3 + 1);\n        if (psVar6 <= in_a1) {\n          return;\n        }\n      }\n      cVar1 = *(char *)&in_a1->pos;\n      psVar9 = (scrpos *)((int)&in_a1->pos + 1);\n      if (bVar2) {\n        psVar6 = (scrpos *)puVar10[1];\n        if (*pcVar13 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar5 == cVar1) {\n        psVar6 = (scrpos *)puVar10[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)&in_a1->pos = '\0';\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      else {\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      in_a1 = psVar9;\n    } while (psVar9 < psVar6);\n  }\n  return;\n}\n\n" comment (function_definition "void close_file(void)\n\n{\n  char cVar1;\n  bool bVar2;\n  int iVar3;\n  int iVar4;\n  char *pcVar5;\n  scrpos *psVar6;\n  scrpos *in_a1;\n  undefined4 *puVar7;\n  int *piVar8;\n  scrpos *psVar9;\n  undefined4 *puVar10;\n  char *pcVar11;\n  int in_t9;\n  code *pcVar12;\n  char *pcVar13;\n  scrpos scrpos;\n  \n  piVar8 = *(int **)(in_t9 + 0x2dbb4);\n  psVar6 = &scrpos;\n  iVar3 = *piVar8;\n  get_scrpos(psVar6);\n  puVar10 = *(undefined4 **)(in_t9 + 0x2d5f4);\n  if ((scrpos.pos._0_4_ != -1) || (scrpos.pos._4_4_ != -1)) {\n    store_pos((void *)*puVar10,psVar6);\n    lastmark();\n    in_a1 = psVar6;\n  }\n  puVar7 = *(undefined4 **)(in_t9 + 0x2d760);\n  ch_close();\n  pcVar11 = (char *)*puVar7;\n  if (pcVar11 != (char *)0x0) {\n    in_a1 = (scrpos *)get_filename((void *)*puVar10);\n    close_altfile(pcVar11,(char *)in_a1,*(void **)(*(int *)(in_t9 + 0x2d438) + 0x428));\n    (**(code **)(in_t9 + 0x2dbbc))(*puVar7);\n    *puVar7 = 0;\n  }\n  puVar7 = *(undefined4 **)(in_t9 + 0x2d600);\n  iVar4 = *piVar8;\n  *puVar10 = 0;\n  puVar7[1] = 0;\n  *puVar7 = 0;\n  puVar10 = *(undefined4 **)(in_t9 + 0x2d5fc);\n  puVar10[1] = 0;\n  *puVar10 = 0;\n  if (iVar3 == iVar4) {\n    return;\n  }\n  pcVar12 = *(code **)(in_t9 + 0x2db94);\n  (*pcVar12)();\n  pcVar11 = get_meta_escape();\n  iVar3 = (**(code **)(pcVar12 + 0x2da08))(pcVar11);\n  pcVar5 = skipsp((char *)in_a1);\n  *puVar10 = pcVar5;\n  iVar4 = (**(code **)(pcVar12 + 0x2da08))(pcVar5);\n  psVar6 = (scrpos *)(pcVar5 + iVar4);\n  puVar10[1] = psVar6;\n  if (in_a1 < psVar6) {\n    pcVar5 = *(char **)(pcVar12 + 0x2d55c);\n    bVar2 = false;\n    pcVar13 = *(char **)(pcVar12 + 0x2d554);\n    do {\n      while (((psVar9 = (scrpos *)((int)&in_a1->pos + iVar3), iVar3 != 0 && (psVar9 < psVar6)) &&\n             (iVar4 = (**(code **)(pcVar12 + 0x2d994))(in_a1,pcVar11,iVar3), iVar4 == 0))) {\n        psVar6 = (scrpos *)puVar10[1];\n        if (psVar6 <= psVar9) {\n          return;\n        }\n        in_a1 = (scrpos *)((int)&in_a1->pos + iVar3 + 1);\n        if (psVar6 <= in_a1) {\n          return;\n        }\n      }\n      cVar1 = *(char *)&in_a1->pos;\n      psVar9 = (scrpos *)((int)&in_a1->pos + 1);\n      if (bVar2) {\n        psVar6 = (scrpos *)puVar10[1];\n        if (*pcVar13 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar5 == cVar1) {\n        psVar6 = (scrpos *)puVar10[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)&in_a1->pos = '\0';\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      else {\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      in_a1 = psVar9;\n    } while (psVar9 < psVar6);\n  }\n  return;\n}" primitive_type (function_declarator "close_file(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  char cVar1;\n  bool bVar2;\n  int iVar3;\n  int iVar4;\n  char *pcVar5;\n  scrpos *psVar6;\n  scrpos *in_a1;\n  undefined4 *puVar7;\n  int *piVar8;\n  scrpos *psVar9;\n  undefined4 *puVar10;\n  char *pcVar11;\n  int in_t9;\n  code *pcVar12;\n  char *pcVar13;\n  scrpos scrpos;\n  \n  piVar8 = *(int **)(in_t9 + 0x2dbb4);\n  psVar6 = &scrpos;\n  iVar3 = *piVar8;\n  get_scrpos(psVar6);\n  puVar10 = *(undefined4 **)(in_t9 + 0x2d5f4);\n  if ((scrpos.pos._0_4_ != -1) || (scrpos.pos._4_4_ != -1)) {\n    store_pos((void *)*puVar10,psVar6);\n    lastmark();\n    in_a1 = psVar6;\n  }\n  puVar7 = *(undefined4 **)(in_t9 + 0x2d760);\n  ch_close();\n  pcVar11 = (char *)*puVar7;\n  if (pcVar11 != (char *)0x0) {\n    in_a1 = (scrpos *)get_filename((void *)*puVar10);\n    close_altfile(pcVar11,(char *)in_a1,*(void **)(*(int *)(in_t9 + 0x2d438) + 0x428));\n    (**(code **)(in_t9 + 0x2dbbc))(*puVar7);\n    *puVar7 = 0;\n  }\n  puVar7 = *(undefined4 **)(in_t9 + 0x2d600);\n  iVar4 = *piVar8;\n  *puVar10 = 0;\n  puVar7[1] = 0;\n  *puVar7 = 0;\n  puVar10 = *(undefined4 **)(in_t9 + 0x2d5fc);\n  puVar10[1] = 0;\n  *puVar10 = 0;\n  if (iVar3 == iVar4) {\n    return;\n  }\n  pcVar12 = *(code **)(in_t9 + 0x2db94);\n  (*pcVar12)();\n  pcVar11 = get_meta_escape();\n  iVar3 = (**(code **)(pcVar12 + 0x2da08))(pcVar11);\n  pcVar5 = skipsp((char *)in_a1);\n  *puVar10 = pcVar5;\n  iVar4 = (**(code **)(pcVar12 + 0x2da08))(pcVar5);\n  psVar6 = (scrpos *)(pcVar5 + iVar4);\n  puVar10[1] = psVar6;\n  if (in_a1 < psVar6) {\n    pcVar5 = *(char **)(pcVar12 + 0x2d55c);\n    bVar2 = false;\n    pcVar13 = *(char **)(pcVar12 + 0x2d554);\n    do {\n      while (((psVar9 = (scrpos *)((int)&in_a1->pos + iVar3), iVar3 != 0 && (psVar9 < psVar6)) &&\n             (iVar4 = (**(code **)(pcVar12 + 0x2d994))(in_a1,pcVar11,iVar3), iVar4 == 0))) {\n        psVar6 = (scrpos *)puVar10[1];\n        if (psVar6 <= psVar9) {\n          return;\n        }\n        in_a1 = (scrpos *)((int)&in_a1->pos + iVar3 + 1);\n        if (psVar6 <= in_a1) {\n          return;\n        }\n      }\n      cVar1 = *(char *)&in_a1->pos;\n      psVar9 = (scrpos *)((int)&in_a1->pos + 1);\n      if (bVar2) {\n        psVar6 = (scrpos *)puVar10[1];\n        if (*pcVar13 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar5 == cVar1) {\n        psVar6 = (scrpos *)puVar10[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)&in_a1->pos = '\0';\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      else {\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      in_a1 = psVar9;\n    } while (psVar9 < psVar6);\n  }\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "scrpos *psVar6;" type_identifier (pointer_declarator "*psVar6" * identifier) ;) (declaration "scrpos *in_a1;" type_identifier (pointer_declarator "*in_a1" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "scrpos *psVar9;" type_identifier (pointer_declarator "*psVar9" * identifier) ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (declaration "scrpos scrpos;" type_identifier identifier ;) (expression_statement "piVar8 = *(int **)(in_t9 + 0x2dbb4);" (assignment_expression "piVar8 = *(int **)(in_t9 + 0x2dbb4)" identifier = (pointer_expression "*(int **)(in_t9 + 0x2dbb4)" * (cast_expression "(int **)(in_t9 + 0x2dbb4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x2dbb4)" ( (binary_expression "in_t9 + 0x2dbb4" identifier + number_literal) ))))) ;) (expression_statement "psVar6 = &scrpos;" (assignment_expression "psVar6 = &scrpos" identifier = (pointer_expression "&scrpos" & identifier)) ;) (expression_statement "iVar3 = *piVar8;" (assignment_expression "iVar3 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "get_scrpos(psVar6);" (call_expression "get_scrpos(psVar6)" identifier (argument_list "(psVar6)" ( identifier ))) ;) (expression_statement "puVar10 = *(undefined4 **)(in_t9 + 0x2d5f4);" (assignment_expression "puVar10 = *(undefined4 **)(in_t9 + 0x2d5f4)" identifier = (pointer_expression "*(undefined4 **)(in_t9 + 0x2d5f4)" * (cast_expression "(undefined4 **)(in_t9 + 0x2d5f4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x2d5f4)" ( (binary_expression "in_t9 + 0x2d5f4" identifier + number_literal) ))))) ;) (if_statement "if ((scrpos.pos._0_4_ != -1) || (scrpos.pos._4_4_ != -1)) {\n    store_pos((void *)*puVar10,psVar6);\n    lastmark();\n    in_a1 = psVar6;\n  }" if (parenthesized_expression "((scrpos.pos._0_4_ != -1) || (scrpos.pos._4_4_ != -1))" ( (binary_expression "(scrpos.pos._0_4_ != -1) || (scrpos.pos._4_4_ != -1)" (parenthesized_expression "(scrpos.pos._0_4_ != -1)" ( (binary_expression "scrpos.pos._0_4_ != -1" (field_expression "scrpos.pos._0_4_" (field_expression "scrpos.pos" identifier . field_identifier) . field_identifier) != number_literal) )) || (parenthesized_expression "(scrpos.pos._4_4_ != -1)" ( (binary_expression "scrpos.pos._4_4_ != -1" (field_expression "scrpos.pos._4_4_" (field_expression "scrpos.pos" identifier . field_identifier) . field_identifier) != number_literal) ))) )) (compound_statement "{\n    store_pos((void *)*puVar10,psVar6);\n    lastmark();\n    in_a1 = psVar6;\n  }" { (expression_statement "store_pos((void *)*puVar10,psVar6);" (call_expression "store_pos((void *)*puVar10,psVar6)" identifier (argument_list "((void *)*puVar10,psVar6)" ( (cast_expression "(void *)*puVar10" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier)) , identifier ))) ;) (expression_statement "lastmark();" (call_expression "lastmark()" identifier (argument_list "()" ( ))) ;) (expression_statement "in_a1 = psVar6;" (assignment_expression "in_a1 = psVar6" identifier = identifier) ;) })) (expression_statement "puVar7 = *(undefined4 **)(in_t9 + 0x2d760);" (assignment_expression "puVar7 = *(undefined4 **)(in_t9 + 0x2d760)" identifier = (pointer_expression "*(undefined4 **)(in_t9 + 0x2d760)" * (cast_expression "(undefined4 **)(in_t9 + 0x2d760)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x2d760)" ( (binary_expression "in_t9 + 0x2d760" identifier + number_literal) ))))) ;) (expression_statement "ch_close();" (call_expression "ch_close()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar11 = (char *)*puVar7;" (assignment_expression "pcVar11 = (char *)*puVar7" identifier = (cast_expression "(char *)*puVar7" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar7" * identifier))) ;) (if_statement "if (pcVar11 != (char *)0x0) {\n    in_a1 = (scrpos *)get_filename((void *)*puVar10);\n    close_altfile(pcVar11,(char *)in_a1,*(void **)(*(int *)(in_t9 + 0x2d438) + 0x428));\n    (**(code **)(in_t9 + 0x2dbbc))(*puVar7);\n    *puVar7 = 0;\n  }" if (parenthesized_expression "(pcVar11 != (char *)0x0)" ( (binary_expression "pcVar11 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    in_a1 = (scrpos *)get_filename((void *)*puVar10);\n    close_altfile(pcVar11,(char *)in_a1,*(void **)(*(int *)(in_t9 + 0x2d438) + 0x428));\n    (**(code **)(in_t9 + 0x2dbbc))(*puVar7);\n    *puVar7 = 0;\n  }" { (expression_statement "in_a1 = (scrpos *)get_filename((void *)*puVar10);" (assignment_expression "in_a1 = (scrpos *)get_filename((void *)*puVar10)" identifier = (cast_expression "(scrpos *)get_filename((void *)*puVar10)" ( (type_descriptor "scrpos *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "get_filename((void *)*puVar10)" identifier (argument_list "((void *)*puVar10)" ( (cast_expression "(void *)*puVar10" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier)) ))))) ;) (expression_statement "close_altfile(pcVar11,(char *)in_a1,*(void **)(*(int *)(in_t9 + 0x2d438) + 0x428));" (call_expression "close_altfile(pcVar11,(char *)in_a1,*(void **)(*(int *)(in_t9 + 0x2d438) + 0x428))" identifier (argument_list "(pcVar11,(char *)in_a1,*(void **)(*(int *)(in_t9 + 0x2d438) + 0x428))" ( identifier , (cast_expression "(char *)in_a1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "*(void **)(*(int *)(in_t9 + 0x2d438) + 0x428)" * (cast_expression "(void **)(*(int *)(in_t9 + 0x2d438) + 0x428)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(in_t9 + 0x2d438) + 0x428)" ( (binary_expression "*(int *)(in_t9 + 0x2d438) + 0x428" (pointer_expression "*(int *)(in_t9 + 0x2d438)" * (cast_expression "(int *)(in_t9 + 0x2d438)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x2d438)" ( (binary_expression "in_t9 + 0x2d438" identifier + number_literal) )))) + number_literal) )))) ))) ;) (expression_statement "(**(code **)(in_t9 + 0x2dbbc))(*puVar7);" (call_expression "(**(code **)(in_t9 + 0x2dbbc))(*puVar7)" (parenthesized_expression "(**(code **)(in_t9 + 0x2dbbc))" ( (pointer_expression "**(code **)(in_t9 + 0x2dbbc)" * (pointer_expression "*(code **)(in_t9 + 0x2dbbc)" * (cast_expression "(code **)(in_t9 + 0x2dbbc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x2dbbc)" ( (binary_expression "in_t9 + 0x2dbbc" identifier + number_literal) ))))) )) (argument_list "(*puVar7)" ( (pointer_expression "*puVar7" * identifier) ))) ;) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;) })) (expression_statement "puVar7 = *(undefined4 **)(in_t9 + 0x2d600);" (assignment_expression "puVar7 = *(undefined4 **)(in_t9 + 0x2d600)" identifier = (pointer_expression "*(undefined4 **)(in_t9 + 0x2d600)" * (cast_expression "(undefined4 **)(in_t9 + 0x2d600)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x2d600)" ( (binary_expression "in_t9 + 0x2d600" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *piVar8;" (assignment_expression "iVar4 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "*puVar10 = 0;" (assignment_expression "*puVar10 = 0" (pointer_expression "*puVar10" * identifier) = number_literal) ;) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "puVar10 = *(undefined4 **)(in_t9 + 0x2d5fc);" (assignment_expression "puVar10 = *(undefined4 **)(in_t9 + 0x2d5fc)" identifier = (pointer_expression "*(undefined4 **)(in_t9 + 0x2d5fc)" * (cast_expression "(undefined4 **)(in_t9 + 0x2d5fc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x2d5fc)" ( (binary_expression "in_t9 + 0x2d5fc" identifier + number_literal) ))))) ;) (expression_statement "puVar10[1] = 0;" (assignment_expression "puVar10[1] = 0" (subscript_expression "puVar10[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar10 = 0;" (assignment_expression "*puVar10 = 0" (pointer_expression "*puVar10" * identifier) = number_literal) ;) (if_statement "if (iVar3 == iVar4) {\n    return;\n  }" if (parenthesized_expression "(iVar3 == iVar4)" ( (binary_expression "iVar3 == iVar4" identifier == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar12 = *(code **)(in_t9 + 0x2db94);" (assignment_expression "pcVar12 = *(code **)(in_t9 + 0x2db94)" identifier = (pointer_expression "*(code **)(in_t9 + 0x2db94)" * (cast_expression "(code **)(in_t9 + 0x2db94)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x2db94)" ( (binary_expression "in_t9 + 0x2db94" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar11 = get_meta_escape();" (assignment_expression "pcVar11 = get_meta_escape()" identifier = (call_expression "get_meta_escape()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar3 = (**(code **)(pcVar12 + 0x2da08))(pcVar11);" (assignment_expression "iVar3 = (**(code **)(pcVar12 + 0x2da08))(pcVar11)" identifier = (call_expression "(**(code **)(pcVar12 + 0x2da08))(pcVar11)" (parenthesized_expression "(**(code **)(pcVar12 + 0x2da08))" ( (pointer_expression "**(code **)(pcVar12 + 0x2da08)" * (pointer_expression "*(code **)(pcVar12 + 0x2da08)" * (cast_expression "(code **)(pcVar12 + 0x2da08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x2da08)" ( (binary_expression "pcVar12 + 0x2da08" identifier + number_literal) ))))) )) (argument_list "(pcVar11)" ( identifier )))) ;) (expression_statement "pcVar5 = skipsp((char *)in_a1);" (assignment_expression "pcVar5 = skipsp((char *)in_a1)" identifier = (call_expression "skipsp((char *)in_a1)" identifier (argument_list "((char *)in_a1)" ( (cast_expression "(char *)in_a1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "*puVar10 = pcVar5;" (assignment_expression "*puVar10 = pcVar5" (pointer_expression "*puVar10" * identifier) = identifier) ;) (expression_statement "iVar4 = (**(code **)(pcVar12 + 0x2da08))(pcVar5);" (assignment_expression "iVar4 = (**(code **)(pcVar12 + 0x2da08))(pcVar5)" identifier = (call_expression "(**(code **)(pcVar12 + 0x2da08))(pcVar5)" (parenthesized_expression "(**(code **)(pcVar12 + 0x2da08))" ( (pointer_expression "**(code **)(pcVar12 + 0x2da08)" * (pointer_expression "*(code **)(pcVar12 + 0x2da08)" * (cast_expression "(code **)(pcVar12 + 0x2da08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x2da08)" ( (binary_expression "pcVar12 + 0x2da08" identifier + number_literal) ))))) )) (argument_list "(pcVar5)" ( identifier )))) ;) (expression_statement "psVar6 = (scrpos *)(pcVar5 + iVar4);" (assignment_expression "psVar6 = (scrpos *)(pcVar5 + iVar4)" identifier = (cast_expression "(scrpos *)(pcVar5 + iVar4)" ( (type_descriptor "scrpos *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + iVar4)" ( (binary_expression "pcVar5 + iVar4" identifier + identifier) )))) ;) (expression_statement "puVar10[1] = psVar6;" (assignment_expression "puVar10[1] = psVar6" (subscript_expression "puVar10[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (in_a1 < psVar6) {\n    pcVar5 = *(char **)(pcVar12 + 0x2d55c);\n    bVar2 = false;\n    pcVar13 = *(char **)(pcVar12 + 0x2d554);\n    do {\n      while (((psVar9 = (scrpos *)((int)&in_a1->pos + iVar3), iVar3 != 0 && (psVar9 < psVar6)) &&\n             (iVar4 = (**(code **)(pcVar12 + 0x2d994))(in_a1,pcVar11,iVar3), iVar4 == 0))) {\n        psVar6 = (scrpos *)puVar10[1];\n        if (psVar6 <= psVar9) {\n          return;\n        }\n        in_a1 = (scrpos *)((int)&in_a1->pos + iVar3 + 1);\n        if (psVar6 <= in_a1) {\n          return;\n        }\n      }\n      cVar1 = *(char *)&in_a1->pos;\n      psVar9 = (scrpos *)((int)&in_a1->pos + 1);\n      if (bVar2) {\n        psVar6 = (scrpos *)puVar10[1];\n        if (*pcVar13 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar5 == cVar1) {\n        psVar6 = (scrpos *)puVar10[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)&in_a1->pos = '\0';\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      else {\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      in_a1 = psVar9;\n    } while (psVar9 < psVar6);\n  }" if (parenthesized_expression "(in_a1 < psVar6)" ( (binary_expression "in_a1 < psVar6" identifier < identifier) )) (compound_statement "{\n    pcVar5 = *(char **)(pcVar12 + 0x2d55c);\n    bVar2 = false;\n    pcVar13 = *(char **)(pcVar12 + 0x2d554);\n    do {\n      while (((psVar9 = (scrpos *)((int)&in_a1->pos + iVar3), iVar3 != 0 && (psVar9 < psVar6)) &&\n             (iVar4 = (**(code **)(pcVar12 + 0x2d994))(in_a1,pcVar11,iVar3), iVar4 == 0))) {\n        psVar6 = (scrpos *)puVar10[1];\n        if (psVar6 <= psVar9) {\n          return;\n        }\n        in_a1 = (scrpos *)((int)&in_a1->pos + iVar3 + 1);\n        if (psVar6 <= in_a1) {\n          return;\n        }\n      }\n      cVar1 = *(char *)&in_a1->pos;\n      psVar9 = (scrpos *)((int)&in_a1->pos + 1);\n      if (bVar2) {\n        psVar6 = (scrpos *)puVar10[1];\n        if (*pcVar13 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar5 == cVar1) {\n        psVar6 = (scrpos *)puVar10[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)&in_a1->pos = '\0';\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      else {\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      in_a1 = psVar9;\n    } while (psVar9 < psVar6);\n  }" { (expression_statement "pcVar5 = *(char **)(pcVar12 + 0x2d55c);" (assignment_expression "pcVar5 = *(char **)(pcVar12 + 0x2d55c)" identifier = (pointer_expression "*(char **)(pcVar12 + 0x2d55c)" * (cast_expression "(char **)(pcVar12 + 0x2d55c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x2d55c)" ( (binary_expression "pcVar12 + 0x2d55c" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "pcVar13 = *(char **)(pcVar12 + 0x2d554);" (assignment_expression "pcVar13 = *(char **)(pcVar12 + 0x2d554)" identifier = (pointer_expression "*(char **)(pcVar12 + 0x2d554)" * (cast_expression "(char **)(pcVar12 + 0x2d554)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x2d554)" ( (binary_expression "pcVar12 + 0x2d554" identifier + number_literal) ))))) ;) (do_statement "do {\n      while (((psVar9 = (scrpos *)((int)&in_a1->pos + iVar3), iVar3 != 0 && (psVar9 < psVar6)) &&\n             (iVar4 = (**(code **)(pcVar12 + 0x2d994))(in_a1,pcVar11,iVar3), iVar4 == 0))) {\n        psVar6 = (scrpos *)puVar10[1];\n        if (psVar6 <= psVar9) {\n          return;\n        }\n        in_a1 = (scrpos *)((int)&in_a1->pos + iVar3 + 1);\n        if (psVar6 <= in_a1) {\n          return;\n        }\n      }\n      cVar1 = *(char *)&in_a1->pos;\n      psVar9 = (scrpos *)((int)&in_a1->pos + 1);\n      if (bVar2) {\n        psVar6 = (scrpos *)puVar10[1];\n        if (*pcVar13 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar5 == cVar1) {\n        psVar6 = (scrpos *)puVar10[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)&in_a1->pos = '\0';\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      else {\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      in_a1 = psVar9;\n    } while (psVar9 < psVar6);" do (compound_statement "{\n      while (((psVar9 = (scrpos *)((int)&in_a1->pos + iVar3), iVar3 != 0 && (psVar9 < psVar6)) &&\n             (iVar4 = (**(code **)(pcVar12 + 0x2d994))(in_a1,pcVar11,iVar3), iVar4 == 0))) {\n        psVar6 = (scrpos *)puVar10[1];\n        if (psVar6 <= psVar9) {\n          return;\n        }\n        in_a1 = (scrpos *)((int)&in_a1->pos + iVar3 + 1);\n        if (psVar6 <= in_a1) {\n          return;\n        }\n      }\n      cVar1 = *(char *)&in_a1->pos;\n      psVar9 = (scrpos *)((int)&in_a1->pos + 1);\n      if (bVar2) {\n        psVar6 = (scrpos *)puVar10[1];\n        if (*pcVar13 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar5 == cVar1) {\n        psVar6 = (scrpos *)puVar10[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)&in_a1->pos = '\0';\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      else {\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      in_a1 = psVar9;\n    }" { (while_statement "while (((psVar9 = (scrpos *)((int)&in_a1->pos + iVar3), iVar3 != 0 && (psVar9 < psVar6)) &&\n             (iVar4 = (**(code **)(pcVar12 + 0x2d994))(in_a1,pcVar11,iVar3), iVar4 == 0))) {\n        psVar6 = (scrpos *)puVar10[1];\n        if (psVar6 <= psVar9) {\n          return;\n        }\n        in_a1 = (scrpos *)((int)&in_a1->pos + iVar3 + 1);\n        if (psVar6 <= in_a1) {\n          return;\n        }\n      }" while (parenthesized_expression "(((psVar9 = (scrpos *)((int)&in_a1->pos + iVar3), iVar3 != 0 && (psVar9 < psVar6)) &&\n             (iVar4 = (**(code **)(pcVar12 + 0x2d994))(in_a1,pcVar11,iVar3), iVar4 == 0)))" ( (parenthesized_expression "((psVar9 = (scrpos *)((int)&in_a1->pos + iVar3), iVar3 != 0 && (psVar9 < psVar6)) &&\n             (iVar4 = (**(code **)(pcVar12 + 0x2d994))(in_a1,pcVar11,iVar3), iVar4 == 0))" ( (binary_expression "(psVar9 = (scrpos *)((int)&in_a1->pos + iVar3), iVar3 != 0 && (psVar9 < psVar6)) &&\n             (iVar4 = (**(code **)(pcVar12 + 0x2d994))(in_a1,pcVar11,iVar3), iVar4 == 0)" (parenthesized_expression "(psVar9 = (scrpos *)((int)&in_a1->pos + iVar3), iVar3 != 0 && (psVar9 < psVar6))" ( (comma_expression "psVar9 = (scrpos *)((int)&in_a1->pos + iVar3), iVar3 != 0 && (psVar9 < psVar6)" (assignment_expression "psVar9 = (scrpos *)((int)&in_a1->pos + iVar3)" identifier = (cast_expression "(scrpos *)((int)&in_a1->pos + iVar3)" ( (type_descriptor "scrpos *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&in_a1->pos + iVar3)" ( (binary_expression "(int)&in_a1->pos + iVar3" (cast_expression "(int)&in_a1->pos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&in_a1->pos" & (field_expression "in_a1->pos" identifier -> field_identifier))) + identifier) )))) , (binary_expression "iVar3 != 0 && (psVar9 < psVar6)" (binary_expression "iVar3 != 0" identifier != number_literal) && (parenthesized_expression "(psVar9 < psVar6)" ( (binary_expression "psVar9 < psVar6" identifier < identifier) )))) )) && (parenthesized_expression "(iVar4 = (**(code **)(pcVar12 + 0x2d994))(in_a1,pcVar11,iVar3), iVar4 == 0)" ( (comma_expression "iVar4 = (**(code **)(pcVar12 + 0x2d994))(in_a1,pcVar11,iVar3), iVar4 == 0" (assignment_expression "iVar4 = (**(code **)(pcVar12 + 0x2d994))(in_a1,pcVar11,iVar3)" identifier = (call_expression "(**(code **)(pcVar12 + 0x2d994))(in_a1,pcVar11,iVar3)" (parenthesized_expression "(**(code **)(pcVar12 + 0x2d994))" ( (pointer_expression "**(code **)(pcVar12 + 0x2d994)" * (pointer_expression "*(code **)(pcVar12 + 0x2d994)" * (cast_expression "(code **)(pcVar12 + 0x2d994)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x2d994)" ( (binary_expression "pcVar12 + 0x2d994" identifier + number_literal) ))))) )) (argument_list "(in_a1,pcVar11,iVar3)" ( identifier , identifier , identifier )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) )) (compound_statement "{\n        psVar6 = (scrpos *)puVar10[1];\n        if (psVar6 <= psVar9) {\n          return;\n        }\n        in_a1 = (scrpos *)((int)&in_a1->pos + iVar3 + 1);\n        if (psVar6 <= in_a1) {\n          return;\n        }\n      }" { (expression_statement "psVar6 = (scrpos *)puVar10[1];" (assignment_expression "psVar6 = (scrpos *)puVar10[1]" identifier = (cast_expression "(scrpos *)puVar10[1]" ( (type_descriptor "scrpos *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[1]" identifier [ number_literal ]))) ;) (if_statement "if (psVar6 <= psVar9) {\n          return;\n        }" if (parenthesized_expression "(psVar6 <= psVar9)" ( (binary_expression "psVar6 <= psVar9" identifier <= identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "in_a1 = (scrpos *)((int)&in_a1->pos + iVar3 + 1);" (assignment_expression "in_a1 = (scrpos *)((int)&in_a1->pos + iVar3 + 1)" identifier = (cast_expression "(scrpos *)((int)&in_a1->pos + iVar3 + 1)" ( (type_descriptor "scrpos *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&in_a1->pos + iVar3 + 1)" ( (binary_expression "(int)&in_a1->pos + iVar3 + 1" (binary_expression "(int)&in_a1->pos + iVar3" (cast_expression "(int)&in_a1->pos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&in_a1->pos" & (field_expression "in_a1->pos" identifier -> field_identifier))) + identifier) + number_literal) )))) ;) (if_statement "if (psVar6 <= in_a1) {\n          return;\n        }" if (parenthesized_expression "(psVar6 <= in_a1)" ( (binary_expression "psVar6 <= in_a1" identifier <= identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) })) (expression_statement "cVar1 = *(char *)&in_a1->pos;" (assignment_expression "cVar1 = *(char *)&in_a1->pos" identifier = (pointer_expression "*(char *)&in_a1->pos" * (cast_expression "(char *)&in_a1->pos" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&in_a1->pos" & (field_expression "in_a1->pos" identifier -> field_identifier))))) ;) (expression_statement "psVar9 = (scrpos *)((int)&in_a1->pos + 1);" (assignment_expression "psVar9 = (scrpos *)((int)&in_a1->pos + 1)" identifier = (cast_expression "(scrpos *)((int)&in_a1->pos + 1)" ( (type_descriptor "scrpos *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&in_a1->pos + 1)" ( (binary_expression "(int)&in_a1->pos + 1" (cast_expression "(int)&in_a1->pos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&in_a1->pos" & (field_expression "in_a1->pos" identifier -> field_identifier))) + number_literal) )))) ;) (if_statement "if (bVar2) {\n        psVar6 = (scrpos *)puVar10[1];\n        if (*pcVar13 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar5 == cVar1) {\n        psVar6 = (scrpos *)puVar10[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)&in_a1->pos = '\0';\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      else {\n        psVar6 = (scrpos *)puVar10[1];\n      }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n        psVar6 = (scrpos *)puVar10[1];\n        if (*pcVar13 == cVar1) {\n          bVar2 = false;\n        }\n      }" { (expression_statement "psVar6 = (scrpos *)puVar10[1];" (assignment_expression "psVar6 = (scrpos *)puVar10[1]" identifier = (cast_expression "(scrpos *)puVar10[1]" ( (type_descriptor "scrpos *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[1]" identifier [ number_literal ]))) ;) (if_statement "if (*pcVar13 == cVar1) {\n          bVar2 = false;\n        }" if (parenthesized_expression "(*pcVar13 == cVar1)" ( (binary_expression "*pcVar13 == cVar1" (pointer_expression "*pcVar13" * identifier) == identifier) )) (compound_statement "{\n          bVar2 = false;\n        }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) })) }) (else_clause "else if (*pcVar5 == cVar1) {\n        psVar6 = (scrpos *)puVar10[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)&in_a1->pos = '\0';\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      else {\n        psVar6 = (scrpos *)puVar10[1];\n      }" else (if_statement "if (*pcVar5 == cVar1) {\n        psVar6 = (scrpos *)puVar10[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)&in_a1->pos = '\0';\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      else {\n        psVar6 = (scrpos *)puVar10[1];\n      }" if (parenthesized_expression "(*pcVar5 == cVar1)" ( (binary_expression "*pcVar5 == cVar1" (pointer_expression "*pcVar5" * identifier) == identifier) )) (compound_statement "{\n        psVar6 = (scrpos *)puVar10[1];\n        bVar2 = true;\n      }" { (expression_statement "psVar6 = (scrpos *)puVar10[1];" (assignment_expression "psVar6 = (scrpos *)puVar10[1]" identifier = (cast_expression "(scrpos *)puVar10[1]" ( (type_descriptor "scrpos *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[1]" identifier [ number_literal ]))) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }) (else_clause "else if (cVar1 == ' ') {\n        *(char *)&in_a1->pos = '\0';\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      else {\n        psVar6 = (scrpos *)puVar10[1];\n      }" else (if_statement "if (cVar1 == ' ') {\n        *(char *)&in_a1->pos = '\0';\n        psVar6 = (scrpos *)puVar10[1];\n      }\n      else {\n        psVar6 = (scrpos *)puVar10[1];\n      }" if (parenthesized_expression "(cVar1 == ' ')" ( (binary_expression "cVar1 == ' '" identifier == (char_literal "' '" ' character ')) )) (compound_statement "{\n        *(char *)&in_a1->pos = '\0';\n        psVar6 = (scrpos *)puVar10[1];\n      }" { (expression_statement "*(char *)&in_a1->pos = '\0';" (assignment_expression "*(char *)&in_a1->pos = '\0'" (pointer_expression "*(char *)&in_a1->pos" * (cast_expression "(char *)&in_a1->pos" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&in_a1->pos" & (field_expression "in_a1->pos" identifier -> field_identifier)))) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "psVar6 = (scrpos *)puVar10[1];" (assignment_expression "psVar6 = (scrpos *)puVar10[1]" identifier = (cast_expression "(scrpos *)puVar10[1]" ( (type_descriptor "scrpos *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[1]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        psVar6 = (scrpos *)puVar10[1];\n      }" else (compound_statement "{\n        psVar6 = (scrpos *)puVar10[1];\n      }" { (expression_statement "psVar6 = (scrpos *)puVar10[1];" (assignment_expression "psVar6 = (scrpos *)puVar10[1]" identifier = (cast_expression "(scrpos *)puVar10[1]" ( (type_descriptor "scrpos *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[1]" identifier [ number_literal ]))) ;) }))))))) (expression_statement "in_a1 = psVar9;" (assignment_expression "in_a1 = psVar9" identifier = identifier) ;) }) while (parenthesized_expression "(psVar9 < psVar6)" ( (binary_expression "psVar9 < psVar6" identifier < identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000217c0(undefined4 param_1,int *param_2)\n\n{\n  char cVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  int iVar11;\n  char *pcVar12;\n  undefined *puVar13;\n  char *pcVar14;\n  int local_30;\n  int local_2c;\n  int local_1c;\n  \n  puVar4 = PTR___stack_chk_guard_0004f374;\n  piVar9 = &local_30;\n  local_1c = *(int *)PTR___stack_chk_guard_0004f374;\n  get_scrpos(piVar9);\n  puVar13 = PTR_curr_ifile_0004edb4;\n  if ((local_30 != -1) || (local_2c != -1)) {\n    store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);\n    lastmark();\n    param_2 = piVar9;\n  }\n  puVar3 = PTR_curr_altfilename_0004ef20;\n  ch_close();\n  iVar11 = *(int *)puVar3;\n  if (iVar11 != 0) {\n    param_2 = (int *)get_filename(*(undefined4 *)puVar13);\n    close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));\n    (*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);\n    *(undefined4 *)puVar3 = 0;\n  }\n  puVar3 = PTR_curr_dev_0004edc0;\n  iVar11 = *(int *)puVar4;\n  *(undefined4 *)puVar13 = 0;\n  *(undefined4 *)(puVar3 + 4) = 0;\n  *(undefined4 *)puVar3 = 0;\n  piVar9 = (int *)PTR_curr_ino_0004edbc;\n  *(undefined4 *)(PTR_curr_ino_0004edbc + 4) = 0;\n  *piVar9 = 0;\n  if (local_1c == iVar11) {\n    return;\n  }\n  puVar13 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  uVar5 = get_meta_escape();\n  iVar11 = (**(code **)(puVar13 + 0x2da08))(uVar5);\n  iVar6 = skipsp(param_2);\n  *piVar9 = iVar6;\n  iVar7 = (**(code **)(puVar13 + 0x2da08))(iVar6);\n  piVar8 = (int *)(iVar6 + iVar7);\n  piVar9[1] = (int)piVar8;\n  if (param_2 < piVar8) {\n    pcVar12 = *(char **)(puVar13 + 0x2d55c);\n    bVar2 = false;\n    pcVar14 = *(char **)(puVar13 + 0x2d554);\n    do {\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    } while (piVar10 < piVar8);\n  }\n  return;\n}\n\n" (function_definition "void FUN_000217c0(undefined4 param_1,int *param_2)\n\n{\n  char cVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  int iVar11;\n  char *pcVar12;\n  undefined *puVar13;\n  char *pcVar14;\n  int local_30;\n  int local_2c;\n  int local_1c;\n  \n  puVar4 = PTR___stack_chk_guard_0004f374;\n  piVar9 = &local_30;\n  local_1c = *(int *)PTR___stack_chk_guard_0004f374;\n  get_scrpos(piVar9);\n  puVar13 = PTR_curr_ifile_0004edb4;\n  if ((local_30 != -1) || (local_2c != -1)) {\n    store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);\n    lastmark();\n    param_2 = piVar9;\n  }\n  puVar3 = PTR_curr_altfilename_0004ef20;\n  ch_close();\n  iVar11 = *(int *)puVar3;\n  if (iVar11 != 0) {\n    param_2 = (int *)get_filename(*(undefined4 *)puVar13);\n    close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));\n    (*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);\n    *(undefined4 *)puVar3 = 0;\n  }\n  puVar3 = PTR_curr_dev_0004edc0;\n  iVar11 = *(int *)puVar4;\n  *(undefined4 *)puVar13 = 0;\n  *(undefined4 *)(puVar3 + 4) = 0;\n  *(undefined4 *)puVar3 = 0;\n  piVar9 = (int *)PTR_curr_ino_0004edbc;\n  *(undefined4 *)(PTR_curr_ino_0004edbc + 4) = 0;\n  *piVar9 = 0;\n  if (local_1c == iVar11) {\n    return;\n  }\n  puVar13 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  uVar5 = get_meta_escape();\n  iVar11 = (**(code **)(puVar13 + 0x2da08))(uVar5);\n  iVar6 = skipsp(param_2);\n  *piVar9 = iVar6;\n  iVar7 = (**(code **)(puVar13 + 0x2da08))(iVar6);\n  piVar8 = (int *)(iVar6 + iVar7);\n  piVar9[1] = (int)piVar8;\n  if (param_2 < piVar8) {\n    pcVar12 = *(char **)(puVar13 + 0x2d55c);\n    bVar2 = false;\n    pcVar14 = *(char **)(puVar13 + 0x2d554);\n    do {\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    } while (piVar10 < piVar8);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000217c0(undefined4 param_1,int *param_2)" identifier (parameter_list "(undefined4 param_1,int *param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  int iVar11;\n  char *pcVar12;\n  undefined *puVar13;\n  char *pcVar14;\n  int local_30;\n  int local_2c;\n  int local_1c;\n  \n  puVar4 = PTR___stack_chk_guard_0004f374;\n  piVar9 = &local_30;\n  local_1c = *(int *)PTR___stack_chk_guard_0004f374;\n  get_scrpos(piVar9);\n  puVar13 = PTR_curr_ifile_0004edb4;\n  if ((local_30 != -1) || (local_2c != -1)) {\n    store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);\n    lastmark();\n    param_2 = piVar9;\n  }\n  puVar3 = PTR_curr_altfilename_0004ef20;\n  ch_close();\n  iVar11 = *(int *)puVar3;\n  if (iVar11 != 0) {\n    param_2 = (int *)get_filename(*(undefined4 *)puVar13);\n    close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));\n    (*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);\n    *(undefined4 *)puVar3 = 0;\n  }\n  puVar3 = PTR_curr_dev_0004edc0;\n  iVar11 = *(int *)puVar4;\n  *(undefined4 *)puVar13 = 0;\n  *(undefined4 *)(puVar3 + 4) = 0;\n  *(undefined4 *)puVar3 = 0;\n  piVar9 = (int *)PTR_curr_ino_0004edbc;\n  *(undefined4 *)(PTR_curr_ino_0004edbc + 4) = 0;\n  *piVar9 = 0;\n  if (local_1c == iVar11) {\n    return;\n  }\n  puVar13 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  uVar5 = get_meta_escape();\n  iVar11 = (**(code **)(puVar13 + 0x2da08))(uVar5);\n  iVar6 = skipsp(param_2);\n  *piVar9 = iVar6;\n  iVar7 = (**(code **)(puVar13 + 0x2da08))(iVar6);\n  piVar8 = (int *)(iVar6 + iVar7);\n  piVar9[1] = (int)piVar8;\n  if (param_2 < piVar8) {\n    pcVar12 = *(char **)(puVar13 + 0x2d55c);\n    bVar2 = false;\n    pcVar14 = *(char **)(puVar13 + 0x2d554);\n    do {\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    } while (piVar10 < piVar8);\n  }\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar4 = PTR___stack_chk_guard_0004f374;" (assignment_expression "puVar4 = PTR___stack_chk_guard_0004f374" identifier = identifier) ;) (expression_statement "piVar9 = &local_30;" (assignment_expression "piVar9 = &local_30" identifier = (pointer_expression "&local_30" & identifier)) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_0004f374;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_0004f374" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0004f374" * (cast_expression "(int *)PTR___stack_chk_guard_0004f374" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "get_scrpos(piVar9);" (call_expression "get_scrpos(piVar9)" identifier (argument_list "(piVar9)" ( identifier ))) ;) (expression_statement "puVar13 = PTR_curr_ifile_0004edb4;" (assignment_expression "puVar13 = PTR_curr_ifile_0004edb4" identifier = identifier) ;) (if_statement "if ((local_30 != -1) || (local_2c != -1)) {\n    store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);\n    lastmark();\n    param_2 = piVar9;\n  }" if (parenthesized_expression "((local_30 != -1) || (local_2c != -1))" ( (binary_expression "(local_30 != -1) || (local_2c != -1)" (parenthesized_expression "(local_30 != -1)" ( (binary_expression "local_30 != -1" identifier != number_literal) )) || (parenthesized_expression "(local_2c != -1)" ( (binary_expression "local_2c != -1" identifier != number_literal) ))) )) (compound_statement "{\n    store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);\n    lastmark();\n    param_2 = piVar9;\n  }" { (expression_statement "store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);" (call_expression "store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4)" identifier (argument_list "(*(undefined4 *)PTR_curr_ifile_0004edb4)" ( (pointer_expression "*(undefined4 *)PTR_curr_ifile_0004edb4" * (cast_expression "(undefined4 *)PTR_curr_ifile_0004edb4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "lastmark();" (call_expression "lastmark()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_2 = piVar9;" (assignment_expression "param_2 = piVar9" identifier = identifier) ;) })) (expression_statement "puVar3 = PTR_curr_altfilename_0004ef20;" (assignment_expression "puVar3 = PTR_curr_altfilename_0004ef20" identifier = identifier) ;) (expression_statement "ch_close();" (call_expression "ch_close()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar11 = *(int *)puVar3;" (assignment_expression "iVar11 = *(int *)puVar3" identifier = (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (iVar11 != 0) {\n    param_2 = (int *)get_filename(*(undefined4 *)puVar13);\n    close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));\n    (*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);\n    *(undefined4 *)puVar3 = 0;\n  }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n    param_2 = (int *)get_filename(*(undefined4 *)puVar13);\n    close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));\n    (*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);\n    *(undefined4 *)puVar3 = 0;\n  }" { (expression_statement "param_2 = (int *)get_filename(*(undefined4 *)puVar13);" (assignment_expression "param_2 = (int *)get_filename(*(undefined4 *)puVar13)" identifier = (cast_expression "(int *)get_filename(*(undefined4 *)puVar13)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "get_filename(*(undefined4 *)puVar13)" identifier (argument_list "(*(undefined4 *)puVar13)" ( (pointer_expression "*(undefined4 *)puVar13" * (cast_expression "(undefined4 *)puVar13" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))))) ;) (expression_statement "close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));" (call_expression "close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428))" identifier (argument_list "(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428)" * (cast_expression "(undefined4 *)(PTR_DAT_0004ebf8 + 0x428)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0004ebf8 + 0x428)" ( (binary_expression "PTR_DAT_0004ebf8 + 0x428" identifier + number_literal) )))) ))) ;) (expression_statement "(*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_free_0004f37c)" ( (pointer_expression "*(code *)PTR_free_0004f37c" * (cast_expression "(code *)PTR_free_0004f37c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "*(undefined4 *)puVar3 = 0;" (assignment_expression "*(undefined4 *)puVar3 = 0" (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) })) (expression_statement "puVar3 = PTR_curr_dev_0004edc0;" (assignment_expression "puVar3 = PTR_curr_dev_0004edc0" identifier = identifier) ;) (expression_statement "iVar11 = *(int *)puVar4;" (assignment_expression "iVar11 = *(int *)puVar4" identifier = (pointer_expression "*(int *)puVar4" * (cast_expression "(int *)puVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(undefined4 *)puVar13 = 0;" (assignment_expression "*(undefined4 *)puVar13 = 0" (pointer_expression "*(undefined4 *)puVar13" * (cast_expression "(undefined4 *)puVar13" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 4)" * (cast_expression "(undefined4 *)(puVar3 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 4)" ( (binary_expression "puVar3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)puVar3 = 0;" (assignment_expression "*(undefined4 *)puVar3 = 0" (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "piVar9 = (int *)PTR_curr_ino_0004edbc;" (assignment_expression "piVar9 = (int *)PTR_curr_ino_0004edbc" identifier = (cast_expression "(int *)PTR_curr_ino_0004edbc" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*(undefined4 *)(PTR_curr_ino_0004edbc + 4) = 0;" (assignment_expression "*(undefined4 *)(PTR_curr_ino_0004edbc + 4) = 0" (pointer_expression "*(undefined4 *)(PTR_curr_ino_0004edbc + 4)" * (cast_expression "(undefined4 *)(PTR_curr_ino_0004edbc + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_curr_ino_0004edbc + 4)" ( (binary_expression "PTR_curr_ino_0004edbc + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*piVar9 = 0;" (assignment_expression "*piVar9 = 0" (pointer_expression "*piVar9" * identifier) = number_literal) ;) (if_statement "if (local_1c == iVar11) {\n    return;\n  }" if (parenthesized_expression "(local_1c == iVar11)" ( (binary_expression "local_1c == iVar11" identifier == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "puVar13 = PTR___stack_chk_fail_0004f354;" (assignment_expression "puVar13 = PTR___stack_chk_fail_0004f354" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0004f354)();" (call_expression "(*(code *)PTR___stack_chk_fail_0004f354)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0004f354)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0004f354" * (cast_expression "(code *)PTR___stack_chk_fail_0004f354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar5 = get_meta_escape();" (assignment_expression "uVar5 = get_meta_escape()" identifier = (call_expression "get_meta_escape()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar11 = (**(code **)(puVar13 + 0x2da08))(uVar5);" (assignment_expression "iVar11 = (**(code **)(puVar13 + 0x2da08))(uVar5)" identifier = (call_expression "(**(code **)(puVar13 + 0x2da08))(uVar5)" (parenthesized_expression "(**(code **)(puVar13 + 0x2da08))" ( (pointer_expression "**(code **)(puVar13 + 0x2da08)" * (pointer_expression "*(code **)(puVar13 + 0x2da08)" * (cast_expression "(code **)(puVar13 + 0x2da08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x2da08)" ( (binary_expression "puVar13 + 0x2da08" identifier + number_literal) ))))) )) (argument_list "(uVar5)" ( identifier )))) ;) (expression_statement "iVar6 = skipsp(param_2);" (assignment_expression "iVar6 = skipsp(param_2)" identifier = (call_expression "skipsp(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "*piVar9 = iVar6;" (assignment_expression "*piVar9 = iVar6" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "iVar7 = (**(code **)(puVar13 + 0x2da08))(iVar6);" (assignment_expression "iVar7 = (**(code **)(puVar13 + 0x2da08))(iVar6)" identifier = (call_expression "(**(code **)(puVar13 + 0x2da08))(iVar6)" (parenthesized_expression "(**(code **)(puVar13 + 0x2da08))" ( (pointer_expression "**(code **)(puVar13 + 0x2da08)" * (pointer_expression "*(code **)(puVar13 + 0x2da08)" * (cast_expression "(code **)(puVar13 + 0x2da08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x2da08)" ( (binary_expression "puVar13 + 0x2da08" identifier + number_literal) ))))) )) (argument_list "(iVar6)" ( identifier )))) ;) (expression_statement "piVar8 = (int *)(iVar6 + iVar7);" (assignment_expression "piVar8 = (int *)(iVar6 + iVar7)" identifier = (cast_expression "(int *)(iVar6 + iVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar7)" ( (binary_expression "iVar6 + iVar7" identifier + identifier) )))) ;) (expression_statement "piVar9[1] = (int)piVar8;" (assignment_expression "piVar9[1] = (int)piVar8" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (param_2 < piVar8) {\n    pcVar12 = *(char **)(puVar13 + 0x2d55c);\n    bVar2 = false;\n    pcVar14 = *(char **)(puVar13 + 0x2d554);\n    do {\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    } while (piVar10 < piVar8);\n  }" if (parenthesized_expression "(param_2 < piVar8)" ( (binary_expression "param_2 < piVar8" identifier < identifier) )) (compound_statement "{\n    pcVar12 = *(char **)(puVar13 + 0x2d55c);\n    bVar2 = false;\n    pcVar14 = *(char **)(puVar13 + 0x2d554);\n    do {\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    } while (piVar10 < piVar8);\n  }" { (expression_statement "pcVar12 = *(char **)(puVar13 + 0x2d55c);" (assignment_expression "pcVar12 = *(char **)(puVar13 + 0x2d55c)" identifier = (pointer_expression "*(char **)(puVar13 + 0x2d55c)" * (cast_expression "(char **)(puVar13 + 0x2d55c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x2d55c)" ( (binary_expression "puVar13 + 0x2d55c" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "pcVar14 = *(char **)(puVar13 + 0x2d554);" (assignment_expression "pcVar14 = *(char **)(puVar13 + 0x2d554)" identifier = (pointer_expression "*(char **)(puVar13 + 0x2d554)" * (cast_expression "(char **)(puVar13 + 0x2d554)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x2d554)" ( (binary_expression "puVar13 + 0x2d554" identifier + number_literal) ))))) ;) (do_statement "do {\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    } while (piVar10 < piVar8);" do (compound_statement "{\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    }" { (while_statement "while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }" while (parenthesized_expression "(((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0)))" ( (parenthesized_expression "((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))" ( (binary_expression "(iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0)" (parenthesized_expression "(iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8))" ( (binary_expression "iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)" (binary_expression "iVar11 != 0" identifier != number_literal) && (parenthesized_expression "((int *)((int)param_2 + iVar11) < piVar8)" ( (binary_expression "(int *)((int)param_2 + iVar11) < piVar8" (cast_expression "(int *)((int)param_2 + iVar11)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + iVar11)" ( (binary_expression "(int)param_2 + iVar11" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) < identifier) ))) )) && (parenthesized_expression "(iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0)" ( (comma_expression "iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0" (assignment_expression "iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11)" identifier = (call_expression "(**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11)" (parenthesized_expression "(**(code **)(puVar13 + 0x2d994))" ( (pointer_expression "**(code **)(puVar13 + 0x2d994)" * (pointer_expression "*(code **)(puVar13 + 0x2d994)" * (cast_expression "(code **)(puVar13 + 0x2d994)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x2d994)" ( (binary_expression "puVar13 + 0x2d994" identifier + number_literal) ))))) )) (argument_list "(param_2,uVar5,iVar11)" ( identifier , identifier , identifier )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) )) (compound_statement "{\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }" { (expression_statement "piVar8 = (int *)piVar9[1];" (assignment_expression "piVar8 = (int *)piVar9[1]" identifier = (cast_expression "(int *)piVar9[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[1]" identifier [ number_literal ]))) ;) (if_statement "if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }" if (parenthesized_expression "(piVar8 <= (int *)((int)param_2 + iVar11))" ( (binary_expression "piVar8 <= (int *)((int)param_2 + iVar11)" identifier <= (cast_expression "(int *)((int)param_2 + iVar11)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + iVar11)" ( (binary_expression "(int)param_2 + iVar11" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "param_2 = (int *)((int)param_2 + iVar11 + 1);" (assignment_expression "param_2 = (int *)((int)param_2 + iVar11 + 1)" identifier = (cast_expression "(int *)((int)param_2 + iVar11 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + iVar11 + 1)" ( (binary_expression "(int)param_2 + iVar11 + 1" (binary_expression "(int)param_2 + iVar11" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (if_statement "if (piVar8 <= param_2) {\n          return;\n        }" if (parenthesized_expression "(piVar8 <= param_2)" ( (binary_expression "piVar8 <= param_2" identifier <= identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) })) (expression_statement "cVar1 = *(char *)param_2;" (assignment_expression "cVar1 = *(char *)param_2" identifier = (pointer_expression "*(char *)param_2" * (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "piVar10 = (int *)((int)param_2 + 1);" (assignment_expression "piVar10 = (int *)((int)param_2 + 1)" identifier = (cast_expression "(int *)((int)param_2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 1)" ( (binary_expression "(int)param_2 + 1" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }" { (expression_statement "piVar8 = (int *)piVar9[1];" (assignment_expression "piVar8 = (int *)piVar9[1]" identifier = (cast_expression "(int *)piVar9[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[1]" identifier [ number_literal ]))) ;) (if_statement "if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }" if (parenthesized_expression "(*pcVar14 == cVar1)" ( (binary_expression "*pcVar14 == cVar1" (pointer_expression "*pcVar14" * identifier) == identifier) )) (compound_statement "{\n          bVar2 = false;\n        }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) })) }) (else_clause "else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }" else (if_statement "if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }" if (parenthesized_expression "(*pcVar12 == cVar1)" ( (binary_expression "*pcVar12 == cVar1" (pointer_expression "*pcVar12" * identifier) == identifier) )) (compound_statement "{\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }" { (expression_statement "piVar8 = (int *)piVar9[1];" (assignment_expression "piVar8 = (int *)piVar9[1]" identifier = (cast_expression "(int *)piVar9[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[1]" identifier [ number_literal ]))) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }) (else_clause "else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }" else (if_statement "if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }" if (parenthesized_expression "(cVar1 == ' ')" ( (binary_expression "cVar1 == ' '" identifier == (char_literal "' '" ' character ')) )) (compound_statement "{\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }" { (expression_statement "*(char *)param_2 = '\0';" (assignment_expression "*(char *)param_2 = '\0'" (pointer_expression "*(char *)param_2" * (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "piVar8 = (int *)piVar9[1];" (assignment_expression "piVar8 = (int *)piVar9[1]" identifier = (cast_expression "(int *)piVar9[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[1]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        piVar8 = (int *)piVar9[1];\n      }" else (compound_statement "{\n        piVar8 = (int *)piVar9[1];\n      }" { (expression_statement "piVar8 = (int *)piVar9[1];" (assignment_expression "piVar8 = (int *)piVar9[1]" identifier = (cast_expression "(int *)piVar9[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[1]" identifier [ number_literal ]))) ;) }))))))) (expression_statement "param_2 = piVar10;" (assignment_expression "param_2 = piVar10" identifier = identifier) ;) }) while (parenthesized_expression "(piVar10 < piVar8)" ( (binary_expression "piVar10 < piVar8" identifier < identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))) < IDENT) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) )) (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 *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( IDENT )) (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 (pointer_expression * IDENT) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))))))) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_000217c0(undefined4 param_1,int *param_2)\n\n{\n  char cVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  int iVar11;\n  char *pcVar12;\n  undefined *puVar13;\n  char *pcVar14;\n  int local_30;\n  int local_2c;\n  int local_1c;\n  \n  puVar4 = PTR___stack_chk_guard_0004f374;\n  piVar9 = &local_30;\n  local_1c = *(int *)PTR___stack_chk_guard_0004f374;\n  get_scrpos(piVar9);\n  puVar13 = PTR_curr_ifile_0004edb4;\n  if ((local_30 != -1) || (local_2c != -1)) {\n    store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);\n    lastmark();\n    param_2 = piVar9;\n  }\n  puVar3 = PTR_curr_altfilename_0004ef20;\n  ch_close();\n  iVar11 = *(int *)puVar3;\n  if (iVar11 != 0) {\n    param_2 = (int *)get_filename(*(undefined4 *)puVar13);\n    close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));\n    (*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);\n    *(undefined4 *)puVar3 = 0;\n  }\n  puVar3 = PTR_curr_dev_0004edc0;\n  iVar11 = *(int *)puVar4;\n  *(undefined4 *)puVar13 = 0;\n  *(undefined4 *)(puVar3 + 4) = 0;\n  *(undefined4 *)puVar3 = 0;\n  piVar9 = (int *)PTR_curr_ino_0004edbc;\n  *(undefined4 *)(PTR_curr_ino_0004edbc + 4) = 0;\n  *piVar9 = 0;\n  if (local_1c == iVar11) {\n    return;\n  }\n  puVar13 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  uVar5 = get_meta_escape();\n  iVar11 = (**(code **)(puVar13 + 0x2da08))(uVar5);\n  iVar6 = skipsp(param_2);\n  *piVar9 = iVar6;\n  iVar7 = (**(code **)(puVar13 + 0x2da08))(iVar6);\n  piVar8 = (int *)(iVar6 + iVar7);\n  piVar9[1] = (int)piVar8;\n  if (param_2 < piVar8) {\n    pcVar12 = *(char **)(puVar13 + 0x2d55c);\n    bVar2 = false;\n    pcVar14 = *(char **)(puVar13 + 0x2d554);\n    do {\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    } while (piVar10 < piVar8);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000217c0(undefined4 param_1,int *param_2)" (identifier "FUN_000217c0") (parameter_list "(undefined4 param_1,int *param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  char cVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  int iVar11;\n  char *pcVar12;\n  undefined *puVar13;\n  char *pcVar14;\n  int local_30;\n  int local_2c;\n  int local_1c;\n  \n  puVar4 = PTR___stack_chk_guard_0004f374;\n  piVar9 = &local_30;\n  local_1c = *(int *)PTR___stack_chk_guard_0004f374;\n  get_scrpos(piVar9);\n  puVar13 = PTR_curr_ifile_0004edb4;\n  if ((local_30 != -1) || (local_2c != -1)) {\n    store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);\n    lastmark();\n    param_2 = piVar9;\n  }\n  puVar3 = PTR_curr_altfilename_0004ef20;\n  ch_close();\n  iVar11 = *(int *)puVar3;\n  if (iVar11 != 0) {\n    param_2 = (int *)get_filename(*(undefined4 *)puVar13);\n    close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));\n    (*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);\n    *(undefined4 *)puVar3 = 0;\n  }\n  puVar3 = PTR_curr_dev_0004edc0;\n  iVar11 = *(int *)puVar4;\n  *(undefined4 *)puVar13 = 0;\n  *(undefined4 *)(puVar3 + 4) = 0;\n  *(undefined4 *)puVar3 = 0;\n  piVar9 = (int *)PTR_curr_ino_0004edbc;\n  *(undefined4 *)(PTR_curr_ino_0004edbc + 4) = 0;\n  *piVar9 = 0;\n  if (local_1c == iVar11) {\n    return;\n  }\n  puVar13 = PTR___stack_chk_fail_0004f354;\n  (*(code *)PTR___stack_chk_fail_0004f354)();\n  uVar5 = get_meta_escape();\n  iVar11 = (**(code **)(puVar13 + 0x2da08))(uVar5);\n  iVar6 = skipsp(param_2);\n  *piVar9 = iVar6;\n  iVar7 = (**(code **)(puVar13 + 0x2da08))(iVar6);\n  piVar8 = (int *)(iVar6 + iVar7);\n  piVar9[1] = (int)piVar8;\n  if (param_2 < piVar8) {\n    pcVar12 = *(char **)(puVar13 + 0x2d55c);\n    bVar2 = false;\n    pcVar14 = *(char **)(puVar13 + 0x2d554);\n    do {\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    } while (piVar10 < piVar8);\n  }\n  return;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "char *pcVar12;" (primitive_type "char") (pointer_declarator "*pcVar12" (* "*") (identifier "pcVar12")) (; ";")) (declaration "undefined *puVar13;" (type_identifier "undefined") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "char *pcVar14;" (primitive_type "char") (pointer_declarator "*pcVar14" (* "*") (identifier "pcVar14")) (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "int local_1c;" (primitive_type "int") (identifier "local_1c") (; ";")) (expression_statement "puVar4 = PTR___stack_chk_guard_0004f374;" (assignment_expression "puVar4 = PTR___stack_chk_guard_0004f374" (identifier "puVar4") (= "=") (identifier "PTR___stack_chk_guard_0004f374")) (; ";")) (expression_statement "piVar9 = &local_30;" (assignment_expression "piVar9 = &local_30" (identifier "piVar9") (= "=") (pointer_expression "&local_30" (& "&") (identifier "local_30"))) (; ";")) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_0004f374;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_0004f374" (identifier "local_1c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0004f374" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0004f374" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0004f374")))) (; ";")) (expression_statement "get_scrpos(piVar9);" (call_expression "get_scrpos(piVar9)" (identifier "get_scrpos") (argument_list "(piVar9)" (( "(") (identifier "piVar9") () ")"))) (; ";")) (expression_statement "puVar13 = PTR_curr_ifile_0004edb4;" (assignment_expression "puVar13 = PTR_curr_ifile_0004edb4" (identifier "puVar13") (= "=") (identifier "PTR_curr_ifile_0004edb4")) (; ";")) (if_statement "if ((local_30 != -1) || (local_2c != -1)) {\n    store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);\n    lastmark();\n    param_2 = piVar9;\n  }" (if "if") (parenthesized_expression "((local_30 != -1) || (local_2c != -1))" (( "(") (binary_expression "(local_30 != -1) || (local_2c != -1)" (parenthesized_expression "(local_30 != -1)" (( "(") (binary_expression "local_30 != -1" (identifier "local_30") (!= "!=") (number_literal "-1")) () ")")) (|| "||") (parenthesized_expression "(local_2c != -1)" (( "(") (binary_expression "local_2c != -1" (identifier "local_2c") (!= "!=") (number_literal "-1")) () ")"))) () ")")) (compound_statement "{\n    store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);\n    lastmark();\n    param_2 = piVar9;\n  }" ({ "{") (expression_statement "store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);" (call_expression "store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4)" (identifier "store_pos") (argument_list "(*(undefined4 *)PTR_curr_ifile_0004edb4)" (( "(") (pointer_expression "*(undefined4 *)PTR_curr_ifile_0004edb4" (* "*") (cast_expression "(undefined4 *)PTR_curr_ifile_0004edb4" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_curr_ifile_0004edb4"))) () ")"))) (; ";")) (expression_statement "lastmark();" (call_expression "lastmark()" (identifier "lastmark") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_2 = piVar9;" (assignment_expression "param_2 = piVar9" (identifier "param_2") (= "=") (identifier "piVar9")) (; ";")) (} "}"))) (expression_statement "puVar3 = PTR_curr_altfilename_0004ef20;" (assignment_expression "puVar3 = PTR_curr_altfilename_0004ef20" (identifier "puVar3") (= "=") (identifier "PTR_curr_altfilename_0004ef20")) (; ";")) (expression_statement "ch_close();" (call_expression "ch_close()" (identifier "ch_close") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar11 = *(int *)puVar3;" (assignment_expression "iVar11 = *(int *)puVar3" (identifier "iVar11") (= "=") (pointer_expression "*(int *)puVar3" (* "*") (cast_expression "(int *)puVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3")))) (; ";")) (if_statement "if (iVar11 != 0) {\n    param_2 = (int *)get_filename(*(undefined4 *)puVar13);\n    close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));\n    (*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);\n    *(undefined4 *)puVar3 = 0;\n  }" (if "if") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    param_2 = (int *)get_filename(*(undefined4 *)puVar13);\n    close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));\n    (*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);\n    *(undefined4 *)puVar3 = 0;\n  }" ({ "{") (expression_statement "param_2 = (int *)get_filename(*(undefined4 *)puVar13);" (assignment_expression "param_2 = (int *)get_filename(*(undefined4 *)puVar13)" (identifier "param_2") (= "=") (cast_expression "(int *)get_filename(*(undefined4 *)puVar13)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "get_filename(*(undefined4 *)puVar13)" (identifier "get_filename") (argument_list "(*(undefined4 *)puVar13)" (( "(") (pointer_expression "*(undefined4 *)puVar13" (* "*") (cast_expression "(undefined4 *)puVar13" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar13"))) () ")"))))) (; ";")) (expression_statement "close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));" (call_expression "close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428))" (identifier "close_altfile") (argument_list "(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428))" (( "(") (identifier "iVar11") (, ",") (identifier "param_2") (, ",") (pointer_expression "*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428)" (* "*") (cast_expression "(undefined4 *)(PTR_DAT_0004ebf8 + 0x428)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0004ebf8 + 0x428)" (( "(") (binary_expression "PTR_DAT_0004ebf8 + 0x428" (identifier "PTR_DAT_0004ebf8") (+ "+") (number_literal "0x428")) () ")")))) () ")"))) (; ";")) (expression_statement "(*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_free_0004f37c)" (( "(") (pointer_expression "*(code *)PTR_free_0004f37c" (* "*") (cast_expression "(code *)PTR_free_0004f37c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0004f37c"))) () ")")) (argument_list "(*(undefined4 *)puVar3)" (( "(") (pointer_expression "*(undefined4 *)puVar3" (* "*") (cast_expression "(undefined4 *)puVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)puVar3 = 0;" (assignment_expression "*(undefined4 *)puVar3 = 0" (pointer_expression "*(undefined4 *)puVar3" (* "*") (cast_expression "(undefined4 *)puVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar3 = PTR_curr_dev_0004edc0;" (assignment_expression "puVar3 = PTR_curr_dev_0004edc0" (identifier "puVar3") (= "=") (identifier "PTR_curr_dev_0004edc0")) (; ";")) (expression_statement "iVar11 = *(int *)puVar4;" (assignment_expression "iVar11 = *(int *)puVar4" (identifier "iVar11") (= "=") (pointer_expression "*(int *)puVar4" (* "*") (cast_expression "(int *)puVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar4")))) (; ";")) (expression_statement "*(undefined4 *)puVar13 = 0;" (assignment_expression "*(undefined4 *)puVar13 = 0" (pointer_expression "*(undefined4 *)puVar13" (* "*") (cast_expression "(undefined4 *)puVar13" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar13"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 4)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 4)" (( "(") (binary_expression "puVar3 + 4" (identifier "puVar3") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)puVar3 = 0;" (assignment_expression "*(undefined4 *)puVar3 = 0" (pointer_expression "*(undefined4 *)puVar3" (* "*") (cast_expression "(undefined4 *)puVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar9 = (int *)PTR_curr_ino_0004edbc;" (assignment_expression "piVar9 = (int *)PTR_curr_ino_0004edbc" (identifier "piVar9") (= "=") (cast_expression "(int *)PTR_curr_ino_0004edbc" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_curr_ino_0004edbc"))) (; ";")) (expression_statement "*(undefined4 *)(PTR_curr_ino_0004edbc + 4) = 0;" (assignment_expression "*(undefined4 *)(PTR_curr_ino_0004edbc + 4) = 0" (pointer_expression "*(undefined4 *)(PTR_curr_ino_0004edbc + 4)" (* "*") (cast_expression "(undefined4 *)(PTR_curr_ino_0004edbc + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_curr_ino_0004edbc + 4)" (( "(") (binary_expression "PTR_curr_ino_0004edbc + 4" (identifier "PTR_curr_ino_0004edbc") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*piVar9 = 0;" (assignment_expression "*piVar9 = 0" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_1c == iVar11) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_1c == iVar11)" (( "(") (binary_expression "local_1c == iVar11" (identifier "local_1c") (== "==") (identifier "iVar11")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar13 = PTR___stack_chk_fail_0004f354;" (assignment_expression "puVar13 = PTR___stack_chk_fail_0004f354" (identifier "puVar13") (= "=") (identifier "PTR___stack_chk_fail_0004f354")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_0004f354)();" (call_expression "(*(code *)PTR___stack_chk_fail_0004f354)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0004f354)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0004f354" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0004f354" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0004f354"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar5 = get_meta_escape();" (assignment_expression "uVar5 = get_meta_escape()" (identifier "uVar5") (= "=") (call_expression "get_meta_escape()" (identifier "get_meta_escape") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar11 = (**(code **)(puVar13 + 0x2da08))(uVar5);" (assignment_expression "iVar11 = (**(code **)(puVar13 + 0x2da08))(uVar5)" (identifier "iVar11") (= "=") (call_expression "(**(code **)(puVar13 + 0x2da08))(uVar5)" (parenthesized_expression "(**(code **)(puVar13 + 0x2da08))" (( "(") (pointer_expression "**(code **)(puVar13 + 0x2da08)" (* "*") (pointer_expression "*(code **)(puVar13 + 0x2da08)" (* "*") (cast_expression "(code **)(puVar13 + 0x2da08)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0x2da08)" (( "(") (binary_expression "puVar13 + 0x2da08" (identifier "puVar13") (+ "+") (number_literal "0x2da08")) () ")"))))) () ")")) (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")")))) (; ";")) (expression_statement "iVar6 = skipsp(param_2);" (assignment_expression "iVar6 = skipsp(param_2)" (identifier "iVar6") (= "=") (call_expression "skipsp(param_2)" (identifier "skipsp") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "*piVar9 = iVar6;" (assignment_expression "*piVar9 = iVar6" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "iVar7 = (**(code **)(puVar13 + 0x2da08))(iVar6);" (assignment_expression "iVar7 = (**(code **)(puVar13 + 0x2da08))(iVar6)" (identifier "iVar7") (= "=") (call_expression "(**(code **)(puVar13 + 0x2da08))(iVar6)" (parenthesized_expression "(**(code **)(puVar13 + 0x2da08))" (( "(") (pointer_expression "**(code **)(puVar13 + 0x2da08)" (* "*") (pointer_expression "*(code **)(puVar13 + 0x2da08)" (* "*") (cast_expression "(code **)(puVar13 + 0x2da08)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0x2da08)" (( "(") (binary_expression "puVar13 + 0x2da08" (identifier "puVar13") (+ "+") (number_literal "0x2da08")) () ")"))))) () ")")) (argument_list "(iVar6)" (( "(") (identifier "iVar6") () ")")))) (; ";")) (expression_statement "piVar8 = (int *)(iVar6 + iVar7);" (assignment_expression "piVar8 = (int *)(iVar6 + iVar7)" (identifier "piVar8") (= "=") (cast_expression "(int *)(iVar6 + iVar7)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + iVar7)" (( "(") (binary_expression "iVar6 + iVar7" (identifier "iVar6") (+ "+") (identifier "iVar7")) () ")")))) (; ";")) (expression_statement "piVar9[1] = (int)piVar8;" (assignment_expression "piVar9[1] = (int)piVar8" (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8"))) (; ";")) (if_statement "if (param_2 < piVar8) {\n    pcVar12 = *(char **)(puVar13 + 0x2d55c);\n    bVar2 = false;\n    pcVar14 = *(char **)(puVar13 + 0x2d554);\n    do {\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    } while (piVar10 < piVar8);\n  }" (if "if") (parenthesized_expression "(param_2 < piVar8)" (( "(") (binary_expression "param_2 < piVar8" (identifier "param_2") (< "<") (identifier "piVar8")) () ")")) (compound_statement "{\n    pcVar12 = *(char **)(puVar13 + 0x2d55c);\n    bVar2 = false;\n    pcVar14 = *(char **)(puVar13 + 0x2d554);\n    do {\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    } while (piVar10 < piVar8);\n  }" ({ "{") (expression_statement "pcVar12 = *(char **)(puVar13 + 0x2d55c);" (assignment_expression "pcVar12 = *(char **)(puVar13 + 0x2d55c)" (identifier "pcVar12") (= "=") (pointer_expression "*(char **)(puVar13 + 0x2d55c)" (* "*") (cast_expression "(char **)(puVar13 + 0x2d55c)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0x2d55c)" (( "(") (binary_expression "puVar13 + 0x2d55c" (identifier "puVar13") (+ "+") (number_literal "0x2d55c")) () ")"))))) (; ";")) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (expression_statement "pcVar14 = *(char **)(puVar13 + 0x2d554);" (assignment_expression "pcVar14 = *(char **)(puVar13 + 0x2d554)" (identifier "pcVar14") (= "=") (pointer_expression "*(char **)(puVar13 + 0x2d554)" (* "*") (cast_expression "(char **)(puVar13 + 0x2d554)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0x2d554)" (( "(") (binary_expression "puVar13 + 0x2d554" (identifier "puVar13") (+ "+") (number_literal "0x2d554")) () ")"))))) (; ";")) (do_statement "do {\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    } while (piVar10 < piVar8);" (do "do") (compound_statement "{\n      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }\n      cVar1 = *(char *)param_2;\n      piVar10 = (int *)((int)param_2 + 1);\n      if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }\n      param_2 = piVar10;\n    }" ({ "{") (while_statement "while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }" (while "while") (parenthesized_expression "(((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0)))" (( "(") (parenthesized_expression "((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))" (( "(") (binary_expression "(iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&\n             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0)" (parenthesized_expression "(iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8))" (( "(") (binary_expression "iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)" (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "((int *)((int)param_2 + iVar11) < piVar8)" (( "(") (binary_expression "(int *)((int)param_2 + iVar11) < piVar8" (cast_expression "(int *)((int)param_2 + iVar11)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + iVar11)" (( "(") (binary_expression "(int)param_2 + iVar11" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (identifier "iVar11")) () ")"))) (< "<") (identifier "piVar8")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0)" (( "(") (comma_expression "iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0" (assignment_expression "iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11)" (identifier "iVar6") (= "=") (call_expression "(**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11)" (parenthesized_expression "(**(code **)(puVar13 + 0x2d994))" (( "(") (pointer_expression "**(code **)(puVar13 + 0x2d994)" (* "*") (pointer_expression "*(code **)(puVar13 + 0x2d994)" (* "*") (cast_expression "(code **)(puVar13 + 0x2d994)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0x2d994)" (( "(") (binary_expression "puVar13 + 0x2d994" (identifier "puVar13") (+ "+") (number_literal "0x2d994")) () ")"))))) () ")")) (argument_list "(param_2,uVar5,iVar11)" (( "(") (identifier "param_2") (, ",") (identifier "uVar5") (, ",") (identifier "iVar11") () ")")))) (, ",") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0"))) () ")"))) () ")")) () ")")) (compound_statement "{\n        piVar8 = (int *)piVar9[1];\n        if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }\n        param_2 = (int *)((int)param_2 + iVar11 + 1);\n        if (piVar8 <= param_2) {\n          return;\n        }\n      }" ({ "{") (expression_statement "piVar8 = (int *)piVar9[1];" (assignment_expression "piVar8 = (int *)piVar9[1]" (identifier "piVar8") (= "=") (cast_expression "(int *)piVar9[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (piVar8 <= (int *)((int)param_2 + iVar11)) {\n          return;\n        }" (if "if") (parenthesized_expression "(piVar8 <= (int *)((int)param_2 + iVar11))" (( "(") (binary_expression "piVar8 <= (int *)((int)param_2 + iVar11)" (identifier "piVar8") (<= "<=") (cast_expression "(int *)((int)param_2 + iVar11)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + iVar11)" (( "(") (binary_expression "(int)param_2 + iVar11" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (identifier "iVar11")) () ")")))) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "param_2 = (int *)((int)param_2 + iVar11 + 1);" (assignment_expression "param_2 = (int *)((int)param_2 + iVar11 + 1)" (identifier "param_2") (= "=") (cast_expression "(int *)((int)param_2 + iVar11 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + iVar11 + 1)" (( "(") (binary_expression "(int)param_2 + iVar11 + 1" (binary_expression "(int)param_2 + iVar11" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (identifier "iVar11")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (piVar8 <= param_2) {\n          return;\n        }" (if "if") (parenthesized_expression "(piVar8 <= param_2)" (( "(") (binary_expression "piVar8 <= param_2" (identifier "piVar8") (<= "<=") (identifier "param_2")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "cVar1 = *(char *)param_2;" (assignment_expression "cVar1 = *(char *)param_2" (identifier "cVar1") (= "=") (pointer_expression "*(char *)param_2" (* "*") (cast_expression "(char *)param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2")))) (; ";")) (expression_statement "piVar10 = (int *)((int)param_2 + 1);" (assignment_expression "piVar10 = (int *)((int)param_2 + 1)" (identifier "piVar10") (= "=") (cast_expression "(int *)((int)param_2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 1)" (( "(") (binary_expression "(int)param_2 + 1" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (bVar2) {\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }\n      else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (compound_statement "{\n        piVar8 = (int *)piVar9[1];\n        if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }\n      }" ({ "{") (expression_statement "piVar8 = (int *)piVar9[1];" (assignment_expression "piVar8 = (int *)piVar9[1]" (identifier "piVar8") (= "=") (cast_expression "(int *)piVar9[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (*pcVar14 == cVar1) {\n          bVar2 = false;\n        }" (if "if") (parenthesized_expression "(*pcVar14 == cVar1)" (( "(") (binary_expression "*pcVar14 == cVar1" (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) (== "==") (identifier "cVar1")) () ")")) (compound_statement "{\n          bVar2 = false;\n        }" ({ "{") (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (} "}"))) (} "}")) (else_clause "else if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }" (else "else") (if_statement "if (*pcVar12 == cVar1) {\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }\n      else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }" (if "if") (parenthesized_expression "(*pcVar12 == cVar1)" (( "(") (binary_expression "*pcVar12 == cVar1" (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) (== "==") (identifier "cVar1")) () ")")) (compound_statement "{\n        piVar8 = (int *)piVar9[1];\n        bVar2 = true;\n      }" ({ "{") (expression_statement "piVar8 = (int *)piVar9[1];" (assignment_expression "piVar8 = (int *)piVar9[1]" (identifier "piVar8") (= "=") (cast_expression "(int *)piVar9[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (} "}")) (else_clause "else if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }" (else "else") (if_statement "if (cVar1 == ' ') {\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }\n      else {\n        piVar8 = (int *)piVar9[1];\n      }" (if "if") (parenthesized_expression "(cVar1 == ' ')" (( "(") (binary_expression "cVar1 == ' '" (identifier "cVar1") (== "==") (char_literal "' '" (' "'") (character " ") (' "'"))) () ")")) (compound_statement "{\n        *(char *)param_2 = '\0';\n        piVar8 = (int *)piVar9[1];\n      }" ({ "{") (expression_statement "*(char *)param_2 = '\0';" (assignment_expression "*(char *)param_2 = '\0'" (pointer_expression "*(char *)param_2" (* "*") (cast_expression "(char *)param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "piVar8 = (int *)piVar9[1];" (assignment_expression "piVar8 = (int *)piVar9[1]" (identifier "piVar8") (= "=") (cast_expression "(int *)piVar9[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n        piVar8 = (int *)piVar9[1];\n      }" (else "else") (compound_statement "{\n        piVar8 = (int *)piVar9[1];\n      }" ({ "{") (expression_statement "piVar8 = (int *)piVar9[1];" (assignment_expression "piVar8 = (int *)piVar9[1]" (identifier "piVar8") (= "=") (cast_expression "(int *)piVar9[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}")))))))) (expression_statement "param_2 = piVar10;" (assignment_expression "param_2 = piVar10" (identifier "param_2") (= "=") (identifier "piVar10")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar10 < piVar8)" (( "(") (binary_expression "piVar10 < piVar8" (identifier "piVar10") (< "<") (identifier "piVar8")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void function_1(void)

{
  char var_18;
  bool bVar2;
  int var_9;
  int var_10;
  char *var_14;
  type_1 *var_16;
  type_1 *var_15;
  type_2 *puVar7;
  int *piVar8;
  type_1 *var_17;
  type_2 *puVar10;
  char *var_6;
  int var_1;
  type_3 *var_12;
  char *pcVar13;
  type_1 type_1;
  
  piVar8 = *(int **)(var_1 + 0x2dbb4);
  var_16 = &type_1;
  var_9 = *piVar8;
  var_2(var_16);
  puVar10 = *(type_2 **)(var_1 + 0x2d5f4);
  if ((type_1.pos._0_4_ != -1) || (type_1.pos._4_4_ != -1)) {
    var_3((void *)*puVar10,var_16);
    var_4();
    var_15 = var_16;
  }
  puVar7 = *(type_2 **)(var_1 + 0x2d760);
  var_5();
  var_6 = (char *)*puVar7;
  if (var_6 != (char *)0x0) {
    var_15 = (type_1 *)var_7((void *)*puVar10);
    var_8(var_6,(char *)var_15,*(void **)(*(int *)(var_1 + 0x2d438) + 0x428));
    (**(type_3 **)(var_1 + 0x2dbbc))(*puVar7);
    *puVar7 = 0;
  }
  puVar7 = *(type_2 **)(var_1 + 0x2d600);
  var_10 = *piVar8;
  *puVar10 = 0;
  puVar7[1] = 0;
  *puVar7 = 0;
  puVar10 = *(type_2 **)(var_1 + 0x2d5fc);
  puVar10[1] = 0;
  *puVar10 = 0;
  if (var_9 == var_10) {
    return;
  }
  var_12 = *(type_3 **)(var_1 + 0x2db94);
  (*var_12)();
  var_6 = var_11();
  var_9 = (**(type_3 **)(var_12 + 0x2da08))(var_6);
  var_14 = var_13((char *)var_15);
  *puVar10 = var_14;
  var_10 = (**(type_3 **)(var_12 + 0x2da08))(var_14);
  var_16 = (type_1 *)(var_14 + var_10);
  puVar10[1] = var_16;
  if (var_15 < var_16) {
    var_14 = *(char **)(var_12 + 0x2d55c);
    bVar2 = false;
    pcVar13 = *(char **)(var_12 + 0x2d554);
    do {
      while (((var_17 = (type_1 *)((int)&var_15->pos + var_9), var_9 != 0 && (var_17 < var_16)) &&
             (var_10 = (**(type_3 **)(var_12 + 0x2d994))(var_15,var_6,var_9), var_10 == 0))) {
        var_16 = (type_1 *)puVar10[1];
        if (var_16 <= var_17) {
          return;
        }
        var_15 = (type_1 *)((int)&var_15->pos + var_9 + 1);
        if (var_16 <= var_15) {
          return;
        }
      }
      var_18 = *(char *)&var_15->pos;
      var_17 = (type_1 *)((int)&var_15->pos + 1);
      if (bVar2) {
        var_16 = (type_1 *)puVar10[1];
        if (*pcVar13 == var_18) {
          bVar2 = false;
        }
      }
      else if (*var_14 == var_18) {
        var_16 = (type_1 *)puVar10[1];
        bVar2 = true;
      }
      else if (var_18 == ' ') {
        *(char *)&var_15->pos = '\0';
        var_16 = (type_1 *)puVar10[1];
      }
      else {
        var_16 = (type_1 *)puVar10[1];
      }
      var_15 = var_17;
    } while (var_17 < var_16);
  }
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) 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)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (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 (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (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))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) right: (identifier))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier)))) right: (binary_expression left: (identifier) right: (number_literal))))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) 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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false)))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (true)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) 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: (subscript_expression argument: (identifier) index: (number_literal)))))))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (return_statement))))

void MASKED(undefined4 param_1,int *param_2)

{
  char cVar1;
  bool bVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  int *piVar8;
  int *piVar9;
  int *piVar10;
  int iVar11;
  char *pcVar12;
  undefined *puVar13;
  char *pcVar14;
  int local_30;
  int local_2c;
  int local_1c;
  
  puVar4 = PTR___stack_chk_guard_0004f374;
  piVar9 = &local_30;
  local_1c = *(int *)PTR___stack_chk_guard_0004f374;
  get_scrpos(piVar9);
  puVar13 = PTR_curr_ifile_0004edb4;
  if ((local_30 != -1) || (local_2c != -1)) {
    store_pos(*(undefined4 *)PTR_curr_ifile_0004edb4);
    lastmark();
    param_2 = piVar9;
  }
  puVar3 = PTR_curr_altfilename_0004ef20;
  ch_close();
  iVar11 = *(int *)puVar3;
  if (iVar11 != 0) {
    param_2 = (int *)get_filename(*(undefined4 *)puVar13);
    close_altfile(iVar11,param_2,*(undefined4 *)(PTR_DAT_0004ebf8 + 0x428));
    (*(code *)PTR_free_0004f37c)(*(undefined4 *)puVar3);
    *(undefined4 *)puVar3 = 0;
  }
  puVar3 = PTR_curr_dev_0004edc0;
  iVar11 = *(int *)puVar4;
  *(undefined4 *)puVar13 = 0;
  *(undefined4 *)(puVar3 + 4) = 0;
  *(undefined4 *)puVar3 = 0;
  piVar9 = (int *)PTR_curr_ino_0004edbc;
  *(undefined4 *)(PTR_curr_ino_0004edbc + 4) = 0;
  *piVar9 = 0;
  if (local_1c == iVar11) {
    return;
  }
  puVar13 = PTR___stack_chk_fail_0004f354;
  (*(code *)PTR___stack_chk_fail_0004f354)();
  uVar5 = get_meta_escape();
  iVar11 = (**(code **)(puVar13 + 0x2da08))(uVar5);
  iVar6 = skipsp(param_2);
  *piVar9 = iVar6;
  iVar7 = (**(code **)(puVar13 + 0x2da08))(iVar6);
  piVar8 = (int *)(iVar6 + iVar7);
  piVar9[1] = (int)piVar8;
  if (param_2 < piVar8) {
    pcVar12 = *(char **)(puVar13 + 0x2d55c);
    bVar2 = false;
    pcVar14 = *(char **)(puVar13 + 0x2d554);
    do {
      while (((iVar11 != 0 && ((int *)((int)param_2 + iVar11) < piVar8)) &&
             (iVar6 = (**(code **)(puVar13 + 0x2d994))(param_2,uVar5,iVar11), iVar6 == 0))) {
        piVar8 = (int *)piVar9[1];
        if (piVar8 <= (int *)((int)param_2 + iVar11)) {
          return;
        }
        param_2 = (int *)((int)param_2 + iVar11 + 1);
        if (piVar8 <= param_2) {
          return;
        }
      }
      cVar1 = *(char *)param_2;
      piVar10 = (int *)((int)param_2 + 1);
      if (bVar2) {
        piVar8 = (int *)piVar9[1];
        if (*pcVar14 == cVar1) {
          bVar2 = false;
        }
      }
      else if (*pcVar12 == cVar1) {
        piVar8 = (int *)piVar9[1];
        bVar2 = true;
      }
      else if (cVar1 == ' ') {
        *(char *)param_2 = '\0';
        piVar8 = (int *)piVar9[1];
      }
      else {
        piVar8 = (int *)piVar9[1];
      }
      param_2 = piVar10;
    } while (piVar10 < piVar8);
  }
  return;
}

