
int gzputc(gzFile file,int c)

{
  undefined *puVar1;
  gz_statep state;
  uint uVar2;
  z_size_t len;
  z_size_t zVar3;
  uchar *puVar4;
  uchar *puVar5;
  int iVar6;
  int iVar7;
  code *pcVar8;
  undefined1 *puVar9;
  undefined4 in_stack_ffffffe4;
  uchar buf [1];
  
  puVar1 = PTR___stack_chk_guard_000360f4;
  puVar9 = &_gp;
  state = *(gz_statep *)PTR___stack_chk_guard_000360f4;
  uVar2 = 0xffffffff;
  puVar4 = (uchar *)c;
  if (file == (gzFile)0x0) goto LAB_00020580;
  if (file[1].have == 0x79b1) {
    uVar2 = 0xffffffff;
    if ((int)file[5].pos != 0) goto LAB_00020580;
    puVar9 = &_gp;
    if (*(int *)&file[5].pos != 0) {
      *(undefined4 *)&file[5].pos = 0;
      iVar6 = gz_zero((gz_statep)file,CONCAT44(&_gp,in_stack_ffffffe4));
      if (iVar6 == -1) goto LAB_000205d4;
    }
    uVar2 = (uint)file[1].pos;
    if (uVar2 != 0) {
      puVar4 = file[2].next;
      if (*(int *)&file[6].pos == 0) {
        file[6].next = puVar4;
        puVar5 = puVar4;
      }
      else {
        puVar5 = file[6].next;
      }
      if ((uint)((int)(puVar5 + *(int *)&file[6].pos) - (int)puVar4) < uVar2) {
        puVar5[*(int *)&file[6].pos] = (uchar)c;
        uVar2 = c & 0xff;
        puVar5 = *(uchar **)((int)&file->pos + 4);
        iVar6 = *(int *)&file[6].pos;
        iVar7 = *(int *)&file->pos;
        puVar4 = puVar5 + 1;
        *(uchar **)((int)&file->pos + 4) = puVar4;
        *(int *)&file[6].pos = iVar6 + 1;
        *(uint *)&file->pos = (uint)(puVar4 < puVar5) + iVar7;
        goto LAB_00020580;
      }
    }
    puVar4 = buf;
    buf[0] = (uchar)c;
    zVar3 = gz_write((gz_statep)file,puVar4,1);
    if (zVar3 == 1) {
      uVar2 = c & 0xff;
      goto LAB_00020580;
    }
  }
LAB_000205d4:
  uVar2 = 0xffffffff;
LAB_00020580:
  if (state == *(gz_statep *)puVar1) {
    return uVar2;
  }
  pcVar8 = *(code **)(puVar9 + -0x7f04);
  (*pcVar8)();
  if (((state != (gz_statep)0x0) && (state->mode == 0x79b1)) && (state->err == 0)) {
    len = (**(code **)(pcVar8 + 0x15acc))(puVar4);
    zVar3 = gz_write(state,puVar4,len);
    if (zVar3 == 0) {
      zVar3 = -(uint)(len != 0);
    }
    return zVar3;
  }
  return -1;
}



uint gzputc(int param_1,undefined1 *param_2)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  undefined1 *puVar4;
  undefined1 *puVar5;
  undefined *puVar6;
  undefined1 local_18 [4];
  int local_14;
  
  puVar6 = PTR___stack_chk_guard_000360f4;
  local_14 = *(int *)PTR___stack_chk_guard_000360f4;
  uVar1 = 0xffffffff;
  puVar5 = param_2;
  if (param_1 == 0) goto LAB_00020580;
  if (*(int *)(param_1 + 0x10) == 0x79b1) {
    uVar1 = 0xffffffff;
    if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;
    if (*(int *)(param_1 + 0x58) != 0) {
      *(undefined4 *)(param_1 + 0x58) = 0;
      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),
                           *(undefined4 *)(param_1 + 0x54));
      if (iVar3 == -1) goto LAB_000205d4;
    }
    if (*(uint *)(param_1 + 0x1c) != 0) {
      iVar3 = *(int *)(param_1 + 0x24);
      if (*(int *)(param_1 + 0x68) == 0) {
        *(int *)(param_1 + 100) = iVar3;
        iVar2 = iVar3;
      }
      else {
        iVar2 = *(int *)(param_1 + 100);
      }
      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));
      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {
        *puVar5 = (char)param_2;
        uVar1 = (uint)param_2 & 0xff;
        puVar4 = *(undefined1 **)(param_1 + 0xc);
        puVar5 = puVar4 + 1;
        *(undefined1 **)(param_1 + 0xc) = puVar5;
        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;
        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);
        goto LAB_00020580;
      }
    }
    puVar5 = local_18;
    local_18[0] = (char)param_2;
    iVar3 = FUN_000200cc(param_1,puVar5,1);
    if (iVar3 == 1) {
      uVar1 = (uint)param_2 & 0xff;
      goto LAB_00020580;
    }
  }
LAB_000205d4:
  uVar1 = 0xffffffff;
LAB_00020580:
  if (local_14 == *(int *)puVar6) {
    return uVar1;
  }
  iVar3 = local_14;
  puVar6 = PTR___stack_chk_fail_000360ec;
  (*(code *)PTR___stack_chk_fail_000360ec)();
  if (((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0)) {
    iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);
    uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);
    if (uVar1 == 0) {
      uVar1 = -(uint)(iVar2 != 0);
    }
    return uVar1;
  }
  return 0xffffffff;
}


lui gp,0x2
addiu gp,gp,-0x24a0
addu gp,gp,t9
addiu sp,sp,-0x30
sw s2,0x28(sp)
lw s2,-0x7efc(gp)
sw gp,0x10(sp)
sw ra,0x2c(sp)
sw s1,0x24(sp)
sw s0,0x20(sp)
lw v0,0x0(s2)
sw v0,0x1c(sp)
beq a0,zero,0x00020580
_li v0,-0x1
lw v1,0x10(a0)
li v0,0x79b1
bne v1,v0,0x000205d4
_or s0,a0,zero
lw v0,0x5c(a0)
bne v0,zero,0x00020580
_li v0,-0x1
lw v0,0x58(a0)
bne v0,zero,0x000205b0
_or s1,a1,zero
lw v0,0x1c(s0)
beq v0,zero,0x00020554
_andi a3,s1,0xff
lw a1,0x68(s0)
beq a1,zero,0x000205a4
_lw v1,0x24(s0)
lw a0,0x64(s0)
addu a0,a0,a1
subu v1,a0,v1
sltu v0,v1,v0
beq v0,zero,0x00020558
_lw t9,-0x7fd4(gp)
sb a3,0x0(a0)
andi v0,s1,0xff
lw v1,0xc(s0)
lw a0,0x68(s0)
lw a2,0x8(s0)
addiu a1,v1,0x1
addiu a0,a0,0x1
sltu v1,a1,v1
sw a1,0xc(s0)
addu v1,v1,a2
sw a0,0x68(s0)
b 0x00020580
_sw v1,0x8(s0)
lw t9,-0x7fd4(gp)
li a2,0x1
addiu a1,sp,0x18
sb a3,0x18(sp)
addiu t9,t9,0xcc
bal 0x000200cc
_or a0,s0,zero
li v1,0x1
bne v0,v1,0x000205d4
_lw gp,0x10(sp)
andi v0,s1,0xff
lw a0,0x1c(sp)
lw v1,0x0(s2)
bne a0,v1,0x000205dc
_lw ra,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x30
sw v1,0x64(s0)
b 0x0002050c
_or a0,v1,zero
lw t9,-0x7fd4(gp)
lw a3,0x54(a0)
lw a2,0x50(a0)
addiu t9,t9,-0xb4
bal 0x0001ff4c
_sw zero,0x58(a0)
li v1,-0x1
bne v0,v1,0x000204f0
_lw gp,0x10(sp)
b 0x00020580
_li v0,-0x1
lw t9,-0x7f04(gp)
jalr t9
_nop
(translation_unit "uint gzputc(int param_1,undefined1 *param_2)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined *puVar6;\n  undefined1 local_18 [4];\n  int local_14;\n  \n  puVar6 = PTR___stack_chk_guard_000360f4;\n  local_14 = *(int *)PTR___stack_chk_guard_000360f4;\n  uVar1 = 0xffffffff;\n  puVar5 = param_2;\n  if (param_1 == 0) goto LAB_00020580;\n  if (*(int *)(param_1 + 0x10) == 0x79b1) {\n    uVar1 = 0xffffffff;\n    if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;\n    if (*(int *)(param_1 + 0x58) != 0) {\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }\n    if (*(uint *)(param_1 + 0x1c) != 0) {\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }\n    puVar5 = local_18;\n    local_18[0] = (char)param_2;\n    iVar3 = FUN_000200cc(param_1,puVar5,1);\n    if (iVar3 == 1) {\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }\n  }\nLAB_000205d4:\n  uVar1 = 0xffffffff;\nLAB_00020580:\n  if (local_14 == *(int *)puVar6) {\n    return uVar1;\n  }\n  iVar3 = local_14;\n  puVar6 = PTR___stack_chk_fail_000360ec;\n  (*(code *)PTR___stack_chk_fail_000360ec)();\n  if (((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0)) {\n    iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);\n    uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);\n    if (uVar1 == 0) {\n      uVar1 = -(uint)(iVar2 != 0);\n    }\n    return uVar1;\n  }\n  return 0xffffffff;\n}\n\n" (function_definition "uint gzputc(int param_1,undefined1 *param_2)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined *puVar6;\n  undefined1 local_18 [4];\n  int local_14;\n  \n  puVar6 = PTR___stack_chk_guard_000360f4;\n  local_14 = *(int *)PTR___stack_chk_guard_000360f4;\n  uVar1 = 0xffffffff;\n  puVar5 = param_2;\n  if (param_1 == 0) goto LAB_00020580;\n  if (*(int *)(param_1 + 0x10) == 0x79b1) {\n    uVar1 = 0xffffffff;\n    if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;\n    if (*(int *)(param_1 + 0x58) != 0) {\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }\n    if (*(uint *)(param_1 + 0x1c) != 0) {\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }\n    puVar5 = local_18;\n    local_18[0] = (char)param_2;\n    iVar3 = FUN_000200cc(param_1,puVar5,1);\n    if (iVar3 == 1) {\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }\n  }\nLAB_000205d4:\n  uVar1 = 0xffffffff;\nLAB_00020580:\n  if (local_14 == *(int *)puVar6) {\n    return uVar1;\n  }\n  iVar3 = local_14;\n  puVar6 = PTR___stack_chk_fail_000360ec;\n  (*(code *)PTR___stack_chk_fail_000360ec)();\n  if (((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0)) {\n    iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);\n    uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);\n    if (uVar1 == 0) {\n      uVar1 = -(uint)(iVar2 != 0);\n    }\n    return uVar1;\n  }\n  return 0xffffffff;\n}" type_identifier (function_declarator "gzputc(int param_1,undefined1 *param_2)" identifier (parameter_list "(int param_1,undefined1 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined1 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined *puVar6;\n  undefined1 local_18 [4];\n  int local_14;\n  \n  puVar6 = PTR___stack_chk_guard_000360f4;\n  local_14 = *(int *)PTR___stack_chk_guard_000360f4;\n  uVar1 = 0xffffffff;\n  puVar5 = param_2;\n  if (param_1 == 0) goto LAB_00020580;\n  if (*(int *)(param_1 + 0x10) == 0x79b1) {\n    uVar1 = 0xffffffff;\n    if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;\n    if (*(int *)(param_1 + 0x58) != 0) {\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }\n    if (*(uint *)(param_1 + 0x1c) != 0) {\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }\n    puVar5 = local_18;\n    local_18[0] = (char)param_2;\n    iVar3 = FUN_000200cc(param_1,puVar5,1);\n    if (iVar3 == 1) {\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }\n  }\nLAB_000205d4:\n  uVar1 = 0xffffffff;\nLAB_00020580:\n  if (local_14 == *(int *)puVar6) {\n    return uVar1;\n  }\n  iVar3 = local_14;\n  puVar6 = PTR___stack_chk_fail_000360ec;\n  (*(code *)PTR___stack_chk_fail_000360ec)();\n  if (((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0)) {\n    iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);\n    uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);\n    if (uVar1 == 0) {\n      uVar1 = -(uint)(iVar2 != 0);\n    }\n    return uVar1;\n  }\n  return 0xffffffff;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined1 local_18 [4];" type_identifier (array_declarator "local_18 [4]" identifier [ number_literal ]) ;) (declaration "int local_14;" primitive_type identifier ;) (expression_statement "puVar6 = PTR___stack_chk_guard_000360f4;" (assignment_expression "puVar6 = PTR___stack_chk_guard_000360f4" identifier = identifier) ;) (expression_statement "local_14 = *(int *)PTR___stack_chk_guard_000360f4;" (assignment_expression "local_14 = *(int *)PTR___stack_chk_guard_000360f4" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000360f4" * (cast_expression "(int *)PTR___stack_chk_guard_000360f4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar1 = 0xffffffff;" (assignment_expression "uVar1 = 0xffffffff" identifier = number_literal) ;) (expression_statement "puVar5 = param_2;" (assignment_expression "puVar5 = param_2" identifier = identifier) ;) (if_statement "if (param_1 == 0) goto LAB_00020580;" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00020580;" goto statement_identifier ;)) (if_statement "if (*(int *)(param_1 + 0x10) == 0x79b1) {\n    uVar1 = 0xffffffff;\n    if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;\n    if (*(int *)(param_1 + 0x58) != 0) {\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }\n    if (*(uint *)(param_1 + 0x1c) != 0) {\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }\n    puVar5 = local_18;\n    local_18[0] = (char)param_2;\n    iVar3 = FUN_000200cc(param_1,puVar5,1);\n    if (iVar3 == 1) {\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x10) == 0x79b1)" ( (binary_expression "*(int *)(param_1 + 0x10) == 0x79b1" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    uVar1 = 0xffffffff;\n    if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;\n    if (*(int *)(param_1 + 0x58) != 0) {\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }\n    if (*(uint *)(param_1 + 0x1c) != 0) {\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }\n    puVar5 = local_18;\n    local_18[0] = (char)param_2;\n    iVar3 = FUN_000200cc(param_1,puVar5,1);\n    if (iVar3 == 1) {\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }\n  }" { (expression_statement "uVar1 = 0xffffffff;" (assignment_expression "uVar1 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;" if (parenthesized_expression "(*(int *)(param_1 + 0x5c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x5c) != 0" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_00020580;" goto statement_identifier ;)) (if_statement "if (*(int *)(param_1 + 0x58) != 0) {\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x58) != 0)" ( (binary_expression "*(int *)(param_1 + 0x58) != 0" (pointer_expression "*(int *)(param_1 + 0x58)" * (cast_expression "(int *)(param_1 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }" { (expression_statement "*(undefined4 *)(param_1 + 0x58) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x58) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x58)" * (cast_expression "(undefined4 *)(param_1 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));" (assignment_expression "iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54))" identifier = (call_expression "FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54))" identifier (argument_list "(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x54)" * (cast_expression "(undefined4 *)(param_1 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar3 == -1) goto LAB_000205d4;" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (goto_statement "goto LAB_000205d4;" goto statement_identifier ;)) })) (if_statement "if (*(uint *)(param_1 + 0x1c) != 0) {\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }" if (parenthesized_expression "(*(uint *)(param_1 + 0x1c) != 0)" ( (binary_expression "*(uint *)(param_1 + 0x1c) != 0" (pointer_expression "*(uint *)(param_1 + 0x1c)" * (cast_expression "(uint *)(param_1 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }" { (expression_statement "iVar3 = *(int *)(param_1 + 0x24);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x24)" identifier = (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x68) == 0)" ( (binary_expression "*(int *)(param_1 + 0x68) == 0" (pointer_expression "*(int *)(param_1 + 0x68)" * (cast_expression "(int *)(param_1 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }" { (expression_statement "*(int *)(param_1 + 100) = iVar3;" (assignment_expression "*(int *)(param_1 + 100) = iVar3" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = iVar3;" (assignment_expression "iVar2 = iVar3" identifier = identifier) ;) }) (else_clause "else {\n        iVar2 = *(int *)(param_1 + 100);\n      }" else (compound_statement "{\n        iVar2 = *(int *)(param_1 + 100);\n      }" { (expression_statement "iVar2 = *(int *)(param_1 + 100);" (assignment_expression "iVar2 = *(int *)(param_1 + 100)" identifier = (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) ))))) ;) }))) (expression_statement "puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));" (assignment_expression "puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68))" identifier = (cast_expression "(undefined1 *)(iVar2 + *(int *)(param_1 + 0x68))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + *(int *)(param_1 + 0x68))" ( (binary_expression "iVar2 + *(int *)(param_1 + 0x68)" identifier + (pointer_expression "*(int *)(param_1 + 0x68)" * (cast_expression "(int *)(param_1 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) ))))) )))) ;) (if_statement "if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }" if (parenthesized_expression "((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c))" ( (binary_expression "(uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)" (call_expression "(uint)((int)puVar5 - iVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar5 - iVar3)" ( (binary_expression "(int)puVar5 - iVar3" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) ))) < (pointer_expression "*(uint *)(param_1 + 0x1c)" * (cast_expression "(uint *)(param_1 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) )) (compound_statement "{\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }" { (expression_statement "*puVar5 = (char)param_2;" (assignment_expression "*puVar5 = (char)param_2" (pointer_expression "*puVar5" * identifier) = (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar1 = (uint)param_2 & 0xff;" (assignment_expression "uVar1 = (uint)param_2 & 0xff" identifier = (binary_expression "(uint)param_2 & 0xff" (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "puVar4 = *(undefined1 **)(param_1 + 0xc);" (assignment_expression "puVar4 = *(undefined1 **)(param_1 + 0xc)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0xc)" * (cast_expression "(undefined1 **)(param_1 + 0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar5 = puVar4 + 1;" (assignment_expression "puVar5 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(param_1 + 0xc) = puVar5;" (assignment_expression "*(undefined1 **)(param_1 + 0xc) = puVar5" (pointer_expression "*(undefined1 **)(param_1 + 0xc)" * (cast_expression "(undefined1 **)(param_1 + 0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;" (assignment_expression "*(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1" (pointer_expression "*(int *)(param_1 + 0x68)" * (cast_expression "(int *)(param_1 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x68) + 1" (pointer_expression "*(int *)(param_1 + 0x68)" * (cast_expression "(int *)(param_1 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);" (assignment_expression "*(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8)" (pointer_expression "*(uint *)(param_1 + 8)" * (cast_expression "(uint *)(param_1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "(uint)(puVar5 < puVar4) + *(int *)(param_1 + 8)" (call_expression "(uint)(puVar5 < puVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar5 < puVar4)" ( (binary_expression "puVar5 < puVar4" identifier < identifier) ))) + (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))))) ;) (goto_statement "goto LAB_00020580;" goto statement_identifier ;) })) })) (expression_statement "puVar5 = local_18;" (assignment_expression "puVar5 = local_18" identifier = identifier) ;) (expression_statement "local_18[0] = (char)param_2;" (assignment_expression "local_18[0] = (char)param_2" (subscript_expression "local_18[0]" identifier [ number_literal ]) = (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = FUN_000200cc(param_1,puVar5,1);" (assignment_expression "iVar3 = FUN_000200cc(param_1,puVar5,1)" identifier = (call_expression "FUN_000200cc(param_1,puVar5,1)" identifier (argument_list "(param_1,puVar5,1)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 1) {\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }" if (parenthesized_expression "(iVar3 == 1)" ( (binary_expression "iVar3 == 1" identifier == number_literal) )) (compound_statement "{\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }" { (expression_statement "uVar1 = (uint)param_2 & 0xff;" (assignment_expression "uVar1 = (uint)param_2 & 0xff" identifier = (binary_expression "(uint)param_2 & 0xff" (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (goto_statement "goto LAB_00020580;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000205d4:\n  uVar1 = 0xffffffff;" statement_identifier : (expression_statement "uVar1 = 0xffffffff;" (assignment_expression "uVar1 = 0xffffffff" identifier = number_literal) ;)) (labeled_statement "LAB_00020580:\n  if (local_14 == *(int *)puVar6) {\n    return uVar1;\n  }" statement_identifier : (if_statement "if (local_14 == *(int *)puVar6) {\n    return uVar1;\n  }" if (parenthesized_expression "(local_14 == *(int *)puVar6)" ( (binary_expression "local_14 == *(int *)puVar6" identifier == (pointer_expression "*(int *)puVar6" * (cast_expression "(int *)puVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar1;\n  }" { (return_statement "return uVar1;" return identifier ;) }))) (expression_statement "iVar3 = local_14;" (assignment_expression "iVar3 = local_14" identifier = identifier) ;) (expression_statement "puVar6 = PTR___stack_chk_fail_000360ec;" (assignment_expression "puVar6 = PTR___stack_chk_fail_000360ec" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000360ec)();" (call_expression "(*(code *)PTR___stack_chk_fail_000360ec)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000360ec)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000360ec" * (cast_expression "(code *)PTR___stack_chk_fail_000360ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0)) {\n    iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);\n    uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);\n    if (uVar1 == 0) {\n      uVar1 = -(uint)(iVar2 != 0);\n    }\n    return uVar1;\n  }" if (parenthesized_expression "(((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0))" ( (binary_expression "((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0)" (parenthesized_expression "((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1))" ( (binary_expression "(iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(int *)(iVar3 + 0x10) == 0x79b1)" ( (binary_expression "*(int *)(iVar3 + 0x10) == 0x79b1" (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(*(int *)(iVar3 + 0x5c) == 0)" ( (binary_expression "*(int *)(iVar3 + 0x5c) == 0" (pointer_expression "*(int *)(iVar3 + 0x5c)" * (cast_expression "(int *)(iVar3 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x5c)" ( (binary_expression "iVar3 + 0x5c" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);\n    uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);\n    if (uVar1 == 0) {\n      uVar1 = -(uint)(iVar2 != 0);\n    }\n    return uVar1;\n  }" { (expression_statement "iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);" (assignment_expression "iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5)" identifier = (call_expression "(**(code **)(puVar6 + 0x15acc))(puVar5)" (parenthesized_expression "(**(code **)(puVar6 + 0x15acc))" ( (pointer_expression "**(code **)(puVar6 + 0x15acc)" * (pointer_expression "*(code **)(puVar6 + 0x15acc)" * (cast_expression "(code **)(puVar6 + 0x15acc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + 0x15acc)" ( (binary_expression "puVar6 + 0x15acc" identifier + number_literal) ))))) )) (argument_list "(puVar5)" ( identifier )))) ;) (expression_statement "uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);" (assignment_expression "uVar1 = FUN_000200cc(iVar3,puVar5,iVar2)" identifier = (call_expression "FUN_000200cc(iVar3,puVar5,iVar2)" identifier (argument_list "(iVar3,puVar5,iVar2)" ( identifier , identifier , identifier )))) ;) (if_statement "if (uVar1 == 0) {\n      uVar1 = -(uint)(iVar2 != 0);\n    }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar1 = -(uint)(iVar2 != 0);\n    }" { (expression_statement "uVar1 = -(uint)(iVar2 != 0);" (assignment_expression "uVar1 = -(uint)(iVar2 != 0)" identifier = (unary_expression "-(uint)(iVar2 != 0)" - (call_expression "(uint)(iVar2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) ))))) ;) })) (return_statement "return uVar1;" return identifier ;) })) (return_statement "return 0xffffffff;" return number_literal ;) })))
(translation_unit "int gzputc(gzFile file,int c)\n\n{\n  undefined *puVar1;\n  gz_statep state;\n  uint uVar2;\n  z_size_t len;\n  z_size_t zVar3;\n  uchar *puVar4;\n  uchar *puVar5;\n  int iVar6;\n  int iVar7;\n  code *pcVar8;\n  undefined1 *puVar9;\n  undefined4 in_stack_ffffffe4;\n  uchar buf [1];\n  \n  puVar1 = PTR___stack_chk_guard_000360f4;\n  puVar9 = &_gp;\n  state = *(gz_statep *)PTR___stack_chk_guard_000360f4;\n  uVar2 = 0xffffffff;\n  puVar4 = (uchar *)c;\n  if (file == (gzFile)0x0) goto LAB_00020580;\n  if (file[1].have == 0x79b1) {\n    uVar2 = 0xffffffff;\n    if ((int)file[5].pos != 0) goto LAB_00020580;\n    puVar9 = &_gp;\n    if (*(int *)&file[5].pos != 0) {\n      *(undefined4 *)&file[5].pos = 0;\n      iVar6 = gz_zero((gz_statep)file,CONCAT44(&_gp,in_stack_ffffffe4));\n      if (iVar6 == -1) goto LAB_000205d4;\n    }\n    uVar2 = (uint)file[1].pos;\n    if (uVar2 != 0) {\n      puVar4 = file[2].next;\n      if (*(int *)&file[6].pos == 0) {\n        file[6].next = puVar4;\n        puVar5 = puVar4;\n      }\n      else {\n        puVar5 = file[6].next;\n      }\n      if ((uint)((int)(puVar5 + *(int *)&file[6].pos) - (int)puVar4) < uVar2) {\n        puVar5[*(int *)&file[6].pos] = (uchar)c;\n        uVar2 = c & 0xff;\n        puVar5 = *(uchar **)((int)&file->pos + 4);\n        iVar6 = *(int *)&file[6].pos;\n        iVar7 = *(int *)&file->pos;\n        puVar4 = puVar5 + 1;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        *(int *)&file[6].pos = iVar6 + 1;\n        *(uint *)&file->pos = (uint)(puVar4 < puVar5) + iVar7;\n        goto LAB_00020580;\n      }\n    }\n    puVar4 = buf;\n    buf[0] = (uchar)c;\n    zVar3 = gz_write((gz_statep)file,puVar4,1);\n    if (zVar3 == 1) {\n      uVar2 = c & 0xff;\n      goto LAB_00020580;\n    }\n  }\nLAB_000205d4:\n  uVar2 = 0xffffffff;\nLAB_00020580:\n  if (state == *(gz_statep *)puVar1) {\n    return uVar2;\n  }\n  pcVar8 = *(code **)(puVar9 + -0x7f04);\n  (*pcVar8)();\n  if (((state != (gz_statep)0x0) && (state->mode == 0x79b1)) && (state->err == 0)) {\n    len = (**(code **)(pcVar8 + 0x15acc))(puVar4);\n    zVar3 = gz_write(state,puVar4,len);\n    if (zVar3 == 0) {\n      zVar3 = -(uint)(len != 0);\n    }\n    return zVar3;\n  }\n  return -1;\n}\n\n" (function_definition "int gzputc(gzFile file,int c)\n\n{\n  undefined *puVar1;\n  gz_statep state;\n  uint uVar2;\n  z_size_t len;\n  z_size_t zVar3;\n  uchar *puVar4;\n  uchar *puVar5;\n  int iVar6;\n  int iVar7;\n  code *pcVar8;\n  undefined1 *puVar9;\n  undefined4 in_stack_ffffffe4;\n  uchar buf [1];\n  \n  puVar1 = PTR___stack_chk_guard_000360f4;\n  puVar9 = &_gp;\n  state = *(gz_statep *)PTR___stack_chk_guard_000360f4;\n  uVar2 = 0xffffffff;\n  puVar4 = (uchar *)c;\n  if (file == (gzFile)0x0) goto LAB_00020580;\n  if (file[1].have == 0x79b1) {\n    uVar2 = 0xffffffff;\n    if ((int)file[5].pos != 0) goto LAB_00020580;\n    puVar9 = &_gp;\n    if (*(int *)&file[5].pos != 0) {\n      *(undefined4 *)&file[5].pos = 0;\n      iVar6 = gz_zero((gz_statep)file,CONCAT44(&_gp,in_stack_ffffffe4));\n      if (iVar6 == -1) goto LAB_000205d4;\n    }\n    uVar2 = (uint)file[1].pos;\n    if (uVar2 != 0) {\n      puVar4 = file[2].next;\n      if (*(int *)&file[6].pos == 0) {\n        file[6].next = puVar4;\n        puVar5 = puVar4;\n      }\n      else {\n        puVar5 = file[6].next;\n      }\n      if ((uint)((int)(puVar5 + *(int *)&file[6].pos) - (int)puVar4) < uVar2) {\n        puVar5[*(int *)&file[6].pos] = (uchar)c;\n        uVar2 = c & 0xff;\n        puVar5 = *(uchar **)((int)&file->pos + 4);\n        iVar6 = *(int *)&file[6].pos;\n        iVar7 = *(int *)&file->pos;\n        puVar4 = puVar5 + 1;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        *(int *)&file[6].pos = iVar6 + 1;\n        *(uint *)&file->pos = (uint)(puVar4 < puVar5) + iVar7;\n        goto LAB_00020580;\n      }\n    }\n    puVar4 = buf;\n    buf[0] = (uchar)c;\n    zVar3 = gz_write((gz_statep)file,puVar4,1);\n    if (zVar3 == 1) {\n      uVar2 = c & 0xff;\n      goto LAB_00020580;\n    }\n  }\nLAB_000205d4:\n  uVar2 = 0xffffffff;\nLAB_00020580:\n  if (state == *(gz_statep *)puVar1) {\n    return uVar2;\n  }\n  pcVar8 = *(code **)(puVar9 + -0x7f04);\n  (*pcVar8)();\n  if (((state != (gz_statep)0x0) && (state->mode == 0x79b1)) && (state->err == 0)) {\n    len = (**(code **)(pcVar8 + 0x15acc))(puVar4);\n    zVar3 = gz_write(state,puVar4,len);\n    if (zVar3 == 0) {\n      zVar3 = -(uint)(len != 0);\n    }\n    return zVar3;\n  }\n  return -1;\n}" primitive_type (function_declarator "gzputc(gzFile file,int c)" identifier (parameter_list "(gzFile file,int c)" ( (parameter_declaration "gzFile file" type_identifier identifier) , (parameter_declaration "int c" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  gz_statep state;\n  uint uVar2;\n  z_size_t len;\n  z_size_t zVar3;\n  uchar *puVar4;\n  uchar *puVar5;\n  int iVar6;\n  int iVar7;\n  code *pcVar8;\n  undefined1 *puVar9;\n  undefined4 in_stack_ffffffe4;\n  uchar buf [1];\n  \n  puVar1 = PTR___stack_chk_guard_000360f4;\n  puVar9 = &_gp;\n  state = *(gz_statep *)PTR___stack_chk_guard_000360f4;\n  uVar2 = 0xffffffff;\n  puVar4 = (uchar *)c;\n  if (file == (gzFile)0x0) goto LAB_00020580;\n  if (file[1].have == 0x79b1) {\n    uVar2 = 0xffffffff;\n    if ((int)file[5].pos != 0) goto LAB_00020580;\n    puVar9 = &_gp;\n    if (*(int *)&file[5].pos != 0) {\n      *(undefined4 *)&file[5].pos = 0;\n      iVar6 = gz_zero((gz_statep)file,CONCAT44(&_gp,in_stack_ffffffe4));\n      if (iVar6 == -1) goto LAB_000205d4;\n    }\n    uVar2 = (uint)file[1].pos;\n    if (uVar2 != 0) {\n      puVar4 = file[2].next;\n      if (*(int *)&file[6].pos == 0) {\n        file[6].next = puVar4;\n        puVar5 = puVar4;\n      }\n      else {\n        puVar5 = file[6].next;\n      }\n      if ((uint)((int)(puVar5 + *(int *)&file[6].pos) - (int)puVar4) < uVar2) {\n        puVar5[*(int *)&file[6].pos] = (uchar)c;\n        uVar2 = c & 0xff;\n        puVar5 = *(uchar **)((int)&file->pos + 4);\n        iVar6 = *(int *)&file[6].pos;\n        iVar7 = *(int *)&file->pos;\n        puVar4 = puVar5 + 1;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        *(int *)&file[6].pos = iVar6 + 1;\n        *(uint *)&file->pos = (uint)(puVar4 < puVar5) + iVar7;\n        goto LAB_00020580;\n      }\n    }\n    puVar4 = buf;\n    buf[0] = (uchar)c;\n    zVar3 = gz_write((gz_statep)file,puVar4,1);\n    if (zVar3 == 1) {\n      uVar2 = c & 0xff;\n      goto LAB_00020580;\n    }\n  }\nLAB_000205d4:\n  uVar2 = 0xffffffff;\nLAB_00020580:\n  if (state == *(gz_statep *)puVar1) {\n    return uVar2;\n  }\n  pcVar8 = *(code **)(puVar9 + -0x7f04);\n  (*pcVar8)();\n  if (((state != (gz_statep)0x0) && (state->mode == 0x79b1)) && (state->err == 0)) {\n    len = (**(code **)(pcVar8 + 0x15acc))(puVar4);\n    zVar3 = gz_write(state,puVar4,len);\n    if (zVar3 == 0) {\n      zVar3 = -(uint)(len != 0);\n    }\n    return zVar3;\n  }\n  return -1;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "gz_statep state;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "z_size_t len;" type_identifier identifier ;) (declaration "z_size_t zVar3;" type_identifier identifier ;) (declaration "uchar *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uchar *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "code *pcVar8;" type_identifier (pointer_declarator "*pcVar8" * identifier) ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 in_stack_ffffffe4;" type_identifier identifier ;) (declaration "uchar buf [1];" type_identifier (array_declarator "buf [1]" identifier [ number_literal ]) ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000360f4;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000360f4" identifier = identifier) ;) (expression_statement "puVar9 = &_gp;" (assignment_expression "puVar9 = &_gp" identifier = (pointer_expression "&_gp" & identifier)) ;) (expression_statement "state = *(gz_statep *)PTR___stack_chk_guard_000360f4;" (assignment_expression "state = *(gz_statep *)PTR___stack_chk_guard_000360f4" identifier = (pointer_expression "*(gz_statep *)PTR___stack_chk_guard_000360f4" * (cast_expression "(gz_statep *)PTR___stack_chk_guard_000360f4" ( (type_descriptor "gz_statep *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar2 = 0xffffffff;" (assignment_expression "uVar2 = 0xffffffff" identifier = number_literal) ;) (expression_statement "puVar4 = (uchar *)c;" (assignment_expression "puVar4 = (uchar *)c" identifier = (cast_expression "(uchar *)c" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (file == (gzFile)0x0) goto LAB_00020580;" if (parenthesized_expression "(file == (gzFile)0x0)" ( (binary_expression "file == (gzFile)0x0" identifier == (cast_expression "(gzFile)0x0" ( (type_descriptor "gzFile" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00020580;" goto statement_identifier ;)) (if_statement "if (file[1].have == 0x79b1) {\n    uVar2 = 0xffffffff;\n    if ((int)file[5].pos != 0) goto LAB_00020580;\n    puVar9 = &_gp;\n    if (*(int *)&file[5].pos != 0) {\n      *(undefined4 *)&file[5].pos = 0;\n      iVar6 = gz_zero((gz_statep)file,CONCAT44(&_gp,in_stack_ffffffe4));\n      if (iVar6 == -1) goto LAB_000205d4;\n    }\n    uVar2 = (uint)file[1].pos;\n    if (uVar2 != 0) {\n      puVar4 = file[2].next;\n      if (*(int *)&file[6].pos == 0) {\n        file[6].next = puVar4;\n        puVar5 = puVar4;\n      }\n      else {\n        puVar5 = file[6].next;\n      }\n      if ((uint)((int)(puVar5 + *(int *)&file[6].pos) - (int)puVar4) < uVar2) {\n        puVar5[*(int *)&file[6].pos] = (uchar)c;\n        uVar2 = c & 0xff;\n        puVar5 = *(uchar **)((int)&file->pos + 4);\n        iVar6 = *(int *)&file[6].pos;\n        iVar7 = *(int *)&file->pos;\n        puVar4 = puVar5 + 1;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        *(int *)&file[6].pos = iVar6 + 1;\n        *(uint *)&file->pos = (uint)(puVar4 < puVar5) + iVar7;\n        goto LAB_00020580;\n      }\n    }\n    puVar4 = buf;\n    buf[0] = (uchar)c;\n    zVar3 = gz_write((gz_statep)file,puVar4,1);\n    if (zVar3 == 1) {\n      uVar2 = c & 0xff;\n      goto LAB_00020580;\n    }\n  }" if (parenthesized_expression "(file[1].have == 0x79b1)" ( (binary_expression "file[1].have == 0x79b1" (field_expression "file[1].have" (subscript_expression "file[1]" identifier [ number_literal ]) . field_identifier) == number_literal) )) (compound_statement "{\n    uVar2 = 0xffffffff;\n    if ((int)file[5].pos != 0) goto LAB_00020580;\n    puVar9 = &_gp;\n    if (*(int *)&file[5].pos != 0) {\n      *(undefined4 *)&file[5].pos = 0;\n      iVar6 = gz_zero((gz_statep)file,CONCAT44(&_gp,in_stack_ffffffe4));\n      if (iVar6 == -1) goto LAB_000205d4;\n    }\n    uVar2 = (uint)file[1].pos;\n    if (uVar2 != 0) {\n      puVar4 = file[2].next;\n      if (*(int *)&file[6].pos == 0) {\n        file[6].next = puVar4;\n        puVar5 = puVar4;\n      }\n      else {\n        puVar5 = file[6].next;\n      }\n      if ((uint)((int)(puVar5 + *(int *)&file[6].pos) - (int)puVar4) < uVar2) {\n        puVar5[*(int *)&file[6].pos] = (uchar)c;\n        uVar2 = c & 0xff;\n        puVar5 = *(uchar **)((int)&file->pos + 4);\n        iVar6 = *(int *)&file[6].pos;\n        iVar7 = *(int *)&file->pos;\n        puVar4 = puVar5 + 1;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        *(int *)&file[6].pos = iVar6 + 1;\n        *(uint *)&file->pos = (uint)(puVar4 < puVar5) + iVar7;\n        goto LAB_00020580;\n      }\n    }\n    puVar4 = buf;\n    buf[0] = (uchar)c;\n    zVar3 = gz_write((gz_statep)file,puVar4,1);\n    if (zVar3 == 1) {\n      uVar2 = c & 0xff;\n      goto LAB_00020580;\n    }\n  }" { (expression_statement "uVar2 = 0xffffffff;" (assignment_expression "uVar2 = 0xffffffff" identifier = number_literal) ;) (if_statement "if ((int)file[5].pos != 0) goto LAB_00020580;" if (parenthesized_expression "((int)file[5].pos != 0)" ( (binary_expression "(int)file[5].pos != 0" (cast_expression "(int)file[5].pos" ( (type_descriptor "int" primitive_type) ) (field_expression "file[5].pos" (subscript_expression "file[5]" identifier [ number_literal ]) . field_identifier)) != number_literal) )) (goto_statement "goto LAB_00020580;" goto statement_identifier ;)) (expression_statement "puVar9 = &_gp;" (assignment_expression "puVar9 = &_gp" identifier = (pointer_expression "&_gp" & identifier)) ;) (if_statement "if (*(int *)&file[5].pos != 0) {\n      *(undefined4 *)&file[5].pos = 0;\n      iVar6 = gz_zero((gz_statep)file,CONCAT44(&_gp,in_stack_ffffffe4));\n      if (iVar6 == -1) goto LAB_000205d4;\n    }" if (parenthesized_expression "(*(int *)&file[5].pos != 0)" ( (binary_expression "*(int *)&file[5].pos != 0" (pointer_expression "*(int *)&file[5].pos" * (cast_expression "(int *)&file[5].pos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file[5].pos" & (field_expression "file[5].pos" (subscript_expression "file[5]" identifier [ number_literal ]) . field_identifier)))) != number_literal) )) (compound_statement "{\n      *(undefined4 *)&file[5].pos = 0;\n      iVar6 = gz_zero((gz_statep)file,CONCAT44(&_gp,in_stack_ffffffe4));\n      if (iVar6 == -1) goto LAB_000205d4;\n    }" { (expression_statement "*(undefined4 *)&file[5].pos = 0;" (assignment_expression "*(undefined4 *)&file[5].pos = 0" (pointer_expression "*(undefined4 *)&file[5].pos" * (cast_expression "(undefined4 *)&file[5].pos" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file[5].pos" & (field_expression "file[5].pos" (subscript_expression "file[5]" identifier [ number_literal ]) . field_identifier)))) = number_literal) ;) (expression_statement "iVar6 = gz_zero((gz_statep)file,CONCAT44(&_gp,in_stack_ffffffe4));" (assignment_expression "iVar6 = gz_zero((gz_statep)file,CONCAT44(&_gp,in_stack_ffffffe4))" identifier = (call_expression "gz_zero((gz_statep)file,CONCAT44(&_gp,in_stack_ffffffe4))" identifier (argument_list "((gz_statep)file,CONCAT44(&_gp,in_stack_ffffffe4))" ( (cast_expression "(gz_statep)file" ( (type_descriptor "gz_statep" type_identifier) ) identifier) , (call_expression "CONCAT44(&_gp,in_stack_ffffffe4)" identifier (argument_list "(&_gp,in_stack_ffffffe4)" ( (pointer_expression "&_gp" & identifier) , identifier ))) )))) ;) (if_statement "if (iVar6 == -1) goto LAB_000205d4;" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (goto_statement "goto LAB_000205d4;" goto statement_identifier ;)) })) (expression_statement "uVar2 = (uint)file[1].pos;" (assignment_expression "uVar2 = (uint)file[1].pos" identifier = (cast_expression "(uint)file[1].pos" ( (type_descriptor "uint" type_identifier) ) (field_expression "file[1].pos" (subscript_expression "file[1]" identifier [ number_literal ]) . field_identifier))) ;) (if_statement "if (uVar2 != 0) {\n      puVar4 = file[2].next;\n      if (*(int *)&file[6].pos == 0) {\n        file[6].next = puVar4;\n        puVar5 = puVar4;\n      }\n      else {\n        puVar5 = file[6].next;\n      }\n      if ((uint)((int)(puVar5 + *(int *)&file[6].pos) - (int)puVar4) < uVar2) {\n        puVar5[*(int *)&file[6].pos] = (uchar)c;\n        uVar2 = c & 0xff;\n        puVar5 = *(uchar **)((int)&file->pos + 4);\n        iVar6 = *(int *)&file[6].pos;\n        iVar7 = *(int *)&file->pos;\n        puVar4 = puVar5 + 1;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        *(int *)&file[6].pos = iVar6 + 1;\n        *(uint *)&file->pos = (uint)(puVar4 < puVar5) + iVar7;\n        goto LAB_00020580;\n      }\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar4 = file[2].next;\n      if (*(int *)&file[6].pos == 0) {\n        file[6].next = puVar4;\n        puVar5 = puVar4;\n      }\n      else {\n        puVar5 = file[6].next;\n      }\n      if ((uint)((int)(puVar5 + *(int *)&file[6].pos) - (int)puVar4) < uVar2) {\n        puVar5[*(int *)&file[6].pos] = (uchar)c;\n        uVar2 = c & 0xff;\n        puVar5 = *(uchar **)((int)&file->pos + 4);\n        iVar6 = *(int *)&file[6].pos;\n        iVar7 = *(int *)&file->pos;\n        puVar4 = puVar5 + 1;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        *(int *)&file[6].pos = iVar6 + 1;\n        *(uint *)&file->pos = (uint)(puVar4 < puVar5) + iVar7;\n        goto LAB_00020580;\n      }\n    }" { (expression_statement "puVar4 = file[2].next;" (assignment_expression "puVar4 = file[2].next" identifier = (field_expression "file[2].next" (subscript_expression "file[2]" identifier [ number_literal ]) . field_identifier)) ;) (if_statement "if (*(int *)&file[6].pos == 0) {\n        file[6].next = puVar4;\n        puVar5 = puVar4;\n      }\n      else {\n        puVar5 = file[6].next;\n      }" if (parenthesized_expression "(*(int *)&file[6].pos == 0)" ( (binary_expression "*(int *)&file[6].pos == 0" (pointer_expression "*(int *)&file[6].pos" * (cast_expression "(int *)&file[6].pos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file[6].pos" & (field_expression "file[6].pos" (subscript_expression "file[6]" identifier [ number_literal ]) . field_identifier)))) == number_literal) )) (compound_statement "{\n        file[6].next = puVar4;\n        puVar5 = puVar4;\n      }" { (expression_statement "file[6].next = puVar4;" (assignment_expression "file[6].next = puVar4" (field_expression "file[6].next" (subscript_expression "file[6]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) }) (else_clause "else {\n        puVar5 = file[6].next;\n      }" else (compound_statement "{\n        puVar5 = file[6].next;\n      }" { (expression_statement "puVar5 = file[6].next;" (assignment_expression "puVar5 = file[6].next" identifier = (field_expression "file[6].next" (subscript_expression "file[6]" identifier [ number_literal ]) . field_identifier)) ;) }))) (if_statement "if ((uint)((int)(puVar5 + *(int *)&file[6].pos) - (int)puVar4) < uVar2) {\n        puVar5[*(int *)&file[6].pos] = (uchar)c;\n        uVar2 = c & 0xff;\n        puVar5 = *(uchar **)((int)&file->pos + 4);\n        iVar6 = *(int *)&file[6].pos;\n        iVar7 = *(int *)&file->pos;\n        puVar4 = puVar5 + 1;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        *(int *)&file[6].pos = iVar6 + 1;\n        *(uint *)&file->pos = (uint)(puVar4 < puVar5) + iVar7;\n        goto LAB_00020580;\n      }" if (parenthesized_expression "((uint)((int)(puVar5 + *(int *)&file[6].pos) - (int)puVar4) < uVar2)" ( (binary_expression "(uint)((int)(puVar5 + *(int *)&file[6].pos) - (int)puVar4) < uVar2" (call_expression "(uint)((int)(puVar5 + *(int *)&file[6].pos) - (int)puVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)(puVar5 + *(int *)&file[6].pos) - (int)puVar4)" ( (binary_expression "(int)(puVar5 + *(int *)&file[6].pos) - (int)puVar4" (cast_expression "(int)(puVar5 + *(int *)&file[6].pos)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar5 + *(int *)&file[6].pos)" ( (binary_expression "puVar5 + *(int *)&file[6].pos" identifier + (pointer_expression "*(int *)&file[6].pos" * (cast_expression "(int *)&file[6].pos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file[6].pos" & (field_expression "file[6].pos" (subscript_expression "file[6]" identifier [ number_literal ]) . field_identifier))))) ))) - (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) < identifier) )) (compound_statement "{\n        puVar5[*(int *)&file[6].pos] = (uchar)c;\n        uVar2 = c & 0xff;\n        puVar5 = *(uchar **)((int)&file->pos + 4);\n        iVar6 = *(int *)&file[6].pos;\n        iVar7 = *(int *)&file->pos;\n        puVar4 = puVar5 + 1;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        *(int *)&file[6].pos = iVar6 + 1;\n        *(uint *)&file->pos = (uint)(puVar4 < puVar5) + iVar7;\n        goto LAB_00020580;\n      }" { (expression_statement "puVar5[*(int *)&file[6].pos] = (uchar)c;" (assignment_expression "puVar5[*(int *)&file[6].pos] = (uchar)c" (subscript_expression "puVar5[*(int *)&file[6].pos]" identifier [ (pointer_expression "*(int *)&file[6].pos" * (cast_expression "(int *)&file[6].pos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file[6].pos" & (field_expression "file[6].pos" (subscript_expression "file[6]" identifier [ number_literal ]) . field_identifier)))) ]) = (cast_expression "(uchar)c" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar2 = c & 0xff;" (assignment_expression "uVar2 = c & 0xff" identifier = (binary_expression "c & 0xff" identifier & number_literal)) ;) (expression_statement "puVar5 = *(uchar **)((int)&file->pos + 4);" (assignment_expression "puVar5 = *(uchar **)((int)&file->pos + 4)" identifier = (pointer_expression "*(uchar **)((int)&file->pos + 4)" * (cast_expression "(uchar **)((int)&file->pos + 4)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&file->pos + 4)" ( (binary_expression "(int)&file->pos + 4" (cast_expression "(int)&file->pos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&file->pos" & (field_expression "file->pos" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)&file[6].pos;" (assignment_expression "iVar6 = *(int *)&file[6].pos" identifier = (pointer_expression "*(int *)&file[6].pos" * (cast_expression "(int *)&file[6].pos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file[6].pos" & (field_expression "file[6].pos" (subscript_expression "file[6]" identifier [ number_literal ]) . field_identifier))))) ;) (expression_statement "iVar7 = *(int *)&file->pos;" (assignment_expression "iVar7 = *(int *)&file->pos" identifier = (pointer_expression "*(int *)&file->pos" * (cast_expression "(int *)&file->pos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file->pos" & (field_expression "file->pos" identifier -> field_identifier))))) ;) (expression_statement "puVar4 = puVar5 + 1;" (assignment_expression "puVar4 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "*(uchar **)((int)&file->pos + 4) = puVar4;" (assignment_expression "*(uchar **)((int)&file->pos + 4) = puVar4" (pointer_expression "*(uchar **)((int)&file->pos + 4)" * (cast_expression "(uchar **)((int)&file->pos + 4)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&file->pos + 4)" ( (binary_expression "(int)&file->pos + 4" (cast_expression "(int)&file->pos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&file->pos" & (field_expression "file->pos" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)&file[6].pos = iVar6 + 1;" (assignment_expression "*(int *)&file[6].pos = iVar6 + 1" (pointer_expression "*(int *)&file[6].pos" * (cast_expression "(int *)&file[6].pos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file[6].pos" & (field_expression "file[6].pos" (subscript_expression "file[6]" identifier [ number_literal ]) . field_identifier)))) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "*(uint *)&file->pos = (uint)(puVar4 < puVar5) + iVar7;" (assignment_expression "*(uint *)&file->pos = (uint)(puVar4 < puVar5) + iVar7" (pointer_expression "*(uint *)&file->pos" * (cast_expression "(uint *)&file->pos" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file->pos" & (field_expression "file->pos" identifier -> field_identifier)))) = (binary_expression "(uint)(puVar4 < puVar5) + iVar7" (call_expression "(uint)(puVar4 < puVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar4 < puVar5)" ( (binary_expression "puVar4 < puVar5" identifier < identifier) ))) + identifier)) ;) (goto_statement "goto LAB_00020580;" goto statement_identifier ;) })) })) (expression_statement "puVar4 = buf;" (assignment_expression "puVar4 = buf" identifier = identifier) ;) (expression_statement "buf[0] = (uchar)c;" (assignment_expression "buf[0] = (uchar)c" (subscript_expression "buf[0]" identifier [ number_literal ]) = (cast_expression "(uchar)c" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "zVar3 = gz_write((gz_statep)file,puVar4,1);" (assignment_expression "zVar3 = gz_write((gz_statep)file,puVar4,1)" identifier = (call_expression "gz_write((gz_statep)file,puVar4,1)" identifier (argument_list "((gz_statep)file,puVar4,1)" ( (cast_expression "(gz_statep)file" ( (type_descriptor "gz_statep" type_identifier) ) identifier) , identifier , number_literal )))) ;) (if_statement "if (zVar3 == 1) {\n      uVar2 = c & 0xff;\n      goto LAB_00020580;\n    }" if (parenthesized_expression "(zVar3 == 1)" ( (binary_expression "zVar3 == 1" identifier == number_literal) )) (compound_statement "{\n      uVar2 = c & 0xff;\n      goto LAB_00020580;\n    }" { (expression_statement "uVar2 = c & 0xff;" (assignment_expression "uVar2 = c & 0xff" identifier = (binary_expression "c & 0xff" identifier & number_literal)) ;) (goto_statement "goto LAB_00020580;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000205d4:\n  uVar2 = 0xffffffff;" statement_identifier : (expression_statement "uVar2 = 0xffffffff;" (assignment_expression "uVar2 = 0xffffffff" identifier = number_literal) ;)) (labeled_statement "LAB_00020580:\n  if (state == *(gz_statep *)puVar1) {\n    return uVar2;\n  }" statement_identifier : (if_statement "if (state == *(gz_statep *)puVar1) {\n    return uVar2;\n  }" if (parenthesized_expression "(state == *(gz_statep *)puVar1)" ( (binary_expression "state == *(gz_statep *)puVar1" identifier == (pointer_expression "*(gz_statep *)puVar1" * (cast_expression "(gz_statep *)puVar1" ( (type_descriptor "gz_statep *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) }))) (expression_statement "pcVar8 = *(code **)(puVar9 + -0x7f04);" (assignment_expression "pcVar8 = *(code **)(puVar9 + -0x7f04)" identifier = (pointer_expression "*(code **)(puVar9 + -0x7f04)" * (cast_expression "(code **)(puVar9 + -0x7f04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7f04)" ( (binary_expression "puVar9 + -0x7f04" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar8)();" (call_expression "(*pcVar8)()" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if (((state != (gz_statep)0x0) && (state->mode == 0x79b1)) && (state->err == 0)) {\n    len = (**(code **)(pcVar8 + 0x15acc))(puVar4);\n    zVar3 = gz_write(state,puVar4,len);\n    if (zVar3 == 0) {\n      zVar3 = -(uint)(len != 0);\n    }\n    return zVar3;\n  }" if (parenthesized_expression "(((state != (gz_statep)0x0) && (state->mode == 0x79b1)) && (state->err == 0))" ( (binary_expression "((state != (gz_statep)0x0) && (state->mode == 0x79b1)) && (state->err == 0)" (parenthesized_expression "((state != (gz_statep)0x0) && (state->mode == 0x79b1))" ( (binary_expression "(state != (gz_statep)0x0) && (state->mode == 0x79b1)" (parenthesized_expression "(state != (gz_statep)0x0)" ( (binary_expression "state != (gz_statep)0x0" identifier != (cast_expression "(gz_statep)0x0" ( (type_descriptor "gz_statep" type_identifier) ) number_literal)) )) && (parenthesized_expression "(state->mode == 0x79b1)" ( (binary_expression "state->mode == 0x79b1" (field_expression "state->mode" identifier -> field_identifier) == number_literal) ))) )) && (parenthesized_expression "(state->err == 0)" ( (binary_expression "state->err == 0" (field_expression "state->err" identifier -> field_identifier) == number_literal) ))) )) (compound_statement "{\n    len = (**(code **)(pcVar8 + 0x15acc))(puVar4);\n    zVar3 = gz_write(state,puVar4,len);\n    if (zVar3 == 0) {\n      zVar3 = -(uint)(len != 0);\n    }\n    return zVar3;\n  }" { (expression_statement "len = (**(code **)(pcVar8 + 0x15acc))(puVar4);" (assignment_expression "len = (**(code **)(pcVar8 + 0x15acc))(puVar4)" identifier = (call_expression "(**(code **)(pcVar8 + 0x15acc))(puVar4)" (parenthesized_expression "(**(code **)(pcVar8 + 0x15acc))" ( (pointer_expression "**(code **)(pcVar8 + 0x15acc)" * (pointer_expression "*(code **)(pcVar8 + 0x15acc)" * (cast_expression "(code **)(pcVar8 + 0x15acc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar8 + 0x15acc)" ( (binary_expression "pcVar8 + 0x15acc" identifier + number_literal) ))))) )) (argument_list "(puVar4)" ( identifier )))) ;) (expression_statement "zVar3 = gz_write(state,puVar4,len);" (assignment_expression "zVar3 = gz_write(state,puVar4,len)" identifier = (call_expression "gz_write(state,puVar4,len)" identifier (argument_list "(state,puVar4,len)" ( identifier , identifier , identifier )))) ;) (if_statement "if (zVar3 == 0) {\n      zVar3 = -(uint)(len != 0);\n    }" if (parenthesized_expression "(zVar3 == 0)" ( (binary_expression "zVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      zVar3 = -(uint)(len != 0);\n    }" { (expression_statement "zVar3 = -(uint)(len != 0);" (assignment_expression "zVar3 = -(uint)(len != 0)" identifier = (unary_expression "-(uint)(len != 0)" - (call_expression "(uint)(len != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(len != 0)" ( (binary_expression "len != 0" identifier != number_literal) ))))) ;) })) (return_statement "return zVar3;" return identifier ;) })) (return_statement "return -1;" return number_literal ;) })))
(translation_unit "uint gzputc(int param_1,undefined1 *param_2)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined *puVar6;\n  undefined1 local_18 [4];\n  int local_14;\n  \n  puVar6 = PTR___stack_chk_guard_000360f4;\n  local_14 = *(int *)PTR___stack_chk_guard_000360f4;\n  uVar1 = 0xffffffff;\n  puVar5 = param_2;\n  if (param_1 == 0) goto LAB_00020580;\n  if (*(int *)(param_1 + 0x10) == 0x79b1) {\n    uVar1 = 0xffffffff;\n    if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;\n    if (*(int *)(param_1 + 0x58) != 0) {\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }\n    if (*(uint *)(param_1 + 0x1c) != 0) {\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }\n    puVar5 = local_18;\n    local_18[0] = (char)param_2;\n    iVar3 = FUN_000200cc(param_1,puVar5,1);\n    if (iVar3 == 1) {\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }\n  }\nLAB_000205d4:\n  uVar1 = 0xffffffff;\nLAB_00020580:\n  if (local_14 == *(int *)puVar6) {\n    return uVar1;\n  }\n  iVar3 = local_14;\n  puVar6 = PTR___stack_chk_fail_000360ec;\n  (*(code *)PTR___stack_chk_fail_000360ec)();\n  if (((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0)) {\n    iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);\n    uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);\n    if (uVar1 == 0) {\n      uVar1 = -(uint)(iVar2 != 0);\n    }\n    return uVar1;\n  }\n  return 0xffffffff;\n}\n\n" (function_definition "uint gzputc(int param_1,undefined1 *param_2)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined *puVar6;\n  undefined1 local_18 [4];\n  int local_14;\n  \n  puVar6 = PTR___stack_chk_guard_000360f4;\n  local_14 = *(int *)PTR___stack_chk_guard_000360f4;\n  uVar1 = 0xffffffff;\n  puVar5 = param_2;\n  if (param_1 == 0) goto LAB_00020580;\n  if (*(int *)(param_1 + 0x10) == 0x79b1) {\n    uVar1 = 0xffffffff;\n    if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;\n    if (*(int *)(param_1 + 0x58) != 0) {\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }\n    if (*(uint *)(param_1 + 0x1c) != 0) {\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }\n    puVar5 = local_18;\n    local_18[0] = (char)param_2;\n    iVar3 = FUN_000200cc(param_1,puVar5,1);\n    if (iVar3 == 1) {\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }\n  }\nLAB_000205d4:\n  uVar1 = 0xffffffff;\nLAB_00020580:\n  if (local_14 == *(int *)puVar6) {\n    return uVar1;\n  }\n  iVar3 = local_14;\n  puVar6 = PTR___stack_chk_fail_000360ec;\n  (*(code *)PTR___stack_chk_fail_000360ec)();\n  if (((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0)) {\n    iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);\n    uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);\n    if (uVar1 == 0) {\n      uVar1 = -(uint)(iVar2 != 0);\n    }\n    return uVar1;\n  }\n  return 0xffffffff;\n}" type_identifier (function_declarator "gzputc(int param_1,undefined1 *param_2)" identifier (parameter_list "(int param_1,undefined1 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined1 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined *puVar6;\n  undefined1 local_18 [4];\n  int local_14;\n  \n  puVar6 = PTR___stack_chk_guard_000360f4;\n  local_14 = *(int *)PTR___stack_chk_guard_000360f4;\n  uVar1 = 0xffffffff;\n  puVar5 = param_2;\n  if (param_1 == 0) goto LAB_00020580;\n  if (*(int *)(param_1 + 0x10) == 0x79b1) {\n    uVar1 = 0xffffffff;\n    if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;\n    if (*(int *)(param_1 + 0x58) != 0) {\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }\n    if (*(uint *)(param_1 + 0x1c) != 0) {\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }\n    puVar5 = local_18;\n    local_18[0] = (char)param_2;\n    iVar3 = FUN_000200cc(param_1,puVar5,1);\n    if (iVar3 == 1) {\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }\n  }\nLAB_000205d4:\n  uVar1 = 0xffffffff;\nLAB_00020580:\n  if (local_14 == *(int *)puVar6) {\n    return uVar1;\n  }\n  iVar3 = local_14;\n  puVar6 = PTR___stack_chk_fail_000360ec;\n  (*(code *)PTR___stack_chk_fail_000360ec)();\n  if (((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0)) {\n    iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);\n    uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);\n    if (uVar1 == 0) {\n      uVar1 = -(uint)(iVar2 != 0);\n    }\n    return uVar1;\n  }\n  return 0xffffffff;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined1 local_18 [4];" type_identifier (array_declarator "local_18 [4]" identifier [ number_literal ]) ;) (declaration "int local_14;" primitive_type identifier ;) (expression_statement "puVar6 = PTR___stack_chk_guard_000360f4;" (assignment_expression "puVar6 = PTR___stack_chk_guard_000360f4" identifier = identifier) ;) (expression_statement "local_14 = *(int *)PTR___stack_chk_guard_000360f4;" (assignment_expression "local_14 = *(int *)PTR___stack_chk_guard_000360f4" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000360f4" * (cast_expression "(int *)PTR___stack_chk_guard_000360f4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar1 = 0xffffffff;" (assignment_expression "uVar1 = 0xffffffff" identifier = number_literal) ;) (expression_statement "puVar5 = param_2;" (assignment_expression "puVar5 = param_2" identifier = identifier) ;) (if_statement "if (param_1 == 0) goto LAB_00020580;" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00020580;" goto statement_identifier ;)) (if_statement "if (*(int *)(param_1 + 0x10) == 0x79b1) {\n    uVar1 = 0xffffffff;\n    if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;\n    if (*(int *)(param_1 + 0x58) != 0) {\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }\n    if (*(uint *)(param_1 + 0x1c) != 0) {\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }\n    puVar5 = local_18;\n    local_18[0] = (char)param_2;\n    iVar3 = FUN_000200cc(param_1,puVar5,1);\n    if (iVar3 == 1) {\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x10) == 0x79b1)" ( (binary_expression "*(int *)(param_1 + 0x10) == 0x79b1" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    uVar1 = 0xffffffff;\n    if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;\n    if (*(int *)(param_1 + 0x58) != 0) {\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }\n    if (*(uint *)(param_1 + 0x1c) != 0) {\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }\n    puVar5 = local_18;\n    local_18[0] = (char)param_2;\n    iVar3 = FUN_000200cc(param_1,puVar5,1);\n    if (iVar3 == 1) {\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }\n  }" { (expression_statement "uVar1 = 0xffffffff;" (assignment_expression "uVar1 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;" if (parenthesized_expression "(*(int *)(param_1 + 0x5c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x5c) != 0" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_00020580;" goto statement_identifier ;)) (if_statement "if (*(int *)(param_1 + 0x58) != 0) {\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x58) != 0)" ( (binary_expression "*(int *)(param_1 + 0x58) != 0" (pointer_expression "*(int *)(param_1 + 0x58)" * (cast_expression "(int *)(param_1 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }" { (expression_statement "*(undefined4 *)(param_1 + 0x58) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x58) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x58)" * (cast_expression "(undefined4 *)(param_1 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));" (assignment_expression "iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54))" identifier = (call_expression "FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54))" identifier (argument_list "(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x54)" * (cast_expression "(undefined4 *)(param_1 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar3 == -1) goto LAB_000205d4;" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (goto_statement "goto LAB_000205d4;" goto statement_identifier ;)) })) (if_statement "if (*(uint *)(param_1 + 0x1c) != 0) {\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }" if (parenthesized_expression "(*(uint *)(param_1 + 0x1c) != 0)" ( (binary_expression "*(uint *)(param_1 + 0x1c) != 0" (pointer_expression "*(uint *)(param_1 + 0x1c)" * (cast_expression "(uint *)(param_1 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }" { (expression_statement "iVar3 = *(int *)(param_1 + 0x24);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x24)" identifier = (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x68) == 0)" ( (binary_expression "*(int *)(param_1 + 0x68) == 0" (pointer_expression "*(int *)(param_1 + 0x68)" * (cast_expression "(int *)(param_1 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }" { (expression_statement "*(int *)(param_1 + 100) = iVar3;" (assignment_expression "*(int *)(param_1 + 100) = iVar3" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = iVar3;" (assignment_expression "iVar2 = iVar3" identifier = identifier) ;) }) (else_clause "else {\n        iVar2 = *(int *)(param_1 + 100);\n      }" else (compound_statement "{\n        iVar2 = *(int *)(param_1 + 100);\n      }" { (expression_statement "iVar2 = *(int *)(param_1 + 100);" (assignment_expression "iVar2 = *(int *)(param_1 + 100)" identifier = (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) ))))) ;) }))) (expression_statement "puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));" (assignment_expression "puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68))" identifier = (cast_expression "(undefined1 *)(iVar2 + *(int *)(param_1 + 0x68))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + *(int *)(param_1 + 0x68))" ( (binary_expression "iVar2 + *(int *)(param_1 + 0x68)" identifier + (pointer_expression "*(int *)(param_1 + 0x68)" * (cast_expression "(int *)(param_1 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) ))))) )))) ;) (if_statement "if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }" if (parenthesized_expression "((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c))" ( (binary_expression "(uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)" (call_expression "(uint)((int)puVar5 - iVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar5 - iVar3)" ( (binary_expression "(int)puVar5 - iVar3" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) ))) < (pointer_expression "*(uint *)(param_1 + 0x1c)" * (cast_expression "(uint *)(param_1 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) )) (compound_statement "{\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }" { (expression_statement "*puVar5 = (char)param_2;" (assignment_expression "*puVar5 = (char)param_2" (pointer_expression "*puVar5" * identifier) = (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar1 = (uint)param_2 & 0xff;" (assignment_expression "uVar1 = (uint)param_2 & 0xff" identifier = (binary_expression "(uint)param_2 & 0xff" (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "puVar4 = *(undefined1 **)(param_1 + 0xc);" (assignment_expression "puVar4 = *(undefined1 **)(param_1 + 0xc)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0xc)" * (cast_expression "(undefined1 **)(param_1 + 0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar5 = puVar4 + 1;" (assignment_expression "puVar5 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(param_1 + 0xc) = puVar5;" (assignment_expression "*(undefined1 **)(param_1 + 0xc) = puVar5" (pointer_expression "*(undefined1 **)(param_1 + 0xc)" * (cast_expression "(undefined1 **)(param_1 + 0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;" (assignment_expression "*(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1" (pointer_expression "*(int *)(param_1 + 0x68)" * (cast_expression "(int *)(param_1 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x68) + 1" (pointer_expression "*(int *)(param_1 + 0x68)" * (cast_expression "(int *)(param_1 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);" (assignment_expression "*(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8)" (pointer_expression "*(uint *)(param_1 + 8)" * (cast_expression "(uint *)(param_1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "(uint)(puVar5 < puVar4) + *(int *)(param_1 + 8)" (call_expression "(uint)(puVar5 < puVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar5 < puVar4)" ( (binary_expression "puVar5 < puVar4" identifier < identifier) ))) + (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))))) ;) (goto_statement "goto LAB_00020580;" goto statement_identifier ;) })) })) (expression_statement "puVar5 = local_18;" (assignment_expression "puVar5 = local_18" identifier = identifier) ;) (expression_statement "local_18[0] = (char)param_2;" (assignment_expression "local_18[0] = (char)param_2" (subscript_expression "local_18[0]" identifier [ number_literal ]) = (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = FUN_000200cc(param_1,puVar5,1);" (assignment_expression "iVar3 = FUN_000200cc(param_1,puVar5,1)" identifier = (call_expression "FUN_000200cc(param_1,puVar5,1)" identifier (argument_list "(param_1,puVar5,1)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 1) {\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }" if (parenthesized_expression "(iVar3 == 1)" ( (binary_expression "iVar3 == 1" identifier == number_literal) )) (compound_statement "{\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }" { (expression_statement "uVar1 = (uint)param_2 & 0xff;" (assignment_expression "uVar1 = (uint)param_2 & 0xff" identifier = (binary_expression "(uint)param_2 & 0xff" (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (goto_statement "goto LAB_00020580;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000205d4:\n  uVar1 = 0xffffffff;" statement_identifier : (expression_statement "uVar1 = 0xffffffff;" (assignment_expression "uVar1 = 0xffffffff" identifier = number_literal) ;)) (labeled_statement "LAB_00020580:\n  if (local_14 == *(int *)puVar6) {\n    return uVar1;\n  }" statement_identifier : (if_statement "if (local_14 == *(int *)puVar6) {\n    return uVar1;\n  }" if (parenthesized_expression "(local_14 == *(int *)puVar6)" ( (binary_expression "local_14 == *(int *)puVar6" identifier == (pointer_expression "*(int *)puVar6" * (cast_expression "(int *)puVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar1;\n  }" { (return_statement "return uVar1;" return identifier ;) }))) (expression_statement "iVar3 = local_14;" (assignment_expression "iVar3 = local_14" identifier = identifier) ;) (expression_statement "puVar6 = PTR___stack_chk_fail_000360ec;" (assignment_expression "puVar6 = PTR___stack_chk_fail_000360ec" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000360ec)();" (call_expression "(*(code *)PTR___stack_chk_fail_000360ec)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000360ec)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000360ec" * (cast_expression "(code *)PTR___stack_chk_fail_000360ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0)) {\n    iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);\n    uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);\n    if (uVar1 == 0) {\n      uVar1 = -(uint)(iVar2 != 0);\n    }\n    return uVar1;\n  }" if (parenthesized_expression "(((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0))" ( (binary_expression "((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0)" (parenthesized_expression "((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1))" ( (binary_expression "(iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(int *)(iVar3 + 0x10) == 0x79b1)" ( (binary_expression "*(int *)(iVar3 + 0x10) == 0x79b1" (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(*(int *)(iVar3 + 0x5c) == 0)" ( (binary_expression "*(int *)(iVar3 + 0x5c) == 0" (pointer_expression "*(int *)(iVar3 + 0x5c)" * (cast_expression "(int *)(iVar3 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x5c)" ( (binary_expression "iVar3 + 0x5c" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);\n    uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);\n    if (uVar1 == 0) {\n      uVar1 = -(uint)(iVar2 != 0);\n    }\n    return uVar1;\n  }" { (expression_statement "iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);" (assignment_expression "iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5)" identifier = (call_expression "(**(code **)(puVar6 + 0x15acc))(puVar5)" (parenthesized_expression "(**(code **)(puVar6 + 0x15acc))" ( (pointer_expression "**(code **)(puVar6 + 0x15acc)" * (pointer_expression "*(code **)(puVar6 + 0x15acc)" * (cast_expression "(code **)(puVar6 + 0x15acc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + 0x15acc)" ( (binary_expression "puVar6 + 0x15acc" identifier + number_literal) ))))) )) (argument_list "(puVar5)" ( identifier )))) ;) (expression_statement "uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);" (assignment_expression "uVar1 = FUN_000200cc(iVar3,puVar5,iVar2)" identifier = (call_expression "FUN_000200cc(iVar3,puVar5,iVar2)" identifier (argument_list "(iVar3,puVar5,iVar2)" ( identifier , identifier , identifier )))) ;) (if_statement "if (uVar1 == 0) {\n      uVar1 = -(uint)(iVar2 != 0);\n    }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar1 = -(uint)(iVar2 != 0);\n    }" { (expression_statement "uVar1 = -(uint)(iVar2 != 0);" (assignment_expression "uVar1 = -(uint)(iVar2 != 0)" identifier = (unary_expression "-(uint)(iVar2 != 0)" - (call_expression "(uint)(iVar2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) ))))) ;) })) (return_statement "return uVar1;" return identifier ;) })) (return_statement "return 0xffffffff;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_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) )))) != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (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) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (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) )))) == LIT) )) (compound_statement { (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 = IDENT) ;) }) (else_clause else (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 IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) ))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & 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 IDENT = (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) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) ))))) ;) })) (return_statement return IDENT ;) })) (return_statement return LIT ;) })))
(function_definition "uint gzputc(int param_1,undefined1 *param_2)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined *puVar6;\n  undefined1 local_18 [4];\n  int local_14;\n  \n  puVar6 = PTR___stack_chk_guard_000360f4;\n  local_14 = *(int *)PTR___stack_chk_guard_000360f4;\n  uVar1 = 0xffffffff;\n  puVar5 = param_2;\n  if (param_1 == 0) goto LAB_00020580;\n  if (*(int *)(param_1 + 0x10) == 0x79b1) {\n    uVar1 = 0xffffffff;\n    if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;\n    if (*(int *)(param_1 + 0x58) != 0) {\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }\n    if (*(uint *)(param_1 + 0x1c) != 0) {\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }\n    puVar5 = local_18;\n    local_18[0] = (char)param_2;\n    iVar3 = FUN_000200cc(param_1,puVar5,1);\n    if (iVar3 == 1) {\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }\n  }\nLAB_000205d4:\n  uVar1 = 0xffffffff;\nLAB_00020580:\n  if (local_14 == *(int *)puVar6) {\n    return uVar1;\n  }\n  iVar3 = local_14;\n  puVar6 = PTR___stack_chk_fail_000360ec;\n  (*(code *)PTR___stack_chk_fail_000360ec)();\n  if (((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0)) {\n    iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);\n    uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);\n    if (uVar1 == 0) {\n      uVar1 = -(uint)(iVar2 != 0);\n    }\n    return uVar1;\n  }\n  return 0xffffffff;\n}" (type_identifier "uint") (function_declarator "gzputc(int param_1,undefined1 *param_2)" (identifier "gzputc") (parameter_list "(int param_1,undefined1 *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined1 *param_2" (type_identifier "undefined1") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined *puVar6;\n  undefined1 local_18 [4];\n  int local_14;\n  \n  puVar6 = PTR___stack_chk_guard_000360f4;\n  local_14 = *(int *)PTR___stack_chk_guard_000360f4;\n  uVar1 = 0xffffffff;\n  puVar5 = param_2;\n  if (param_1 == 0) goto LAB_00020580;\n  if (*(int *)(param_1 + 0x10) == 0x79b1) {\n    uVar1 = 0xffffffff;\n    if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;\n    if (*(int *)(param_1 + 0x58) != 0) {\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }\n    if (*(uint *)(param_1 + 0x1c) != 0) {\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }\n    puVar5 = local_18;\n    local_18[0] = (char)param_2;\n    iVar3 = FUN_000200cc(param_1,puVar5,1);\n    if (iVar3 == 1) {\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }\n  }\nLAB_000205d4:\n  uVar1 = 0xffffffff;\nLAB_00020580:\n  if (local_14 == *(int *)puVar6) {\n    return uVar1;\n  }\n  iVar3 = local_14;\n  puVar6 = PTR___stack_chk_fail_000360ec;\n  (*(code *)PTR___stack_chk_fail_000360ec)();\n  if (((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0)) {\n    iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);\n    uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);\n    if (uVar1 == 0) {\n      uVar1 = -(uint)(iVar2 != 0);\n    }\n    return uVar1;\n  }\n  return 0xffffffff;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined1 *puVar4;" (type_identifier "undefined1") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined1 *puVar5;" (type_identifier "undefined1") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined *puVar6;" (type_identifier "undefined") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined1 local_18 [4];" (type_identifier "undefined1") (array_declarator "local_18 [4]" (identifier "local_18") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "int local_14;" (primitive_type "int") (identifier "local_14") (; ";")) (expression_statement "puVar6 = PTR___stack_chk_guard_000360f4;" (assignment_expression "puVar6 = PTR___stack_chk_guard_000360f4" (identifier "puVar6") (= "=") (identifier "PTR___stack_chk_guard_000360f4")) (; ";")) (expression_statement "local_14 = *(int *)PTR___stack_chk_guard_000360f4;" (assignment_expression "local_14 = *(int *)PTR___stack_chk_guard_000360f4" (identifier "local_14") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_000360f4" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000360f4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000360f4")))) (; ";")) (expression_statement "uVar1 = 0xffffffff;" (assignment_expression "uVar1 = 0xffffffff" (identifier "uVar1") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar5 = param_2;" (assignment_expression "puVar5 = param_2" (identifier "puVar5") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (param_1 == 0) goto LAB_00020580;" (if "if") (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00020580;" (goto "goto") (statement_identifier "LAB_00020580") (; ";"))) (if_statement "if (*(int *)(param_1 + 0x10) == 0x79b1) {\n    uVar1 = 0xffffffff;\n    if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;\n    if (*(int *)(param_1 + 0x58) != 0) {\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }\n    if (*(uint *)(param_1 + 0x1c) != 0) {\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }\n    puVar5 = local_18;\n    local_18[0] = (char)param_2;\n    iVar3 = FUN_000200cc(param_1,puVar5,1);\n    if (iVar3 == 1) {\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x10) == 0x79b1)" (( "(") (binary_expression "*(int *)(param_1 + 0x10) == 0x79b1" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0x79b1")) () ")")) (compound_statement "{\n    uVar1 = 0xffffffff;\n    if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;\n    if (*(int *)(param_1 + 0x58) != 0) {\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }\n    if (*(uint *)(param_1 + 0x1c) != 0) {\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }\n    puVar5 = local_18;\n    local_18[0] = (char)param_2;\n    iVar3 = FUN_000200cc(param_1,puVar5,1);\n    if (iVar3 == 1) {\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }\n  }" ({ "{") (expression_statement "uVar1 = 0xffffffff;" (assignment_expression "uVar1 = 0xffffffff" (identifier "uVar1") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x5c) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x5c) != 0" (pointer_expression "*(int *)(param_1 + 0x5c)" (* "*") (cast_expression "(int *)(param_1 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00020580;" (goto "goto") (statement_identifier "LAB_00020580") (; ";"))) (if_statement "if (*(int *)(param_1 + 0x58) != 0) {\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x58) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x58) != 0" (pointer_expression "*(int *)(param_1 + 0x58)" (* "*") (cast_expression "(int *)(param_1 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *(undefined4 *)(param_1 + 0x58) = 0;\n      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));\n      if (iVar3 == -1) goto LAB_000205d4;\n    }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x58) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x58) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x58)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54));" (assignment_expression "iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54))" (identifier "iVar3") (= "=") (call_expression "FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54))" (identifier "FUN_0001ff4c") (argument_list "(param_1,param_2,*(undefined4 *)(param_1 + 0x50),\n                           *(undefined4 *)(param_1 + 0x54))" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x54)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x54)" (( "(") (binary_expression "param_1 + 0x54" (identifier "param_1") (+ "+") (number_literal "0x54")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar3 == -1) goto LAB_000205d4;" (if "if") (parenthesized_expression "(iVar3 == -1)" (( "(") (binary_expression "iVar3 == -1" (identifier "iVar3") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_000205d4;" (goto "goto") (statement_identifier "LAB_000205d4") (; ";"))) (} "}"))) (if_statement "if (*(uint *)(param_1 + 0x1c) != 0) {\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }" (if "if") (parenthesized_expression "(*(uint *)(param_1 + 0x1c) != 0)" (( "(") (binary_expression "*(uint *)(param_1 + 0x1c) != 0" (pointer_expression "*(uint *)(param_1 + 0x1c)" (* "*") (cast_expression "(uint *)(param_1 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar3 = *(int *)(param_1 + 0x24);\n      if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }\n      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));\n      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }\n    }" ({ "{") (expression_statement "iVar3 = *(int *)(param_1 + 0x24);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x24)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x24)" (* "*") (cast_expression "(int *)(param_1 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x68) == 0) {\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }\n      else {\n        iVar2 = *(int *)(param_1 + 100);\n      }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x68) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x68) == 0" (pointer_expression "*(int *)(param_1 + 0x68)" (* "*") (cast_expression "(int *)(param_1 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x68)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *(int *)(param_1 + 100) = iVar3;\n        iVar2 = iVar3;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 100) = iVar3;" (assignment_expression "*(int *)(param_1 + 100) = iVar3" (pointer_expression "*(int *)(param_1 + 100)" (* "*") (cast_expression "(int *)(param_1 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 100)" (( "(") (binary_expression "param_1 + 100" (identifier "param_1") (+ "+") (number_literal "100")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "iVar2 = iVar3;" (assignment_expression "iVar2 = iVar3" (identifier "iVar2") (= "=") (identifier "iVar3")) (; ";")) (} "}")) (else_clause "else {\n        iVar2 = *(int *)(param_1 + 100);\n      }" (else "else") (compound_statement "{\n        iVar2 = *(int *)(param_1 + 100);\n      }" ({ "{") (expression_statement "iVar2 = *(int *)(param_1 + 100);" (assignment_expression "iVar2 = *(int *)(param_1 + 100)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 100)" (* "*") (cast_expression "(int *)(param_1 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 100)" (( "(") (binary_expression "param_1 + 100" (identifier "param_1") (+ "+") (number_literal "100")) () ")"))))) (; ";")) (} "}")))) (expression_statement "puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));" (assignment_expression "puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68))" (identifier "puVar5") (= "=") (cast_expression "(undefined1 *)(iVar2 + *(int *)(param_1 + 0x68))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + *(int *)(param_1 + 0x68))" (( "(") (binary_expression "iVar2 + *(int *)(param_1 + 0x68)" (identifier "iVar2") (+ "+") (pointer_expression "*(int *)(param_1 + 0x68)" (* "*") (cast_expression "(int *)(param_1 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x68)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) () ")"))))) () ")")))) (; ";")) (if_statement "if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }" (if "if") (parenthesized_expression "((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c))" (( "(") (binary_expression "(uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)" (call_expression "(uint)((int)puVar5 - iVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)puVar5 - iVar3)" (( "(") (binary_expression "(int)puVar5 - iVar3" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (- "-") (identifier "iVar3")) () ")"))) (< "<") (pointer_expression "*(uint *)(param_1 + 0x1c)" (* "*") (cast_expression "(uint *)(param_1 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")"))))) () ")")) (compound_statement "{\n        *puVar5 = (char)param_2;\n        uVar1 = (uint)param_2 & 0xff;\n        puVar4 = *(undefined1 **)(param_1 + 0xc);\n        puVar5 = puVar4 + 1;\n        *(undefined1 **)(param_1 + 0xc) = puVar5;\n        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;\n        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);\n        goto LAB_00020580;\n      }" ({ "{") (expression_statement "*puVar5 = (char)param_2;" (assignment_expression "*puVar5 = (char)param_2" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (cast_expression "(char)param_2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_2"))) (; ";")) (expression_statement "uVar1 = (uint)param_2 & 0xff;" (assignment_expression "uVar1 = (uint)param_2 & 0xff" (identifier "uVar1") (= "=") (binary_expression "(uint)param_2 & 0xff" (cast_expression "(uint)param_2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_2")) (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "puVar4 = *(undefined1 **)(param_1 + 0xc);" (assignment_expression "puVar4 = *(undefined1 **)(param_1 + 0xc)" (identifier "puVar4") (= "=") (pointer_expression "*(undefined1 **)(param_1 + 0xc)" (* "*") (cast_expression "(undefined1 **)(param_1 + 0xc)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "puVar5 = puVar4 + 1;" (assignment_expression "puVar5 = puVar4 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined1 **)(param_1 + 0xc) = puVar5;" (assignment_expression "*(undefined1 **)(param_1 + 0xc) = puVar5" (pointer_expression "*(undefined1 **)(param_1 + 0xc)" (* "*") (cast_expression "(undefined1 **)(param_1 + 0xc)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "puVar5")) (; ";")) (expression_statement "*(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;" (assignment_expression "*(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1" (pointer_expression "*(int *)(param_1 + 0x68)" (* "*") (cast_expression "(int *)(param_1 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x68)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x68) + 1" (pointer_expression "*(int *)(param_1 + 0x68)" (* "*") (cast_expression "(int *)(param_1 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x68)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);" (assignment_expression "*(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8)" (pointer_expression "*(uint *)(param_1 + 8)" (* "*") (cast_expression "(uint *)(param_1 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "(uint)(puVar5 < puVar4) + *(int *)(param_1 + 8)" (call_expression "(uint)(puVar5 < puVar4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar5 < puVar4)" (( "(") (binary_expression "puVar5 < puVar4" (identifier "puVar5") (< "<") (identifier "puVar4")) () ")"))) (+ "+") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))))) (; ";")) (goto_statement "goto LAB_00020580;" (goto "goto") (statement_identifier "LAB_00020580") (; ";")) (} "}"))) (} "}"))) (expression_statement "puVar5 = local_18;" (assignment_expression "puVar5 = local_18" (identifier "puVar5") (= "=") (identifier "local_18")) (; ";")) (expression_statement "local_18[0] = (char)param_2;" (assignment_expression "local_18[0] = (char)param_2" (subscript_expression "local_18[0]" (identifier "local_18") ([ "[") (number_literal "0") (] "]")) (= "=") (cast_expression "(char)param_2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_2"))) (; ";")) (expression_statement "iVar3 = FUN_000200cc(param_1,puVar5,1);" (assignment_expression "iVar3 = FUN_000200cc(param_1,puVar5,1)" (identifier "iVar3") (= "=") (call_expression "FUN_000200cc(param_1,puVar5,1)" (identifier "FUN_000200cc") (argument_list "(param_1,puVar5,1)" (( "(") (identifier "param_1") (, ",") (identifier "puVar5") (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if (iVar3 == 1) {\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }" (if "if") (parenthesized_expression "(iVar3 == 1)" (( "(") (binary_expression "iVar3 == 1" (identifier "iVar3") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      uVar1 = (uint)param_2 & 0xff;\n      goto LAB_00020580;\n    }" ({ "{") (expression_statement "uVar1 = (uint)param_2 & 0xff;" (assignment_expression "uVar1 = (uint)param_2 & 0xff" (identifier "uVar1") (= "=") (binary_expression "(uint)param_2 & 0xff" (cast_expression "(uint)param_2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_2")) (& "&") (number_literal "0xff"))) (; ";")) (goto_statement "goto LAB_00020580;" (goto "goto") (statement_identifier "LAB_00020580") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_000205d4:\n  uVar1 = 0xffffffff;" (statement_identifier "LAB_000205d4") (: ":") (expression_statement "uVar1 = 0xffffffff;" (assignment_expression "uVar1 = 0xffffffff" (identifier "uVar1") (= "=") (number_literal "0xffffffff")) (; ";"))) (labeled_statement "LAB_00020580:\n  if (local_14 == *(int *)puVar6) {\n    return uVar1;\n  }" (statement_identifier "LAB_00020580") (: ":") (if_statement "if (local_14 == *(int *)puVar6) {\n    return uVar1;\n  }" (if "if") (parenthesized_expression "(local_14 == *(int *)puVar6)" (( "(") (binary_expression "local_14 == *(int *)puVar6" (identifier "local_14") (== "==") (pointer_expression "*(int *)puVar6" (* "*") (cast_expression "(int *)puVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar6")))) () ")")) (compound_statement "{\n    return uVar1;\n  }" ({ "{") (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}")))) (expression_statement "iVar3 = local_14;" (assignment_expression "iVar3 = local_14" (identifier "iVar3") (= "=") (identifier "local_14")) (; ";")) (expression_statement "puVar6 = PTR___stack_chk_fail_000360ec;" (assignment_expression "puVar6 = PTR___stack_chk_fail_000360ec" (identifier "puVar6") (= "=") (identifier "PTR___stack_chk_fail_000360ec")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000360ec)();" (call_expression "(*(code *)PTR___stack_chk_fail_000360ec)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000360ec)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000360ec" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000360ec" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000360ec"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0)) {\n    iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);\n    uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);\n    if (uVar1 == 0) {\n      uVar1 = -(uint)(iVar2 != 0);\n    }\n    return uVar1;\n  }" (if "if") (parenthesized_expression "(((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0))" (( "(") (binary_expression "((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0)" (parenthesized_expression "((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1))" (( "(") (binary_expression "(iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)" (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar3 + 0x10) == 0x79b1)" (( "(") (binary_expression "*(int *)(iVar3 + 0x10) == 0x79b1" (pointer_expression "*(int *)(iVar3 + 0x10)" (* "*") (cast_expression "(int *)(iVar3 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x10)" (( "(") (binary_expression "iVar3 + 0x10" (identifier "iVar3") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0x79b1")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar3 + 0x5c) == 0)" (( "(") (binary_expression "*(int *)(iVar3 + 0x5c) == 0" (pointer_expression "*(int *)(iVar3 + 0x5c)" (* "*") (cast_expression "(int *)(iVar3 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x5c)" (( "(") (binary_expression "iVar3 + 0x5c" (identifier "iVar3") (+ "+") (number_literal "0x5c")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);\n    uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);\n    if (uVar1 == 0) {\n      uVar1 = -(uint)(iVar2 != 0);\n    }\n    return uVar1;\n  }" ({ "{") (expression_statement "iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);" (assignment_expression "iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(puVar6 + 0x15acc))(puVar5)" (parenthesized_expression "(**(code **)(puVar6 + 0x15acc))" (( "(") (pointer_expression "**(code **)(puVar6 + 0x15acc)" (* "*") (pointer_expression "*(code **)(puVar6 + 0x15acc)" (* "*") (cast_expression "(code **)(puVar6 + 0x15acc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar6 + 0x15acc)" (( "(") (binary_expression "puVar6 + 0x15acc" (identifier "puVar6") (+ "+") (number_literal "0x15acc")) () ")"))))) () ")")) (argument_list "(puVar5)" (( "(") (identifier "puVar5") () ")")))) (; ";")) (expression_statement "uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);" (assignment_expression "uVar1 = FUN_000200cc(iVar3,puVar5,iVar2)" (identifier "uVar1") (= "=") (call_expression "FUN_000200cc(iVar3,puVar5,iVar2)" (identifier "FUN_000200cc") (argument_list "(iVar3,puVar5,iVar2)" (( "(") (identifier "iVar3") (, ",") (identifier "puVar5") (, ",") (identifier "iVar2") () ")")))) (; ";")) (if_statement "if (uVar1 == 0) {\n      uVar1 = -(uint)(iVar2 != 0);\n    }" (if "if") (parenthesized_expression "(uVar1 == 0)" (( "(") (binary_expression "uVar1 == 0" (identifier "uVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar1 = -(uint)(iVar2 != 0);\n    }" ({ "{") (expression_statement "uVar1 = -(uint)(iVar2 != 0);" (assignment_expression "uVar1 = -(uint)(iVar2 != 0)" (identifier "uVar1") (= "=") (unary_expression "-(uint)(iVar2 != 0)" (- "-") (call_expression "(uint)(iVar2 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")"))))) (; ";")) (} "}"))) (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}"))) (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_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: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (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: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (if_statement condition: (parenthesized_expression (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))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) 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: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (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)))))))))) (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: (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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (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: (identifier) right: (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: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (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)))))))) (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) (goto_statement label: (statement_identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (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))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))))) (return_statement (identifier)))) (return_statement (number_literal)))))

uint MASKED(int param_1,undefined1 *param_2)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  undefined1 *puVar4;
  undefined1 *puVar5;
  undefined *puVar6;
  undefined1 local_18 [4];
  int local_14;
  
  puVar6 = PTR___stack_chk_guard_000360f4;
  local_14 = *(int *)PTR___stack_chk_guard_000360f4;
  uVar1 = 0xffffffff;
  puVar5 = param_2;
  if (param_1 == 0) goto LAB_00020580;
  if (*(int *)(param_1 + 0x10) == 0x79b1) {
    uVar1 = 0xffffffff;
    if (*(int *)(param_1 + 0x5c) != 0) goto LAB_00020580;
    if (*(int *)(param_1 + 0x58) != 0) {
      *(undefined4 *)(param_1 + 0x58) = 0;
      iVar3 = FUN_0001ff4c(param_1,param_2,*(undefined4 *)(param_1 + 0x50),
                           *(undefined4 *)(param_1 + 0x54));
      if (iVar3 == -1) goto LAB_000205d4;
    }
    if (*(uint *)(param_1 + 0x1c) != 0) {
      iVar3 = *(int *)(param_1 + 0x24);
      if (*(int *)(param_1 + 0x68) == 0) {
        *(int *)(param_1 + 100) = iVar3;
        iVar2 = iVar3;
      }
      else {
        iVar2 = *(int *)(param_1 + 100);
      }
      puVar5 = (undefined1 *)(iVar2 + *(int *)(param_1 + 0x68));
      if ((uint)((int)puVar5 - iVar3) < *(uint *)(param_1 + 0x1c)) {
        *puVar5 = (char)param_2;
        uVar1 = (uint)param_2 & 0xff;
        puVar4 = *(undefined1 **)(param_1 + 0xc);
        puVar5 = puVar4 + 1;
        *(undefined1 **)(param_1 + 0xc) = puVar5;
        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 1;
        *(uint *)(param_1 + 8) = (uint)(puVar5 < puVar4) + *(int *)(param_1 + 8);
        goto LAB_00020580;
      }
    }
    puVar5 = local_18;
    local_18[0] = (char)param_2;
    iVar3 = FUN_000200cc(param_1,puVar5,1);
    if (iVar3 == 1) {
      uVar1 = (uint)param_2 & 0xff;
      goto LAB_00020580;
    }
  }
LAB_000205d4:
  uVar1 = 0xffffffff;
LAB_00020580:
  if (local_14 == *(int *)puVar6) {
    return uVar1;
  }
  iVar3 = local_14;
  puVar6 = PTR___stack_chk_fail_000360ec;
  (*(code *)PTR___stack_chk_fail_000360ec)();
  if (((iVar3 != 0) && (*(int *)(iVar3 + 0x10) == 0x79b1)) && (*(int *)(iVar3 + 0x5c) == 0)) {
    iVar2 = (**(code **)(puVar6 + 0x15acc))(puVar5);
    uVar1 = FUN_000200cc(iVar3,puVar5,iVar2);
    if (uVar1 == 0) {
      uVar1 = -(uint)(iVar2 != 0);
    }
    return uVar1;
  }
  return 0xffffffff;
}

