
int md5_stream(FILE *stream,void *resblock)

{
  int iVar1;
  uint len;
  char buffer [4168];
  md5_ctx ctx;
  
  ctx.A = 0x67452301;
  ctx.B = 0xefcdab89;
  ctx.C = 0x98badcfe;
  ctx.total[1] = 0;
  ctx.total[0] = 0;
  ctx.buflen = 0;
  ctx.D = 0x10325476;
  do {
    len = 0;
    while( true ) {
      iVar1 = (*(code *)PTR_fread_004c5aa4)(buffer + len,1,0x1000 - len,stream);
      len = len + iVar1;
      if (0xfff < len) break;
      if (iVar1 == 0) {
        iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);
        if (iVar1 != 0) {
          return 1;
        }
        if (len != 0) goto LAB_003277cc;
        goto LAB_0032774c;
      }
    }
    if (iVar1 == 0) {
      iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);
      if (iVar1 != 0) {
        return 1;
      }
LAB_003277cc:
      md5_process_bytes(buffer,len,&ctx);
LAB_0032774c:
      md5_finish_ctx(&ctx,resblock);
      return 0;
    }
    md5_process_block(buffer,0x1000,&ctx);
  } while( true );
}



undefined4 FUN_00327650(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  uint uVar2;
  undefined1 auStack_1108 [4168];
  undefined4 local_c0;
  undefined4 local_bc;
  undefined4 local_b8;
  undefined4 local_b4;
  undefined4 local_b0;
  undefined4 local_ac;
  undefined4 local_a8;
  
  local_c0 = 0x67452301;
  local_bc = 0xefcdab89;
  local_b8 = 0x98badcfe;
  local_ac = 0;
  local_b0 = 0;
  local_a8 = 0;
  local_b4 = 0x10325476;
  do {
    uVar2 = 0;
    while( true ) {
      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);
      uVar2 = uVar2 + iVar1;
      if (0xfff < uVar2) break;
      if (iVar1 == 0) {
        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);
        if (iVar1 != 0) {
          return 1;
        }
        if (uVar2 != 0) goto LAB_003277cc;
        goto LAB_0032774c;
      }
    }
    if (iVar1 == 0) {
      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);
      if (iVar1 != 0) {
        return 1;
      }
LAB_003277cc:
      md5_process_bytes(auStack_1108,uVar2,&local_c0);
LAB_0032774c:
      md5_finish_ctx(&local_c0,param_2);
      return 0;
    }
    md5_process_block(auStack_1108,0x1000,&local_c0);
  } while( true );
}


lui gp,0x1a
addiu gp,gp,0x1bf0
addu gp,gp,t9
lui v0,0x6745
addiu sp,sp,-0x1120
addiu v0,v0,0x2301
sw v0,0x1060(sp)
lui v0,0xefcd
sw s4,0x1110(sp)
ori v0,v0,0xab89
sw s6,0x1118(sp)
sw v0,0x1064(sp)
lui v0,0x98ba
sw s3,0x110c(sp)
addiu s6,sp,0x1060
ori v0,v0,0xdcfe
sw s1,0x1104(sp)
sw v0,0x1068(sp)
lui v0,0x1032
sw s5,0x1114(sp)
addiu s1,sp,0x18
addiu v0,v0,0x5476
sw s2,0x1108(sp)
sw gp,0x10(sp)
li s3,0x1000
sw ra,0x111c(sp)
or s2,a0,zero
sw s0,0x1100(sp)
or s5,a1,zero
sw zero,0x1074(sp)
sw zero,0x1070(sp)
sw zero,0x1078(sp)
sw v0,0x106c(sp)
lw s4,-0x41d8(gp)
b 0x003276e8
_or s0,zero,zero
beq v0,zero,0x00327730
_lw t9,-0x37c4(gp)
lw t9,-0x379c(gp)
subu a2,s3,s0
addu a0,s1,s0
li a1,0x1
jalr t9
_or a3,s2,zero
addu s0,s0,v0
sltiu v1,s0,0x1000
bne v1,zero,0x003276e0
_lw gp,0x10(sp)
beq v0,zero,0x00327788
_li a1,0x1000
or a2,s6,zero
or t9,s4,zero
bal 0x003265e0
_or a0,s1,zero
b 0x003276d8
_lw gp,0x10(sp)
jalr t9
_or a0,s2,zero
bne v0,zero,0x0032779c
_lw gp,0x10(sp)
bne s0,zero,0x003277cc
_lw t9,-0x41d0(gp)
addiu s2,sp,0x1060
lw t9,-0x41cc(gp)
or a1,s5,zero
bal 0x00327220
_or a0,s2,zero
or v0,zero,zero
lw ra,0x111c(sp)
lw s6,0x1118(sp)
lw s5,0x1114(sp)
lw s4,0x1110(sp)
lw s3,0x110c(sp)
lw s2,0x1108(sp)
lw s1,0x1104(sp)
lw s0,0x1100(sp)
jr ra
_addiu sp,sp,0x1120
lw t9,-0x37c4(gp)
jalr t9
_or a0,s2,zero
beq v0,zero,0x003277c8
_lw gp,0x10(sp)
lw ra,0x111c(sp)
li v0,0x1
lw s6,0x1118(sp)
lw s5,0x1114(sp)
lw s4,0x1110(sp)
lw s3,0x110c(sp)
lw s2,0x1108(sp)
lw s1,0x1104(sp)
lw s0,0x1100(sp)
jr ra
_addiu sp,sp,0x1120
lw t9,-0x41d0(gp)
addiu s2,sp,0x1060
or a1,s0,zero
or a2,s2,zero
bal 0x00327374
_or a0,s1,zero
b 0x0032774c
_lw gp,0x10(sp)
(translation_unit "undefined4 FUN_00327650(undefined4 param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined1 auStack_1108 [4168];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined4 local_b8;\n  undefined4 local_b4;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  \n  local_c0 = 0x67452301;\n  local_bc = 0xefcdab89;\n  local_b8 = 0x98badcfe;\n  local_ac = 0;\n  local_b0 = 0;\n  local_a8 = 0;\n  local_b4 = 0x10325476;\n  do {\n    uVar2 = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }\n    md5_process_block(auStack_1108,0x1000,&local_c0);\n  } while( true );\n}\n\n" (function_definition "undefined4 FUN_00327650(undefined4 param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined1 auStack_1108 [4168];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined4 local_b8;\n  undefined4 local_b4;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  \n  local_c0 = 0x67452301;\n  local_bc = 0xefcdab89;\n  local_b8 = 0x98badcfe;\n  local_ac = 0;\n  local_b0 = 0;\n  local_a8 = 0;\n  local_b4 = 0x10325476;\n  do {\n    uVar2 = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }\n    md5_process_block(auStack_1108,0x1000,&local_c0);\n  } while( true );\n}" type_identifier (function_declarator "FUN_00327650(undefined4 param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  undefined1 auStack_1108 [4168];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined4 local_b8;\n  undefined4 local_b4;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  \n  local_c0 = 0x67452301;\n  local_bc = 0xefcdab89;\n  local_b8 = 0x98badcfe;\n  local_ac = 0;\n  local_b0 = 0;\n  local_a8 = 0;\n  local_b4 = 0x10325476;\n  do {\n    uVar2 = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }\n    md5_process_block(auStack_1108,0x1000,&local_c0);\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined1 auStack_1108 [4168];" type_identifier (array_declarator "auStack_1108 [4168]" identifier [ number_literal ]) ;) (declaration "undefined4 local_c0;" type_identifier identifier ;) (declaration "undefined4 local_bc;" type_identifier identifier ;) (declaration "undefined4 local_b8;" type_identifier identifier ;) (declaration "undefined4 local_b4;" type_identifier identifier ;) (declaration "undefined4 local_b0;" type_identifier identifier ;) (declaration "undefined4 local_ac;" type_identifier identifier ;) (declaration "undefined4 local_a8;" type_identifier identifier ;) (expression_statement "local_c0 = 0x67452301;" (assignment_expression "local_c0 = 0x67452301" identifier = number_literal) ;) (expression_statement "local_bc = 0xefcdab89;" (assignment_expression "local_bc = 0xefcdab89" identifier = number_literal) ;) (expression_statement "local_b8 = 0x98badcfe;" (assignment_expression "local_b8 = 0x98badcfe" identifier = number_literal) ;) (expression_statement "local_ac = 0;" (assignment_expression "local_ac = 0" identifier = number_literal) ;) (expression_statement "local_b0 = 0;" (assignment_expression "local_b0 = 0" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (expression_statement "local_b4 = 0x10325476;" (assignment_expression "local_b4 = 0x10325476" identifier = number_literal) ;) (do_statement "do {\n    uVar2 = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }\n    md5_process_block(auStack_1108,0x1000,&local_c0);\n  } while( true );" do (compound_statement "{\n    uVar2 = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }\n    md5_process_block(auStack_1108,0x1000,&local_c0);\n  }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }" { (expression_statement "iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);" (assignment_expression "iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1)" identifier = (call_expression "(*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1)" (parenthesized_expression "(*(code *)PTR_fread_004c5aa4)" ( (pointer_expression "*(code *)PTR_fread_004c5aa4" * (cast_expression "(code *)PTR_fread_004c5aa4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1)" ( (binary_expression "auStack_1108 + uVar2" identifier + identifier) , number_literal , (binary_expression "0x1000 - uVar2" number_literal - identifier) , identifier )))) ;) (expression_statement "uVar2 = uVar2 + iVar1;" (assignment_expression "uVar2 = uVar2 + iVar1" identifier = (binary_expression "uVar2 + iVar1" identifier + identifier)) ;) (if_statement "if (0xfff < uVar2) break;" if (parenthesized_expression "(0xfff < uVar2)" ( (binary_expression "0xfff < uVar2" number_literal < identifier) )) (break_statement "break;" break ;)) (if_statement "if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }" { (expression_statement "iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);" (assignment_expression "iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1)" identifier = (call_expression "(*(code *)PTR_ferror_004c5a7c)(param_1)" (parenthesized_expression "(*(code *)PTR_ferror_004c5a7c)" ( (pointer_expression "*(code *)PTR_ferror_004c5a7c" * (cast_expression "(code *)PTR_ferror_004c5a7c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar1 != 0) {\n          return 1;\n        }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          return 1;\n        }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (uVar2 != 0) goto LAB_003277cc;" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_003277cc;" goto statement_identifier ;)) (goto_statement "goto LAB_0032774c;" goto statement_identifier ;) })) })) (if_statement "if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }" { (expression_statement "iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);" (assignment_expression "iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000)" identifier = (call_expression "(*(code *)PTR_ferror_004c5a7c)(param_1,0x1000)" (parenthesized_expression "(*(code *)PTR_ferror_004c5a7c)" ( (pointer_expression "*(code *)PTR_ferror_004c5a7c" * (cast_expression "(code *)PTR_ferror_004c5a7c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,0x1000)" ( identifier , number_literal )))) ;) (if_statement "if (iVar1 != 0) {\n        return 1;\n      }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (labeled_statement "LAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);" statement_identifier : (expression_statement "md5_process_bytes(auStack_1108,uVar2,&local_c0);" (call_expression "md5_process_bytes(auStack_1108,uVar2,&local_c0)" identifier (argument_list "(auStack_1108,uVar2,&local_c0)" ( identifier , identifier , (pointer_expression "&local_c0" & identifier) ))) ;)) (labeled_statement "LAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);" statement_identifier : (expression_statement "md5_finish_ctx(&local_c0,param_2);" (call_expression "md5_finish_ctx(&local_c0,param_2)" identifier (argument_list "(&local_c0,param_2)" ( (pointer_expression "&local_c0" & identifier) , identifier ))) ;)) (return_statement "return 0;" return number_literal ;) })) (expression_statement "md5_process_block(auStack_1108,0x1000,&local_c0);" (call_expression "md5_process_block(auStack_1108,0x1000,&local_c0)" identifier (argument_list "(auStack_1108,0x1000,&local_c0)" ( identifier , number_literal , (pointer_expression "&local_c0" & identifier) ))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "int md5_stream(FILE *stream,void *resblock)\n\n{\n  int iVar1;\n  uint len;\n  char buffer [4168];\n  md5_ctx ctx;\n  \n  ctx.A = 0x67452301;\n  ctx.B = 0xefcdab89;\n  ctx.C = 0x98badcfe;\n  ctx.total[1] = 0;\n  ctx.total[0] = 0;\n  ctx.buflen = 0;\n  ctx.D = 0x10325476;\n  do {\n    len = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(buffer + len,1,0x1000 - len,stream);\n      len = len + iVar1;\n      if (0xfff < len) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (len != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(buffer,len,&ctx);\nLAB_0032774c:\n      md5_finish_ctx(&ctx,resblock);\n      return 0;\n    }\n    md5_process_block(buffer,0x1000,&ctx);\n  } while( true );\n}\n\n" (function_definition "int md5_stream(FILE *stream,void *resblock)\n\n{\n  int iVar1;\n  uint len;\n  char buffer [4168];\n  md5_ctx ctx;\n  \n  ctx.A = 0x67452301;\n  ctx.B = 0xefcdab89;\n  ctx.C = 0x98badcfe;\n  ctx.total[1] = 0;\n  ctx.total[0] = 0;\n  ctx.buflen = 0;\n  ctx.D = 0x10325476;\n  do {\n    len = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(buffer + len,1,0x1000 - len,stream);\n      len = len + iVar1;\n      if (0xfff < len) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (len != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(buffer,len,&ctx);\nLAB_0032774c:\n      md5_finish_ctx(&ctx,resblock);\n      return 0;\n    }\n    md5_process_block(buffer,0x1000,&ctx);\n  } while( true );\n}" primitive_type (function_declarator "md5_stream(FILE *stream,void *resblock)" identifier (parameter_list "(FILE *stream,void *resblock)" ( (parameter_declaration "FILE *stream" type_identifier (pointer_declarator "*stream" * identifier)) , (parameter_declaration "void *resblock" primitive_type (pointer_declarator "*resblock" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint len;\n  char buffer [4168];\n  md5_ctx ctx;\n  \n  ctx.A = 0x67452301;\n  ctx.B = 0xefcdab89;\n  ctx.C = 0x98badcfe;\n  ctx.total[1] = 0;\n  ctx.total[0] = 0;\n  ctx.buflen = 0;\n  ctx.D = 0x10325476;\n  do {\n    len = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(buffer + len,1,0x1000 - len,stream);\n      len = len + iVar1;\n      if (0xfff < len) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (len != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(buffer,len,&ctx);\nLAB_0032774c:\n      md5_finish_ctx(&ctx,resblock);\n      return 0;\n    }\n    md5_process_block(buffer,0x1000,&ctx);\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint len;" type_identifier identifier ;) (declaration "char buffer [4168];" primitive_type (array_declarator "buffer [4168]" identifier [ number_literal ]) ;) (declaration "md5_ctx ctx;" type_identifier identifier ;) (expression_statement "ctx.A = 0x67452301;" (assignment_expression "ctx.A = 0x67452301" (field_expression "ctx.A" identifier . field_identifier) = number_literal) ;) (expression_statement "ctx.B = 0xefcdab89;" (assignment_expression "ctx.B = 0xefcdab89" (field_expression "ctx.B" identifier . field_identifier) = number_literal) ;) (expression_statement "ctx.C = 0x98badcfe;" (assignment_expression "ctx.C = 0x98badcfe" (field_expression "ctx.C" identifier . field_identifier) = number_literal) ;) (expression_statement "ctx.total[1] = 0;" (assignment_expression "ctx.total[1] = 0" (subscript_expression "ctx.total[1]" (field_expression "ctx.total" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "ctx.total[0] = 0;" (assignment_expression "ctx.total[0] = 0" (subscript_expression "ctx.total[0]" (field_expression "ctx.total" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "ctx.buflen = 0;" (assignment_expression "ctx.buflen = 0" (field_expression "ctx.buflen" identifier . field_identifier) = number_literal) ;) (expression_statement "ctx.D = 0x10325476;" (assignment_expression "ctx.D = 0x10325476" (field_expression "ctx.D" identifier . field_identifier) = number_literal) ;) (do_statement "do {\n    len = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(buffer + len,1,0x1000 - len,stream);\n      len = len + iVar1;\n      if (0xfff < len) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (len != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(buffer,len,&ctx);\nLAB_0032774c:\n      md5_finish_ctx(&ctx,resblock);\n      return 0;\n    }\n    md5_process_block(buffer,0x1000,&ctx);\n  } while( true );" do (compound_statement "{\n    len = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(buffer + len,1,0x1000 - len,stream);\n      len = len + iVar1;\n      if (0xfff < len) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (len != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(buffer,len,&ctx);\nLAB_0032774c:\n      md5_finish_ctx(&ctx,resblock);\n      return 0;\n    }\n    md5_process_block(buffer,0x1000,&ctx);\n  }" { (expression_statement "len = 0;" (assignment_expression "len = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(buffer + len,1,0x1000 - len,stream);\n      len = len + iVar1;\n      if (0xfff < len) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (len != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(buffer + len,1,0x1000 - len,stream);\n      len = len + iVar1;\n      if (0xfff < len) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (len != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }" { (expression_statement "iVar1 = (*(code *)PTR_fread_004c5aa4)(buffer + len,1,0x1000 - len,stream);" (assignment_expression "iVar1 = (*(code *)PTR_fread_004c5aa4)(buffer + len,1,0x1000 - len,stream)" identifier = (call_expression "(*(code *)PTR_fread_004c5aa4)(buffer + len,1,0x1000 - len,stream)" (parenthesized_expression "(*(code *)PTR_fread_004c5aa4)" ( (pointer_expression "*(code *)PTR_fread_004c5aa4" * (cast_expression "(code *)PTR_fread_004c5aa4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(buffer + len,1,0x1000 - len,stream)" ( (binary_expression "buffer + len" identifier + identifier) , number_literal , (binary_expression "0x1000 - len" number_literal - identifier) , identifier )))) ;) (expression_statement "len = len + iVar1;" (assignment_expression "len = len + iVar1" identifier = (binary_expression "len + iVar1" identifier + identifier)) ;) (if_statement "if (0xfff < len) break;" if (parenthesized_expression "(0xfff < len)" ( (binary_expression "0xfff < len" number_literal < identifier) )) (break_statement "break;" break ;)) (if_statement "if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (len != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (len != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }" { (expression_statement "iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);" (assignment_expression "iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream)" identifier = (call_expression "(*(code *)PTR_ferror_004c5a7c)(stream)" (parenthesized_expression "(*(code *)PTR_ferror_004c5a7c)" ( (pointer_expression "*(code *)PTR_ferror_004c5a7c" * (cast_expression "(code *)PTR_ferror_004c5a7c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(stream)" ( identifier )))) ;) (if_statement "if (iVar1 != 0) {\n          return 1;\n        }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          return 1;\n        }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (len != 0) goto LAB_003277cc;" if (parenthesized_expression "(len != 0)" ( (binary_expression "len != 0" identifier != number_literal) )) (goto_statement "goto LAB_003277cc;" goto statement_identifier ;)) (goto_statement "goto LAB_0032774c;" goto statement_identifier ;) })) })) (if_statement "if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(buffer,len,&ctx);\nLAB_0032774c:\n      md5_finish_ctx(&ctx,resblock);\n      return 0;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(buffer,len,&ctx);\nLAB_0032774c:\n      md5_finish_ctx(&ctx,resblock);\n      return 0;\n    }" { (expression_statement "iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream);" (assignment_expression "iVar1 = (*(code *)PTR_ferror_004c5a7c)(stream)" identifier = (call_expression "(*(code *)PTR_ferror_004c5a7c)(stream)" (parenthesized_expression "(*(code *)PTR_ferror_004c5a7c)" ( (pointer_expression "*(code *)PTR_ferror_004c5a7c" * (cast_expression "(code *)PTR_ferror_004c5a7c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(stream)" ( identifier )))) ;) (if_statement "if (iVar1 != 0) {\n        return 1;\n      }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (labeled_statement "LAB_003277cc:\n      md5_process_bytes(buffer,len,&ctx);" statement_identifier : (expression_statement "md5_process_bytes(buffer,len,&ctx);" (call_expression "md5_process_bytes(buffer,len,&ctx)" identifier (argument_list "(buffer,len,&ctx)" ( identifier , identifier , (pointer_expression "&ctx" & identifier) ))) ;)) (labeled_statement "LAB_0032774c:\n      md5_finish_ctx(&ctx,resblock);" statement_identifier : (expression_statement "md5_finish_ctx(&ctx,resblock);" (call_expression "md5_finish_ctx(&ctx,resblock)" identifier (argument_list "(&ctx,resblock)" ( (pointer_expression "&ctx" & identifier) , identifier ))) ;)) (return_statement "return 0;" return number_literal ;) })) (expression_statement "md5_process_block(buffer,0x1000,&ctx);" (call_expression "md5_process_block(buffer,0x1000,&ctx)" identifier (argument_list "(buffer,0x1000,&ctx)" ( identifier , number_literal , (pointer_expression "&ctx" & identifier) ))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "undefined4 FUN_00327650(undefined4 param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined1 auStack_1108 [4168];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined4 local_b8;\n  undefined4 local_b4;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  \n  local_c0 = 0x67452301;\n  local_bc = 0xefcdab89;\n  local_b8 = 0x98badcfe;\n  local_ac = 0;\n  local_b0 = 0;\n  local_a8 = 0;\n  local_b4 = 0x10325476;\n  do {\n    uVar2 = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }\n    md5_process_block(auStack_1108,0x1000,&local_c0);\n  } while( true );\n}\n\n" (function_definition "undefined4 FUN_00327650(undefined4 param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined1 auStack_1108 [4168];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined4 local_b8;\n  undefined4 local_b4;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  \n  local_c0 = 0x67452301;\n  local_bc = 0xefcdab89;\n  local_b8 = 0x98badcfe;\n  local_ac = 0;\n  local_b0 = 0;\n  local_a8 = 0;\n  local_b4 = 0x10325476;\n  do {\n    uVar2 = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }\n    md5_process_block(auStack_1108,0x1000,&local_c0);\n  } while( true );\n}" type_identifier (function_declarator "FUN_00327650(undefined4 param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  undefined1 auStack_1108 [4168];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined4 local_b8;\n  undefined4 local_b4;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  \n  local_c0 = 0x67452301;\n  local_bc = 0xefcdab89;\n  local_b8 = 0x98badcfe;\n  local_ac = 0;\n  local_b0 = 0;\n  local_a8 = 0;\n  local_b4 = 0x10325476;\n  do {\n    uVar2 = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }\n    md5_process_block(auStack_1108,0x1000,&local_c0);\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined1 auStack_1108 [4168];" type_identifier (array_declarator "auStack_1108 [4168]" identifier [ number_literal ]) ;) (declaration "undefined4 local_c0;" type_identifier identifier ;) (declaration "undefined4 local_bc;" type_identifier identifier ;) (declaration "undefined4 local_b8;" type_identifier identifier ;) (declaration "undefined4 local_b4;" type_identifier identifier ;) (declaration "undefined4 local_b0;" type_identifier identifier ;) (declaration "undefined4 local_ac;" type_identifier identifier ;) (declaration "undefined4 local_a8;" type_identifier identifier ;) (expression_statement "local_c0 = 0x67452301;" (assignment_expression "local_c0 = 0x67452301" identifier = number_literal) ;) (expression_statement "local_bc = 0xefcdab89;" (assignment_expression "local_bc = 0xefcdab89" identifier = number_literal) ;) (expression_statement "local_b8 = 0x98badcfe;" (assignment_expression "local_b8 = 0x98badcfe" identifier = number_literal) ;) (expression_statement "local_ac = 0;" (assignment_expression "local_ac = 0" identifier = number_literal) ;) (expression_statement "local_b0 = 0;" (assignment_expression "local_b0 = 0" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (expression_statement "local_b4 = 0x10325476;" (assignment_expression "local_b4 = 0x10325476" identifier = number_literal) ;) (do_statement "do {\n    uVar2 = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }\n    md5_process_block(auStack_1108,0x1000,&local_c0);\n  } while( true );" do (compound_statement "{\n    uVar2 = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }\n    md5_process_block(auStack_1108,0x1000,&local_c0);\n  }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }" { (expression_statement "iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);" (assignment_expression "iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1)" identifier = (call_expression "(*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1)" (parenthesized_expression "(*(code *)PTR_fread_004c5aa4)" ( (pointer_expression "*(code *)PTR_fread_004c5aa4" * (cast_expression "(code *)PTR_fread_004c5aa4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1)" ( (binary_expression "auStack_1108 + uVar2" identifier + identifier) , number_literal , (binary_expression "0x1000 - uVar2" number_literal - identifier) , identifier )))) ;) (expression_statement "uVar2 = uVar2 + iVar1;" (assignment_expression "uVar2 = uVar2 + iVar1" identifier = (binary_expression "uVar2 + iVar1" identifier + identifier)) ;) (if_statement "if (0xfff < uVar2) break;" if (parenthesized_expression "(0xfff < uVar2)" ( (binary_expression "0xfff < uVar2" number_literal < identifier) )) (break_statement "break;" break ;)) (if_statement "if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }" { (expression_statement "iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);" (assignment_expression "iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1)" identifier = (call_expression "(*(code *)PTR_ferror_004c5a7c)(param_1)" (parenthesized_expression "(*(code *)PTR_ferror_004c5a7c)" ( (pointer_expression "*(code *)PTR_ferror_004c5a7c" * (cast_expression "(code *)PTR_ferror_004c5a7c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar1 != 0) {\n          return 1;\n        }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          return 1;\n        }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (uVar2 != 0) goto LAB_003277cc;" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_003277cc;" goto statement_identifier ;)) (goto_statement "goto LAB_0032774c;" goto statement_identifier ;) })) })) (if_statement "if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }" { (expression_statement "iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);" (assignment_expression "iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000)" identifier = (call_expression "(*(code *)PTR_ferror_004c5a7c)(param_1,0x1000)" (parenthesized_expression "(*(code *)PTR_ferror_004c5a7c)" ( (pointer_expression "*(code *)PTR_ferror_004c5a7c" * (cast_expression "(code *)PTR_ferror_004c5a7c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,0x1000)" ( identifier , number_literal )))) ;) (if_statement "if (iVar1 != 0) {\n        return 1;\n      }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (labeled_statement "LAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);" statement_identifier : (expression_statement "md5_process_bytes(auStack_1108,uVar2,&local_c0);" (call_expression "md5_process_bytes(auStack_1108,uVar2,&local_c0)" identifier (argument_list "(auStack_1108,uVar2,&local_c0)" ( identifier , identifier , (pointer_expression "&local_c0" & identifier) ))) ;)) (labeled_statement "LAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);" statement_identifier : (expression_statement "md5_finish_ctx(&local_c0,param_2);" (call_expression "md5_finish_ctx(&local_c0,param_2)" identifier (argument_list "(&local_c0,param_2)" ( (pointer_expression "&local_c0" & identifier) , identifier ))) ;)) (return_statement "return 0;" return number_literal ;) })) (expression_statement "md5_process_block(auStack_1108,0x1000,&local_c0);" (call_expression "md5_process_block(auStack_1108,0x1000,&local_c0)" identifier (argument_list "(auStack_1108,0x1000,&local_c0)" ( identifier , number_literal , (pointer_expression "&local_c0" & identifier) ))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + IDENT) , LIT , (binary_expression LIT - IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) ))) ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT ))) ;)) (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (pointer_expression & IDENT) ))) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "undefined4 FUN_00327650(undefined4 param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined1 auStack_1108 [4168];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined4 local_b8;\n  undefined4 local_b4;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  \n  local_c0 = 0x67452301;\n  local_bc = 0xefcdab89;\n  local_b8 = 0x98badcfe;\n  local_ac = 0;\n  local_b0 = 0;\n  local_a8 = 0;\n  local_b4 = 0x10325476;\n  do {\n    uVar2 = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }\n    md5_process_block(auStack_1108,0x1000,&local_c0);\n  } while( true );\n}" (type_identifier "undefined4") (function_declarator "FUN_00327650(undefined4 param_1,undefined4 param_2)" (identifier "FUN_00327650") (parameter_list "(undefined4 param_1,undefined4 param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  undefined1 auStack_1108 [4168];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined4 local_b8;\n  undefined4 local_b4;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  \n  local_c0 = 0x67452301;\n  local_bc = 0xefcdab89;\n  local_b8 = 0x98badcfe;\n  local_ac = 0;\n  local_b0 = 0;\n  local_a8 = 0;\n  local_b4 = 0x10325476;\n  do {\n    uVar2 = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }\n    md5_process_block(auStack_1108,0x1000,&local_c0);\n  } while( true );\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "undefined1 auStack_1108 [4168];" (type_identifier "undefined1") (array_declarator "auStack_1108 [4168]" (identifier "auStack_1108") ([ "[") (number_literal "4168") (] "]")) (; ";")) (declaration "undefined4 local_c0;" (type_identifier "undefined4") (identifier "local_c0") (; ";")) (declaration "undefined4 local_bc;" (type_identifier "undefined4") (identifier "local_bc") (; ";")) (declaration "undefined4 local_b8;" (type_identifier "undefined4") (identifier "local_b8") (; ";")) (declaration "undefined4 local_b4;" (type_identifier "undefined4") (identifier "local_b4") (; ";")) (declaration "undefined4 local_b0;" (type_identifier "undefined4") (identifier "local_b0") (; ";")) (declaration "undefined4 local_ac;" (type_identifier "undefined4") (identifier "local_ac") (; ";")) (declaration "undefined4 local_a8;" (type_identifier "undefined4") (identifier "local_a8") (; ";")) (expression_statement "local_c0 = 0x67452301;" (assignment_expression "local_c0 = 0x67452301" (identifier "local_c0") (= "=") (number_literal "0x67452301")) (; ";")) (expression_statement "local_bc = 0xefcdab89;" (assignment_expression "local_bc = 0xefcdab89" (identifier "local_bc") (= "=") (number_literal "0xefcdab89")) (; ";")) (expression_statement "local_b8 = 0x98badcfe;" (assignment_expression "local_b8 = 0x98badcfe" (identifier "local_b8") (= "=") (number_literal "0x98badcfe")) (; ";")) (expression_statement "local_ac = 0;" (assignment_expression "local_ac = 0" (identifier "local_ac") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_b0 = 0;" (assignment_expression "local_b0 = 0" (identifier "local_b0") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_b4 = 0x10325476;" (assignment_expression "local_b4 = 0x10325476" (identifier "local_b4") (= "=") (number_literal "0x10325476")) (; ";")) (do_statement "do {\n    uVar2 = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }\n    md5_process_block(auStack_1108,0x1000,&local_c0);\n  } while( true );" (do "do") (compound_statement "{\n    uVar2 = 0;\n    while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }\n    if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }\n    md5_process_block(auStack_1108,0x1000,&local_c0);\n  }" ({ "{") (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (while_statement "while( true ) {\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);\n      uVar2 = uVar2 + iVar1;\n      if (0xfff < uVar2) break;\n      if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }\n    }" ({ "{") (expression_statement "iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);" (assignment_expression "iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1)" (identifier "iVar1") (= "=") (call_expression "(*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1)" (parenthesized_expression "(*(code *)PTR_fread_004c5aa4)" (( "(") (pointer_expression "*(code *)PTR_fread_004c5aa4" (* "*") (cast_expression "(code *)PTR_fread_004c5aa4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_fread_004c5aa4"))) () ")")) (argument_list "(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1)" (( "(") (binary_expression "auStack_1108 + uVar2" (identifier "auStack_1108") (+ "+") (identifier "uVar2")) (, ",") (number_literal "1") (, ",") (binary_expression "0x1000 - uVar2" (number_literal "0x1000") (- "-") (identifier "uVar2")) (, ",") (identifier "param_1") () ")")))) (; ";")) (expression_statement "uVar2 = uVar2 + iVar1;" (assignment_expression "uVar2 = uVar2 + iVar1" (identifier "uVar2") (= "=") (binary_expression "uVar2 + iVar1" (identifier "uVar2") (+ "+") (identifier "iVar1"))) (; ";")) (if_statement "if (0xfff < uVar2) break;" (if "if") (parenthesized_expression "(0xfff < uVar2)" (( "(") (binary_expression "0xfff < uVar2" (number_literal "0xfff") (< "<") (identifier "uVar2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (iVar1 == 0) {\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);\n        if (iVar1 != 0) {\n          return 1;\n        }\n        if (uVar2 != 0) goto LAB_003277cc;\n        goto LAB_0032774c;\n      }" ({ "{") (expression_statement "iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);" (assignment_expression "iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1)" (identifier "iVar1") (= "=") (call_expression "(*(code *)PTR_ferror_004c5a7c)(param_1)" (parenthesized_expression "(*(code *)PTR_ferror_004c5a7c)" (( "(") (pointer_expression "*(code *)PTR_ferror_004c5a7c" (* "*") (cast_expression "(code *)PTR_ferror_004c5a7c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_ferror_004c5a7c"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar1 != 0) {\n          return 1;\n        }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          return 1;\n        }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (if_statement "if (uVar2 != 0) goto LAB_003277cc;" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_003277cc;" (goto "goto") (statement_identifier "LAB_003277cc") (; ";"))) (goto_statement "goto LAB_0032774c;" (goto "goto") (statement_identifier "LAB_0032774c") (; ";")) (} "}"))) (} "}"))) (if_statement "if (iVar1 == 0) {\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);\n      if (iVar1 != 0) {\n        return 1;\n      }\nLAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);\nLAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);\n      return 0;\n    }" ({ "{") (expression_statement "iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);" (assignment_expression "iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000)" (identifier "iVar1") (= "=") (call_expression "(*(code *)PTR_ferror_004c5a7c)(param_1,0x1000)" (parenthesized_expression "(*(code *)PTR_ferror_004c5a7c)" (( "(") (pointer_expression "*(code *)PTR_ferror_004c5a7c" (* "*") (cast_expression "(code *)PTR_ferror_004c5a7c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_ferror_004c5a7c"))) () ")")) (argument_list "(param_1,0x1000)" (( "(") (identifier "param_1") (, ",") (number_literal "0x1000") () ")")))) (; ";")) (if_statement "if (iVar1 != 0) {\n        return 1;\n      }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (labeled_statement "LAB_003277cc:\n      md5_process_bytes(auStack_1108,uVar2,&local_c0);" (statement_identifier "LAB_003277cc") (: ":") (expression_statement "md5_process_bytes(auStack_1108,uVar2,&local_c0);" (call_expression "md5_process_bytes(auStack_1108,uVar2,&local_c0)" (identifier "md5_process_bytes") (argument_list "(auStack_1108,uVar2,&local_c0)" (( "(") (identifier "auStack_1108") (, ",") (identifier "uVar2") (, ",") (pointer_expression "&local_c0" (& "&") (identifier "local_c0")) () ")"))) (; ";"))) (labeled_statement "LAB_0032774c:\n      md5_finish_ctx(&local_c0,param_2);" (statement_identifier "LAB_0032774c") (: ":") (expression_statement "md5_finish_ctx(&local_c0,param_2);" (call_expression "md5_finish_ctx(&local_c0,param_2)" (identifier "md5_finish_ctx") (argument_list "(&local_c0,param_2)" (( "(") (pointer_expression "&local_c0" (& "&") (identifier "local_c0")) (, ",") (identifier "param_2") () ")"))) (; ";"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "md5_process_block(auStack_1108,0x1000,&local_c0);" (call_expression "md5_process_block(auStack_1108,0x1000,&local_c0)" (identifier "md5_process_block") (argument_list "(auStack_1108,0x1000,&local_c0)" (( "(") (identifier "auStack_1108") (, ",") (number_literal "0x1000") (, ",") (pointer_expression "&local_c0" (& "&") (identifier "local_c0")) () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

int function_1(type_1 *stream,void *resblock)

{
  int var_3;
  type_2 var_2;
  char var_1 [4168];
  type_3 ctx;
  
  ctx.A = 0x67452301;
  ctx.B = 0xefcdab89;
  ctx.C = 0x98badcfe;
  ctx.total[1] = 0;
  ctx.total[0] = 0;
  ctx.buflen = 0;
  ctx.D = 0x10325476;
  do {
    var_2 = 0;
    while( true ) {
      var_3 = (*(type_4 *)PTR_fread_004c5aa4)(var_1 + var_2,1,0x1000 - var_2,stream);
      var_2 = var_2 + var_3;
      if (0xfff < var_2) break;
      if (var_3 == 0) {
        var_3 = (*(type_4 *)PTR_ferror_004c5a7c)(stream);
        if (var_3 != 0) {
          return 1;
        }
        if (var_2 != 0) goto LAB_003277cc;
        goto LAB_0032774c;
      }
    }
    if (var_3 == 0) {
      var_3 = (*(type_4 *)PTR_ferror_004c5a7c)(stream);
      if (var_3 != 0) {
        return 1;
      }
LAB_003277cc:
      var_4(var_1,var_2,&ctx);
LAB_0032774c:
      var_5(&ctx,resblock);
      return 0;
    }
    var_6(var_1,0x1000,&ctx);
  } while( true );
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (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 (binary_expression left: (identifier) right: (identifier)) (number_literal) (binary_expression left: (number_literal) right: (identifier)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier))))) (return_statement (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (pointer_expression argument: (identifier)))))) condition: (parenthesized_expression (true))))))

undefined4 MASKED(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  uint uVar2;
  undefined1 auStack_1108 [4168];
  undefined4 local_c0;
  undefined4 local_bc;
  undefined4 local_b8;
  undefined4 local_b4;
  undefined4 local_b0;
  undefined4 local_ac;
  undefined4 local_a8;
  
  local_c0 = 0x67452301;
  local_bc = 0xefcdab89;
  local_b8 = 0x98badcfe;
  local_ac = 0;
  local_b0 = 0;
  local_a8 = 0;
  local_b4 = 0x10325476;
  do {
    uVar2 = 0;
    while( true ) {
      iVar1 = (*(code *)PTR_fread_004c5aa4)(auStack_1108 + uVar2,1,0x1000 - uVar2,param_1);
      uVar2 = uVar2 + iVar1;
      if (0xfff < uVar2) break;
      if (iVar1 == 0) {
        iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1);
        if (iVar1 != 0) {
          return 1;
        }
        if (uVar2 != 0) goto LAB_003277cc;
        goto LAB_0032774c;
      }
    }
    if (iVar1 == 0) {
      iVar1 = (*(code *)PTR_ferror_004c5a7c)(param_1,0x1000);
      if (iVar1 != 0) {
        return 1;
      }
LAB_003277cc:
      md5_process_bytes(auStack_1108,uVar2,&local_c0);
LAB_0032774c:
      md5_finish_ctx(&local_c0,param_2);
      return 0;
    }
    md5_process_block(auStack_1108,0x1000,&local_c0);
  } while( true );
}

