
/* WARNING: Unknown calling convention */

void * zlib_compress_init(void)

{
  undefined *puVar1;
  undefined4 *puVar2;
  undefined2 *puVar3;
  int iVar4;
  undefined2 *puVar5;
  undefined2 *puVar6;
  
  puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10);
  puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&UNK_00038ffc);
  if (puVar3 != (undefined2 *)0x0) {
    *puVar2 = puVar3;
    puVar6 = puVar3;
    do {
      puVar6[2] = 0xffff;
      puVar5 = puVar6 + 3;
      puVar6[1] = 0xffff;
      *puVar6 = 0xffff;
      puVar6 = puVar5;
    } while (puVar5 != puVar3 + 0x18000);
    puVar6 = puVar3 + 0x1c002;
    do {
      *puVar6 = 0xffff;
      puVar6 = puVar6 + 1;
    } while (puVar3 + 0x1c7f9 != puVar6);
    *(undefined4 *)(puVar3 + 0x1c000) = 0;
    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;
  }
  puVar1 = PTR_safemalloc_000b2408;
  puVar2[2] = PTR_LAB_000b2418 + -0x3014;
  puVar2[3] = PTR_LAB_000b2418 + -0x32d8;
  iVar4 = (*(code *)puVar1)(1,0x1c);
  *(undefined4 *)(iVar4 + 0x10) = 0;
  *(undefined4 *)(iVar4 + 0xc) = 0;
  *(undefined4 *)(iVar4 + 0x14) = 1;
  *(undefined4 *)(iVar4 + 0x18) = 0;
  puVar2[1] = iVar4;
  return puVar2;
}



undefined4 * zlib_compress_init(void)

{
  undefined *puVar1;
  undefined4 *puVar2;
  undefined2 *puVar3;
  int iVar4;
  undefined2 *puVar5;
  undefined2 *puVar6;
  
  puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10);
  puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc);
  if (puVar3 != (undefined2 *)0x0) {
    *puVar2 = puVar3;
    puVar6 = puVar3;
    do {
      puVar6[2] = 0xffff;
      puVar5 = puVar6 + 3;
      puVar6[1] = 0xffff;
      *puVar6 = 0xffff;
      puVar6 = puVar5;
    } while (puVar5 != puVar3 + 0x18000);
    puVar6 = puVar3 + 0x1c002;
    do {
      *puVar6 = 0xffff;
      puVar6 = puVar6 + 1;
    } while (puVar3 + 0x1c7f9 != puVar6);
    *(undefined4 *)(puVar3 + 0x1c000) = 0;
    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;
  }
  puVar1 = PTR_safemalloc_000b2408;
  puVar2[2] = PTR_LAB_000b2418 + -0x3014;
  puVar2[3] = PTR_LAB_000b2418 + -0x32d8;
  iVar4 = (*(code *)puVar1)(1,0x1c);
  *(undefined4 *)(iVar4 + 0x10) = 0;
  *(undefined4 *)(iVar4 + 0xc) = 0;
  *(undefined4 *)(iVar4 + 0x14) = 1;
  *(undefined4 *)(iVar4 + 0x18) = 0;
  puVar2[1] = iVar4;
  return puVar2;
}


lui gp,0x4
addiu gp,gp,-0x261c
addu gp,gp,t9
addiu sp,sp,-0x28
lw t9,-0x7f68(gp)
li a1,0x10
li a0,0x1
sw gp,0x10(sp)
sw ra,0x24(sp)
sw s1,0x20(sp)
lui s1,0x3
jalr t9
_sw s0,0x1c(sp)
li a0,0x1
lw gp,0x10(sp)
ori a1,s1,0x8ffc
lw t9,-0x7f68(gp)
jalr t9
_or s0,v0,zero
beq v0,zero,0x0007ca3c
_lw gp,0x10(sp)
addu s1,v0,s1
sw v0,0x0(s0)
li a0,-0x1
or v1,v0,zero
sh a0,0x4(v1)
addiu v1,v1,0x6
sh a0,-0x4(v1)
bne v1,s1,0x0007c9f0
_sh a0,-0x6(v1)
lui v1,0x3
li a1,-0x1
ori v1,v1,0x8004
addiu a0,v1,0xfee
addu v1,v0,v1
addu a0,v0,a0
sh a1,0x0(v1)
addiu v1,v1,0x2
bne a0,v1,0x0007ca1c
_nop
lui v1,0x4
addu v0,v0,v1
sw zero,-0x8000(v0)
sw zero,-0x7008(v0)
lw v0,-0x7f58(gp)
li a1,0x1c
lw t9,-0x7f68(gp)
li a0,0x1
addiu v0,v0,-0x3014
sw v0,0x8(s0)
lw v0,-0x7f58(gp)
addiu v0,v0,-0x32d8
jalr t9
_sw v0,0xc(s0)
li a0,0x1
lw ra,0x24(sp)
or v1,v0,zero
lw s1,0x20(sp)
or v0,s0,zero
sw zero,0x10(v1)
sw zero,0xc(v1)
sw a0,0x14(v1)
sw zero,0x18(v1)
sw v1,0x4(s0)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x28
(translation_unit "undefined4 * zlib_compress_init(void)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined2 *puVar3;\n  int iVar4;\n  undefined2 *puVar5;\n  undefined2 *puVar6;\n  \n  puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10);\n  puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc);\n  if (puVar3 != (undefined2 *)0x0) {\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }\n  puVar1 = PTR_safemalloc_000b2408;\n  puVar2[2] = PTR_LAB_000b2418 + -0x3014;\n  puVar2[3] = PTR_LAB_000b2418 + -0x32d8;\n  iVar4 = (*(code *)puVar1)(1,0x1c);\n  *(undefined4 *)(iVar4 + 0x10) = 0;\n  *(undefined4 *)(iVar4 + 0xc) = 0;\n  *(undefined4 *)(iVar4 + 0x14) = 1;\n  *(undefined4 *)(iVar4 + 0x18) = 0;\n  puVar2[1] = iVar4;\n  return puVar2;\n}\n\n" (function_definition "undefined4 * zlib_compress_init(void)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined2 *puVar3;\n  int iVar4;\n  undefined2 *puVar5;\n  undefined2 *puVar6;\n  \n  puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10);\n  puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc);\n  if (puVar3 != (undefined2 *)0x0) {\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }\n  puVar1 = PTR_safemalloc_000b2408;\n  puVar2[2] = PTR_LAB_000b2418 + -0x3014;\n  puVar2[3] = PTR_LAB_000b2418 + -0x32d8;\n  iVar4 = (*(code *)puVar1)(1,0x1c);\n  *(undefined4 *)(iVar4 + 0x10) = 0;\n  *(undefined4 *)(iVar4 + 0xc) = 0;\n  *(undefined4 *)(iVar4 + 0x14) = 1;\n  *(undefined4 *)(iVar4 + 0x18) = 0;\n  puVar2[1] = iVar4;\n  return puVar2;\n}" type_identifier (pointer_declarator "* zlib_compress_init(void)" * (function_declarator "zlib_compress_init(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined2 *puVar3;\n  int iVar4;\n  undefined2 *puVar5;\n  undefined2 *puVar6;\n  \n  puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10);\n  puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc);\n  if (puVar3 != (undefined2 *)0x0) {\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }\n  puVar1 = PTR_safemalloc_000b2408;\n  puVar2[2] = PTR_LAB_000b2418 + -0x3014;\n  puVar2[3] = PTR_LAB_000b2418 + -0x32d8;\n  iVar4 = (*(code *)puVar1)(1,0x1c);\n  *(undefined4 *)(iVar4 + 0x10) = 0;\n  *(undefined4 *)(iVar4 + 0xc) = 0;\n  *(undefined4 *)(iVar4 + 0x14) = 1;\n  *(undefined4 *)(iVar4 + 0x18) = 0;\n  puVar2[1] = iVar4;\n  return puVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined2 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined2 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined2 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (expression_statement "puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10);" (assignment_expression "puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10)" identifier = (cast_expression "(undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_safemalloc_000b2408)(1,0x10)" (parenthesized_expression "(*(code *)PTR_safemalloc_000b2408)" ( (pointer_expression "*(code *)PTR_safemalloc_000b2408" * (cast_expression "(code *)PTR_safemalloc_000b2408" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,0x10)" ( number_literal , number_literal ))))) ;) (expression_statement "puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc);" (assignment_expression "puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc)" identifier = (cast_expression "(undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc)" (parenthesized_expression "(*(code *)PTR_safemalloc_000b2408)" ( (pointer_expression "*(code *)PTR_safemalloc_000b2408" * (cast_expression "(code *)PTR_safemalloc_000b2408" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,&LAB_00038ffc)" ( number_literal , (pointer_expression "&LAB_00038ffc" & identifier) ))))) ;) (if_statement "if (puVar3 != (undefined2 *)0x0) {\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }" if (parenthesized_expression "(puVar3 != (undefined2 *)0x0)" ( (binary_expression "puVar3 != (undefined2 *)0x0" identifier != (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }" { (expression_statement "*puVar2 = puVar3;" (assignment_expression "*puVar2 = puVar3" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar6 = puVar3;" (assignment_expression "puVar6 = puVar3" identifier = identifier) ;) (do_statement "do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);" do (compound_statement "{\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    }" { (expression_statement "puVar6[2] = 0xffff;" (assignment_expression "puVar6[2] = 0xffff" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar5 = puVar6 + 3;" (assignment_expression "puVar5 = puVar6 + 3" identifier = (binary_expression "puVar6 + 3" identifier + number_literal)) ;) (expression_statement "puVar6[1] = 0xffff;" (assignment_expression "puVar6[1] = 0xffff" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar6 = 0xffff;" (assignment_expression "*puVar6 = 0xffff" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" identifier = identifier) ;) }) while (parenthesized_expression "(puVar5 != puVar3 + 0x18000)" ( (binary_expression "puVar5 != puVar3 + 0x18000" identifier != (binary_expression "puVar3 + 0x18000" identifier + number_literal)) )) ;) (expression_statement "puVar6 = puVar3 + 0x1c002;" (assignment_expression "puVar6 = puVar3 + 0x1c002" identifier = (binary_expression "puVar3 + 0x1c002" identifier + number_literal)) ;) (do_statement "do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);" do (compound_statement "{\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    }" { (expression_statement "*puVar6 = 0xffff;" (assignment_expression "*puVar6 = 0xffff" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 + 0x1c7f9 != puVar6)" ( (binary_expression "puVar3 + 0x1c7f9 != puVar6" (binary_expression "puVar3 + 0x1c7f9" identifier + number_literal) != identifier) )) ;) (expression_statement "*(undefined4 *)(puVar3 + 0x1c000) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0x1c000) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0x1c000)" * (cast_expression "(undefined4 *)(puVar3 + 0x1c000)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x1c000)" ( (binary_expression "puVar3 + 0x1c000" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar3 + 0x1c7fc) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0x1c7fc) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0x1c7fc)" * (cast_expression "(undefined4 *)(puVar3 + 0x1c7fc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x1c7fc)" ( (binary_expression "puVar3 + 0x1c7fc" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "puVar1 = PTR_safemalloc_000b2408;" (assignment_expression "puVar1 = PTR_safemalloc_000b2408" identifier = identifier) ;) (expression_statement "puVar2[2] = PTR_LAB_000b2418 + -0x3014;" (assignment_expression "puVar2[2] = PTR_LAB_000b2418 + -0x3014" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = (binary_expression "PTR_LAB_000b2418 + -0x3014" identifier + number_literal)) ;) (expression_statement "puVar2[3] = PTR_LAB_000b2418 + -0x32d8;" (assignment_expression "puVar2[3] = PTR_LAB_000b2418 + -0x32d8" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = (binary_expression "PTR_LAB_000b2418 + -0x32d8" identifier + number_literal)) ;) (expression_statement "iVar4 = (*(code *)puVar1)(1,0x1c);" (assignment_expression "iVar4 = (*(code *)puVar1)(1,0x1c)" identifier = (call_expression "(*(code *)puVar1)(1,0x1c)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,0x1c)" ( number_literal , number_literal )))) ;) (expression_statement "*(undefined4 *)(iVar4 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(iVar4 + 0x10) = 0" (pointer_expression "*(undefined4 *)(iVar4 + 0x10)" * (cast_expression "(undefined4 *)(iVar4 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar4 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar4 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar4 + 0xc)" * (cast_expression "(undefined4 *)(iVar4 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar4 + 0x14) = 1;" (assignment_expression "*(undefined4 *)(iVar4 + 0x14) = 1" (pointer_expression "*(undefined4 *)(iVar4 + 0x14)" * (cast_expression "(undefined4 *)(iVar4 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar4 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(iVar4 + 0x18) = 0" (pointer_expression "*(undefined4 *)(iVar4 + 0x18)" * (cast_expression "(undefined4 *)(iVar4 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[1] = iVar4;" (assignment_expression "puVar2[1] = iVar4" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return puVar2;" return identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nvoid * zlib_compress_init(void)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined2 *puVar3;\n  int iVar4;\n  undefined2 *puVar5;\n  undefined2 *puVar6;\n  \n  puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10);\n  puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&UNK_00038ffc);\n  if (puVar3 != (undefined2 *)0x0) {\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }\n  puVar1 = PTR_safemalloc_000b2408;\n  puVar2[2] = PTR_LAB_000b2418 + -0x3014;\n  puVar2[3] = PTR_LAB_000b2418 + -0x32d8;\n  iVar4 = (*(code *)puVar1)(1,0x1c);\n  *(undefined4 *)(iVar4 + 0x10) = 0;\n  *(undefined4 *)(iVar4 + 0xc) = 0;\n  *(undefined4 *)(iVar4 + 0x14) = 1;\n  *(undefined4 *)(iVar4 + 0x18) = 0;\n  puVar2[1] = iVar4;\n  return puVar2;\n}\n\n" comment (function_definition "void * zlib_compress_init(void)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined2 *puVar3;\n  int iVar4;\n  undefined2 *puVar5;\n  undefined2 *puVar6;\n  \n  puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10);\n  puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&UNK_00038ffc);\n  if (puVar3 != (undefined2 *)0x0) {\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }\n  puVar1 = PTR_safemalloc_000b2408;\n  puVar2[2] = PTR_LAB_000b2418 + -0x3014;\n  puVar2[3] = PTR_LAB_000b2418 + -0x32d8;\n  iVar4 = (*(code *)puVar1)(1,0x1c);\n  *(undefined4 *)(iVar4 + 0x10) = 0;\n  *(undefined4 *)(iVar4 + 0xc) = 0;\n  *(undefined4 *)(iVar4 + 0x14) = 1;\n  *(undefined4 *)(iVar4 + 0x18) = 0;\n  puVar2[1] = iVar4;\n  return puVar2;\n}" primitive_type (pointer_declarator "* zlib_compress_init(void)" * (function_declarator "zlib_compress_init(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined2 *puVar3;\n  int iVar4;\n  undefined2 *puVar5;\n  undefined2 *puVar6;\n  \n  puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10);\n  puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&UNK_00038ffc);\n  if (puVar3 != (undefined2 *)0x0) {\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }\n  puVar1 = PTR_safemalloc_000b2408;\n  puVar2[2] = PTR_LAB_000b2418 + -0x3014;\n  puVar2[3] = PTR_LAB_000b2418 + -0x32d8;\n  iVar4 = (*(code *)puVar1)(1,0x1c);\n  *(undefined4 *)(iVar4 + 0x10) = 0;\n  *(undefined4 *)(iVar4 + 0xc) = 0;\n  *(undefined4 *)(iVar4 + 0x14) = 1;\n  *(undefined4 *)(iVar4 + 0x18) = 0;\n  puVar2[1] = iVar4;\n  return puVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined2 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined2 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined2 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (expression_statement "puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10);" (assignment_expression "puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10)" identifier = (cast_expression "(undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_safemalloc_000b2408)(1,0x10)" (parenthesized_expression "(*(code *)PTR_safemalloc_000b2408)" ( (pointer_expression "*(code *)PTR_safemalloc_000b2408" * (cast_expression "(code *)PTR_safemalloc_000b2408" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,0x10)" ( number_literal , number_literal ))))) ;) (expression_statement "puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&UNK_00038ffc);" (assignment_expression "puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&UNK_00038ffc)" identifier = (cast_expression "(undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&UNK_00038ffc)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_safemalloc_000b2408)(1,&UNK_00038ffc)" (parenthesized_expression "(*(code *)PTR_safemalloc_000b2408)" ( (pointer_expression "*(code *)PTR_safemalloc_000b2408" * (cast_expression "(code *)PTR_safemalloc_000b2408" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,&UNK_00038ffc)" ( number_literal , (pointer_expression "&UNK_00038ffc" & identifier) ))))) ;) (if_statement "if (puVar3 != (undefined2 *)0x0) {\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }" if (parenthesized_expression "(puVar3 != (undefined2 *)0x0)" ( (binary_expression "puVar3 != (undefined2 *)0x0" identifier != (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }" { (expression_statement "*puVar2 = puVar3;" (assignment_expression "*puVar2 = puVar3" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar6 = puVar3;" (assignment_expression "puVar6 = puVar3" identifier = identifier) ;) (do_statement "do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);" do (compound_statement "{\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    }" { (expression_statement "puVar6[2] = 0xffff;" (assignment_expression "puVar6[2] = 0xffff" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar5 = puVar6 + 3;" (assignment_expression "puVar5 = puVar6 + 3" identifier = (binary_expression "puVar6 + 3" identifier + number_literal)) ;) (expression_statement "puVar6[1] = 0xffff;" (assignment_expression "puVar6[1] = 0xffff" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar6 = 0xffff;" (assignment_expression "*puVar6 = 0xffff" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" identifier = identifier) ;) }) while (parenthesized_expression "(puVar5 != puVar3 + 0x18000)" ( (binary_expression "puVar5 != puVar3 + 0x18000" identifier != (binary_expression "puVar3 + 0x18000" identifier + number_literal)) )) ;) (expression_statement "puVar6 = puVar3 + 0x1c002;" (assignment_expression "puVar6 = puVar3 + 0x1c002" identifier = (binary_expression "puVar3 + 0x1c002" identifier + number_literal)) ;) (do_statement "do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);" do (compound_statement "{\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    }" { (expression_statement "*puVar6 = 0xffff;" (assignment_expression "*puVar6 = 0xffff" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 + 0x1c7f9 != puVar6)" ( (binary_expression "puVar3 + 0x1c7f9 != puVar6" (binary_expression "puVar3 + 0x1c7f9" identifier + number_literal) != identifier) )) ;) (expression_statement "*(undefined4 *)(puVar3 + 0x1c000) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0x1c000) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0x1c000)" * (cast_expression "(undefined4 *)(puVar3 + 0x1c000)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x1c000)" ( (binary_expression "puVar3 + 0x1c000" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar3 + 0x1c7fc) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0x1c7fc) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0x1c7fc)" * (cast_expression "(undefined4 *)(puVar3 + 0x1c7fc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x1c7fc)" ( (binary_expression "puVar3 + 0x1c7fc" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "puVar1 = PTR_safemalloc_000b2408;" (assignment_expression "puVar1 = PTR_safemalloc_000b2408" identifier = identifier) ;) (expression_statement "puVar2[2] = PTR_LAB_000b2418 + -0x3014;" (assignment_expression "puVar2[2] = PTR_LAB_000b2418 + -0x3014" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = (binary_expression "PTR_LAB_000b2418 + -0x3014" identifier + number_literal)) ;) (expression_statement "puVar2[3] = PTR_LAB_000b2418 + -0x32d8;" (assignment_expression "puVar2[3] = PTR_LAB_000b2418 + -0x32d8" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = (binary_expression "PTR_LAB_000b2418 + -0x32d8" identifier + number_literal)) ;) (expression_statement "iVar4 = (*(code *)puVar1)(1,0x1c);" (assignment_expression "iVar4 = (*(code *)puVar1)(1,0x1c)" identifier = (call_expression "(*(code *)puVar1)(1,0x1c)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,0x1c)" ( number_literal , number_literal )))) ;) (expression_statement "*(undefined4 *)(iVar4 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(iVar4 + 0x10) = 0" (pointer_expression "*(undefined4 *)(iVar4 + 0x10)" * (cast_expression "(undefined4 *)(iVar4 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar4 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar4 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar4 + 0xc)" * (cast_expression "(undefined4 *)(iVar4 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar4 + 0x14) = 1;" (assignment_expression "*(undefined4 *)(iVar4 + 0x14) = 1" (pointer_expression "*(undefined4 *)(iVar4 + 0x14)" * (cast_expression "(undefined4 *)(iVar4 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar4 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(iVar4 + 0x18) = 0" (pointer_expression "*(undefined4 *)(iVar4 + 0x18)" * (cast_expression "(undefined4 *)(iVar4 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[1] = iVar4;" (assignment_expression "puVar2[1] = iVar4" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return puVar2;" return identifier ;) })))
(translation_unit "undefined4 * zlib_compress_init(void)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined2 *puVar3;\n  int iVar4;\n  undefined2 *puVar5;\n  undefined2 *puVar6;\n  \n  puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10);\n  puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc);\n  if (puVar3 != (undefined2 *)0x0) {\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }\n  puVar1 = PTR_safemalloc_000b2408;\n  puVar2[2] = PTR_LAB_000b2418 + -0x3014;\n  puVar2[3] = PTR_LAB_000b2418 + -0x32d8;\n  iVar4 = (*(code *)puVar1)(1,0x1c);\n  *(undefined4 *)(iVar4 + 0x10) = 0;\n  *(undefined4 *)(iVar4 + 0xc) = 0;\n  *(undefined4 *)(iVar4 + 0x14) = 1;\n  *(undefined4 *)(iVar4 + 0x18) = 0;\n  puVar2[1] = iVar4;\n  return puVar2;\n}\n\n" (function_definition "undefined4 * zlib_compress_init(void)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined2 *puVar3;\n  int iVar4;\n  undefined2 *puVar5;\n  undefined2 *puVar6;\n  \n  puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10);\n  puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc);\n  if (puVar3 != (undefined2 *)0x0) {\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }\n  puVar1 = PTR_safemalloc_000b2408;\n  puVar2[2] = PTR_LAB_000b2418 + -0x3014;\n  puVar2[3] = PTR_LAB_000b2418 + -0x32d8;\n  iVar4 = (*(code *)puVar1)(1,0x1c);\n  *(undefined4 *)(iVar4 + 0x10) = 0;\n  *(undefined4 *)(iVar4 + 0xc) = 0;\n  *(undefined4 *)(iVar4 + 0x14) = 1;\n  *(undefined4 *)(iVar4 + 0x18) = 0;\n  puVar2[1] = iVar4;\n  return puVar2;\n}" type_identifier (pointer_declarator "* zlib_compress_init(void)" * (function_declarator "zlib_compress_init(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined2 *puVar3;\n  int iVar4;\n  undefined2 *puVar5;\n  undefined2 *puVar6;\n  \n  puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10);\n  puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc);\n  if (puVar3 != (undefined2 *)0x0) {\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }\n  puVar1 = PTR_safemalloc_000b2408;\n  puVar2[2] = PTR_LAB_000b2418 + -0x3014;\n  puVar2[3] = PTR_LAB_000b2418 + -0x32d8;\n  iVar4 = (*(code *)puVar1)(1,0x1c);\n  *(undefined4 *)(iVar4 + 0x10) = 0;\n  *(undefined4 *)(iVar4 + 0xc) = 0;\n  *(undefined4 *)(iVar4 + 0x14) = 1;\n  *(undefined4 *)(iVar4 + 0x18) = 0;\n  puVar2[1] = iVar4;\n  return puVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined2 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined2 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined2 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (expression_statement "puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10);" (assignment_expression "puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10)" identifier = (cast_expression "(undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_safemalloc_000b2408)(1,0x10)" (parenthesized_expression "(*(code *)PTR_safemalloc_000b2408)" ( (pointer_expression "*(code *)PTR_safemalloc_000b2408" * (cast_expression "(code *)PTR_safemalloc_000b2408" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,0x10)" ( number_literal , number_literal ))))) ;) (expression_statement "puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc);" (assignment_expression "puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc)" identifier = (cast_expression "(undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc)" (parenthesized_expression "(*(code *)PTR_safemalloc_000b2408)" ( (pointer_expression "*(code *)PTR_safemalloc_000b2408" * (cast_expression "(code *)PTR_safemalloc_000b2408" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,&LAB_00038ffc)" ( number_literal , (pointer_expression "&LAB_00038ffc" & identifier) ))))) ;) (if_statement "if (puVar3 != (undefined2 *)0x0) {\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }" if (parenthesized_expression "(puVar3 != (undefined2 *)0x0)" ( (binary_expression "puVar3 != (undefined2 *)0x0" identifier != (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }" { (expression_statement "*puVar2 = puVar3;" (assignment_expression "*puVar2 = puVar3" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar6 = puVar3;" (assignment_expression "puVar6 = puVar3" identifier = identifier) ;) (do_statement "do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);" do (compound_statement "{\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    }" { (expression_statement "puVar6[2] = 0xffff;" (assignment_expression "puVar6[2] = 0xffff" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar5 = puVar6 + 3;" (assignment_expression "puVar5 = puVar6 + 3" identifier = (binary_expression "puVar6 + 3" identifier + number_literal)) ;) (expression_statement "puVar6[1] = 0xffff;" (assignment_expression "puVar6[1] = 0xffff" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar6 = 0xffff;" (assignment_expression "*puVar6 = 0xffff" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" identifier = identifier) ;) }) while (parenthesized_expression "(puVar5 != puVar3 + 0x18000)" ( (binary_expression "puVar5 != puVar3 + 0x18000" identifier != (binary_expression "puVar3 + 0x18000" identifier + number_literal)) )) ;) (expression_statement "puVar6 = puVar3 + 0x1c002;" (assignment_expression "puVar6 = puVar3 + 0x1c002" identifier = (binary_expression "puVar3 + 0x1c002" identifier + number_literal)) ;) (do_statement "do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);" do (compound_statement "{\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    }" { (expression_statement "*puVar6 = 0xffff;" (assignment_expression "*puVar6 = 0xffff" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 + 0x1c7f9 != puVar6)" ( (binary_expression "puVar3 + 0x1c7f9 != puVar6" (binary_expression "puVar3 + 0x1c7f9" identifier + number_literal) != identifier) )) ;) (expression_statement "*(undefined4 *)(puVar3 + 0x1c000) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0x1c000) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0x1c000)" * (cast_expression "(undefined4 *)(puVar3 + 0x1c000)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x1c000)" ( (binary_expression "puVar3 + 0x1c000" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar3 + 0x1c7fc) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0x1c7fc) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0x1c7fc)" * (cast_expression "(undefined4 *)(puVar3 + 0x1c7fc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x1c7fc)" ( (binary_expression "puVar3 + 0x1c7fc" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "puVar1 = PTR_safemalloc_000b2408;" (assignment_expression "puVar1 = PTR_safemalloc_000b2408" identifier = identifier) ;) (expression_statement "puVar2[2] = PTR_LAB_000b2418 + -0x3014;" (assignment_expression "puVar2[2] = PTR_LAB_000b2418 + -0x3014" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = (binary_expression "PTR_LAB_000b2418 + -0x3014" identifier + number_literal)) ;) (expression_statement "puVar2[3] = PTR_LAB_000b2418 + -0x32d8;" (assignment_expression "puVar2[3] = PTR_LAB_000b2418 + -0x32d8" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = (binary_expression "PTR_LAB_000b2418 + -0x32d8" identifier + number_literal)) ;) (expression_statement "iVar4 = (*(code *)puVar1)(1,0x1c);" (assignment_expression "iVar4 = (*(code *)puVar1)(1,0x1c)" identifier = (call_expression "(*(code *)puVar1)(1,0x1c)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,0x1c)" ( number_literal , number_literal )))) ;) (expression_statement "*(undefined4 *)(iVar4 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(iVar4 + 0x10) = 0" (pointer_expression "*(undefined4 *)(iVar4 + 0x10)" * (cast_expression "(undefined4 *)(iVar4 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar4 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar4 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar4 + 0xc)" * (cast_expression "(undefined4 *)(iVar4 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar4 + 0x14) = 1;" (assignment_expression "*(undefined4 *)(iVar4 + 0x14) = 1" (pointer_expression "*(undefined4 *)(iVar4 + 0x14)" * (cast_expression "(undefined4 *)(iVar4 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar4 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(iVar4 + 0x18) = 0" (pointer_expression "*(undefined4 *)(iVar4 + 0x18)" * (cast_expression "(undefined4 *)(iVar4 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[1] = iVar4;" (assignment_expression "puVar2[1] = iVar4" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return puVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , (pointer_expression & IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_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) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return IDENT ;) })))
(function_definition "undefined4 * zlib_compress_init(void)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined2 *puVar3;\n  int iVar4;\n  undefined2 *puVar5;\n  undefined2 *puVar6;\n  \n  puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10);\n  puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc);\n  if (puVar3 != (undefined2 *)0x0) {\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }\n  puVar1 = PTR_safemalloc_000b2408;\n  puVar2[2] = PTR_LAB_000b2418 + -0x3014;\n  puVar2[3] = PTR_LAB_000b2418 + -0x32d8;\n  iVar4 = (*(code *)puVar1)(1,0x1c);\n  *(undefined4 *)(iVar4 + 0x10) = 0;\n  *(undefined4 *)(iVar4 + 0xc) = 0;\n  *(undefined4 *)(iVar4 + 0x14) = 1;\n  *(undefined4 *)(iVar4 + 0x18) = 0;\n  puVar2[1] = iVar4;\n  return puVar2;\n}" (type_identifier "undefined4") (pointer_declarator "* zlib_compress_init(void)" (* "*") (function_declarator "zlib_compress_init(void)" (identifier "zlib_compress_init") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")")))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined2 *puVar3;\n  int iVar4;\n  undefined2 *puVar5;\n  undefined2 *puVar6;\n  \n  puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10);\n  puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc);\n  if (puVar3 != (undefined2 *)0x0) {\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }\n  puVar1 = PTR_safemalloc_000b2408;\n  puVar2[2] = PTR_LAB_000b2418 + -0x3014;\n  puVar2[3] = PTR_LAB_000b2418 + -0x32d8;\n  iVar4 = (*(code *)puVar1)(1,0x1c);\n  *(undefined4 *)(iVar4 + 0x10) = 0;\n  *(undefined4 *)(iVar4 + 0xc) = 0;\n  *(undefined4 *)(iVar4 + 0x14) = 1;\n  *(undefined4 *)(iVar4 + 0x18) = 0;\n  puVar2[1] = iVar4;\n  return puVar2;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined2 *puVar3;" (type_identifier "undefined2") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined2 *puVar5;" (type_identifier "undefined2") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined2 *puVar6;" (type_identifier "undefined2") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (expression_statement "puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10);" (assignment_expression "puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_safemalloc_000b2408)(1,0x10)" (parenthesized_expression "(*(code *)PTR_safemalloc_000b2408)" (( "(") (pointer_expression "*(code *)PTR_safemalloc_000b2408" (* "*") (cast_expression "(code *)PTR_safemalloc_000b2408" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_safemalloc_000b2408"))) () ")")) (argument_list "(1,0x10)" (( "(") (number_literal "1") (, ",") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc);" (assignment_expression "puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc)" (identifier "puVar3") (= "=") (cast_expression "(undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc)" (parenthesized_expression "(*(code *)PTR_safemalloc_000b2408)" (( "(") (pointer_expression "*(code *)PTR_safemalloc_000b2408" (* "*") (cast_expression "(code *)PTR_safemalloc_000b2408" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_safemalloc_000b2408"))) () ")")) (argument_list "(1,&LAB_00038ffc)" (( "(") (number_literal "1") (, ",") (pointer_expression "&LAB_00038ffc" (& "&") (identifier "LAB_00038ffc")) () ")"))))) (; ";")) (if_statement "if (puVar3 != (undefined2 *)0x0) {\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }" (if "if") (parenthesized_expression "(puVar3 != (undefined2 *)0x0)" (( "(") (binary_expression "puVar3 != (undefined2 *)0x0" (identifier "puVar3") (!= "!=") (cast_expression "(undefined2 *)0x0" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    *puVar2 = puVar3;\n    puVar6 = puVar3;\n    do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);\n    puVar6 = puVar3 + 0x1c002;\n    do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);\n    *(undefined4 *)(puVar3 + 0x1c000) = 0;\n    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;\n  }" ({ "{") (expression_statement "*puVar2 = puVar3;" (assignment_expression "*puVar2 = puVar3" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "puVar6 = puVar3;" (assignment_expression "puVar6 = puVar3" (identifier "puVar6") (= "=") (identifier "puVar3")) (; ";")) (do_statement "do {\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    } while (puVar5 != puVar3 + 0x18000);" (do "do") (compound_statement "{\n      puVar6[2] = 0xffff;\n      puVar5 = puVar6 + 3;\n      puVar6[1] = 0xffff;\n      *puVar6 = 0xffff;\n      puVar6 = puVar5;\n    }" ({ "{") (expression_statement "puVar6[2] = 0xffff;" (assignment_expression "puVar6[2] = 0xffff" (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0xffff")) (; ";")) (expression_statement "puVar5 = puVar6 + 3;" (assignment_expression "puVar5 = puVar6 + 3" (identifier "puVar5") (= "=") (binary_expression "puVar6 + 3" (identifier "puVar6") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "puVar6[1] = 0xffff;" (assignment_expression "puVar6[1] = 0xffff" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0xffff")) (; ";")) (expression_statement "*puVar6 = 0xffff;" (assignment_expression "*puVar6 = 0xffff" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "0xffff")) (; ";")) (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" (identifier "puVar6") (= "=") (identifier "puVar5")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar5 != puVar3 + 0x18000)" (( "(") (binary_expression "puVar5 != puVar3 + 0x18000" (identifier "puVar5") (!= "!=") (binary_expression "puVar3 + 0x18000" (identifier "puVar3") (+ "+") (number_literal "0x18000"))) () ")")) (; ";")) (expression_statement "puVar6 = puVar3 + 0x1c002;" (assignment_expression "puVar6 = puVar3 + 0x1c002" (identifier "puVar6") (= "=") (binary_expression "puVar3 + 0x1c002" (identifier "puVar3") (+ "+") (number_literal "0x1c002"))) (; ";")) (do_statement "do {\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    } while (puVar3 + 0x1c7f9 != puVar6);" (do "do") (compound_statement "{\n      *puVar6 = 0xffff;\n      puVar6 = puVar6 + 1;\n    }" ({ "{") (expression_statement "*puVar6 = 0xffff;" (assignment_expression "*puVar6 = 0xffff" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "0xffff")) (; ";")) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar3 + 0x1c7f9 != puVar6)" (( "(") (binary_expression "puVar3 + 0x1c7f9 != puVar6" (binary_expression "puVar3 + 0x1c7f9" (identifier "puVar3") (+ "+") (number_literal "0x1c7f9")) (!= "!=") (identifier "puVar6")) () ")")) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + 0x1c000) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0x1c000) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0x1c000)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 0x1c000)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x1c000)" (( "(") (binary_expression "puVar3 + 0x1c000" (identifier "puVar3") (+ "+") (number_literal "0x1c000")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + 0x1c7fc) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0x1c7fc) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0x1c7fc)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 0x1c7fc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x1c7fc)" (( "(") (binary_expression "puVar3 + 0x1c7fc" (identifier "puVar3") (+ "+") (number_literal "0x1c7fc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar1 = PTR_safemalloc_000b2408;" (assignment_expression "puVar1 = PTR_safemalloc_000b2408" (identifier "puVar1") (= "=") (identifier "PTR_safemalloc_000b2408")) (; ";")) (expression_statement "puVar2[2] = PTR_LAB_000b2418 + -0x3014;" (assignment_expression "puVar2[2] = PTR_LAB_000b2418 + -0x3014" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "PTR_LAB_000b2418 + -0x3014" (identifier "PTR_LAB_000b2418") (+ "+") (number_literal "-0x3014"))) (; ";")) (expression_statement "puVar2[3] = PTR_LAB_000b2418 + -0x32d8;" (assignment_expression "puVar2[3] = PTR_LAB_000b2418 + -0x32d8" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "PTR_LAB_000b2418 + -0x32d8" (identifier "PTR_LAB_000b2418") (+ "+") (number_literal "-0x32d8"))) (; ";")) (expression_statement "iVar4 = (*(code *)puVar1)(1,0x1c);" (assignment_expression "iVar4 = (*(code *)puVar1)(1,0x1c)" (identifier "iVar4") (= "=") (call_expression "(*(code *)puVar1)(1,0x1c)" (parenthesized_expression "(*(code *)puVar1)" (( "(") (pointer_expression "*(code *)puVar1" (* "*") (cast_expression "(code *)puVar1" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))) () ")")) (argument_list "(1,0x1c)" (( "(") (number_literal "1") (, ",") (number_literal "0x1c") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar4 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(iVar4 + 0x10) = 0" (pointer_expression "*(undefined4 *)(iVar4 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x10)" (( "(") (binary_expression "iVar4 + 0x10" (identifier "iVar4") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(iVar4 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar4 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar4 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xc)" (( "(") (binary_expression "iVar4 + 0xc" (identifier "iVar4") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(iVar4 + 0x14) = 1;" (assignment_expression "*(undefined4 *)(iVar4 + 0x14) = 1" (pointer_expression "*(undefined4 *)(iVar4 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x14)" (( "(") (binary_expression "iVar4 + 0x14" (identifier "iVar4") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined4 *)(iVar4 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(iVar4 + 0x18) = 0" (pointer_expression "*(undefined4 *)(iVar4 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x18)" (( "(") (binary_expression "iVar4 + 0x18" (identifier "iVar4") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[1] = iVar4;" (assignment_expression "puVar2[1] = iVar4" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar4")) (; ";")) (return_statement "return puVar2;" (return "return") (identifier "puVar2") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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 (number_literal) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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 (number_literal) (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (return_statement (identifier)))))

undefined4 * MASKED(void)

{
  undefined *puVar1;
  undefined4 *puVar2;
  undefined2 *puVar3;
  int iVar4;
  undefined2 *puVar5;
  undefined2 *puVar6;
  
  puVar2 = (undefined4 *)(*(code *)PTR_safemalloc_000b2408)(1,0x10);
  puVar3 = (undefined2 *)(*(code *)PTR_safemalloc_000b2408)(1,&LAB_00038ffc);
  if (puVar3 != (undefined2 *)0x0) {
    *puVar2 = puVar3;
    puVar6 = puVar3;
    do {
      puVar6[2] = 0xffff;
      puVar5 = puVar6 + 3;
      puVar6[1] = 0xffff;
      *puVar6 = 0xffff;
      puVar6 = puVar5;
    } while (puVar5 != puVar3 + 0x18000);
    puVar6 = puVar3 + 0x1c002;
    do {
      *puVar6 = 0xffff;
      puVar6 = puVar6 + 1;
    } while (puVar3 + 0x1c7f9 != puVar6);
    *(undefined4 *)(puVar3 + 0x1c000) = 0;
    *(undefined4 *)(puVar3 + 0x1c7fc) = 0;
  }
  puVar1 = PTR_safemalloc_000b2408;
  puVar2[2] = PTR_LAB_000b2418 + -0x3014;
  puVar2[3] = PTR_LAB_000b2418 + -0x32d8;
  iVar4 = (*(code *)puVar1)(1,0x1c);
  *(undefined4 *)(iVar4 + 0x10) = 0;
  *(undefined4 *)(iVar4 + 0xc) = 0;
  *(undefined4 *)(iVar4 + 0x14) = 1;
  *(undefined4 *)(iVar4 + 0x18) = 0;
  puVar2[1] = iVar4;
  return puVar2;
}

