
_Bool readtokens0(FILE *in,Tokens *t)

{
  char **ppcVar1;
  size_t *psVar2;
  int iVar3;
  char *pcVar4;
  uint uVar5;
  _obstack_chunk *p_Var6;
  char **ppcVar7;
  size_t *psVar8;
  char *pcVar9;
  code *pcVar10;
  
  pcVar10 = (code *)(PTR_LAB_0003f22c + 0x4f30);
  while (iVar3 = (*(code *)PTR_fgetc_0003f448)(in), iVar3 != -1) {
    pcVar4 = (t->o_data).next_free;
    if ((t->o_data).chunk_limit == pcVar4) {
      _obstack_newchunk(&t->o_data,1);
      pcVar4 = (t->o_data).next_free;
    }
    (t->o_data).next_free = pcVar4 + 1;
    *pcVar4 = (char)iVar3;
    if (iVar3 == 0) {
      (*pcVar10)(t);
    }
  }
  pcVar4 = (t->o_data).next_free;
  if (pcVar4 != (t->o_data).object_base) {
    if (pcVar4 == (t->o_data).chunk_limit) {
      _obstack_newchunk(&t->o_data,1);
      pcVar4 = (t->o_data).next_free;
    }
    (t->o_data).next_free = pcVar4 + 1;
    *pcVar4 = '\0';
    save_token(t);
  }
  if ((uint)((int)(t->o_tok).chunk_limit - (int)(t->o_tok).next_free) < 4) {
    _obstack_newchunk(&t->o_tok,4);
    pcVar4 = (t->o_tok).next_free;
  }
  else {
    pcVar4 = (t->o_tok).next_free;
  }
  pcVar4[0] = '\0';
  pcVar4[1] = '\0';
  pcVar4[2] = '\0';
  pcVar4[3] = '\0';
  ppcVar1 = (char **)((t->o_tok).next_free + 4);
  (t->o_tok).next_free = (char *)ppcVar1;
  ppcVar7 = (char **)(t->o_tok).object_base;
  if (ppcVar1 == ppcVar7) {
    (t->o_tok).field_0x28 = (t->o_tok).field_0x28 & 0xbf | 0x40;
  }
  uVar5 = (t->o_tok).alignment_mask;
  pcVar4 = (char *)((uint)((int)ppcVar1 + uVar5) & ~uVar5);
  p_Var6 = (t->o_tok).chunk;
  pcVar9 = (t->o_tok).chunk_limit;
  if ((uint)((int)pcVar9 - (int)p_Var6) < (uint)((int)pcVar4 - (int)p_Var6)) {
    pcVar4 = pcVar9;
  }
  (t->o_tok).next_free = pcVar4;
  (t->o_tok).object_base = pcVar4;
  t->tok = ppcVar7;
  psVar8 = (size_t *)(t->o_tok_len).object_base;
  psVar2 = (size_t *)(t->o_tok_len).next_free;
  if (psVar2 == psVar8) {
    (t->o_tok_len).field_0x28 = (t->o_tok_len).field_0x28 & 0xbf | 0x40;
  }
  uVar5 = (t->o_tok_len).alignment_mask;
  pcVar4 = (char *)((uint)((int)psVar2 + uVar5) & ~uVar5);
  p_Var6 = (t->o_tok_len).chunk;
  pcVar9 = (t->o_tok_len).chunk_limit;
  if ((uint)((int)pcVar9 - (int)p_Var6) < (uint)((int)pcVar4 - (int)p_Var6)) {
    pcVar4 = pcVar9;
  }
  (t->o_tok_len).next_free = pcVar4;
  (t->o_tok_len).object_base = pcVar4;
  t->tok_len = psVar8;
  iVar3 = (*(code *)PTR_ferror_0003f548)(in);
  return iVar3 == 0;
}



bool readtokens0(undefined4 param_1,int param_2)

{
  undefined4 *puVar1;
  uint uVar2;
  int iVar3;
  undefined1 *puVar4;
  int iVar5;
  code *pcVar6;
  
  pcVar6 = (code *)(PTR_LAB_0003f22c + 0x4f30);
  while (iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1) {
    puVar4 = *(undefined1 **)(param_2 + 0x18);
    if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {
      _obstack_newchunk(param_2 + 0xc,1);
      puVar4 = *(undefined1 **)(param_2 + 0x18);
    }
    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;
    *puVar4 = (char)iVar3;
    if (iVar3 == 0) {
      (*pcVar6)(param_2);
    }
  }
  puVar4 = *(undefined1 **)(param_2 + 0x18);
  if (puVar4 != *(undefined1 **)(param_2 + 0x14)) {
    if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {
      _obstack_newchunk(param_2 + 0xc,1);
      puVar4 = *(undefined1 **)(param_2 + 0x18);
    }
    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;
    *puVar4 = 0;
    FUN_00024f30(param_2);
  }
  if ((uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4) {
    _obstack_newchunk(param_2 + 0x38,4);
    puVar1 = *(undefined4 **)(param_2 + 0x44);
  }
  else {
    puVar1 = *(undefined4 **)(param_2 + 0x44);
  }
  *puVar1 = 0;
  iVar3 = *(int *)(param_2 + 0x44) + 4;
  *(int *)(param_2 + 0x44) = iVar3;
  iVar5 = *(int *)(param_2 + 0x40);
  if (iVar3 == iVar5) {
    *(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;
  }
  uVar2 = iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50);
  if (*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c)) {
    uVar2 = *(uint *)(param_2 + 0x48);
  }
  *(uint *)(param_2 + 0x44) = uVar2;
  *(uint *)(param_2 + 0x40) = uVar2;
  *(int *)(param_2 + 4) = iVar5;
  iVar3 = *(int *)(param_2 + 0x6c);
  if (*(int *)(param_2 + 0x70) == iVar3) {
    *(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;
  }
  uVar2 = *(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c);
  if (*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68)) {
    uVar2 = *(uint *)(param_2 + 0x74);
  }
  *(uint *)(param_2 + 0x70) = uVar2;
  *(uint *)(param_2 + 0x6c) = uVar2;
  *(int *)(param_2 + 8) = iVar3;
  iVar3 = (*(code *)PTR_ferror_0003f548)(param_1);
  return iVar3 == 0;
}


lui gp,0x2
addiu gp,gp,0x1fc4
addu gp,gp,t9
addiu sp,sp,-0x38
sw ra,0x34(sp)
sw s5,0x30(sp)
sw s4,0x2c(sp)
sw s3,0x28(sp)
sw s2,0x24(sp)
sw s1,0x20(sp)
sw s0,0x1c(sp)
sw gp,0x10(sp)
or s2,a0,zero
or s0,a1,zero
li s3,-0x1
addiu s4,a1,0xc
lw s5,-0x7f54(gp)
b 0x00025360
_addiu s5,s5,0x4f30
lw v0,0x18(s0)
lw v1,0x14(s0)
beq v0,v1,0x00025248
_nop
lw v1,0x1c(s0)
beq v0,v1,0x00025334
_li a1,0x1
addiu v1,v0,0x1
sw v1,0x18(s0)
sb zero,0x0(v0)
or a0,s0,zero
lw t9,-0x7f54(gp)
addiu t9,t9,0x4f30
bal 0x00024f30
_nop
lw gp,0x10(sp)
lw v0,0x48(s0)
lw v1,0x44(s0)
subu v0,v0,v1
sltiu v0,v0,0x4
bne v0,zero,0x000253c8
_li a1,0x4
lw v0,0x44(s0)
sw zero,0x0(v0)
lw v0,0x44(s0)
addiu v0,v0,0x4
sw v0,0x44(s0)
lw a1,0x40(s0)
beq v0,a1,0x000253e4
_li a0,0x1
lw v1,0x50(s0)
addu v0,v0,v1
nor v1,zero,v1
and v0,v0,v1
lw a0,0x3c(s0)
lw a2,0x48(s0)
subu v1,v0,a0
subu a0,a2,a0
sltu v1,a0,v1
movn v0,a2,v1
sw v0,0x44(s0)
sw v0,0x40(s0)
sw a1,0x4(s0)
lw a1,0x6c(s0)
lw v0,0x70(s0)
beq v0,a1,0x000253f4
_li a0,0x1
lw v1,0x7c(s0)
addu v0,v0,v1
nor v1,zero,v1
and v0,v0,v1
lw a0,0x68(s0)
lw a2,0x74(s0)
subu v1,v0,a0
subu a0,a2,a0
sltu v1,a0,v1
movn v0,a2,v1
sw v0,0x70(s0)
sw v0,0x6c(s0)
sw a1,0x8(s0)
or a0,s2,zero
lw t9,-0x7c38(gp)
jalr t9
_nop
lw gp,0x10(sp)
sltiu v0,v0,0x1
lw ra,0x34(sp)
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x38
addiu a0,s0,0xc
lw t9,-0x7e48(gp)
bal 0x000295bc
_nop
lw gp,0x10(sp)
b 0x00025224
_lw v0,0x18(s0)
addiu v1,v0,0x1
sw v1,0x18(s0)
beq s1,zero,0x000253ac
_sb s1,0x0(v0)
or a0,s2,zero
lw t9,-0x7d38(gp)
jalr t9
_nop
lw gp,0x10(sp)
beq v0,s3,0x00025208
_or s1,v0,zero
lw v1,0x1c(s0)
lw v0,0x18(s0)
bne v1,v0,0x00025354
_addiu v1,v0,0x1
li a1,0x1
or a0,s4,zero
lw t9,-0x7e48(gp)
bal 0x000295bc
_nop
lw gp,0x10(sp)
b 0x00025350
_lw v0,0x18(s0)
or a0,s0,zero
or t9,s5,zero
jalr t9
_nop
lw gp,0x10(sp)
b 0x00025364
_or a0,s2,zero
addiu a0,s0,0x38
lw t9,-0x7e48(gp)
bal 0x000295bc
_nop
lw gp,0x10(sp)
b 0x00025264
_lw v0,0x44(s0)
lbu v1,0x60(s0)
ins v1,a0,0x6,0x1
b 0x00025280
_sb v1,0x60(s0)
lbu v1,0x8c(s0)
ins v1,a0,0x6,0x1
b 0x000252c4
_sb v1,0x8c(s0)
(translation_unit "bool readtokens0(undefined4 param_1,int param_2)\n\n{\n  undefined4 *puVar1;\n  uint uVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  int iVar5;\n  code *pcVar6;\n  \n  pcVar6 = (code *)(PTR_LAB_0003f22c + 0x4f30);\n  while (iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1) {\n    puVar4 = *(undefined1 **)(param_2 + 0x18);\n    if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar6)(param_2);\n    }\n  }\n  puVar4 = *(undefined1 **)(param_2 + 0x18);\n  if (puVar4 != *(undefined1 **)(param_2 + 0x14)) {\n    if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = 0;\n    FUN_00024f30(param_2);\n  }\n  if ((uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4) {\n    _obstack_newchunk(param_2 + 0x38,4);\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  else {\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  *puVar1 = 0;\n  iVar3 = *(int *)(param_2 + 0x44) + 4;\n  *(int *)(param_2 + 0x44) = iVar3;\n  iVar5 = *(int *)(param_2 + 0x40);\n  if (iVar3 == iVar5) {\n    *(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;\n  }\n  uVar2 = iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50);\n  if (*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c)) {\n    uVar2 = *(uint *)(param_2 + 0x48);\n  }\n  *(uint *)(param_2 + 0x44) = uVar2;\n  *(uint *)(param_2 + 0x40) = uVar2;\n  *(int *)(param_2 + 4) = iVar5;\n  iVar3 = *(int *)(param_2 + 0x6c);\n  if (*(int *)(param_2 + 0x70) == iVar3) {\n    *(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;\n  }\n  uVar2 = *(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c);\n  if (*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68)) {\n    uVar2 = *(uint *)(param_2 + 0x74);\n  }\n  *(uint *)(param_2 + 0x70) = uVar2;\n  *(uint *)(param_2 + 0x6c) = uVar2;\n  *(int *)(param_2 + 8) = iVar3;\n  iVar3 = (*(code *)PTR_ferror_0003f548)(param_1);\n  return iVar3 == 0;\n}\n\n" (function_definition "bool readtokens0(undefined4 param_1,int param_2)\n\n{\n  undefined4 *puVar1;\n  uint uVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  int iVar5;\n  code *pcVar6;\n  \n  pcVar6 = (code *)(PTR_LAB_0003f22c + 0x4f30);\n  while (iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1) {\n    puVar4 = *(undefined1 **)(param_2 + 0x18);\n    if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar6)(param_2);\n    }\n  }\n  puVar4 = *(undefined1 **)(param_2 + 0x18);\n  if (puVar4 != *(undefined1 **)(param_2 + 0x14)) {\n    if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = 0;\n    FUN_00024f30(param_2);\n  }\n  if ((uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4) {\n    _obstack_newchunk(param_2 + 0x38,4);\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  else {\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  *puVar1 = 0;\n  iVar3 = *(int *)(param_2 + 0x44) + 4;\n  *(int *)(param_2 + 0x44) = iVar3;\n  iVar5 = *(int *)(param_2 + 0x40);\n  if (iVar3 == iVar5) {\n    *(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;\n  }\n  uVar2 = iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50);\n  if (*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c)) {\n    uVar2 = *(uint *)(param_2 + 0x48);\n  }\n  *(uint *)(param_2 + 0x44) = uVar2;\n  *(uint *)(param_2 + 0x40) = uVar2;\n  *(int *)(param_2 + 4) = iVar5;\n  iVar3 = *(int *)(param_2 + 0x6c);\n  if (*(int *)(param_2 + 0x70) == iVar3) {\n    *(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;\n  }\n  uVar2 = *(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c);\n  if (*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68)) {\n    uVar2 = *(uint *)(param_2 + 0x74);\n  }\n  *(uint *)(param_2 + 0x70) = uVar2;\n  *(uint *)(param_2 + 0x6c) = uVar2;\n  *(int *)(param_2 + 8) = iVar3;\n  iVar3 = (*(code *)PTR_ferror_0003f548)(param_1);\n  return iVar3 == 0;\n}" primitive_type (function_declarator "readtokens0(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 identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  uint uVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  int iVar5;\n  code *pcVar6;\n  \n  pcVar6 = (code *)(PTR_LAB_0003f22c + 0x4f30);\n  while (iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1) {\n    puVar4 = *(undefined1 **)(param_2 + 0x18);\n    if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar6)(param_2);\n    }\n  }\n  puVar4 = *(undefined1 **)(param_2 + 0x18);\n  if (puVar4 != *(undefined1 **)(param_2 + 0x14)) {\n    if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = 0;\n    FUN_00024f30(param_2);\n  }\n  if ((uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4) {\n    _obstack_newchunk(param_2 + 0x38,4);\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  else {\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  *puVar1 = 0;\n  iVar3 = *(int *)(param_2 + 0x44) + 4;\n  *(int *)(param_2 + 0x44) = iVar3;\n  iVar5 = *(int *)(param_2 + 0x40);\n  if (iVar3 == iVar5) {\n    *(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;\n  }\n  uVar2 = iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50);\n  if (*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c)) {\n    uVar2 = *(uint *)(param_2 + 0x48);\n  }\n  *(uint *)(param_2 + 0x44) = uVar2;\n  *(uint *)(param_2 + 0x40) = uVar2;\n  *(int *)(param_2 + 4) = iVar5;\n  iVar3 = *(int *)(param_2 + 0x6c);\n  if (*(int *)(param_2 + 0x70) == iVar3) {\n    *(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;\n  }\n  uVar2 = *(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c);\n  if (*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68)) {\n    uVar2 = *(uint *)(param_2 + 0x74);\n  }\n  *(uint *)(param_2 + 0x70) = uVar2;\n  *(uint *)(param_2 + 0x6c) = uVar2;\n  *(int *)(param_2 + 8) = iVar3;\n  iVar3 = (*(code *)PTR_ferror_0003f548)(param_1);\n  return iVar3 == 0;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (expression_statement "pcVar6 = (code *)(PTR_LAB_0003f22c + 0x4f30);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_0003f22c + 0x4f30)" identifier = (cast_expression "(code *)(PTR_LAB_0003f22c + 0x4f30)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0003f22c + 0x4f30)" ( (binary_expression "PTR_LAB_0003f22c + 0x4f30" identifier + number_literal) )))) ;) (while_statement "while (iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1) {\n    puVar4 = *(undefined1 **)(param_2 + 0x18);\n    if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar6)(param_2);\n    }\n  }" while (parenthesized_expression "(iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1)" ( (comma_expression "iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1" (assignment_expression "iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1)" identifier = (call_expression "(*(code *)PTR_fgetc_0003f448)(param_1)" (parenthesized_expression "(*(code *)PTR_fgetc_0003f448)" ( (pointer_expression "*(code *)PTR_fgetc_0003f448" * (cast_expression "(code *)PTR_fgetc_0003f448" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar3 != -1" identifier != number_literal)) )) (compound_statement "{\n    puVar4 = *(undefined1 **)(param_2 + 0x18);\n    if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar6)(param_2);\n    }\n  }" { (expression_statement "puVar4 = *(undefined1 **)(param_2 + 0x18);" (assignment_expression "puVar4 = *(undefined1 **)(param_2 + 0x18)" identifier = (pointer_expression "*(undefined1 **)(param_2 + 0x18)" * (cast_expression "(undefined1 **)(param_2 + 0x18)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }" if (parenthesized_expression "(*(undefined1 **)(param_2 + 0x1c) == puVar4)" ( (binary_expression "*(undefined1 **)(param_2 + 0x1c) == puVar4" (pointer_expression "*(undefined1 **)(param_2 + 0x1c)" * (cast_expression "(undefined1 **)(param_2 + 0x1c)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }" { (expression_statement "_obstack_newchunk(param_2 + 0xc,1);" (call_expression "_obstack_newchunk(param_2 + 0xc,1)" identifier (argument_list "(param_2 + 0xc,1)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) , number_literal ))) ;) (expression_statement "puVar4 = *(undefined1 **)(param_2 + 0x18);" (assignment_expression "puVar4 = *(undefined1 **)(param_2 + 0x18)" identifier = (pointer_expression "*(undefined1 **)(param_2 + 0x18)" * (cast_expression "(undefined1 **)(param_2 + 0x18)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) })) (expression_statement "*(undefined1 **)(param_2 + 0x18) = puVar4 + 1;" (assignment_expression "*(undefined1 **)(param_2 + 0x18) = puVar4 + 1" (pointer_expression "*(undefined1 **)(param_2 + 0x18)" * (cast_expression "(undefined1 **)(param_2 + 0x18)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar4 = (char)iVar3;" (assignment_expression "*puVar4 = (char)iVar3" (pointer_expression "*puVar4" * identifier) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (iVar3 == 0) {\n      (*pcVar6)(param_2);\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      (*pcVar6)(param_2);\n    }" { (expression_statement "(*pcVar6)(param_2);" (call_expression "(*pcVar6)(param_2)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(param_2)" ( identifier ))) ;) })) })) (expression_statement "puVar4 = *(undefined1 **)(param_2 + 0x18);" (assignment_expression "puVar4 = *(undefined1 **)(param_2 + 0x18)" identifier = (pointer_expression "*(undefined1 **)(param_2 + 0x18)" * (cast_expression "(undefined1 **)(param_2 + 0x18)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (puVar4 != *(undefined1 **)(param_2 + 0x14)) {\n    if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = 0;\n    FUN_00024f30(param_2);\n  }" if (parenthesized_expression "(puVar4 != *(undefined1 **)(param_2 + 0x14))" ( (binary_expression "puVar4 != *(undefined1 **)(param_2 + 0x14)" identifier != (pointer_expression "*(undefined1 **)(param_2 + 0x14)" * (cast_expression "(undefined1 **)(param_2 + 0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = 0;\n    FUN_00024f30(param_2);\n  }" { (if_statement "if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }" if (parenthesized_expression "(puVar4 == *(undefined1 **)(param_2 + 0x1c))" ( (binary_expression "puVar4 == *(undefined1 **)(param_2 + 0x1c)" identifier == (pointer_expression "*(undefined1 **)(param_2 + 0x1c)" * (cast_expression "(undefined1 **)(param_2 + 0x1c)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) )) (compound_statement "{\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }" { (expression_statement "_obstack_newchunk(param_2 + 0xc,1);" (call_expression "_obstack_newchunk(param_2 + 0xc,1)" identifier (argument_list "(param_2 + 0xc,1)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) , number_literal ))) ;) (expression_statement "puVar4 = *(undefined1 **)(param_2 + 0x18);" (assignment_expression "puVar4 = *(undefined1 **)(param_2 + 0x18)" identifier = (pointer_expression "*(undefined1 **)(param_2 + 0x18)" * (cast_expression "(undefined1 **)(param_2 + 0x18)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) })) (expression_statement "*(undefined1 **)(param_2 + 0x18) = puVar4 + 1;" (assignment_expression "*(undefined1 **)(param_2 + 0x18) = puVar4 + 1" (pointer_expression "*(undefined1 **)(param_2 + 0x18)" * (cast_expression "(undefined1 **)(param_2 + 0x18)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "FUN_00024f30(param_2);" (call_expression "FUN_00024f30(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) })) (if_statement "if ((uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4) {\n    _obstack_newchunk(param_2 + 0x38,4);\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  else {\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }" if (parenthesized_expression "((uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4)" ( (binary_expression "(uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4" (call_expression "(uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44))" ( (binary_expression "*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)" (pointer_expression "*(int *)(param_2 + 0x48)" * (cast_expression "(int *)(param_2 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_2 + 0x44)" * (cast_expression "(int *)(param_2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) ))))) ))) < number_literal) )) (compound_statement "{\n    _obstack_newchunk(param_2 + 0x38,4);\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }" { (expression_statement "_obstack_newchunk(param_2 + 0x38,4);" (call_expression "_obstack_newchunk(param_2 + 0x38,4)" identifier (argument_list "(param_2 + 0x38,4)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) , number_literal ))) ;) (expression_statement "puVar1 = *(undefined4 **)(param_2 + 0x44);" (assignment_expression "puVar1 = *(undefined4 **)(param_2 + 0x44)" identifier = (pointer_expression "*(undefined4 **)(param_2 + 0x44)" * (cast_expression "(undefined4 **)(param_2 + 0x44)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }" else (compound_statement "{\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }" { (expression_statement "puVar1 = *(undefined4 **)(param_2 + 0x44);" (assignment_expression "puVar1 = *(undefined4 **)(param_2 + 0x44)" identifier = (pointer_expression "*(undefined4 **)(param_2 + 0x44)" * (cast_expression "(undefined4 **)(param_2 + 0x44)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) ))))) ;) }))) (expression_statement "*puVar1 = 0;" (assignment_expression "*puVar1 = 0" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (expression_statement "iVar3 = *(int *)(param_2 + 0x44) + 4;" (assignment_expression "iVar3 = *(int *)(param_2 + 0x44) + 4" identifier = (binary_expression "*(int *)(param_2 + 0x44) + 4" (pointer_expression "*(int *)(param_2 + 0x44)" * (cast_expression "(int *)(param_2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_2 + 0x44) = iVar3;" (assignment_expression "*(int *)(param_2 + 0x44) = iVar3" (pointer_expression "*(int *)(param_2 + 0x44)" * (cast_expression "(int *)(param_2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar5 = *(int *)(param_2 + 0x40);" (assignment_expression "iVar5 = *(int *)(param_2 + 0x40)" identifier = (pointer_expression "*(int *)(param_2 + 0x40)" * (cast_expression "(int *)(param_2 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 == iVar5) {\n    *(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;\n  }" if (parenthesized_expression "(iVar3 == iVar5)" ( (binary_expression "iVar3 == iVar5" identifier == identifier) )) (compound_statement "{\n    *(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;\n  }" { (expression_statement "*(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;" (assignment_expression "*(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40" (pointer_expression "*(byte *)(param_2 + 0x60)" * (cast_expression "(byte *)(param_2 + 0x60)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x60)" ( (binary_expression "param_2 + 0x60" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_2 + 0x60) & 0xbf | 0x40" (binary_expression "*(byte *)(param_2 + 0x60) & 0xbf" (pointer_expression "*(byte *)(param_2 + 0x60)" * (cast_expression "(byte *)(param_2 + 0x60)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x60)" ( (binary_expression "param_2 + 0x60" identifier + number_literal) )))) & number_literal) | number_literal)) ;) })) (expression_statement "uVar2 = iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50);" (assignment_expression "uVar2 = iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50)" identifier = (binary_expression "iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50)" (binary_expression "iVar3 + *(uint *)(param_2 + 0x50)" identifier + (pointer_expression "*(uint *)(param_2 + 0x50)" * (cast_expression "(uint *)(param_2 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x50)" ( (binary_expression "param_2 + 0x50" identifier + number_literal) ))))) & (unary_expression "~*(uint *)(param_2 + 0x50)" ~ (pointer_expression "*(uint *)(param_2 + 0x50)" * (cast_expression "(uint *)(param_2 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x50)" ( (binary_expression "param_2 + 0x50" identifier + number_literal) ))))))) ;) (if_statement "if (*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c)) {\n    uVar2 = *(uint *)(param_2 + 0x48);\n  }" if (parenthesized_expression "(*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c))" ( (binary_expression "*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c)" (binary_expression "*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c)" (pointer_expression "*(uint *)(param_2 + 0x48)" * (cast_expression "(uint *)(param_2 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_2 + 0x3c)" * (cast_expression "(int *)(param_2 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) ))))) < (binary_expression "uVar2 - *(int *)(param_2 + 0x3c)" identifier - (pointer_expression "*(int *)(param_2 + 0x3c)" * (cast_expression "(int *)(param_2 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))))) )) (compound_statement "{\n    uVar2 = *(uint *)(param_2 + 0x48);\n  }" { (expression_statement "uVar2 = *(uint *)(param_2 + 0x48);" (assignment_expression "uVar2 = *(uint *)(param_2 + 0x48)" identifier = (pointer_expression "*(uint *)(param_2 + 0x48)" * (cast_expression "(uint *)(param_2 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) ))))) ;) })) (expression_statement "*(uint *)(param_2 + 0x44) = uVar2;" (assignment_expression "*(uint *)(param_2 + 0x44) = uVar2" (pointer_expression "*(uint *)(param_2 + 0x44)" * (cast_expression "(uint *)(param_2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_2 + 0x40) = uVar2;" (assignment_expression "*(uint *)(param_2 + 0x40) = uVar2" (pointer_expression "*(uint *)(param_2 + 0x40)" * (cast_expression "(uint *)(param_2 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_2 + 4) = iVar5;" (assignment_expression "*(int *)(param_2 + 4) = iVar5" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = *(int *)(param_2 + 0x6c);" (assignment_expression "iVar3 = *(int *)(param_2 + 0x6c)" identifier = (pointer_expression "*(int *)(param_2 + 0x6c)" * (cast_expression "(int *)(param_2 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x6c)" ( (binary_expression "param_2 + 0x6c" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_2 + 0x70) == iVar3) {\n    *(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;\n  }" if (parenthesized_expression "(*(int *)(param_2 + 0x70) == iVar3)" ( (binary_expression "*(int *)(param_2 + 0x70) == iVar3" (pointer_expression "*(int *)(param_2 + 0x70)" * (cast_expression "(int *)(param_2 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x70)" ( (binary_expression "param_2 + 0x70" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    *(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;\n  }" { (expression_statement "*(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;" (assignment_expression "*(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40" (pointer_expression "*(byte *)(param_2 + 0x8c)" * (cast_expression "(byte *)(param_2 + 0x8c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x8c)" ( (binary_expression "param_2 + 0x8c" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_2 + 0x8c) & 0xbf | 0x40" (binary_expression "*(byte *)(param_2 + 0x8c) & 0xbf" (pointer_expression "*(byte *)(param_2 + 0x8c)" * (cast_expression "(byte *)(param_2 + 0x8c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x8c)" ( (binary_expression "param_2 + 0x8c" identifier + number_literal) )))) & number_literal) | number_literal)) ;) })) (expression_statement "uVar2 = *(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c);" (assignment_expression "uVar2 = *(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c)" identifier = (binary_expression "*(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c)" (binary_expression "*(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c)" (pointer_expression "*(int *)(param_2 + 0x70)" * (cast_expression "(int *)(param_2 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x70)" ( (binary_expression "param_2 + 0x70" identifier + number_literal) )))) + (pointer_expression "*(uint *)(param_2 + 0x7c)" * (cast_expression "(uint *)(param_2 + 0x7c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x7c)" ( (binary_expression "param_2 + 0x7c" identifier + number_literal) ))))) & (unary_expression "~*(uint *)(param_2 + 0x7c)" ~ (pointer_expression "*(uint *)(param_2 + 0x7c)" * (cast_expression "(uint *)(param_2 + 0x7c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x7c)" ( (binary_expression "param_2 + 0x7c" identifier + number_literal) ))))))) ;) (if_statement "if (*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68)) {\n    uVar2 = *(uint *)(param_2 + 0x74);\n  }" if (parenthesized_expression "(*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68))" ( (binary_expression "*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68)" (binary_expression "*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68)" (pointer_expression "*(uint *)(param_2 + 0x74)" * (cast_expression "(uint *)(param_2 + 0x74)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x74)" ( (binary_expression "param_2 + 0x74" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_2 + 0x68)" * (cast_expression "(int *)(param_2 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x68)" ( (binary_expression "param_2 + 0x68" identifier + number_literal) ))))) < (binary_expression "uVar2 - *(int *)(param_2 + 0x68)" identifier - (pointer_expression "*(int *)(param_2 + 0x68)" * (cast_expression "(int *)(param_2 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x68)" ( (binary_expression "param_2 + 0x68" identifier + number_literal) )))))) )) (compound_statement "{\n    uVar2 = *(uint *)(param_2 + 0x74);\n  }" { (expression_statement "uVar2 = *(uint *)(param_2 + 0x74);" (assignment_expression "uVar2 = *(uint *)(param_2 + 0x74)" identifier = (pointer_expression "*(uint *)(param_2 + 0x74)" * (cast_expression "(uint *)(param_2 + 0x74)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x74)" ( (binary_expression "param_2 + 0x74" identifier + number_literal) ))))) ;) })) (expression_statement "*(uint *)(param_2 + 0x70) = uVar2;" (assignment_expression "*(uint *)(param_2 + 0x70) = uVar2" (pointer_expression "*(uint *)(param_2 + 0x70)" * (cast_expression "(uint *)(param_2 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x70)" ( (binary_expression "param_2 + 0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_2 + 0x6c) = uVar2;" (assignment_expression "*(uint *)(param_2 + 0x6c) = uVar2" (pointer_expression "*(uint *)(param_2 + 0x6c)" * (cast_expression "(uint *)(param_2 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x6c)" ( (binary_expression "param_2 + 0x6c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_2 + 8) = iVar3;" (assignment_expression "*(int *)(param_2 + 8) = iVar3" (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = (*(code *)PTR_ferror_0003f548)(param_1);" (assignment_expression "iVar3 = (*(code *)PTR_ferror_0003f548)(param_1)" identifier = (call_expression "(*(code *)PTR_ferror_0003f548)(param_1)" (parenthesized_expression "(*(code *)PTR_ferror_0003f548)" ( (pointer_expression "*(code *)PTR_ferror_0003f548" * (cast_expression "(code *)PTR_ferror_0003f548" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (return_statement "return iVar3 == 0;" return (binary_expression "iVar3 == 0" identifier == number_literal) ;) })))
(translation_unit "_Bool readtokens0(FILE *in,Tokens *t)\n\n{\n  char **ppcVar1;\n  size_t *psVar2;\n  int iVar3;\n  char *pcVar4;\n  uint uVar5;\n  _obstack_chunk *p_Var6;\n  char **ppcVar7;\n  size_t *psVar8;\n  char *pcVar9;\n  code *pcVar10;\n  \n  pcVar10 = (code *)(PTR_LAB_0003f22c + 0x4f30);\n  while (iVar3 = (*(code *)PTR_fgetc_0003f448)(in), iVar3 != -1) {\n    pcVar4 = (t->o_data).next_free;\n    if ((t->o_data).chunk_limit == pcVar4) {\n      _obstack_newchunk(&t->o_data,1);\n      pcVar4 = (t->o_data).next_free;\n    }\n    (t->o_data).next_free = pcVar4 + 1;\n    *pcVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar10)(t);\n    }\n  }\n  pcVar4 = (t->o_data).next_free;\n  if (pcVar4 != (t->o_data).object_base) {\n    if (pcVar4 == (t->o_data).chunk_limit) {\n      _obstack_newchunk(&t->o_data,1);\n      pcVar4 = (t->o_data).next_free;\n    }\n    (t->o_data).next_free = pcVar4 + 1;\n    *pcVar4 = '\0';\n    save_token(t);\n  }\n  if ((uint)((int)(t->o_tok).chunk_limit - (int)(t->o_tok).next_free) < 4) {\n    _obstack_newchunk(&t->o_tok,4);\n    pcVar4 = (t->o_tok).next_free;\n  }\n  else {\n    pcVar4 = (t->o_tok).next_free;\n  }\n  pcVar4[0] = '\0';\n  pcVar4[1] = '\0';\n  pcVar4[2] = '\0';\n  pcVar4[3] = '\0';\n  ppcVar1 = (char **)((t->o_tok).next_free + 4);\n  (t->o_tok).next_free = (char *)ppcVar1;\n  ppcVar7 = (char **)(t->o_tok).object_base;\n  if (ppcVar1 == ppcVar7) {\n    (t->o_tok).field_0x28 = (t->o_tok).field_0x28 & 0xbf | 0x40;\n  }\n  uVar5 = (t->o_tok).alignment_mask;\n  pcVar4 = (char *)((uint)((int)ppcVar1 + uVar5) & ~uVar5);\n  p_Var6 = (t->o_tok).chunk;\n  pcVar9 = (t->o_tok).chunk_limit;\n  if ((uint)((int)pcVar9 - (int)p_Var6) < (uint)((int)pcVar4 - (int)p_Var6)) {\n    pcVar4 = pcVar9;\n  }\n  (t->o_tok).next_free = pcVar4;\n  (t->o_tok).object_base = pcVar4;\n  t->tok = ppcVar7;\n  psVar8 = (size_t *)(t->o_tok_len).object_base;\n  psVar2 = (size_t *)(t->o_tok_len).next_free;\n  if (psVar2 == psVar8) {\n    (t->o_tok_len).field_0x28 = (t->o_tok_len).field_0x28 & 0xbf | 0x40;\n  }\n  uVar5 = (t->o_tok_len).alignment_mask;\n  pcVar4 = (char *)((uint)((int)psVar2 + uVar5) & ~uVar5);\n  p_Var6 = (t->o_tok_len).chunk;\n  pcVar9 = (t->o_tok_len).chunk_limit;\n  if ((uint)((int)pcVar9 - (int)p_Var6) < (uint)((int)pcVar4 - (int)p_Var6)) {\n    pcVar4 = pcVar9;\n  }\n  (t->o_tok_len).next_free = pcVar4;\n  (t->o_tok_len).object_base = pcVar4;\n  t->tok_len = psVar8;\n  iVar3 = (*(code *)PTR_ferror_0003f548)(in);\n  return iVar3 == 0;\n}\n\n" (function_definition "_Bool readtokens0(FILE *in,Tokens *t)\n\n{\n  char **ppcVar1;\n  size_t *psVar2;\n  int iVar3;\n  char *pcVar4;\n  uint uVar5;\n  _obstack_chunk *p_Var6;\n  char **ppcVar7;\n  size_t *psVar8;\n  char *pcVar9;\n  code *pcVar10;\n  \n  pcVar10 = (code *)(PTR_LAB_0003f22c + 0x4f30);\n  while (iVar3 = (*(code *)PTR_fgetc_0003f448)(in), iVar3 != -1) {\n    pcVar4 = (t->o_data).next_free;\n    if ((t->o_data).chunk_limit == pcVar4) {\n      _obstack_newchunk(&t->o_data,1);\n      pcVar4 = (t->o_data).next_free;\n    }\n    (t->o_data).next_free = pcVar4 + 1;\n    *pcVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar10)(t);\n    }\n  }\n  pcVar4 = (t->o_data).next_free;\n  if (pcVar4 != (t->o_data).object_base) {\n    if (pcVar4 == (t->o_data).chunk_limit) {\n      _obstack_newchunk(&t->o_data,1);\n      pcVar4 = (t->o_data).next_free;\n    }\n    (t->o_data).next_free = pcVar4 + 1;\n    *pcVar4 = '\0';\n    save_token(t);\n  }\n  if ((uint)((int)(t->o_tok).chunk_limit - (int)(t->o_tok).next_free) < 4) {\n    _obstack_newchunk(&t->o_tok,4);\n    pcVar4 = (t->o_tok).next_free;\n  }\n  else {\n    pcVar4 = (t->o_tok).next_free;\n  }\n  pcVar4[0] = '\0';\n  pcVar4[1] = '\0';\n  pcVar4[2] = '\0';\n  pcVar4[3] = '\0';\n  ppcVar1 = (char **)((t->o_tok).next_free + 4);\n  (t->o_tok).next_free = (char *)ppcVar1;\n  ppcVar7 = (char **)(t->o_tok).object_base;\n  if (ppcVar1 == ppcVar7) {\n    (t->o_tok).field_0x28 = (t->o_tok).field_0x28 & 0xbf | 0x40;\n  }\n  uVar5 = (t->o_tok).alignment_mask;\n  pcVar4 = (char *)((uint)((int)ppcVar1 + uVar5) & ~uVar5);\n  p_Var6 = (t->o_tok).chunk;\n  pcVar9 = (t->o_tok).chunk_limit;\n  if ((uint)((int)pcVar9 - (int)p_Var6) < (uint)((int)pcVar4 - (int)p_Var6)) {\n    pcVar4 = pcVar9;\n  }\n  (t->o_tok).next_free = pcVar4;\n  (t->o_tok).object_base = pcVar4;\n  t->tok = ppcVar7;\n  psVar8 = (size_t *)(t->o_tok_len).object_base;\n  psVar2 = (size_t *)(t->o_tok_len).next_free;\n  if (psVar2 == psVar8) {\n    (t->o_tok_len).field_0x28 = (t->o_tok_len).field_0x28 & 0xbf | 0x40;\n  }\n  uVar5 = (t->o_tok_len).alignment_mask;\n  pcVar4 = (char *)((uint)((int)psVar2 + uVar5) & ~uVar5);\n  p_Var6 = (t->o_tok_len).chunk;\n  pcVar9 = (t->o_tok_len).chunk_limit;\n  if ((uint)((int)pcVar9 - (int)p_Var6) < (uint)((int)pcVar4 - (int)p_Var6)) {\n    pcVar4 = pcVar9;\n  }\n  (t->o_tok_len).next_free = pcVar4;\n  (t->o_tok_len).object_base = pcVar4;\n  t->tok_len = psVar8;\n  iVar3 = (*(code *)PTR_ferror_0003f548)(in);\n  return iVar3 == 0;\n}" type_identifier (function_declarator "readtokens0(FILE *in,Tokens *t)" identifier (parameter_list "(FILE *in,Tokens *t)" ( (parameter_declaration "FILE *in" type_identifier (pointer_declarator "*in" * identifier)) , (parameter_declaration "Tokens *t" type_identifier (pointer_declarator "*t" * identifier)) ))) (compound_statement "{\n  char **ppcVar1;\n  size_t *psVar2;\n  int iVar3;\n  char *pcVar4;\n  uint uVar5;\n  _obstack_chunk *p_Var6;\n  char **ppcVar7;\n  size_t *psVar8;\n  char *pcVar9;\n  code *pcVar10;\n  \n  pcVar10 = (code *)(PTR_LAB_0003f22c + 0x4f30);\n  while (iVar3 = (*(code *)PTR_fgetc_0003f448)(in), iVar3 != -1) {\n    pcVar4 = (t->o_data).next_free;\n    if ((t->o_data).chunk_limit == pcVar4) {\n      _obstack_newchunk(&t->o_data,1);\n      pcVar4 = (t->o_data).next_free;\n    }\n    (t->o_data).next_free = pcVar4 + 1;\n    *pcVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar10)(t);\n    }\n  }\n  pcVar4 = (t->o_data).next_free;\n  if (pcVar4 != (t->o_data).object_base) {\n    if (pcVar4 == (t->o_data).chunk_limit) {\n      _obstack_newchunk(&t->o_data,1);\n      pcVar4 = (t->o_data).next_free;\n    }\n    (t->o_data).next_free = pcVar4 + 1;\n    *pcVar4 = '\0';\n    save_token(t);\n  }\n  if ((uint)((int)(t->o_tok).chunk_limit - (int)(t->o_tok).next_free) < 4) {\n    _obstack_newchunk(&t->o_tok,4);\n    pcVar4 = (t->o_tok).next_free;\n  }\n  else {\n    pcVar4 = (t->o_tok).next_free;\n  }\n  pcVar4[0] = '\0';\n  pcVar4[1] = '\0';\n  pcVar4[2] = '\0';\n  pcVar4[3] = '\0';\n  ppcVar1 = (char **)((t->o_tok).next_free + 4);\n  (t->o_tok).next_free = (char *)ppcVar1;\n  ppcVar7 = (char **)(t->o_tok).object_base;\n  if (ppcVar1 == ppcVar7) {\n    (t->o_tok).field_0x28 = (t->o_tok).field_0x28 & 0xbf | 0x40;\n  }\n  uVar5 = (t->o_tok).alignment_mask;\n  pcVar4 = (char *)((uint)((int)ppcVar1 + uVar5) & ~uVar5);\n  p_Var6 = (t->o_tok).chunk;\n  pcVar9 = (t->o_tok).chunk_limit;\n  if ((uint)((int)pcVar9 - (int)p_Var6) < (uint)((int)pcVar4 - (int)p_Var6)) {\n    pcVar4 = pcVar9;\n  }\n  (t->o_tok).next_free = pcVar4;\n  (t->o_tok).object_base = pcVar4;\n  t->tok = ppcVar7;\n  psVar8 = (size_t *)(t->o_tok_len).object_base;\n  psVar2 = (size_t *)(t->o_tok_len).next_free;\n  if (psVar2 == psVar8) {\n    (t->o_tok_len).field_0x28 = (t->o_tok_len).field_0x28 & 0xbf | 0x40;\n  }\n  uVar5 = (t->o_tok_len).alignment_mask;\n  pcVar4 = (char *)((uint)((int)psVar2 + uVar5) & ~uVar5);\n  p_Var6 = (t->o_tok_len).chunk;\n  pcVar9 = (t->o_tok_len).chunk_limit;\n  if ((uint)((int)pcVar9 - (int)p_Var6) < (uint)((int)pcVar4 - (int)p_Var6)) {\n    pcVar4 = pcVar9;\n  }\n  (t->o_tok_len).next_free = pcVar4;\n  (t->o_tok_len).object_base = pcVar4;\n  t->tok_len = psVar8;\n  iVar3 = (*(code *)PTR_ferror_0003f548)(in);\n  return iVar3 == 0;\n}" { (declaration "char **ppcVar1;" primitive_type (pointer_declarator "**ppcVar1" * (pointer_declarator "*ppcVar1" * identifier)) ;) (declaration "size_t *psVar2;" primitive_type (pointer_declarator "*psVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "_obstack_chunk *p_Var6;" type_identifier (pointer_declarator "*p_Var6" * identifier) ;) (declaration "char **ppcVar7;" primitive_type (pointer_declarator "**ppcVar7" * (pointer_declarator "*ppcVar7" * identifier)) ;) (declaration "size_t *psVar8;" primitive_type (pointer_declarator "*psVar8" * identifier) ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "code *pcVar10;" type_identifier (pointer_declarator "*pcVar10" * identifier) ;) (expression_statement "pcVar10 = (code *)(PTR_LAB_0003f22c + 0x4f30);" (assignment_expression "pcVar10 = (code *)(PTR_LAB_0003f22c + 0x4f30)" identifier = (cast_expression "(code *)(PTR_LAB_0003f22c + 0x4f30)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0003f22c + 0x4f30)" ( (binary_expression "PTR_LAB_0003f22c + 0x4f30" identifier + number_literal) )))) ;) (while_statement "while (iVar3 = (*(code *)PTR_fgetc_0003f448)(in), iVar3 != -1) {\n    pcVar4 = (t->o_data).next_free;\n    if ((t->o_data).chunk_limit == pcVar4) {\n      _obstack_newchunk(&t->o_data,1);\n      pcVar4 = (t->o_data).next_free;\n    }\n    (t->o_data).next_free = pcVar4 + 1;\n    *pcVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar10)(t);\n    }\n  }" while (parenthesized_expression "(iVar3 = (*(code *)PTR_fgetc_0003f448)(in), iVar3 != -1)" ( (comma_expression "iVar3 = (*(code *)PTR_fgetc_0003f448)(in), iVar3 != -1" (assignment_expression "iVar3 = (*(code *)PTR_fgetc_0003f448)(in)" identifier = (call_expression "(*(code *)PTR_fgetc_0003f448)(in)" (parenthesized_expression "(*(code *)PTR_fgetc_0003f448)" ( (pointer_expression "*(code *)PTR_fgetc_0003f448" * (cast_expression "(code *)PTR_fgetc_0003f448" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(in)" ( identifier )))) , (binary_expression "iVar3 != -1" identifier != number_literal)) )) (compound_statement "{\n    pcVar4 = (t->o_data).next_free;\n    if ((t->o_data).chunk_limit == pcVar4) {\n      _obstack_newchunk(&t->o_data,1);\n      pcVar4 = (t->o_data).next_free;\n    }\n    (t->o_data).next_free = pcVar4 + 1;\n    *pcVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar10)(t);\n    }\n  }" { (expression_statement "pcVar4 = (t->o_data).next_free;" (assignment_expression "pcVar4 = (t->o_data).next_free" identifier = (field_expression "(t->o_data).next_free" (parenthesized_expression "(t->o_data)" ( (field_expression "t->o_data" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((t->o_data).chunk_limit == pcVar4) {\n      _obstack_newchunk(&t->o_data,1);\n      pcVar4 = (t->o_data).next_free;\n    }" if (parenthesized_expression "((t->o_data).chunk_limit == pcVar4)" ( (binary_expression "(t->o_data).chunk_limit == pcVar4" (field_expression "(t->o_data).chunk_limit" (parenthesized_expression "(t->o_data)" ( (field_expression "t->o_data" identifier -> field_identifier) )) . field_identifier) == identifier) )) (compound_statement "{\n      _obstack_newchunk(&t->o_data,1);\n      pcVar4 = (t->o_data).next_free;\n    }" { (expression_statement "_obstack_newchunk(&t->o_data,1);" (call_expression "_obstack_newchunk(&t->o_data,1)" identifier (argument_list "(&t->o_data,1)" ( (pointer_expression "&t->o_data" & (field_expression "t->o_data" identifier -> field_identifier)) , number_literal ))) ;) (expression_statement "pcVar4 = (t->o_data).next_free;" (assignment_expression "pcVar4 = (t->o_data).next_free" identifier = (field_expression "(t->o_data).next_free" (parenthesized_expression "(t->o_data)" ( (field_expression "t->o_data" identifier -> field_identifier) )) . field_identifier)) ;) })) (expression_statement "(t->o_data).next_free = pcVar4 + 1;" (assignment_expression "(t->o_data).next_free = pcVar4 + 1" (field_expression "(t->o_data).next_free" (parenthesized_expression "(t->o_data)" ( (field_expression "t->o_data" identifier -> field_identifier) )) . field_identifier) = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar4 = (char)iVar3;" (assignment_expression "*pcVar4 = (char)iVar3" (pointer_expression "*pcVar4" * identifier) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (iVar3 == 0) {\n      (*pcVar10)(t);\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      (*pcVar10)(t);\n    }" { (expression_statement "(*pcVar10)(t);" (call_expression "(*pcVar10)(t)" (parenthesized_expression "(*pcVar10)" ( (pointer_expression "*pcVar10" * identifier) )) (argument_list "(t)" ( identifier ))) ;) })) })) (expression_statement "pcVar4 = (t->o_data).next_free;" (assignment_expression "pcVar4 = (t->o_data).next_free" identifier = (field_expression "(t->o_data).next_free" (parenthesized_expression "(t->o_data)" ( (field_expression "t->o_data" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (pcVar4 != (t->o_data).object_base) {\n    if (pcVar4 == (t->o_data).chunk_limit) {\n      _obstack_newchunk(&t->o_data,1);\n      pcVar4 = (t->o_data).next_free;\n    }\n    (t->o_data).next_free = pcVar4 + 1;\n    *pcVar4 = '\0';\n    save_token(t);\n  }" if (parenthesized_expression "(pcVar4 != (t->o_data).object_base)" ( (binary_expression "pcVar4 != (t->o_data).object_base" identifier != (field_expression "(t->o_data).object_base" (parenthesized_expression "(t->o_data)" ( (field_expression "t->o_data" identifier -> field_identifier) )) . field_identifier)) )) (compound_statement "{\n    if (pcVar4 == (t->o_data).chunk_limit) {\n      _obstack_newchunk(&t->o_data,1);\n      pcVar4 = (t->o_data).next_free;\n    }\n    (t->o_data).next_free = pcVar4 + 1;\n    *pcVar4 = '\0';\n    save_token(t);\n  }" { (if_statement "if (pcVar4 == (t->o_data).chunk_limit) {\n      _obstack_newchunk(&t->o_data,1);\n      pcVar4 = (t->o_data).next_free;\n    }" if (parenthesized_expression "(pcVar4 == (t->o_data).chunk_limit)" ( (binary_expression "pcVar4 == (t->o_data).chunk_limit" identifier == (field_expression "(t->o_data).chunk_limit" (parenthesized_expression "(t->o_data)" ( (field_expression "t->o_data" identifier -> field_identifier) )) . field_identifier)) )) (compound_statement "{\n      _obstack_newchunk(&t->o_data,1);\n      pcVar4 = (t->o_data).next_free;\n    }" { (expression_statement "_obstack_newchunk(&t->o_data,1);" (call_expression "_obstack_newchunk(&t->o_data,1)" identifier (argument_list "(&t->o_data,1)" ( (pointer_expression "&t->o_data" & (field_expression "t->o_data" identifier -> field_identifier)) , number_literal ))) ;) (expression_statement "pcVar4 = (t->o_data).next_free;" (assignment_expression "pcVar4 = (t->o_data).next_free" identifier = (field_expression "(t->o_data).next_free" (parenthesized_expression "(t->o_data)" ( (field_expression "t->o_data" identifier -> field_identifier) )) . field_identifier)) ;) })) (expression_statement "(t->o_data).next_free = pcVar4 + 1;" (assignment_expression "(t->o_data).next_free = pcVar4 + 1" (field_expression "(t->o_data).next_free" (parenthesized_expression "(t->o_data)" ( (field_expression "t->o_data" identifier -> field_identifier) )) . field_identifier) = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar4 = '\0';" (assignment_expression "*pcVar4 = '\0'" (pointer_expression "*pcVar4" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "save_token(t);" (call_expression "save_token(t)" identifier (argument_list "(t)" ( identifier ))) ;) })) (if_statement "if ((uint)((int)(t->o_tok).chunk_limit - (int)(t->o_tok).next_free) < 4) {\n    _obstack_newchunk(&t->o_tok,4);\n    pcVar4 = (t->o_tok).next_free;\n  }\n  else {\n    pcVar4 = (t->o_tok).next_free;\n  }" if (parenthesized_expression "((uint)((int)(t->o_tok).chunk_limit - (int)(t->o_tok).next_free) < 4)" ( (binary_expression "(uint)((int)(t->o_tok).chunk_limit - (int)(t->o_tok).next_free) < 4" (call_expression "(uint)((int)(t->o_tok).chunk_limit - (int)(t->o_tok).next_free)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)(t->o_tok).chunk_limit - (int)(t->o_tok).next_free)" ( (binary_expression "(int)(t->o_tok).chunk_limit - (int)(t->o_tok).next_free" (cast_expression "(int)(t->o_tok).chunk_limit" ( (type_descriptor "int" primitive_type) ) (field_expression "(t->o_tok).chunk_limit" (parenthesized_expression "(t->o_tok)" ( (field_expression "t->o_tok" identifier -> field_identifier) )) . field_identifier)) - (cast_expression "(int)(t->o_tok).next_free" ( (type_descriptor "int" primitive_type) ) (field_expression "(t->o_tok).next_free" (parenthesized_expression "(t->o_tok)" ( (field_expression "t->o_tok" identifier -> field_identifier) )) . field_identifier))) ))) < number_literal) )) (compound_statement "{\n    _obstack_newchunk(&t->o_tok,4);\n    pcVar4 = (t->o_tok).next_free;\n  }" { (expression_statement "_obstack_newchunk(&t->o_tok,4);" (call_expression "_obstack_newchunk(&t->o_tok,4)" identifier (argument_list "(&t->o_tok,4)" ( (pointer_expression "&t->o_tok" & (field_expression "t->o_tok" identifier -> field_identifier)) , number_literal ))) ;) (expression_statement "pcVar4 = (t->o_tok).next_free;" (assignment_expression "pcVar4 = (t->o_tok).next_free" identifier = (field_expression "(t->o_tok).next_free" (parenthesized_expression "(t->o_tok)" ( (field_expression "t->o_tok" identifier -> field_identifier) )) . field_identifier)) ;) }) (else_clause "else {\n    pcVar4 = (t->o_tok).next_free;\n  }" else (compound_statement "{\n    pcVar4 = (t->o_tok).next_free;\n  }" { (expression_statement "pcVar4 = (t->o_tok).next_free;" (assignment_expression "pcVar4 = (t->o_tok).next_free" identifier = (field_expression "(t->o_tok).next_free" (parenthesized_expression "(t->o_tok)" ( (field_expression "t->o_tok" identifier -> field_identifier) )) . field_identifier)) ;) }))) (expression_statement "pcVar4[0] = '\0';" (assignment_expression "pcVar4[0] = '\0'" (subscript_expression "pcVar4[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar4[1] = '\0';" (assignment_expression "pcVar4[1] = '\0'" (subscript_expression "pcVar4[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar4[2] = '\0';" (assignment_expression "pcVar4[2] = '\0'" (subscript_expression "pcVar4[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar4[3] = '\0';" (assignment_expression "pcVar4[3] = '\0'" (subscript_expression "pcVar4[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "ppcVar1 = (char **)((t->o_tok).next_free + 4);" (assignment_expression "ppcVar1 = (char **)((t->o_tok).next_free + 4)" identifier = (cast_expression "(char **)((t->o_tok).next_free + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((t->o_tok).next_free + 4)" ( (binary_expression "(t->o_tok).next_free + 4" (field_expression "(t->o_tok).next_free" (parenthesized_expression "(t->o_tok)" ( (field_expression "t->o_tok" identifier -> field_identifier) )) . field_identifier) + number_literal) )))) ;) (expression_statement "(t->o_tok).next_free = (char *)ppcVar1;" (assignment_expression "(t->o_tok).next_free = (char *)ppcVar1" (field_expression "(t->o_tok).next_free" (parenthesized_expression "(t->o_tok)" ( (field_expression "t->o_tok" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(char *)ppcVar1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "ppcVar7 = (char **)(t->o_tok).object_base;" (assignment_expression "ppcVar7 = (char **)(t->o_tok).object_base" identifier = (cast_expression "(char **)(t->o_tok).object_base" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "(t->o_tok).object_base" (parenthesized_expression "(t->o_tok)" ( (field_expression "t->o_tok" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if (ppcVar1 == ppcVar7) {\n    (t->o_tok).field_0x28 = (t->o_tok).field_0x28 & 0xbf | 0x40;\n  }" if (parenthesized_expression "(ppcVar1 == ppcVar7)" ( (binary_expression "ppcVar1 == ppcVar7" identifier == identifier) )) (compound_statement "{\n    (t->o_tok).field_0x28 = (t->o_tok).field_0x28 & 0xbf | 0x40;\n  }" { (expression_statement "(t->o_tok).field_0x28 = (t->o_tok).field_0x28 & 0xbf | 0x40;" (assignment_expression "(t->o_tok).field_0x28 = (t->o_tok).field_0x28 & 0xbf | 0x40" (field_expression "(t->o_tok).field_0x28" (parenthesized_expression "(t->o_tok)" ( (field_expression "t->o_tok" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(t->o_tok).field_0x28 & 0xbf | 0x40" (binary_expression "(t->o_tok).field_0x28 & 0xbf" (field_expression "(t->o_tok).field_0x28" (parenthesized_expression "(t->o_tok)" ( (field_expression "t->o_tok" identifier -> field_identifier) )) . field_identifier) & number_literal) | number_literal)) ;) })) (expression_statement "uVar5 = (t->o_tok).alignment_mask;" (assignment_expression "uVar5 = (t->o_tok).alignment_mask" identifier = (field_expression "(t->o_tok).alignment_mask" (parenthesized_expression "(t->o_tok)" ( (field_expression "t->o_tok" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pcVar4 = (char *)((uint)((int)ppcVar1 + uVar5) & ~uVar5);" (assignment_expression "pcVar4 = (char *)((uint)((int)ppcVar1 + uVar5) & ~uVar5)" identifier = (cast_expression "(char *)((uint)((int)ppcVar1 + uVar5) & ~uVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)((int)ppcVar1 + uVar5) & ~uVar5)" ( (binary_expression "(uint)((int)ppcVar1 + uVar5) & ~uVar5" (call_expression "(uint)((int)ppcVar1 + uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)ppcVar1 + uVar5)" ( (binary_expression "(int)ppcVar1 + uVar5" (cast_expression "(int)ppcVar1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) & (unary_expression "~uVar5" ~ identifier)) )))) ;) (expression_statement "p_Var6 = (t->o_tok).chunk;" (assignment_expression "p_Var6 = (t->o_tok).chunk" identifier = (field_expression "(t->o_tok).chunk" (parenthesized_expression "(t->o_tok)" ( (field_expression "t->o_tok" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pcVar9 = (t->o_tok).chunk_limit;" (assignment_expression "pcVar9 = (t->o_tok).chunk_limit" identifier = (field_expression "(t->o_tok).chunk_limit" (parenthesized_expression "(t->o_tok)" ( (field_expression "t->o_tok" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((uint)((int)pcVar9 - (int)p_Var6) < (uint)((int)pcVar4 - (int)p_Var6)) {\n    pcVar4 = pcVar9;\n  }" if (parenthesized_expression "((uint)((int)pcVar9 - (int)p_Var6) < (uint)((int)pcVar4 - (int)p_Var6))" ( (binary_expression "(uint)((int)pcVar9 - (int)p_Var6) < (uint)((int)pcVar4 - (int)p_Var6)" (call_expression "(uint)((int)pcVar9 - (int)p_Var6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar9 - (int)p_Var6)" ( (binary_expression "(int)pcVar9 - (int)p_Var6" (cast_expression "(int)pcVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)p_Var6" ( (type_descriptor "int" primitive_type) ) identifier)) ))) < (call_expression "(uint)((int)pcVar4 - (int)p_Var6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar4 - (int)p_Var6)" ( (binary_expression "(int)pcVar4 - (int)p_Var6" (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)p_Var6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n    pcVar4 = pcVar9;\n  }" { (expression_statement "pcVar4 = pcVar9;" (assignment_expression "pcVar4 = pcVar9" identifier = identifier) ;) })) (expression_statement "(t->o_tok).next_free = pcVar4;" (assignment_expression "(t->o_tok).next_free = pcVar4" (field_expression "(t->o_tok).next_free" (parenthesized_expression "(t->o_tok)" ( (field_expression "t->o_tok" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(t->o_tok).object_base = pcVar4;" (assignment_expression "(t->o_tok).object_base = pcVar4" (field_expression "(t->o_tok).object_base" (parenthesized_expression "(t->o_tok)" ( (field_expression "t->o_tok" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "t->tok = ppcVar7;" (assignment_expression "t->tok = ppcVar7" (field_expression "t->tok" identifier -> field_identifier) = identifier) ;) (expression_statement "psVar8 = (size_t *)(t->o_tok_len).object_base;" (assignment_expression "psVar8 = (size_t *)(t->o_tok_len).object_base" identifier = (cast_expression "(size_t *)(t->o_tok_len).object_base" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "(t->o_tok_len).object_base" (parenthesized_expression "(t->o_tok_len)" ( (field_expression "t->o_tok_len" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "psVar2 = (size_t *)(t->o_tok_len).next_free;" (assignment_expression "psVar2 = (size_t *)(t->o_tok_len).next_free" identifier = (cast_expression "(size_t *)(t->o_tok_len).next_free" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "(t->o_tok_len).next_free" (parenthesized_expression "(t->o_tok_len)" ( (field_expression "t->o_tok_len" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if (psVar2 == psVar8) {\n    (t->o_tok_len).field_0x28 = (t->o_tok_len).field_0x28 & 0xbf | 0x40;\n  }" if (parenthesized_expression "(psVar2 == psVar8)" ( (binary_expression "psVar2 == psVar8" identifier == identifier) )) (compound_statement "{\n    (t->o_tok_len).field_0x28 = (t->o_tok_len).field_0x28 & 0xbf | 0x40;\n  }" { (expression_statement "(t->o_tok_len).field_0x28 = (t->o_tok_len).field_0x28 & 0xbf | 0x40;" (assignment_expression "(t->o_tok_len).field_0x28 = (t->o_tok_len).field_0x28 & 0xbf | 0x40" (field_expression "(t->o_tok_len).field_0x28" (parenthesized_expression "(t->o_tok_len)" ( (field_expression "t->o_tok_len" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(t->o_tok_len).field_0x28 & 0xbf | 0x40" (binary_expression "(t->o_tok_len).field_0x28 & 0xbf" (field_expression "(t->o_tok_len).field_0x28" (parenthesized_expression "(t->o_tok_len)" ( (field_expression "t->o_tok_len" identifier -> field_identifier) )) . field_identifier) & number_literal) | number_literal)) ;) })) (expression_statement "uVar5 = (t->o_tok_len).alignment_mask;" (assignment_expression "uVar5 = (t->o_tok_len).alignment_mask" identifier = (field_expression "(t->o_tok_len).alignment_mask" (parenthesized_expression "(t->o_tok_len)" ( (field_expression "t->o_tok_len" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pcVar4 = (char *)((uint)((int)psVar2 + uVar5) & ~uVar5);" (assignment_expression "pcVar4 = (char *)((uint)((int)psVar2 + uVar5) & ~uVar5)" identifier = (cast_expression "(char *)((uint)((int)psVar2 + uVar5) & ~uVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)((int)psVar2 + uVar5) & ~uVar5)" ( (binary_expression "(uint)((int)psVar2 + uVar5) & ~uVar5" (call_expression "(uint)((int)psVar2 + uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)psVar2 + uVar5)" ( (binary_expression "(int)psVar2 + uVar5" (cast_expression "(int)psVar2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) & (unary_expression "~uVar5" ~ identifier)) )))) ;) (expression_statement "p_Var6 = (t->o_tok_len).chunk;" (assignment_expression "p_Var6 = (t->o_tok_len).chunk" identifier = (field_expression "(t->o_tok_len).chunk" (parenthesized_expression "(t->o_tok_len)" ( (field_expression "t->o_tok_len" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pcVar9 = (t->o_tok_len).chunk_limit;" (assignment_expression "pcVar9 = (t->o_tok_len).chunk_limit" identifier = (field_expression "(t->o_tok_len).chunk_limit" (parenthesized_expression "(t->o_tok_len)" ( (field_expression "t->o_tok_len" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((uint)((int)pcVar9 - (int)p_Var6) < (uint)((int)pcVar4 - (int)p_Var6)) {\n    pcVar4 = pcVar9;\n  }" if (parenthesized_expression "((uint)((int)pcVar9 - (int)p_Var6) < (uint)((int)pcVar4 - (int)p_Var6))" ( (binary_expression "(uint)((int)pcVar9 - (int)p_Var6) < (uint)((int)pcVar4 - (int)p_Var6)" (call_expression "(uint)((int)pcVar9 - (int)p_Var6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar9 - (int)p_Var6)" ( (binary_expression "(int)pcVar9 - (int)p_Var6" (cast_expression "(int)pcVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)p_Var6" ( (type_descriptor "int" primitive_type) ) identifier)) ))) < (call_expression "(uint)((int)pcVar4 - (int)p_Var6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar4 - (int)p_Var6)" ( (binary_expression "(int)pcVar4 - (int)p_Var6" (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)p_Var6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n    pcVar4 = pcVar9;\n  }" { (expression_statement "pcVar4 = pcVar9;" (assignment_expression "pcVar4 = pcVar9" identifier = identifier) ;) })) (expression_statement "(t->o_tok_len).next_free = pcVar4;" (assignment_expression "(t->o_tok_len).next_free = pcVar4" (field_expression "(t->o_tok_len).next_free" (parenthesized_expression "(t->o_tok_len)" ( (field_expression "t->o_tok_len" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(t->o_tok_len).object_base = pcVar4;" (assignment_expression "(t->o_tok_len).object_base = pcVar4" (field_expression "(t->o_tok_len).object_base" (parenthesized_expression "(t->o_tok_len)" ( (field_expression "t->o_tok_len" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "t->tok_len = psVar8;" (assignment_expression "t->tok_len = psVar8" (field_expression "t->tok_len" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar3 = (*(code *)PTR_ferror_0003f548)(in);" (assignment_expression "iVar3 = (*(code *)PTR_ferror_0003f548)(in)" identifier = (call_expression "(*(code *)PTR_ferror_0003f548)(in)" (parenthesized_expression "(*(code *)PTR_ferror_0003f548)" ( (pointer_expression "*(code *)PTR_ferror_0003f548" * (cast_expression "(code *)PTR_ferror_0003f548" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(in)" ( identifier )))) ;) (return_statement "return iVar3 == 0;" return (binary_expression "iVar3 == 0" identifier == number_literal) ;) })))
(translation_unit "bool readtokens0(undefined4 param_1,int param_2)\n\n{\n  undefined4 *puVar1;\n  uint uVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  int iVar5;\n  code *pcVar6;\n  \n  pcVar6 = (code *)(PTR_LAB_0003f22c + 0x4f30);\n  while (iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1) {\n    puVar4 = *(undefined1 **)(param_2 + 0x18);\n    if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar6)(param_2);\n    }\n  }\n  puVar4 = *(undefined1 **)(param_2 + 0x18);\n  if (puVar4 != *(undefined1 **)(param_2 + 0x14)) {\n    if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = 0;\n    FUN_00024f30(param_2);\n  }\n  if ((uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4) {\n    _obstack_newchunk(param_2 + 0x38,4);\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  else {\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  *puVar1 = 0;\n  iVar3 = *(int *)(param_2 + 0x44) + 4;\n  *(int *)(param_2 + 0x44) = iVar3;\n  iVar5 = *(int *)(param_2 + 0x40);\n  if (iVar3 == iVar5) {\n    *(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;\n  }\n  uVar2 = iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50);\n  if (*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c)) {\n    uVar2 = *(uint *)(param_2 + 0x48);\n  }\n  *(uint *)(param_2 + 0x44) = uVar2;\n  *(uint *)(param_2 + 0x40) = uVar2;\n  *(int *)(param_2 + 4) = iVar5;\n  iVar3 = *(int *)(param_2 + 0x6c);\n  if (*(int *)(param_2 + 0x70) == iVar3) {\n    *(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;\n  }\n  uVar2 = *(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c);\n  if (*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68)) {\n    uVar2 = *(uint *)(param_2 + 0x74);\n  }\n  *(uint *)(param_2 + 0x70) = uVar2;\n  *(uint *)(param_2 + 0x6c) = uVar2;\n  *(int *)(param_2 + 8) = iVar3;\n  iVar3 = (*(code *)PTR_ferror_0003f548)(param_1);\n  return iVar3 == 0;\n}\n\n" (function_definition "bool readtokens0(undefined4 param_1,int param_2)\n\n{\n  undefined4 *puVar1;\n  uint uVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  int iVar5;\n  code *pcVar6;\n  \n  pcVar6 = (code *)(PTR_LAB_0003f22c + 0x4f30);\n  while (iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1) {\n    puVar4 = *(undefined1 **)(param_2 + 0x18);\n    if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar6)(param_2);\n    }\n  }\n  puVar4 = *(undefined1 **)(param_2 + 0x18);\n  if (puVar4 != *(undefined1 **)(param_2 + 0x14)) {\n    if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = 0;\n    FUN_00024f30(param_2);\n  }\n  if ((uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4) {\n    _obstack_newchunk(param_2 + 0x38,4);\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  else {\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  *puVar1 = 0;\n  iVar3 = *(int *)(param_2 + 0x44) + 4;\n  *(int *)(param_2 + 0x44) = iVar3;\n  iVar5 = *(int *)(param_2 + 0x40);\n  if (iVar3 == iVar5) {\n    *(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;\n  }\n  uVar2 = iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50);\n  if (*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c)) {\n    uVar2 = *(uint *)(param_2 + 0x48);\n  }\n  *(uint *)(param_2 + 0x44) = uVar2;\n  *(uint *)(param_2 + 0x40) = uVar2;\n  *(int *)(param_2 + 4) = iVar5;\n  iVar3 = *(int *)(param_2 + 0x6c);\n  if (*(int *)(param_2 + 0x70) == iVar3) {\n    *(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;\n  }\n  uVar2 = *(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c);\n  if (*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68)) {\n    uVar2 = *(uint *)(param_2 + 0x74);\n  }\n  *(uint *)(param_2 + 0x70) = uVar2;\n  *(uint *)(param_2 + 0x6c) = uVar2;\n  *(int *)(param_2 + 8) = iVar3;\n  iVar3 = (*(code *)PTR_ferror_0003f548)(param_1);\n  return iVar3 == 0;\n}" primitive_type (function_declarator "readtokens0(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 identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  uint uVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  int iVar5;\n  code *pcVar6;\n  \n  pcVar6 = (code *)(PTR_LAB_0003f22c + 0x4f30);\n  while (iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1) {\n    puVar4 = *(undefined1 **)(param_2 + 0x18);\n    if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar6)(param_2);\n    }\n  }\n  puVar4 = *(undefined1 **)(param_2 + 0x18);\n  if (puVar4 != *(undefined1 **)(param_2 + 0x14)) {\n    if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = 0;\n    FUN_00024f30(param_2);\n  }\n  if ((uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4) {\n    _obstack_newchunk(param_2 + 0x38,4);\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  else {\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  *puVar1 = 0;\n  iVar3 = *(int *)(param_2 + 0x44) + 4;\n  *(int *)(param_2 + 0x44) = iVar3;\n  iVar5 = *(int *)(param_2 + 0x40);\n  if (iVar3 == iVar5) {\n    *(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;\n  }\n  uVar2 = iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50);\n  if (*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c)) {\n    uVar2 = *(uint *)(param_2 + 0x48);\n  }\n  *(uint *)(param_2 + 0x44) = uVar2;\n  *(uint *)(param_2 + 0x40) = uVar2;\n  *(int *)(param_2 + 4) = iVar5;\n  iVar3 = *(int *)(param_2 + 0x6c);\n  if (*(int *)(param_2 + 0x70) == iVar3) {\n    *(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;\n  }\n  uVar2 = *(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c);\n  if (*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68)) {\n    uVar2 = *(uint *)(param_2 + 0x74);\n  }\n  *(uint *)(param_2 + 0x70) = uVar2;\n  *(uint *)(param_2 + 0x6c) = uVar2;\n  *(int *)(param_2 + 8) = iVar3;\n  iVar3 = (*(code *)PTR_ferror_0003f548)(param_1);\n  return iVar3 == 0;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (expression_statement "pcVar6 = (code *)(PTR_LAB_0003f22c + 0x4f30);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_0003f22c + 0x4f30)" identifier = (cast_expression "(code *)(PTR_LAB_0003f22c + 0x4f30)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0003f22c + 0x4f30)" ( (binary_expression "PTR_LAB_0003f22c + 0x4f30" identifier + number_literal) )))) ;) (while_statement "while (iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1) {\n    puVar4 = *(undefined1 **)(param_2 + 0x18);\n    if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar6)(param_2);\n    }\n  }" while (parenthesized_expression "(iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1)" ( (comma_expression "iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1" (assignment_expression "iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1)" identifier = (call_expression "(*(code *)PTR_fgetc_0003f448)(param_1)" (parenthesized_expression "(*(code *)PTR_fgetc_0003f448)" ( (pointer_expression "*(code *)PTR_fgetc_0003f448" * (cast_expression "(code *)PTR_fgetc_0003f448" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar3 != -1" identifier != number_literal)) )) (compound_statement "{\n    puVar4 = *(undefined1 **)(param_2 + 0x18);\n    if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar6)(param_2);\n    }\n  }" { (expression_statement "puVar4 = *(undefined1 **)(param_2 + 0x18);" (assignment_expression "puVar4 = *(undefined1 **)(param_2 + 0x18)" identifier = (pointer_expression "*(undefined1 **)(param_2 + 0x18)" * (cast_expression "(undefined1 **)(param_2 + 0x18)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }" if (parenthesized_expression "(*(undefined1 **)(param_2 + 0x1c) == puVar4)" ( (binary_expression "*(undefined1 **)(param_2 + 0x1c) == puVar4" (pointer_expression "*(undefined1 **)(param_2 + 0x1c)" * (cast_expression "(undefined1 **)(param_2 + 0x1c)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }" { (expression_statement "_obstack_newchunk(param_2 + 0xc,1);" (call_expression "_obstack_newchunk(param_2 + 0xc,1)" identifier (argument_list "(param_2 + 0xc,1)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) , number_literal ))) ;) (expression_statement "puVar4 = *(undefined1 **)(param_2 + 0x18);" (assignment_expression "puVar4 = *(undefined1 **)(param_2 + 0x18)" identifier = (pointer_expression "*(undefined1 **)(param_2 + 0x18)" * (cast_expression "(undefined1 **)(param_2 + 0x18)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) })) (expression_statement "*(undefined1 **)(param_2 + 0x18) = puVar4 + 1;" (assignment_expression "*(undefined1 **)(param_2 + 0x18) = puVar4 + 1" (pointer_expression "*(undefined1 **)(param_2 + 0x18)" * (cast_expression "(undefined1 **)(param_2 + 0x18)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar4 = (char)iVar3;" (assignment_expression "*puVar4 = (char)iVar3" (pointer_expression "*puVar4" * identifier) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (iVar3 == 0) {\n      (*pcVar6)(param_2);\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      (*pcVar6)(param_2);\n    }" { (expression_statement "(*pcVar6)(param_2);" (call_expression "(*pcVar6)(param_2)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(param_2)" ( identifier ))) ;) })) })) (expression_statement "puVar4 = *(undefined1 **)(param_2 + 0x18);" (assignment_expression "puVar4 = *(undefined1 **)(param_2 + 0x18)" identifier = (pointer_expression "*(undefined1 **)(param_2 + 0x18)" * (cast_expression "(undefined1 **)(param_2 + 0x18)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (puVar4 != *(undefined1 **)(param_2 + 0x14)) {\n    if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = 0;\n    FUN_00024f30(param_2);\n  }" if (parenthesized_expression "(puVar4 != *(undefined1 **)(param_2 + 0x14))" ( (binary_expression "puVar4 != *(undefined1 **)(param_2 + 0x14)" identifier != (pointer_expression "*(undefined1 **)(param_2 + 0x14)" * (cast_expression "(undefined1 **)(param_2 + 0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = 0;\n    FUN_00024f30(param_2);\n  }" { (if_statement "if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }" if (parenthesized_expression "(puVar4 == *(undefined1 **)(param_2 + 0x1c))" ( (binary_expression "puVar4 == *(undefined1 **)(param_2 + 0x1c)" identifier == (pointer_expression "*(undefined1 **)(param_2 + 0x1c)" * (cast_expression "(undefined1 **)(param_2 + 0x1c)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) )) (compound_statement "{\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }" { (expression_statement "_obstack_newchunk(param_2 + 0xc,1);" (call_expression "_obstack_newchunk(param_2 + 0xc,1)" identifier (argument_list "(param_2 + 0xc,1)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) , number_literal ))) ;) (expression_statement "puVar4 = *(undefined1 **)(param_2 + 0x18);" (assignment_expression "puVar4 = *(undefined1 **)(param_2 + 0x18)" identifier = (pointer_expression "*(undefined1 **)(param_2 + 0x18)" * (cast_expression "(undefined1 **)(param_2 + 0x18)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) })) (expression_statement "*(undefined1 **)(param_2 + 0x18) = puVar4 + 1;" (assignment_expression "*(undefined1 **)(param_2 + 0x18) = puVar4 + 1" (pointer_expression "*(undefined1 **)(param_2 + 0x18)" * (cast_expression "(undefined1 **)(param_2 + 0x18)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "FUN_00024f30(param_2);" (call_expression "FUN_00024f30(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) })) (if_statement "if ((uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4) {\n    _obstack_newchunk(param_2 + 0x38,4);\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  else {\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }" if (parenthesized_expression "((uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4)" ( (binary_expression "(uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4" (call_expression "(uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44))" ( (binary_expression "*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)" (pointer_expression "*(int *)(param_2 + 0x48)" * (cast_expression "(int *)(param_2 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_2 + 0x44)" * (cast_expression "(int *)(param_2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) ))))) ))) < number_literal) )) (compound_statement "{\n    _obstack_newchunk(param_2 + 0x38,4);\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }" { (expression_statement "_obstack_newchunk(param_2 + 0x38,4);" (call_expression "_obstack_newchunk(param_2 + 0x38,4)" identifier (argument_list "(param_2 + 0x38,4)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) , number_literal ))) ;) (expression_statement "puVar1 = *(undefined4 **)(param_2 + 0x44);" (assignment_expression "puVar1 = *(undefined4 **)(param_2 + 0x44)" identifier = (pointer_expression "*(undefined4 **)(param_2 + 0x44)" * (cast_expression "(undefined4 **)(param_2 + 0x44)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }" else (compound_statement "{\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }" { (expression_statement "puVar1 = *(undefined4 **)(param_2 + 0x44);" (assignment_expression "puVar1 = *(undefined4 **)(param_2 + 0x44)" identifier = (pointer_expression "*(undefined4 **)(param_2 + 0x44)" * (cast_expression "(undefined4 **)(param_2 + 0x44)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) ))))) ;) }))) (expression_statement "*puVar1 = 0;" (assignment_expression "*puVar1 = 0" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (expression_statement "iVar3 = *(int *)(param_2 + 0x44) + 4;" (assignment_expression "iVar3 = *(int *)(param_2 + 0x44) + 4" identifier = (binary_expression "*(int *)(param_2 + 0x44) + 4" (pointer_expression "*(int *)(param_2 + 0x44)" * (cast_expression "(int *)(param_2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_2 + 0x44) = iVar3;" (assignment_expression "*(int *)(param_2 + 0x44) = iVar3" (pointer_expression "*(int *)(param_2 + 0x44)" * (cast_expression "(int *)(param_2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar5 = *(int *)(param_2 + 0x40);" (assignment_expression "iVar5 = *(int *)(param_2 + 0x40)" identifier = (pointer_expression "*(int *)(param_2 + 0x40)" * (cast_expression "(int *)(param_2 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 == iVar5) {\n    *(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;\n  }" if (parenthesized_expression "(iVar3 == iVar5)" ( (binary_expression "iVar3 == iVar5" identifier == identifier) )) (compound_statement "{\n    *(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;\n  }" { (expression_statement "*(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;" (assignment_expression "*(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40" (pointer_expression "*(byte *)(param_2 + 0x60)" * (cast_expression "(byte *)(param_2 + 0x60)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x60)" ( (binary_expression "param_2 + 0x60" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_2 + 0x60) & 0xbf | 0x40" (binary_expression "*(byte *)(param_2 + 0x60) & 0xbf" (pointer_expression "*(byte *)(param_2 + 0x60)" * (cast_expression "(byte *)(param_2 + 0x60)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x60)" ( (binary_expression "param_2 + 0x60" identifier + number_literal) )))) & number_literal) | number_literal)) ;) })) (expression_statement "uVar2 = iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50);" (assignment_expression "uVar2 = iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50)" identifier = (binary_expression "iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50)" (binary_expression "iVar3 + *(uint *)(param_2 + 0x50)" identifier + (pointer_expression "*(uint *)(param_2 + 0x50)" * (cast_expression "(uint *)(param_2 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x50)" ( (binary_expression "param_2 + 0x50" identifier + number_literal) ))))) & (unary_expression "~*(uint *)(param_2 + 0x50)" ~ (pointer_expression "*(uint *)(param_2 + 0x50)" * (cast_expression "(uint *)(param_2 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x50)" ( (binary_expression "param_2 + 0x50" identifier + number_literal) ))))))) ;) (if_statement "if (*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c)) {\n    uVar2 = *(uint *)(param_2 + 0x48);\n  }" if (parenthesized_expression "(*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c))" ( (binary_expression "*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c)" (binary_expression "*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c)" (pointer_expression "*(uint *)(param_2 + 0x48)" * (cast_expression "(uint *)(param_2 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_2 + 0x3c)" * (cast_expression "(int *)(param_2 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) ))))) < (binary_expression "uVar2 - *(int *)(param_2 + 0x3c)" identifier - (pointer_expression "*(int *)(param_2 + 0x3c)" * (cast_expression "(int *)(param_2 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))))) )) (compound_statement "{\n    uVar2 = *(uint *)(param_2 + 0x48);\n  }" { (expression_statement "uVar2 = *(uint *)(param_2 + 0x48);" (assignment_expression "uVar2 = *(uint *)(param_2 + 0x48)" identifier = (pointer_expression "*(uint *)(param_2 + 0x48)" * (cast_expression "(uint *)(param_2 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) ))))) ;) })) (expression_statement "*(uint *)(param_2 + 0x44) = uVar2;" (assignment_expression "*(uint *)(param_2 + 0x44) = uVar2" (pointer_expression "*(uint *)(param_2 + 0x44)" * (cast_expression "(uint *)(param_2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_2 + 0x40) = uVar2;" (assignment_expression "*(uint *)(param_2 + 0x40) = uVar2" (pointer_expression "*(uint *)(param_2 + 0x40)" * (cast_expression "(uint *)(param_2 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_2 + 4) = iVar5;" (assignment_expression "*(int *)(param_2 + 4) = iVar5" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = *(int *)(param_2 + 0x6c);" (assignment_expression "iVar3 = *(int *)(param_2 + 0x6c)" identifier = (pointer_expression "*(int *)(param_2 + 0x6c)" * (cast_expression "(int *)(param_2 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x6c)" ( (binary_expression "param_2 + 0x6c" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_2 + 0x70) == iVar3) {\n    *(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;\n  }" if (parenthesized_expression "(*(int *)(param_2 + 0x70) == iVar3)" ( (binary_expression "*(int *)(param_2 + 0x70) == iVar3" (pointer_expression "*(int *)(param_2 + 0x70)" * (cast_expression "(int *)(param_2 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x70)" ( (binary_expression "param_2 + 0x70" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    *(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;\n  }" { (expression_statement "*(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;" (assignment_expression "*(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40" (pointer_expression "*(byte *)(param_2 + 0x8c)" * (cast_expression "(byte *)(param_2 + 0x8c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x8c)" ( (binary_expression "param_2 + 0x8c" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_2 + 0x8c) & 0xbf | 0x40" (binary_expression "*(byte *)(param_2 + 0x8c) & 0xbf" (pointer_expression "*(byte *)(param_2 + 0x8c)" * (cast_expression "(byte *)(param_2 + 0x8c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x8c)" ( (binary_expression "param_2 + 0x8c" identifier + number_literal) )))) & number_literal) | number_literal)) ;) })) (expression_statement "uVar2 = *(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c);" (assignment_expression "uVar2 = *(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c)" identifier = (binary_expression "*(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c)" (binary_expression "*(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c)" (pointer_expression "*(int *)(param_2 + 0x70)" * (cast_expression "(int *)(param_2 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x70)" ( (binary_expression "param_2 + 0x70" identifier + number_literal) )))) + (pointer_expression "*(uint *)(param_2 + 0x7c)" * (cast_expression "(uint *)(param_2 + 0x7c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x7c)" ( (binary_expression "param_2 + 0x7c" identifier + number_literal) ))))) & (unary_expression "~*(uint *)(param_2 + 0x7c)" ~ (pointer_expression "*(uint *)(param_2 + 0x7c)" * (cast_expression "(uint *)(param_2 + 0x7c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x7c)" ( (binary_expression "param_2 + 0x7c" identifier + number_literal) ))))))) ;) (if_statement "if (*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68)) {\n    uVar2 = *(uint *)(param_2 + 0x74);\n  }" if (parenthesized_expression "(*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68))" ( (binary_expression "*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68)" (binary_expression "*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68)" (pointer_expression "*(uint *)(param_2 + 0x74)" * (cast_expression "(uint *)(param_2 + 0x74)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x74)" ( (binary_expression "param_2 + 0x74" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_2 + 0x68)" * (cast_expression "(int *)(param_2 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x68)" ( (binary_expression "param_2 + 0x68" identifier + number_literal) ))))) < (binary_expression "uVar2 - *(int *)(param_2 + 0x68)" identifier - (pointer_expression "*(int *)(param_2 + 0x68)" * (cast_expression "(int *)(param_2 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x68)" ( (binary_expression "param_2 + 0x68" identifier + number_literal) )))))) )) (compound_statement "{\n    uVar2 = *(uint *)(param_2 + 0x74);\n  }" { (expression_statement "uVar2 = *(uint *)(param_2 + 0x74);" (assignment_expression "uVar2 = *(uint *)(param_2 + 0x74)" identifier = (pointer_expression "*(uint *)(param_2 + 0x74)" * (cast_expression "(uint *)(param_2 + 0x74)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x74)" ( (binary_expression "param_2 + 0x74" identifier + number_literal) ))))) ;) })) (expression_statement "*(uint *)(param_2 + 0x70) = uVar2;" (assignment_expression "*(uint *)(param_2 + 0x70) = uVar2" (pointer_expression "*(uint *)(param_2 + 0x70)" * (cast_expression "(uint *)(param_2 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x70)" ( (binary_expression "param_2 + 0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_2 + 0x6c) = uVar2;" (assignment_expression "*(uint *)(param_2 + 0x6c) = uVar2" (pointer_expression "*(uint *)(param_2 + 0x6c)" * (cast_expression "(uint *)(param_2 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x6c)" ( (binary_expression "param_2 + 0x6c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_2 + 8) = iVar3;" (assignment_expression "*(int *)(param_2 + 8) = iVar3" (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = (*(code *)PTR_ferror_0003f548)(param_1);" (assignment_expression "iVar3 = (*(code *)PTR_ferror_0003f548)(param_1)" identifier = (call_expression "(*(code *)PTR_ferror_0003f548)(param_1)" (parenthesized_expression "(*(code *)PTR_ferror_0003f548)" ( (pointer_expression "*(code *)PTR_ferror_0003f548" * (cast_expression "(code *)PTR_ferror_0003f548" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (return_statement "return iVar3 == 0;" return (binary_expression "iVar3 == 0" identifier == number_literal) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) , (binary_expression IDENT != LIT)) )) (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT ))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT ))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (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 (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) & (unary_expression ~ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) < (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) & (unary_expression ~ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) < (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (return_statement return (binary_expression IDENT == LIT) ;) })))
(function_definition "bool readtokens0(undefined4 param_1,int param_2)\n\n{\n  undefined4 *puVar1;\n  uint uVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  int iVar5;\n  code *pcVar6;\n  \n  pcVar6 = (code *)(PTR_LAB_0003f22c + 0x4f30);\n  while (iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1) {\n    puVar4 = *(undefined1 **)(param_2 + 0x18);\n    if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar6)(param_2);\n    }\n  }\n  puVar4 = *(undefined1 **)(param_2 + 0x18);\n  if (puVar4 != *(undefined1 **)(param_2 + 0x14)) {\n    if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = 0;\n    FUN_00024f30(param_2);\n  }\n  if ((uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4) {\n    _obstack_newchunk(param_2 + 0x38,4);\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  else {\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  *puVar1 = 0;\n  iVar3 = *(int *)(param_2 + 0x44) + 4;\n  *(int *)(param_2 + 0x44) = iVar3;\n  iVar5 = *(int *)(param_2 + 0x40);\n  if (iVar3 == iVar5) {\n    *(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;\n  }\n  uVar2 = iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50);\n  if (*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c)) {\n    uVar2 = *(uint *)(param_2 + 0x48);\n  }\n  *(uint *)(param_2 + 0x44) = uVar2;\n  *(uint *)(param_2 + 0x40) = uVar2;\n  *(int *)(param_2 + 4) = iVar5;\n  iVar3 = *(int *)(param_2 + 0x6c);\n  if (*(int *)(param_2 + 0x70) == iVar3) {\n    *(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;\n  }\n  uVar2 = *(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c);\n  if (*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68)) {\n    uVar2 = *(uint *)(param_2 + 0x74);\n  }\n  *(uint *)(param_2 + 0x70) = uVar2;\n  *(uint *)(param_2 + 0x6c) = uVar2;\n  *(int *)(param_2 + 8) = iVar3;\n  iVar3 = (*(code *)PTR_ferror_0003f548)(param_1);\n  return iVar3 == 0;\n}" (primitive_type "bool") (function_declarator "readtokens0(undefined4 param_1,int param_2)" (identifier "readtokens0") (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") (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  uint uVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  int iVar5;\n  code *pcVar6;\n  \n  pcVar6 = (code *)(PTR_LAB_0003f22c + 0x4f30);\n  while (iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1) {\n    puVar4 = *(undefined1 **)(param_2 + 0x18);\n    if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar6)(param_2);\n    }\n  }\n  puVar4 = *(undefined1 **)(param_2 + 0x18);\n  if (puVar4 != *(undefined1 **)(param_2 + 0x14)) {\n    if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = 0;\n    FUN_00024f30(param_2);\n  }\n  if ((uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4) {\n    _obstack_newchunk(param_2 + 0x38,4);\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  else {\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  *puVar1 = 0;\n  iVar3 = *(int *)(param_2 + 0x44) + 4;\n  *(int *)(param_2 + 0x44) = iVar3;\n  iVar5 = *(int *)(param_2 + 0x40);\n  if (iVar3 == iVar5) {\n    *(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;\n  }\n  uVar2 = iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50);\n  if (*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c)) {\n    uVar2 = *(uint *)(param_2 + 0x48);\n  }\n  *(uint *)(param_2 + 0x44) = uVar2;\n  *(uint *)(param_2 + 0x40) = uVar2;\n  *(int *)(param_2 + 4) = iVar5;\n  iVar3 = *(int *)(param_2 + 0x6c);\n  if (*(int *)(param_2 + 0x70) == iVar3) {\n    *(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;\n  }\n  uVar2 = *(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c);\n  if (*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68)) {\n    uVar2 = *(uint *)(param_2 + 0x74);\n  }\n  *(uint *)(param_2 + 0x70) = uVar2;\n  *(uint *)(param_2 + 0x6c) = uVar2;\n  *(int *)(param_2 + 8) = iVar3;\n  iVar3 = (*(code *)PTR_ferror_0003f548)(param_1);\n  return iVar3 == 0;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined1 *puVar4;" (type_identifier "undefined1") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "code *pcVar6;" (type_identifier "code") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (expression_statement "pcVar6 = (code *)(PTR_LAB_0003f22c + 0x4f30);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_0003f22c + 0x4f30)" (identifier "pcVar6") (= "=") (cast_expression "(code *)(PTR_LAB_0003f22c + 0x4f30)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0003f22c + 0x4f30)" (( "(") (binary_expression "PTR_LAB_0003f22c + 0x4f30" (identifier "PTR_LAB_0003f22c") (+ "+") (number_literal "0x4f30")) () ")")))) (; ";")) (while_statement "while (iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1) {\n    puVar4 = *(undefined1 **)(param_2 + 0x18);\n    if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar6)(param_2);\n    }\n  }" (while "while") (parenthesized_expression "(iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1)" (( "(") (comma_expression "iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1" (assignment_expression "iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_fgetc_0003f448)(param_1)" (parenthesized_expression "(*(code *)PTR_fgetc_0003f448)" (( "(") (pointer_expression "*(code *)PTR_fgetc_0003f448" (* "*") (cast_expression "(code *)PTR_fgetc_0003f448" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_fgetc_0003f448"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (, ",") (binary_expression "iVar3 != -1" (identifier "iVar3") (!= "!=") (number_literal "-1"))) () ")")) (compound_statement "{\n    puVar4 = *(undefined1 **)(param_2 + 0x18);\n    if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = (char)iVar3;\n    if (iVar3 == 0) {\n      (*pcVar6)(param_2);\n    }\n  }" ({ "{") (expression_statement "puVar4 = *(undefined1 **)(param_2 + 0x18);" (assignment_expression "puVar4 = *(undefined1 **)(param_2 + 0x18)" (identifier "puVar4") (= "=") (pointer_expression "*(undefined1 **)(param_2 + 0x18)" (* "*") (cast_expression "(undefined1 **)(param_2 + 0x18)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }" (if "if") (parenthesized_expression "(*(undefined1 **)(param_2 + 0x1c) == puVar4)" (( "(") (binary_expression "*(undefined1 **)(param_2 + 0x1c) == puVar4" (pointer_expression "*(undefined1 **)(param_2 + 0x1c)" (* "*") (cast_expression "(undefined1 **)(param_2 + 0x1c)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")")))) (== "==") (identifier "puVar4")) () ")")) (compound_statement "{\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }" ({ "{") (expression_statement "_obstack_newchunk(param_2 + 0xc,1);" (call_expression "_obstack_newchunk(param_2 + 0xc,1)" (identifier "_obstack_newchunk") (argument_list "(param_2 + 0xc,1)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "puVar4 = *(undefined1 **)(param_2 + 0x18);" (assignment_expression "puVar4 = *(undefined1 **)(param_2 + 0x18)" (identifier "puVar4") (= "=") (pointer_expression "*(undefined1 **)(param_2 + 0x18)" (* "*") (cast_expression "(undefined1 **)(param_2 + 0x18)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (} "}"))) (expression_statement "*(undefined1 **)(param_2 + 0x18) = puVar4 + 1;" (assignment_expression "*(undefined1 **)(param_2 + 0x18) = puVar4 + 1" (pointer_expression "*(undefined1 **)(param_2 + 0x18)" (* "*") (cast_expression "(undefined1 **)(param_2 + 0x18)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar4 = (char)iVar3;" (assignment_expression "*puVar4 = (char)iVar3" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (cast_expression "(char)iVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar3"))) (; ";")) (if_statement "if (iVar3 == 0) {\n      (*pcVar6)(param_2);\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      (*pcVar6)(param_2);\n    }" ({ "{") (expression_statement "(*pcVar6)(param_2);" (call_expression "(*pcVar6)(param_2)" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "puVar4 = *(undefined1 **)(param_2 + 0x18);" (assignment_expression "puVar4 = *(undefined1 **)(param_2 + 0x18)" (identifier "puVar4") (= "=") (pointer_expression "*(undefined1 **)(param_2 + 0x18)" (* "*") (cast_expression "(undefined1 **)(param_2 + 0x18)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (puVar4 != *(undefined1 **)(param_2 + 0x14)) {\n    if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = 0;\n    FUN_00024f30(param_2);\n  }" (if "if") (parenthesized_expression "(puVar4 != *(undefined1 **)(param_2 + 0x14))" (( "(") (binary_expression "puVar4 != *(undefined1 **)(param_2 + 0x14)" (identifier "puVar4") (!= "!=") (pointer_expression "*(undefined1 **)(param_2 + 0x14)" (* "*") (cast_expression "(undefined1 **)(param_2 + 0x14)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x14)" (( "(") (binary_expression "param_2 + 0x14" (identifier "param_2") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }\n    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;\n    *puVar4 = 0;\n    FUN_00024f30(param_2);\n  }" ({ "{") (if_statement "if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }" (if "if") (parenthesized_expression "(puVar4 == *(undefined1 **)(param_2 + 0x1c))" (( "(") (binary_expression "puVar4 == *(undefined1 **)(param_2 + 0x1c)" (identifier "puVar4") (== "==") (pointer_expression "*(undefined1 **)(param_2 + 0x1c)" (* "*") (cast_expression "(undefined1 **)(param_2 + 0x1c)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")"))))) () ")")) (compound_statement "{\n      _obstack_newchunk(param_2 + 0xc,1);\n      puVar4 = *(undefined1 **)(param_2 + 0x18);\n    }" ({ "{") (expression_statement "_obstack_newchunk(param_2 + 0xc,1);" (call_expression "_obstack_newchunk(param_2 + 0xc,1)" (identifier "_obstack_newchunk") (argument_list "(param_2 + 0xc,1)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "puVar4 = *(undefined1 **)(param_2 + 0x18);" (assignment_expression "puVar4 = *(undefined1 **)(param_2 + 0x18)" (identifier "puVar4") (= "=") (pointer_expression "*(undefined1 **)(param_2 + 0x18)" (* "*") (cast_expression "(undefined1 **)(param_2 + 0x18)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (} "}"))) (expression_statement "*(undefined1 **)(param_2 + 0x18) = puVar4 + 1;" (assignment_expression "*(undefined1 **)(param_2 + 0x18) = puVar4 + 1" (pointer_expression "*(undefined1 **)(param_2 + 0x18)" (* "*") (cast_expression "(undefined1 **)(param_2 + 0x18)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00024f30(param_2);" (call_expression "FUN_00024f30(param_2)" (identifier "FUN_00024f30") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (if_statement "if ((uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4) {\n    _obstack_newchunk(param_2 + 0x38,4);\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }\n  else {\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }" (if "if") (parenthesized_expression "((uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4)" (( "(") (binary_expression "(uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4" (call_expression "(uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44))" (( "(") (binary_expression "*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)" (pointer_expression "*(int *)(param_2 + 0x48)" (* "*") (cast_expression "(int *)(param_2 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x48)" (( "(") (binary_expression "param_2 + 0x48" (identifier "param_2") (+ "+") (number_literal "0x48")) () ")")))) (- "-") (pointer_expression "*(int *)(param_2 + 0x44)" (* "*") (cast_expression "(int *)(param_2 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x44)" (( "(") (binary_expression "param_2 + 0x44" (identifier "param_2") (+ "+") (number_literal "0x44")) () ")"))))) () ")"))) (< "<") (number_literal "4")) () ")")) (compound_statement "{\n    _obstack_newchunk(param_2 + 0x38,4);\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }" ({ "{") (expression_statement "_obstack_newchunk(param_2 + 0x38,4);" (call_expression "_obstack_newchunk(param_2 + 0x38,4)" (identifier "_obstack_newchunk") (argument_list "(param_2 + 0x38,4)" (( "(") (binary_expression "param_2 + 0x38" (identifier "param_2") (+ "+") (number_literal "0x38")) (, ",") (number_literal "4") () ")"))) (; ";")) (expression_statement "puVar1 = *(undefined4 **)(param_2 + 0x44);" (assignment_expression "puVar1 = *(undefined4 **)(param_2 + 0x44)" (identifier "puVar1") (= "=") (pointer_expression "*(undefined4 **)(param_2 + 0x44)" (* "*") (cast_expression "(undefined4 **)(param_2 + 0x44)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x44)" (( "(") (binary_expression "param_2 + 0x44" (identifier "param_2") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }" (else "else") (compound_statement "{\n    puVar1 = *(undefined4 **)(param_2 + 0x44);\n  }" ({ "{") (expression_statement "puVar1 = *(undefined4 **)(param_2 + 0x44);" (assignment_expression "puVar1 = *(undefined4 **)(param_2 + 0x44)" (identifier "puVar1") (= "=") (pointer_expression "*(undefined4 **)(param_2 + 0x44)" (* "*") (cast_expression "(undefined4 **)(param_2 + 0x44)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x44)" (( "(") (binary_expression "param_2 + 0x44" (identifier "param_2") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (} "}")))) (expression_statement "*puVar1 = 0;" (assignment_expression "*puVar1 = 0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar3 = *(int *)(param_2 + 0x44) + 4;" (assignment_expression "iVar3 = *(int *)(param_2 + 0x44) + 4" (identifier "iVar3") (= "=") (binary_expression "*(int *)(param_2 + 0x44) + 4" (pointer_expression "*(int *)(param_2 + 0x44)" (* "*") (cast_expression "(int *)(param_2 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x44)" (( "(") (binary_expression "param_2 + 0x44" (identifier "param_2") (+ "+") (number_literal "0x44")) () ")")))) (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*(int *)(param_2 + 0x44) = iVar3;" (assignment_expression "*(int *)(param_2 + 0x44) = iVar3" (pointer_expression "*(int *)(param_2 + 0x44)" (* "*") (cast_expression "(int *)(param_2 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x44)" (( "(") (binary_expression "param_2 + 0x44" (identifier "param_2") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "iVar5 = *(int *)(param_2 + 0x40);" (assignment_expression "iVar5 = *(int *)(param_2 + 0x40)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_2 + 0x40)" (* "*") (cast_expression "(int *)(param_2 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x40)" (( "(") (binary_expression "param_2 + 0x40" (identifier "param_2") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (if_statement "if (iVar3 == iVar5) {\n    *(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;\n  }" (if "if") (parenthesized_expression "(iVar3 == iVar5)" (( "(") (binary_expression "iVar3 == iVar5" (identifier "iVar3") (== "==") (identifier "iVar5")) () ")")) (compound_statement "{\n    *(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;\n  }" ({ "{") (expression_statement "*(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;" (assignment_expression "*(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40" (pointer_expression "*(byte *)(param_2 + 0x60)" (* "*") (cast_expression "(byte *)(param_2 + 0x60)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x60)" (( "(") (binary_expression "param_2 + 0x60" (identifier "param_2") (+ "+") (number_literal "0x60")) () ")")))) (= "=") (binary_expression "*(byte *)(param_2 + 0x60) & 0xbf | 0x40" (binary_expression "*(byte *)(param_2 + 0x60) & 0xbf" (pointer_expression "*(byte *)(param_2 + 0x60)" (* "*") (cast_expression "(byte *)(param_2 + 0x60)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x60)" (( "(") (binary_expression "param_2 + 0x60" (identifier "param_2") (+ "+") (number_literal "0x60")) () ")")))) (& "&") (number_literal "0xbf")) (| "|") (number_literal "0x40"))) (; ";")) (} "}"))) (expression_statement "uVar2 = iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50);" (assignment_expression "uVar2 = iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50)" (identifier "uVar2") (= "=") (binary_expression "iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50)" (binary_expression "iVar3 + *(uint *)(param_2 + 0x50)" (identifier "iVar3") (+ "+") (pointer_expression "*(uint *)(param_2 + 0x50)" (* "*") (cast_expression "(uint *)(param_2 + 0x50)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x50)" (( "(") (binary_expression "param_2 + 0x50" (identifier "param_2") (+ "+") (number_literal "0x50")) () ")"))))) (& "&") (unary_expression "~*(uint *)(param_2 + 0x50)" (~ "~") (pointer_expression "*(uint *)(param_2 + 0x50)" (* "*") (cast_expression "(uint *)(param_2 + 0x50)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x50)" (( "(") (binary_expression "param_2 + 0x50" (identifier "param_2") (+ "+") (number_literal "0x50")) () ")"))))))) (; ";")) (if_statement "if (*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c)) {\n    uVar2 = *(uint *)(param_2 + 0x48);\n  }" (if "if") (parenthesized_expression "(*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c))" (( "(") (binary_expression "*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c)" (binary_expression "*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c)" (pointer_expression "*(uint *)(param_2 + 0x48)" (* "*") (cast_expression "(uint *)(param_2 + 0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x48)" (( "(") (binary_expression "param_2 + 0x48" (identifier "param_2") (+ "+") (number_literal "0x48")) () ")")))) (- "-") (pointer_expression "*(int *)(param_2 + 0x3c)" (* "*") (cast_expression "(int *)(param_2 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")"))))) (< "<") (binary_expression "uVar2 - *(int *)(param_2 + 0x3c)" (identifier "uVar2") (- "-") (pointer_expression "*(int *)(param_2 + 0x3c)" (* "*") (cast_expression "(int *)(param_2 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")")))))) () ")")) (compound_statement "{\n    uVar2 = *(uint *)(param_2 + 0x48);\n  }" ({ "{") (expression_statement "uVar2 = *(uint *)(param_2 + 0x48);" (assignment_expression "uVar2 = *(uint *)(param_2 + 0x48)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(param_2 + 0x48)" (* "*") (cast_expression "(uint *)(param_2 + 0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x48)" (( "(") (binary_expression "param_2 + 0x48" (identifier "param_2") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (} "}"))) (expression_statement "*(uint *)(param_2 + 0x44) = uVar2;" (assignment_expression "*(uint *)(param_2 + 0x44) = uVar2" (pointer_expression "*(uint *)(param_2 + 0x44)" (* "*") (cast_expression "(uint *)(param_2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x44)" (( "(") (binary_expression "param_2 + 0x44" (identifier "param_2") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*(uint *)(param_2 + 0x40) = uVar2;" (assignment_expression "*(uint *)(param_2 + 0x40) = uVar2" (pointer_expression "*(uint *)(param_2 + 0x40)" (* "*") (cast_expression "(uint *)(param_2 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x40)" (( "(") (binary_expression "param_2 + 0x40" (identifier "param_2") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*(int *)(param_2 + 4) = iVar5;" (assignment_expression "*(int *)(param_2 + 4) = iVar5" (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "iVar3 = *(int *)(param_2 + 0x6c);" (assignment_expression "iVar3 = *(int *)(param_2 + 0x6c)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_2 + 0x6c)" (* "*") (cast_expression "(int *)(param_2 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x6c)" (( "(") (binary_expression "param_2 + 0x6c" (identifier "param_2") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (if_statement "if (*(int *)(param_2 + 0x70) == iVar3) {\n    *(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 0x70) == iVar3)" (( "(") (binary_expression "*(int *)(param_2 + 0x70) == iVar3" (pointer_expression "*(int *)(param_2 + 0x70)" (* "*") (cast_expression "(int *)(param_2 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x70)" (( "(") (binary_expression "param_2 + 0x70" (identifier "param_2") (+ "+") (number_literal "0x70")) () ")")))) (== "==") (identifier "iVar3")) () ")")) (compound_statement "{\n    *(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;\n  }" ({ "{") (expression_statement "*(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;" (assignment_expression "*(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40" (pointer_expression "*(byte *)(param_2 + 0x8c)" (* "*") (cast_expression "(byte *)(param_2 + 0x8c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x8c)" (( "(") (binary_expression "param_2 + 0x8c" (identifier "param_2") (+ "+") (number_literal "0x8c")) () ")")))) (= "=") (binary_expression "*(byte *)(param_2 + 0x8c) & 0xbf | 0x40" (binary_expression "*(byte *)(param_2 + 0x8c) & 0xbf" (pointer_expression "*(byte *)(param_2 + 0x8c)" (* "*") (cast_expression "(byte *)(param_2 + 0x8c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x8c)" (( "(") (binary_expression "param_2 + 0x8c" (identifier "param_2") (+ "+") (number_literal "0x8c")) () ")")))) (& "&") (number_literal "0xbf")) (| "|") (number_literal "0x40"))) (; ";")) (} "}"))) (expression_statement "uVar2 = *(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c);" (assignment_expression "uVar2 = *(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c)" (identifier "uVar2") (= "=") (binary_expression "*(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c)" (binary_expression "*(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c)" (pointer_expression "*(int *)(param_2 + 0x70)" (* "*") (cast_expression "(int *)(param_2 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x70)" (( "(") (binary_expression "param_2 + 0x70" (identifier "param_2") (+ "+") (number_literal "0x70")) () ")")))) (+ "+") (pointer_expression "*(uint *)(param_2 + 0x7c)" (* "*") (cast_expression "(uint *)(param_2 + 0x7c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x7c)" (( "(") (binary_expression "param_2 + 0x7c" (identifier "param_2") (+ "+") (number_literal "0x7c")) () ")"))))) (& "&") (unary_expression "~*(uint *)(param_2 + 0x7c)" (~ "~") (pointer_expression "*(uint *)(param_2 + 0x7c)" (* "*") (cast_expression "(uint *)(param_2 + 0x7c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x7c)" (( "(") (binary_expression "param_2 + 0x7c" (identifier "param_2") (+ "+") (number_literal "0x7c")) () ")"))))))) (; ";")) (if_statement "if (*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68)) {\n    uVar2 = *(uint *)(param_2 + 0x74);\n  }" (if "if") (parenthesized_expression "(*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68))" (( "(") (binary_expression "*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68)" (binary_expression "*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68)" (pointer_expression "*(uint *)(param_2 + 0x74)" (* "*") (cast_expression "(uint *)(param_2 + 0x74)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x74)" (( "(") (binary_expression "param_2 + 0x74" (identifier "param_2") (+ "+") (number_literal "0x74")) () ")")))) (- "-") (pointer_expression "*(int *)(param_2 + 0x68)" (* "*") (cast_expression "(int *)(param_2 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x68)" (( "(") (binary_expression "param_2 + 0x68" (identifier "param_2") (+ "+") (number_literal "0x68")) () ")"))))) (< "<") (binary_expression "uVar2 - *(int *)(param_2 + 0x68)" (identifier "uVar2") (- "-") (pointer_expression "*(int *)(param_2 + 0x68)" (* "*") (cast_expression "(int *)(param_2 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x68)" (( "(") (binary_expression "param_2 + 0x68" (identifier "param_2") (+ "+") (number_literal "0x68")) () ")")))))) () ")")) (compound_statement "{\n    uVar2 = *(uint *)(param_2 + 0x74);\n  }" ({ "{") (expression_statement "uVar2 = *(uint *)(param_2 + 0x74);" (assignment_expression "uVar2 = *(uint *)(param_2 + 0x74)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(param_2 + 0x74)" (* "*") (cast_expression "(uint *)(param_2 + 0x74)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x74)" (( "(") (binary_expression "param_2 + 0x74" (identifier "param_2") (+ "+") (number_literal "0x74")) () ")"))))) (; ";")) (} "}"))) (expression_statement "*(uint *)(param_2 + 0x70) = uVar2;" (assignment_expression "*(uint *)(param_2 + 0x70) = uVar2" (pointer_expression "*(uint *)(param_2 + 0x70)" (* "*") (cast_expression "(uint *)(param_2 + 0x70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x70)" (( "(") (binary_expression "param_2 + 0x70" (identifier "param_2") (+ "+") (number_literal "0x70")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*(uint *)(param_2 + 0x6c) = uVar2;" (assignment_expression "*(uint *)(param_2 + 0x6c) = uVar2" (pointer_expression "*(uint *)(param_2 + 0x6c)" (* "*") (cast_expression "(uint *)(param_2 + 0x6c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x6c)" (( "(") (binary_expression "param_2 + 0x6c" (identifier "param_2") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*(int *)(param_2 + 8) = iVar3;" (assignment_expression "*(int *)(param_2 + 8) = iVar3" (pointer_expression "*(int *)(param_2 + 8)" (* "*") (cast_expression "(int *)(param_2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "iVar3 = (*(code *)PTR_ferror_0003f548)(param_1);" (assignment_expression "iVar3 = (*(code *)PTR_ferror_0003f548)(param_1)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_ferror_0003f548)(param_1)" (parenthesized_expression "(*(code *)PTR_ferror_0003f548)" (( "(") (pointer_expression "*(code *)PTR_ferror_0003f548" (* "*") (cast_expression "(code *)PTR_ferror_0003f548" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_ferror_0003f548"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (return_statement "return iVar3 == 0;" (return "return") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) (; ";")) (} "}")))

type_1 function_1(type_2 *in,type_3 *t)

{
  char **var_6;
  size_t *var_9;
  int var_2;
  char *var_3;
  type_4 var_8;
  type_5 *p_Var6;
  char **var_7;
  size_t *var_10;
  char *pcVar9;
  type_6 *pcVar10;
  
  pcVar10 = (type_6 *)(var_1 + 0x4f30);
  while (var_2 = (*(type_6 *)PTR_fgetc_0003f448)(in), var_2 != -1) {
    var_3 = (t->o_data).next_free;
    if ((t->o_data).chunk_limit == var_3) {
      var_4(&t->o_data,1);
      var_3 = (t->o_data).next_free;
    }
    (t->o_data).next_free = var_3 + 1;
    *var_3 = (char)var_2;
    if (var_2 == 0) {
      (*pcVar10)(t);
    }
  }
  var_3 = (t->o_data).next_free;
  if (var_3 != (t->o_data).object_base) {
    if (var_3 == (t->o_data).chunk_limit) {
      var_4(&t->o_data,1);
      var_3 = (t->o_data).next_free;
    }
    (t->o_data).next_free = var_3 + 1;
    *var_3 = '\0';
    var_5(t);
  }
  if ((type_4)((int)(t->o_tok).chunk_limit - (int)(t->o_tok).next_free) < 4) {
    var_4(&t->o_tok,4);
    var_3 = (t->o_tok).next_free;
  }
  else {
    var_3 = (t->o_tok).next_free;
  }
  var_3[0] = '\0';
  var_3[1] = '\0';
  var_3[2] = '\0';
  var_3[3] = '\0';
  var_6 = (char **)((t->o_tok).next_free + 4);
  (t->o_tok).next_free = (char *)var_6;
  var_7 = (char **)(t->o_tok).object_base;
  if (var_6 == var_7) {
    (t->o_tok).field_0x28 = (t->o_tok).field_0x28 & 0xbf | 0x40;
  }
  var_8 = (t->o_tok).alignment_mask;
  var_3 = (char *)((type_4)((int)var_6 + var_8) & ~var_8);
  p_Var6 = (t->o_tok).chunk;
  pcVar9 = (t->o_tok).chunk_limit;
  if ((type_4)((int)pcVar9 - (int)p_Var6) < (type_4)((int)var_3 - (int)p_Var6)) {
    var_3 = pcVar9;
  }
  (t->o_tok).next_free = var_3;
  (t->o_tok).object_base = var_3;
  t->tok = var_7;
  var_10 = (size_t *)(t->o_tok_len).object_base;
  var_9 = (size_t *)(t->o_tok_len).next_free;
  if (var_9 == var_10) {
    (t->o_tok_len).field_0x28 = (t->o_tok_len).field_0x28 & 0xbf | 0x40;
  }
  var_8 = (t->o_tok_len).alignment_mask;
  var_3 = (char *)((type_4)((int)var_9 + var_8) & ~var_8);
  p_Var6 = (t->o_tok_len).chunk;
  pcVar9 = (t->o_tok_len).chunk_limit;
  if ((type_4)((int)pcVar9 - (int)p_Var6) < (type_4)((int)var_3 - (int)p_Var6)) {
    var_3 = pcVar9;
  }
  (t->o_tok_len).next_free = var_3;
  (t->o_tok_len).object_base = var_3;
  t->tok_len = var_10;
  var_2 = (*(type_6 *)PTR_ferror_0003f548)(in);
  return var_2 == 0;
}


(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: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))))) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (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))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (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))))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (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))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (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))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) 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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (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: (unary_expression argument: (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))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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 (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: (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: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (unary_expression argument: (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))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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 (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: (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: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (return_statement (binary_expression left: (identifier) right: (number_literal))))))

bool MASKED(undefined4 param_1,int param_2)

{
  undefined4 *puVar1;
  uint uVar2;
  int iVar3;
  undefined1 *puVar4;
  int iVar5;
  code *pcVar6;
  
  pcVar6 = (code *)(PTR_LAB_0003f22c + 0x4f30);
  while (iVar3 = (*(code *)PTR_fgetc_0003f448)(param_1), iVar3 != -1) {
    puVar4 = *(undefined1 **)(param_2 + 0x18);
    if (*(undefined1 **)(param_2 + 0x1c) == puVar4) {
      _obstack_newchunk(param_2 + 0xc,1);
      puVar4 = *(undefined1 **)(param_2 + 0x18);
    }
    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;
    *puVar4 = (char)iVar3;
    if (iVar3 == 0) {
      (*pcVar6)(param_2);
    }
  }
  puVar4 = *(undefined1 **)(param_2 + 0x18);
  if (puVar4 != *(undefined1 **)(param_2 + 0x14)) {
    if (puVar4 == *(undefined1 **)(param_2 + 0x1c)) {
      _obstack_newchunk(param_2 + 0xc,1);
      puVar4 = *(undefined1 **)(param_2 + 0x18);
    }
    *(undefined1 **)(param_2 + 0x18) = puVar4 + 1;
    *puVar4 = 0;
    FUN_00024f30(param_2);
  }
  if ((uint)(*(int *)(param_2 + 0x48) - *(int *)(param_2 + 0x44)) < 4) {
    _obstack_newchunk(param_2 + 0x38,4);
    puVar1 = *(undefined4 **)(param_2 + 0x44);
  }
  else {
    puVar1 = *(undefined4 **)(param_2 + 0x44);
  }
  *puVar1 = 0;
  iVar3 = *(int *)(param_2 + 0x44) + 4;
  *(int *)(param_2 + 0x44) = iVar3;
  iVar5 = *(int *)(param_2 + 0x40);
  if (iVar3 == iVar5) {
    *(byte *)(param_2 + 0x60) = *(byte *)(param_2 + 0x60) & 0xbf | 0x40;
  }
  uVar2 = iVar3 + *(uint *)(param_2 + 0x50) & ~*(uint *)(param_2 + 0x50);
  if (*(uint *)(param_2 + 0x48) - *(int *)(param_2 + 0x3c) < uVar2 - *(int *)(param_2 + 0x3c)) {
    uVar2 = *(uint *)(param_2 + 0x48);
  }
  *(uint *)(param_2 + 0x44) = uVar2;
  *(uint *)(param_2 + 0x40) = uVar2;
  *(int *)(param_2 + 4) = iVar5;
  iVar3 = *(int *)(param_2 + 0x6c);
  if (*(int *)(param_2 + 0x70) == iVar3) {
    *(byte *)(param_2 + 0x8c) = *(byte *)(param_2 + 0x8c) & 0xbf | 0x40;
  }
  uVar2 = *(int *)(param_2 + 0x70) + *(uint *)(param_2 + 0x7c) & ~*(uint *)(param_2 + 0x7c);
  if (*(uint *)(param_2 + 0x74) - *(int *)(param_2 + 0x68) < uVar2 - *(int *)(param_2 + 0x68)) {
    uVar2 = *(uint *)(param_2 + 0x74);
  }
  *(uint *)(param_2 + 0x70) = uVar2;
  *(uint *)(param_2 + 0x6c) = uVar2;
  *(int *)(param_2 + 8) = iVar3;
  iVar3 = (*(code *)PTR_ferror_0003f548)(param_1);
  return iVar3 == 0;
}

