
int compress_data(z_stream_s *strm,char **next_in,int *avail_in,char **next_out,int *avail_out)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  Bytef *pBVar4;
  uInt uVar5;
  uInt uVar6;
  
  puVar1 = PTR_deflate_000b6720;
  pBVar4 = (Bytef *)*next_in;
  uVar6 = *avail_in;
  strm->next_out = (Bytef *)*next_out;
  strm->avail_in = uVar6;
  strm->next_in = pBVar4;
  strm->avail_out = *avail_out;
  iVar2 = (*(code *)puVar1)(strm,0);
  iVar3 = -1;
  if (iVar2 == 0) {
    uVar5 = strm->avail_in;
    pBVar4 = strm->next_out;
    iVar3 = *avail_out;
    uVar6 = strm->avail_out;
    *next_in = (char *)strm->next_in;
    *avail_in = uVar5;
    *next_out = (char *)pBVar4;
    iVar3 = iVar3 - uVar6;
    *avail_out = strm->avail_out;
  }
  return iVar3;
}



int compress_data(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,
                 int *param_5)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  
  puVar1 = PTR_deflate_000b6720;
  uVar4 = *param_2;
  uVar5 = *param_3;
  param_1[3] = *param_4;
  param_1[1] = uVar5;
  *param_1 = uVar4;
  param_1[4] = *param_5;
  iVar2 = (*(code *)puVar1)(param_1,0);
  iVar3 = -1;
  if (iVar2 == 0) {
    uVar5 = param_1[1];
    uVar4 = param_1[3];
    iVar3 = *param_5;
    iVar2 = param_1[4];
    *param_2 = *param_1;
    *param_3 = uVar5;
    *param_4 = uVar4;
    iVar3 = iVar3 - iVar2;
    *param_5 = param_1[4];
  }
  return iVar3;
}


lui gp,0xa
addiu gp,gp,-0xbc0
addu gp,gp,t9
addiu sp,sp,-0x30
lw v0,0x0(a3)
lw v1,0x0(a1)
lw t9,-0x7560(gp)
sw s3,0x24(sp)
or s3,a2,zero
sw s1,0x1c(sp)
sw gp,0x10(sp)
sw s4,0x28(sp)
or s4,a1,zero
sw s2,0x20(sp)
or a1,zero,zero
sw s0,0x18(sp)
or s2,a3,zero
sw ra,0x2c(sp)
or s0,a0,zero
lw a2,0x0(a2)
lw s1,0x40(sp)
sw v0,0xc(a0)
sw a2,0x4(a0)
sw v1,0x0(a0)
lw v0,0x0(s1)
jalr t9
_sw v0,0x10(a0)
bne v0,zero,0x0001e8e0
_li v0,-0x1
lw a2,0x0(s0)
lw a1,0x4(s0)
lw v1,0xc(s0)
lw v0,0x0(s1)
lw a0,0x10(s0)
sw a2,0x0(s4)
sw a1,0x0(s3)
sw v1,0x0(s2)
subu v0,v0,a0
lw v1,0x10(s0)
sw v1,0x0(s1)
lw ra,0x2c(sp)
lw s4,0x28(sp)
lw s3,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x30
(translation_unit "int compress_data(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 int *param_5)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  \n  puVar1 = PTR_deflate_000b6720;\n  uVar4 = *param_2;\n  uVar5 = *param_3;\n  param_1[3] = *param_4;\n  param_1[1] = uVar5;\n  *param_1 = uVar4;\n  param_1[4] = *param_5;\n  iVar2 = (*(code *)puVar1)(param_1,0);\n  iVar3 = -1;\n  if (iVar2 == 0) {\n    uVar5 = param_1[1];\n    uVar4 = param_1[3];\n    iVar3 = *param_5;\n    iVar2 = param_1[4];\n    *param_2 = *param_1;\n    *param_3 = uVar5;\n    *param_4 = uVar4;\n    iVar3 = iVar3 - iVar2;\n    *param_5 = param_1[4];\n  }\n  return iVar3;\n}\n\n" (function_definition "int compress_data(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 int *param_5)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  \n  puVar1 = PTR_deflate_000b6720;\n  uVar4 = *param_2;\n  uVar5 = *param_3;\n  param_1[3] = *param_4;\n  param_1[1] = uVar5;\n  *param_1 = uVar4;\n  param_1[4] = *param_5;\n  iVar2 = (*(code *)puVar1)(param_1,0);\n  iVar3 = -1;\n  if (iVar2 == 0) {\n    uVar5 = param_1[1];\n    uVar4 = param_1[3];\n    iVar3 = *param_5;\n    iVar2 = param_1[4];\n    *param_2 = *param_1;\n    *param_3 = uVar5;\n    *param_4 = uVar4;\n    iVar3 = iVar3 - iVar2;\n    *param_5 = param_1[4];\n  }\n  return iVar3;\n}" primitive_type (function_declarator "compress_data(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 int *param_5)" identifier (parameter_list "(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 int *param_5)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  \n  puVar1 = PTR_deflate_000b6720;\n  uVar4 = *param_2;\n  uVar5 = *param_3;\n  param_1[3] = *param_4;\n  param_1[1] = uVar5;\n  *param_1 = uVar4;\n  param_1[4] = *param_5;\n  iVar2 = (*(code *)puVar1)(param_1,0);\n  iVar3 = -1;\n  if (iVar2 == 0) {\n    uVar5 = param_1[1];\n    uVar4 = param_1[3];\n    iVar3 = *param_5;\n    iVar2 = param_1[4];\n    *param_2 = *param_1;\n    *param_3 = uVar5;\n    *param_4 = uVar4;\n    iVar3 = iVar3 - iVar2;\n    *param_5 = param_1[4];\n  }\n  return iVar3;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (expression_statement "puVar1 = PTR_deflate_000b6720;" (assignment_expression "puVar1 = PTR_deflate_000b6720" identifier = identifier) ;) (expression_statement "uVar4 = *param_2;" (assignment_expression "uVar4 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar5 = *param_3;" (assignment_expression "uVar5 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "param_1[3] = *param_4;" (assignment_expression "param_1[3] = *param_4" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "param_1[1] = uVar5;" (assignment_expression "param_1[1] = uVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_1 = uVar4;" (assignment_expression "*param_1 = uVar4" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[4] = *param_5;" (assignment_expression "param_1[4] = *param_5" (subscript_expression "param_1[4]" identifier [ number_literal ]) = (pointer_expression "*param_5" * identifier)) ;) (expression_statement "iVar2 = (*(code *)puVar1)(param_1,0);" (assignment_expression "iVar2 = (*(code *)puVar1)(param_1,0)" identifier = (call_expression "(*(code *)puVar1)(param_1,0)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,0)" ( identifier , number_literal )))) ;) (expression_statement "iVar3 = -1;" (assignment_expression "iVar3 = -1" identifier = number_literal) ;) (if_statement "if (iVar2 == 0) {\n    uVar5 = param_1[1];\n    uVar4 = param_1[3];\n    iVar3 = *param_5;\n    iVar2 = param_1[4];\n    *param_2 = *param_1;\n    *param_3 = uVar5;\n    *param_4 = uVar4;\n    iVar3 = iVar3 - iVar2;\n    *param_5 = param_1[4];\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar5 = param_1[1];\n    uVar4 = param_1[3];\n    iVar3 = *param_5;\n    iVar2 = param_1[4];\n    *param_2 = *param_1;\n    *param_3 = uVar5;\n    *param_4 = uVar4;\n    iVar3 = iVar3 - iVar2;\n    *param_5 = param_1[4];\n  }" { (expression_statement "uVar5 = param_1[1];" (assignment_expression "uVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_1[3];" (assignment_expression "uVar4 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = *param_5;" (assignment_expression "iVar3 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (expression_statement "iVar2 = param_1[4];" (assignment_expression "iVar2 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "*param_2 = *param_1;" (assignment_expression "*param_2 = *param_1" (pointer_expression "*param_2" * identifier) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*param_3 = uVar5;" (assignment_expression "*param_3 = uVar5" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*param_4 = uVar4;" (assignment_expression "*param_4 = uVar4" (pointer_expression "*param_4" * identifier) = identifier) ;) (expression_statement "iVar3 = iVar3 - iVar2;" (assignment_expression "iVar3 = iVar3 - iVar2" identifier = (binary_expression "iVar3 - iVar2" identifier - identifier)) ;) (expression_statement "*param_5 = param_1[4];" (assignment_expression "*param_5 = param_1[4]" (pointer_expression "*param_5" * identifier) = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) })) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "int compress_data(z_stream_s *strm,char **next_in,int *avail_in,char **next_out,int *avail_out)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  Bytef *pBVar4;\n  uInt uVar5;\n  uInt uVar6;\n  \n  puVar1 = PTR_deflate_000b6720;\n  pBVar4 = (Bytef *)*next_in;\n  uVar6 = *avail_in;\n  strm->next_out = (Bytef *)*next_out;\n  strm->avail_in = uVar6;\n  strm->next_in = pBVar4;\n  strm->avail_out = *avail_out;\n  iVar2 = (*(code *)puVar1)(strm,0);\n  iVar3 = -1;\n  if (iVar2 == 0) {\n    uVar5 = strm->avail_in;\n    pBVar4 = strm->next_out;\n    iVar3 = *avail_out;\n    uVar6 = strm->avail_out;\n    *next_in = (char *)strm->next_in;\n    *avail_in = uVar5;\n    *next_out = (char *)pBVar4;\n    iVar3 = iVar3 - uVar6;\n    *avail_out = strm->avail_out;\n  }\n  return iVar3;\n}\n\n" (function_definition "int compress_data(z_stream_s *strm,char **next_in,int *avail_in,char **next_out,int *avail_out)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  Bytef *pBVar4;\n  uInt uVar5;\n  uInt uVar6;\n  \n  puVar1 = PTR_deflate_000b6720;\n  pBVar4 = (Bytef *)*next_in;\n  uVar6 = *avail_in;\n  strm->next_out = (Bytef *)*next_out;\n  strm->avail_in = uVar6;\n  strm->next_in = pBVar4;\n  strm->avail_out = *avail_out;\n  iVar2 = (*(code *)puVar1)(strm,0);\n  iVar3 = -1;\n  if (iVar2 == 0) {\n    uVar5 = strm->avail_in;\n    pBVar4 = strm->next_out;\n    iVar3 = *avail_out;\n    uVar6 = strm->avail_out;\n    *next_in = (char *)strm->next_in;\n    *avail_in = uVar5;\n    *next_out = (char *)pBVar4;\n    iVar3 = iVar3 - uVar6;\n    *avail_out = strm->avail_out;\n  }\n  return iVar3;\n}" primitive_type (function_declarator "compress_data(z_stream_s *strm,char **next_in,int *avail_in,char **next_out,int *avail_out)" identifier (parameter_list "(z_stream_s *strm,char **next_in,int *avail_in,char **next_out,int *avail_out)" ( (parameter_declaration "z_stream_s *strm" type_identifier (pointer_declarator "*strm" * identifier)) , (parameter_declaration "char **next_in" primitive_type (pointer_declarator "**next_in" * (pointer_declarator "*next_in" * identifier))) , (parameter_declaration "int *avail_in" primitive_type (pointer_declarator "*avail_in" * identifier)) , (parameter_declaration "char **next_out" primitive_type (pointer_declarator "**next_out" * (pointer_declarator "*next_out" * identifier))) , (parameter_declaration "int *avail_out" primitive_type (pointer_declarator "*avail_out" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  Bytef *pBVar4;\n  uInt uVar5;\n  uInt uVar6;\n  \n  puVar1 = PTR_deflate_000b6720;\n  pBVar4 = (Bytef *)*next_in;\n  uVar6 = *avail_in;\n  strm->next_out = (Bytef *)*next_out;\n  strm->avail_in = uVar6;\n  strm->next_in = pBVar4;\n  strm->avail_out = *avail_out;\n  iVar2 = (*(code *)puVar1)(strm,0);\n  iVar3 = -1;\n  if (iVar2 == 0) {\n    uVar5 = strm->avail_in;\n    pBVar4 = strm->next_out;\n    iVar3 = *avail_out;\n    uVar6 = strm->avail_out;\n    *next_in = (char *)strm->next_in;\n    *avail_in = uVar5;\n    *next_out = (char *)pBVar4;\n    iVar3 = iVar3 - uVar6;\n    *avail_out = strm->avail_out;\n  }\n  return iVar3;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "Bytef *pBVar4;" type_identifier (pointer_declarator "*pBVar4" * identifier) ;) (declaration "uInt uVar5;" type_identifier identifier ;) (declaration "uInt uVar6;" type_identifier identifier ;) (expression_statement "puVar1 = PTR_deflate_000b6720;" (assignment_expression "puVar1 = PTR_deflate_000b6720" identifier = identifier) ;) (expression_statement "pBVar4 = (Bytef *)*next_in;" (assignment_expression "pBVar4 = (Bytef *)*next_in" identifier = (cast_expression "(Bytef *)*next_in" ( (type_descriptor "Bytef *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*next_in" * identifier))) ;) (expression_statement "uVar6 = *avail_in;" (assignment_expression "uVar6 = *avail_in" identifier = (pointer_expression "*avail_in" * identifier)) ;) (expression_statement "strm->next_out = (Bytef *)*next_out;" (assignment_expression "strm->next_out = (Bytef *)*next_out" (field_expression "strm->next_out" identifier -> field_identifier) = (cast_expression "(Bytef *)*next_out" ( (type_descriptor "Bytef *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*next_out" * identifier))) ;) (expression_statement "strm->avail_in = uVar6;" (assignment_expression "strm->avail_in = uVar6" (field_expression "strm->avail_in" identifier -> field_identifier) = identifier) ;) (expression_statement "strm->next_in = pBVar4;" (assignment_expression "strm->next_in = pBVar4" (field_expression "strm->next_in" identifier -> field_identifier) = identifier) ;) (expression_statement "strm->avail_out = *avail_out;" (assignment_expression "strm->avail_out = *avail_out" (field_expression "strm->avail_out" identifier -> field_identifier) = (pointer_expression "*avail_out" * identifier)) ;) (expression_statement "iVar2 = (*(code *)puVar1)(strm,0);" (assignment_expression "iVar2 = (*(code *)puVar1)(strm,0)" identifier = (call_expression "(*(code *)puVar1)(strm,0)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(strm,0)" ( identifier , number_literal )))) ;) (expression_statement "iVar3 = -1;" (assignment_expression "iVar3 = -1" identifier = number_literal) ;) (if_statement "if (iVar2 == 0) {\n    uVar5 = strm->avail_in;\n    pBVar4 = strm->next_out;\n    iVar3 = *avail_out;\n    uVar6 = strm->avail_out;\n    *next_in = (char *)strm->next_in;\n    *avail_in = uVar5;\n    *next_out = (char *)pBVar4;\n    iVar3 = iVar3 - uVar6;\n    *avail_out = strm->avail_out;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar5 = strm->avail_in;\n    pBVar4 = strm->next_out;\n    iVar3 = *avail_out;\n    uVar6 = strm->avail_out;\n    *next_in = (char *)strm->next_in;\n    *avail_in = uVar5;\n    *next_out = (char *)pBVar4;\n    iVar3 = iVar3 - uVar6;\n    *avail_out = strm->avail_out;\n  }" { (expression_statement "uVar5 = strm->avail_in;" (assignment_expression "uVar5 = strm->avail_in" identifier = (field_expression "strm->avail_in" identifier -> field_identifier)) ;) (expression_statement "pBVar4 = strm->next_out;" (assignment_expression "pBVar4 = strm->next_out" identifier = (field_expression "strm->next_out" identifier -> field_identifier)) ;) (expression_statement "iVar3 = *avail_out;" (assignment_expression "iVar3 = *avail_out" identifier = (pointer_expression "*avail_out" * identifier)) ;) (expression_statement "uVar6 = strm->avail_out;" (assignment_expression "uVar6 = strm->avail_out" identifier = (field_expression "strm->avail_out" identifier -> field_identifier)) ;) (expression_statement "*next_in = (char *)strm->next_in;" (assignment_expression "*next_in = (char *)strm->next_in" (pointer_expression "*next_in" * identifier) = (cast_expression "(char *)strm->next_in" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "strm->next_in" identifier -> field_identifier))) ;) (expression_statement "*avail_in = uVar5;" (assignment_expression "*avail_in = uVar5" (pointer_expression "*avail_in" * identifier) = identifier) ;) (expression_statement "*next_out = (char *)pBVar4;" (assignment_expression "*next_out = (char *)pBVar4" (pointer_expression "*next_out" * identifier) = (cast_expression "(char *)pBVar4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar3 = iVar3 - uVar6;" (assignment_expression "iVar3 = iVar3 - uVar6" identifier = (binary_expression "iVar3 - uVar6" identifier - identifier)) ;) (expression_statement "*avail_out = strm->avail_out;" (assignment_expression "*avail_out = strm->avail_out" (pointer_expression "*avail_out" * identifier) = (field_expression "strm->avail_out" identifier -> field_identifier)) ;) })) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "int compress_data(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 int *param_5)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  \n  puVar1 = PTR_deflate_000b6720;\n  uVar4 = *param_2;\n  uVar5 = *param_3;\n  param_1[3] = *param_4;\n  param_1[1] = uVar5;\n  *param_1 = uVar4;\n  param_1[4] = *param_5;\n  iVar2 = (*(code *)puVar1)(param_1,0);\n  iVar3 = -1;\n  if (iVar2 == 0) {\n    uVar5 = param_1[1];\n    uVar4 = param_1[3];\n    iVar3 = *param_5;\n    iVar2 = param_1[4];\n    *param_2 = *param_1;\n    *param_3 = uVar5;\n    *param_4 = uVar4;\n    iVar3 = iVar3 - iVar2;\n    *param_5 = param_1[4];\n  }\n  return iVar3;\n}\n\n" (function_definition "int compress_data(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 int *param_5)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  \n  puVar1 = PTR_deflate_000b6720;\n  uVar4 = *param_2;\n  uVar5 = *param_3;\n  param_1[3] = *param_4;\n  param_1[1] = uVar5;\n  *param_1 = uVar4;\n  param_1[4] = *param_5;\n  iVar2 = (*(code *)puVar1)(param_1,0);\n  iVar3 = -1;\n  if (iVar2 == 0) {\n    uVar5 = param_1[1];\n    uVar4 = param_1[3];\n    iVar3 = *param_5;\n    iVar2 = param_1[4];\n    *param_2 = *param_1;\n    *param_3 = uVar5;\n    *param_4 = uVar4;\n    iVar3 = iVar3 - iVar2;\n    *param_5 = param_1[4];\n  }\n  return iVar3;\n}" primitive_type (function_declarator "compress_data(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 int *param_5)" identifier (parameter_list "(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 int *param_5)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  \n  puVar1 = PTR_deflate_000b6720;\n  uVar4 = *param_2;\n  uVar5 = *param_3;\n  param_1[3] = *param_4;\n  param_1[1] = uVar5;\n  *param_1 = uVar4;\n  param_1[4] = *param_5;\n  iVar2 = (*(code *)puVar1)(param_1,0);\n  iVar3 = -1;\n  if (iVar2 == 0) {\n    uVar5 = param_1[1];\n    uVar4 = param_1[3];\n    iVar3 = *param_5;\n    iVar2 = param_1[4];\n    *param_2 = *param_1;\n    *param_3 = uVar5;\n    *param_4 = uVar4;\n    iVar3 = iVar3 - iVar2;\n    *param_5 = param_1[4];\n  }\n  return iVar3;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (expression_statement "puVar1 = PTR_deflate_000b6720;" (assignment_expression "puVar1 = PTR_deflate_000b6720" identifier = identifier) ;) (expression_statement "uVar4 = *param_2;" (assignment_expression "uVar4 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar5 = *param_3;" (assignment_expression "uVar5 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "param_1[3] = *param_4;" (assignment_expression "param_1[3] = *param_4" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "param_1[1] = uVar5;" (assignment_expression "param_1[1] = uVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_1 = uVar4;" (assignment_expression "*param_1 = uVar4" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[4] = *param_5;" (assignment_expression "param_1[4] = *param_5" (subscript_expression "param_1[4]" identifier [ number_literal ]) = (pointer_expression "*param_5" * identifier)) ;) (expression_statement "iVar2 = (*(code *)puVar1)(param_1,0);" (assignment_expression "iVar2 = (*(code *)puVar1)(param_1,0)" identifier = (call_expression "(*(code *)puVar1)(param_1,0)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,0)" ( identifier , number_literal )))) ;) (expression_statement "iVar3 = -1;" (assignment_expression "iVar3 = -1" identifier = number_literal) ;) (if_statement "if (iVar2 == 0) {\n    uVar5 = param_1[1];\n    uVar4 = param_1[3];\n    iVar3 = *param_5;\n    iVar2 = param_1[4];\n    *param_2 = *param_1;\n    *param_3 = uVar5;\n    *param_4 = uVar4;\n    iVar3 = iVar3 - iVar2;\n    *param_5 = param_1[4];\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar5 = param_1[1];\n    uVar4 = param_1[3];\n    iVar3 = *param_5;\n    iVar2 = param_1[4];\n    *param_2 = *param_1;\n    *param_3 = uVar5;\n    *param_4 = uVar4;\n    iVar3 = iVar3 - iVar2;\n    *param_5 = param_1[4];\n  }" { (expression_statement "uVar5 = param_1[1];" (assignment_expression "uVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_1[3];" (assignment_expression "uVar4 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = *param_5;" (assignment_expression "iVar3 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (expression_statement "iVar2 = param_1[4];" (assignment_expression "iVar2 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "*param_2 = *param_1;" (assignment_expression "*param_2 = *param_1" (pointer_expression "*param_2" * identifier) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*param_3 = uVar5;" (assignment_expression "*param_3 = uVar5" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*param_4 = uVar4;" (assignment_expression "*param_4 = uVar4" (pointer_expression "*param_4" * identifier) = identifier) ;) (expression_statement "iVar3 = iVar3 - iVar2;" (assignment_expression "iVar3 = iVar3 - iVar2" identifier = (binary_expression "iVar3 - iVar2" identifier - identifier)) ;) (expression_statement "*param_5 = param_1[4];" (assignment_expression "*param_5 = param_1[4]" (pointer_expression "*param_5" * identifier) = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) })) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) })) (return_statement return IDENT ;) })))
(function_definition "int compress_data(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 int *param_5)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  \n  puVar1 = PTR_deflate_000b6720;\n  uVar4 = *param_2;\n  uVar5 = *param_3;\n  param_1[3] = *param_4;\n  param_1[1] = uVar5;\n  *param_1 = uVar4;\n  param_1[4] = *param_5;\n  iVar2 = (*(code *)puVar1)(param_1,0);\n  iVar3 = -1;\n  if (iVar2 == 0) {\n    uVar5 = param_1[1];\n    uVar4 = param_1[3];\n    iVar3 = *param_5;\n    iVar2 = param_1[4];\n    *param_2 = *param_1;\n    *param_3 = uVar5;\n    *param_4 = uVar4;\n    iVar3 = iVar3 - iVar2;\n    *param_5 = param_1[4];\n  }\n  return iVar3;\n}" (primitive_type "int") (function_declarator "compress_data(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 int *param_5)" (identifier "compress_data") (parameter_list "(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 int *param_5)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 *param_4" (type_identifier "undefined4") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int *param_5" (primitive_type "int") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  \n  puVar1 = PTR_deflate_000b6720;\n  uVar4 = *param_2;\n  uVar5 = *param_3;\n  param_1[3] = *param_4;\n  param_1[1] = uVar5;\n  *param_1 = uVar4;\n  param_1[4] = *param_5;\n  iVar2 = (*(code *)puVar1)(param_1,0);\n  iVar3 = -1;\n  if (iVar2 == 0) {\n    uVar5 = param_1[1];\n    uVar4 = param_1[3];\n    iVar3 = *param_5;\n    iVar2 = param_1[4];\n    *param_2 = *param_1;\n    *param_3 = uVar5;\n    *param_4 = uVar4;\n    iVar3 = iVar3 - iVar2;\n    *param_5 = param_1[4];\n  }\n  return iVar3;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (expression_statement "puVar1 = PTR_deflate_000b6720;" (assignment_expression "puVar1 = PTR_deflate_000b6720" (identifier "puVar1") (= "=") (identifier "PTR_deflate_000b6720")) (; ";")) (expression_statement "uVar4 = *param_2;" (assignment_expression "uVar4 = *param_2" (identifier "uVar4") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "uVar5 = *param_3;" (assignment_expression "uVar5 = *param_3" (identifier "uVar5") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "param_1[3] = *param_4;" (assignment_expression "param_1[3] = *param_4" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) (; ";")) (expression_statement "param_1[1] = uVar5;" (assignment_expression "param_1[1] = uVar5" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*param_1 = uVar4;" (assignment_expression "*param_1 = uVar4" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "param_1[4] = *param_5;" (assignment_expression "param_1[4] = *param_5" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (pointer_expression "*param_5" (* "*") (identifier "param_5"))) (; ";")) (expression_statement "iVar2 = (*(code *)puVar1)(param_1,0);" (assignment_expression "iVar2 = (*(code *)puVar1)(param_1,0)" (identifier "iVar2") (= "=") (call_expression "(*(code *)puVar1)(param_1,0)" (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 "(param_1,0)" (( "(") (identifier "param_1") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "iVar3 = -1;" (assignment_expression "iVar3 = -1" (identifier "iVar3") (= "=") (number_literal "-1")) (; ";")) (if_statement "if (iVar2 == 0) {\n    uVar5 = param_1[1];\n    uVar4 = param_1[3];\n    iVar3 = *param_5;\n    iVar2 = param_1[4];\n    *param_2 = *param_1;\n    *param_3 = uVar5;\n    *param_4 = uVar4;\n    iVar3 = iVar3 - iVar2;\n    *param_5 = param_1[4];\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar5 = param_1[1];\n    uVar4 = param_1[3];\n    iVar3 = *param_5;\n    iVar2 = param_1[4];\n    *param_2 = *param_1;\n    *param_3 = uVar5;\n    *param_4 = uVar4;\n    iVar3 = iVar3 - iVar2;\n    *param_5 = param_1[4];\n  }" ({ "{") (expression_statement "uVar5 = param_1[1];" (assignment_expression "uVar5 = param_1[1]" (identifier "uVar5") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar4 = param_1[3];" (assignment_expression "uVar4 = param_1[3]" (identifier "uVar4") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "iVar3 = *param_5;" (assignment_expression "iVar3 = *param_5" (identifier "iVar3") (= "=") (pointer_expression "*param_5" (* "*") (identifier "param_5"))) (; ";")) (expression_statement "iVar2 = param_1[4];" (assignment_expression "iVar2 = param_1[4]" (identifier "iVar2") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "*param_2 = *param_1;" (assignment_expression "*param_2 = *param_1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*param_3 = uVar5;" (assignment_expression "*param_3 = uVar5" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*param_4 = uVar4;" (assignment_expression "*param_4 = uVar4" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "iVar3 = iVar3 - iVar2;" (assignment_expression "iVar3 = iVar3 - iVar2" (identifier "iVar3") (= "=") (binary_expression "iVar3 - iVar2" (identifier "iVar3") (- "-") (identifier "iVar2"))) (; ";")) (expression_statement "*param_5 = param_1[4];" (assignment_expression "*param_5 = param_1[4]" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}"))) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (return_statement (identifier)))))

int MASKED(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,
                 int *param_5)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  
  puVar1 = PTR_deflate_000b6720;
  uVar4 = *param_2;
  uVar5 = *param_3;
  param_1[3] = *param_4;
  param_1[1] = uVar5;
  *param_1 = uVar4;
  param_1[4] = *param_5;
  iVar2 = (*(code *)puVar1)(param_1,0);
  iVar3 = -1;
  if (iVar2 == 0) {
    uVar5 = param_1[1];
    uVar4 = param_1[3];
    iVar3 = *param_5;
    iVar2 = param_1[4];
    *param_2 = *param_1;
    *param_3 = uVar5;
    *param_4 = uVar4;
    iVar3 = iVar3 - iVar2;
    *param_5 = param_1[4];
  }
  return iVar3;
}

