
int hash_file(int hash,char *fname,uchar *out,ulong *outlen)

{
  int iVar1;
  int iVar2;
  int iVar3;
  FILE *__stream;
  
  if (fname == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);
  }
  if (out != (uchar *)0x0) {
    if (outlen == (ulong *)0x0) {
                    /* WARNING: Subroutine does not return */
      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);
    }
    iVar1 = hash_is_valid(hash);
    if (iVar1 == 0) {
      __stream = fopen(fname,"rb");
      if (__stream != (FILE *)0x0) {
        iVar2 = hash_filehandle(hash,(FILE *)__stream,out,outlen);
        iVar3 = fclose(__stream);
        iVar1 = 1;
        if (iVar3 == 0) {
          iVar1 = iVar2;
        }
        return iVar1;
      }
      iVar1 = 0x11;
    }
    return iVar1;
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d);
}



ulong hash_file(undefined4 param_1,char *param_2,long param_3,long param_4)

{
  uint uVar1;
  int iVar2;
  ulong uVar3;
  FILE *__stream;
  
  if (param_2 == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);
  }
  if (param_3 != 0) {
    if (param_4 == 0) {
                    /* WARNING: Subroutine does not return */
      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);
    }
    uVar3 = hash_is_valid();
    if ((int)uVar3 == 0) {
      __stream = fopen(param_2,"rb");
      if (__stream != (FILE *)0x0) {
        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);
        iVar2 = fclose(__stream);
        uVar3 = 1;
        if (iVar2 == 0) {
          uVar3 = (ulong)uVar1;
        }
        return uVar3;
      }
      uVar3 = 0x11;
    }
    return uVar3;
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d);
}


PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
TEST RSI,RSI
JZ 0x0014ceb7
MOV RBP,RDX
TEST RDX,RDX
JZ 0x0014cee7
MOV R12,RCX
TEST RCX,RCX
JZ 0x0014cecf
MOV R13D,EDI
MOV RBX,RSI
CALL 0x00113bd0
TEST EAX,EAX
JZ 0x0014ce68
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
LEA RSI,[0x1bd949]
MOV RDI,RBX
CALL 0x001148b0
MOV R14,RAX
TEST RAX,RAX
JZ 0x0014ceb0
MOV RCX,R12
MOV RDX,RBP
MOV EDI,R13D
MOV RSI,RAX
CALL 0x00114eb0
MOV RDI,R14
MOV EBP,EAX
CALL 0x00113700
POP RBX
TEST EAX,EAX
MOV EAX,0x1
CMOVZ EAX,EBP
POP RBP
POP R12
POP R13
POP R14
RET
MOV EAX,0x11
JMP 0x0014ce58
MOV EDX,0x1c
LEA RSI,[0x1bd90e]
LEA RDI,[0x1bd92c]
CALL 0x00114270
MOV EDX,0x1e
LEA RSI,[0x1bd90e]
LEA RDI,[0x1bd93a]
CALL 0x00114270
MOV EDX,0x1d
LEA RSI,[0x1bd90e]
LEA RDI,[0x1b77e1]
CALL 0x00114270
(translation_unit "ulong hash_file(undefined4 param_1,char *param_2,long param_3,long param_4)\n\n{\n  uint uVar1;\n  int iVar2;\n  ulong uVar3;\n  FILE *__stream;\n  \n  if (param_2 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }\n  if (param_3 != 0) {\n    if (param_4 == 0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    uVar3 = hash_is_valid();\n    if ((int)uVar3 == 0) {\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }\n    return uVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d);\n}\n\n" (function_definition "ulong hash_file(undefined4 param_1,char *param_2,long param_3,long param_4)\n\n{\n  uint uVar1;\n  int iVar2;\n  ulong uVar3;\n  FILE *__stream;\n  \n  if (param_2 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }\n  if (param_3 != 0) {\n    if (param_4 == 0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    uVar3 = hash_is_valid();\n    if ((int)uVar3 == 0) {\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }\n    return uVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d);\n}" type_identifier (function_declarator "hash_file(undefined4 param_1,char *param_2,long param_3,long param_4)" identifier (parameter_list "(undefined4 param_1,char *param_2,long param_3,long param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  ulong uVar3;\n  FILE *__stream;\n  \n  if (param_2 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }\n  if (param_3 != 0) {\n    if (param_4 == 0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    uVar3 = hash_is_valid();\n    if ((int)uVar3 == 0) {\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }\n    return uVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d);\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "FILE *__stream;" type_identifier (pointer_declarator "*__stream" * identifier) ;) (if_statement "if (param_2 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }" if (parenthesized_expression "(param_2 == (char *)0x0)" ( (binary_expression "param_2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }" { comment (expression_statement "crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);" (call_expression "crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c)" identifier (argument_list "("fname != NULL","src/hashes/helper/hash_file.c",0x1c)" ( (string_literal ""fname != NULL"" " string_content ") , (string_literal ""src/hashes/helper/hash_file.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_3 != 0) {\n    if (param_4 == 0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    uVar3 = hash_is_valid();\n    if ((int)uVar3 == 0) {\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }\n    return uVar3;\n  }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n    if (param_4 == 0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    uVar3 = hash_is_valid();\n    if ((int)uVar3 == 0) {\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }\n    return uVar3;\n  }" { (if_statement "if (param_4 == 0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }" { comment (expression_statement "crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);" (call_expression "crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e)" identifier (argument_list "("outlen != NULL","src/hashes/helper/hash_file.c",0x1e)" ( (string_literal ""outlen != NULL"" " string_content ") , (string_literal ""src/hashes/helper/hash_file.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "uVar3 = hash_is_valid();" (assignment_expression "uVar3 = hash_is_valid()" identifier = (call_expression "hash_is_valid()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((int)uVar3 == 0) {\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }" if (parenthesized_expression "((int)uVar3 == 0)" ( (binary_expression "(int)uVar3 == 0" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }" { (expression_statement "__stream = fopen(param_2,"rb");" (assignment_expression "__stream = fopen(param_2,"rb")" identifier = (call_expression "fopen(param_2,"rb")" identifier (argument_list "(param_2,"rb")" ( identifier , (string_literal ""rb"" " string_content ") )))) ;) (if_statement "if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }" if (parenthesized_expression "(__stream != (FILE *)0x0)" ( (binary_expression "__stream != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }" { (expression_statement "uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);" (assignment_expression "uVar1 = hash_filehandle(param_1,__stream,param_3,param_4)" identifier = (call_expression "hash_filehandle(param_1,__stream,param_3,param_4)" identifier (argument_list "(param_1,__stream,param_3,param_4)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar2 = fclose(__stream);" (assignment_expression "iVar2 = fclose(__stream)" identifier = (call_expression "fclose(__stream)" identifier (argument_list "(__stream)" ( identifier )))) ;) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (if_statement "if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar3 = (ulong)uVar1;\n        }" { (expression_statement "uVar3 = (ulong)uVar1;" (assignment_expression "uVar3 = (ulong)uVar1" identifier = (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) })) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "uVar3 = 0x11;" (assignment_expression "uVar3 = 0x11" identifier = number_literal) ;) })) (return_statement "return uVar3;" return identifier ;) })) comment (expression_statement "crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d);" (call_expression "crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d)" identifier (argument_list "("out != NULL","src/hashes/helper/hash_file.c",0x1d)" ( (string_literal ""out != NULL"" " string_content ") , (string_literal ""src/hashes/helper/hash_file.c"" " string_content ") , number_literal ))) ;) })))
(translation_unit "int hash_file(int hash,char *fname,uchar *out,ulong *outlen)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  FILE *__stream;\n  \n  if (fname == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }\n  if (out != (uchar *)0x0) {\n    if (outlen == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    iVar1 = hash_is_valid(hash);\n    if (iVar1 == 0) {\n      __stream = fopen(fname,"rb");\n      if (__stream != (FILE *)0x0) {\n        iVar2 = hash_filehandle(hash,(FILE *)__stream,out,outlen);\n        iVar3 = fclose(__stream);\n        iVar1 = 1;\n        if (iVar3 == 0) {\n          iVar1 = iVar2;\n        }\n        return iVar1;\n      }\n      iVar1 = 0x11;\n    }\n    return iVar1;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d);\n}\n\n" (function_definition "int hash_file(int hash,char *fname,uchar *out,ulong *outlen)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  FILE *__stream;\n  \n  if (fname == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }\n  if (out != (uchar *)0x0) {\n    if (outlen == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    iVar1 = hash_is_valid(hash);\n    if (iVar1 == 0) {\n      __stream = fopen(fname,"rb");\n      if (__stream != (FILE *)0x0) {\n        iVar2 = hash_filehandle(hash,(FILE *)__stream,out,outlen);\n        iVar3 = fclose(__stream);\n        iVar1 = 1;\n        if (iVar3 == 0) {\n          iVar1 = iVar2;\n        }\n        return iVar1;\n      }\n      iVar1 = 0x11;\n    }\n    return iVar1;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d);\n}" primitive_type (function_declarator "hash_file(int hash,char *fname,uchar *out,ulong *outlen)" identifier (parameter_list "(int hash,char *fname,uchar *out,ulong *outlen)" ( (parameter_declaration "int hash" primitive_type identifier) , (parameter_declaration "char *fname" primitive_type (pointer_declarator "*fname" * identifier)) , (parameter_declaration "uchar *out" type_identifier (pointer_declarator "*out" * identifier)) , (parameter_declaration "ulong *outlen" type_identifier (pointer_declarator "*outlen" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  FILE *__stream;\n  \n  if (fname == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }\n  if (out != (uchar *)0x0) {\n    if (outlen == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    iVar1 = hash_is_valid(hash);\n    if (iVar1 == 0) {\n      __stream = fopen(fname,"rb");\n      if (__stream != (FILE *)0x0) {\n        iVar2 = hash_filehandle(hash,(FILE *)__stream,out,outlen);\n        iVar3 = fclose(__stream);\n        iVar1 = 1;\n        if (iVar3 == 0) {\n          iVar1 = iVar2;\n        }\n        return iVar1;\n      }\n      iVar1 = 0x11;\n    }\n    return iVar1;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "FILE *__stream;" type_identifier (pointer_declarator "*__stream" * identifier) ;) (if_statement "if (fname == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }" if (parenthesized_expression "(fname == (char *)0x0)" ( (binary_expression "fname == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }" { comment (expression_statement "crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);" (call_expression "crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c)" identifier (argument_list "("fname != NULL","src/hashes/helper/hash_file.c",0x1c)" ( (string_literal ""fname != NULL"" " string_content ") , (string_literal ""src/hashes/helper/hash_file.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (out != (uchar *)0x0) {\n    if (outlen == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    iVar1 = hash_is_valid(hash);\n    if (iVar1 == 0) {\n      __stream = fopen(fname,"rb");\n      if (__stream != (FILE *)0x0) {\n        iVar2 = hash_filehandle(hash,(FILE *)__stream,out,outlen);\n        iVar3 = fclose(__stream);\n        iVar1 = 1;\n        if (iVar3 == 0) {\n          iVar1 = iVar2;\n        }\n        return iVar1;\n      }\n      iVar1 = 0x11;\n    }\n    return iVar1;\n  }" if (parenthesized_expression "(out != (uchar *)0x0)" ( (binary_expression "out != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (outlen == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    iVar1 = hash_is_valid(hash);\n    if (iVar1 == 0) {\n      __stream = fopen(fname,"rb");\n      if (__stream != (FILE *)0x0) {\n        iVar2 = hash_filehandle(hash,(FILE *)__stream,out,outlen);\n        iVar3 = fclose(__stream);\n        iVar1 = 1;\n        if (iVar3 == 0) {\n          iVar1 = iVar2;\n        }\n        return iVar1;\n      }\n      iVar1 = 0x11;\n    }\n    return iVar1;\n  }" { (if_statement "if (outlen == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }" if (parenthesized_expression "(outlen == (ulong *)0x0)" ( (binary_expression "outlen == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }" { comment (expression_statement "crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);" (call_expression "crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e)" identifier (argument_list "("outlen != NULL","src/hashes/helper/hash_file.c",0x1e)" ( (string_literal ""outlen != NULL"" " string_content ") , (string_literal ""src/hashes/helper/hash_file.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "iVar1 = hash_is_valid(hash);" (assignment_expression "iVar1 = hash_is_valid(hash)" identifier = (call_expression "hash_is_valid(hash)" identifier (argument_list "(hash)" ( identifier )))) ;) (if_statement "if (iVar1 == 0) {\n      __stream = fopen(fname,"rb");\n      if (__stream != (FILE *)0x0) {\n        iVar2 = hash_filehandle(hash,(FILE *)__stream,out,outlen);\n        iVar3 = fclose(__stream);\n        iVar1 = 1;\n        if (iVar3 == 0) {\n          iVar1 = iVar2;\n        }\n        return iVar1;\n      }\n      iVar1 = 0x11;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      __stream = fopen(fname,"rb");\n      if (__stream != (FILE *)0x0) {\n        iVar2 = hash_filehandle(hash,(FILE *)__stream,out,outlen);\n        iVar3 = fclose(__stream);\n        iVar1 = 1;\n        if (iVar3 == 0) {\n          iVar1 = iVar2;\n        }\n        return iVar1;\n      }\n      iVar1 = 0x11;\n    }" { (expression_statement "__stream = fopen(fname,"rb");" (assignment_expression "__stream = fopen(fname,"rb")" identifier = (call_expression "fopen(fname,"rb")" identifier (argument_list "(fname,"rb")" ( identifier , (string_literal ""rb"" " string_content ") )))) ;) (if_statement "if (__stream != (FILE *)0x0) {\n        iVar2 = hash_filehandle(hash,(FILE *)__stream,out,outlen);\n        iVar3 = fclose(__stream);\n        iVar1 = 1;\n        if (iVar3 == 0) {\n          iVar1 = iVar2;\n        }\n        return iVar1;\n      }" if (parenthesized_expression "(__stream != (FILE *)0x0)" ( (binary_expression "__stream != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar2 = hash_filehandle(hash,(FILE *)__stream,out,outlen);\n        iVar3 = fclose(__stream);\n        iVar1 = 1;\n        if (iVar3 == 0) {\n          iVar1 = iVar2;\n        }\n        return iVar1;\n      }" { (expression_statement "iVar2 = hash_filehandle(hash,(FILE *)__stream,out,outlen);" (assignment_expression "iVar2 = hash_filehandle(hash,(FILE *)__stream,out,outlen)" identifier = (call_expression "hash_filehandle(hash,(FILE *)__stream,out,outlen)" identifier (argument_list "(hash,(FILE *)__stream,out,outlen)" ( identifier , (cast_expression "(FILE *)__stream" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier )))) ;) (expression_statement "iVar3 = fclose(__stream);" (assignment_expression "iVar3 = fclose(__stream)" identifier = (call_expression "fclose(__stream)" identifier (argument_list "(__stream)" ( identifier )))) ;) (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" identifier = number_literal) ;) (if_statement "if (iVar3 == 0) {\n          iVar1 = iVar2;\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar1 = iVar2;\n        }" { (expression_statement "iVar1 = iVar2;" (assignment_expression "iVar1 = iVar2" identifier = identifier) ;) })) (return_statement "return iVar1;" return identifier ;) })) (expression_statement "iVar1 = 0x11;" (assignment_expression "iVar1 = 0x11" identifier = number_literal) ;) })) (return_statement "return iVar1;" return identifier ;) })) comment (expression_statement "crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d);" (call_expression "crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d)" identifier (argument_list "("out != NULL","src/hashes/helper/hash_file.c",0x1d)" ( (string_literal ""out != NULL"" " string_content ") , (string_literal ""src/hashes/helper/hash_file.c"" " string_content ") , number_literal ))) ;) })))
(translation_unit "ulong hash_file(undefined4 param_1,char *param_2,long param_3,long param_4)\n\n{\n  uint uVar1;\n  int iVar2;\n  ulong uVar3;\n  FILE *__stream;\n  \n  if (param_2 == (char *)0x0) {\n                    \n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }\n  if (param_3 != 0) {\n    if (param_4 == 0) {\n                    \n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    uVar3 = hash_is_valid();\n    if ((int)uVar3 == 0) {\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }\n    return uVar3;\n  }\n                    \n  crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d);\n}\n\n" (function_definition "ulong hash_file(undefined4 param_1,char *param_2,long param_3,long param_4)\n\n{\n  uint uVar1;\n  int iVar2;\n  ulong uVar3;\n  FILE *__stream;\n  \n  if (param_2 == (char *)0x0) {\n                    \n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }\n  if (param_3 != 0) {\n    if (param_4 == 0) {\n                    \n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    uVar3 = hash_is_valid();\n    if ((int)uVar3 == 0) {\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }\n    return uVar3;\n  }\n                    \n  crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d);\n}" type_identifier (function_declarator "hash_file(undefined4 param_1,char *param_2,long param_3,long param_4)" identifier (parameter_list "(undefined4 param_1,char *param_2,long param_3,long param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  ulong uVar3;\n  FILE *__stream;\n  \n  if (param_2 == (char *)0x0) {\n                    \n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }\n  if (param_3 != 0) {\n    if (param_4 == 0) {\n                    \n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    uVar3 = hash_is_valid();\n    if ((int)uVar3 == 0) {\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }\n    return uVar3;\n  }\n                    \n  crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d);\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "FILE *__stream;" type_identifier (pointer_declarator "*__stream" * identifier) ;) (if_statement "if (param_2 == (char *)0x0) {\n                    \n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }" if (parenthesized_expression "(param_2 == (char *)0x0)" ( (binary_expression "param_2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }" { (expression_statement "crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);" (call_expression "crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c)" identifier (argument_list "("fname != NULL","src/hashes/helper/hash_file.c",0x1c)" ( (string_literal ""fname != NULL"" " string_content ") , (string_literal ""src/hashes/helper/hash_file.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_3 != 0) {\n    if (param_4 == 0) {\n                    \n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    uVar3 = hash_is_valid();\n    if ((int)uVar3 == 0) {\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }\n    return uVar3;\n  }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n    if (param_4 == 0) {\n                    \n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    uVar3 = hash_is_valid();\n    if ((int)uVar3 == 0) {\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }\n    return uVar3;\n  }" { (if_statement "if (param_4 == 0) {\n                    \n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }" { (expression_statement "crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);" (call_expression "crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e)" identifier (argument_list "("outlen != NULL","src/hashes/helper/hash_file.c",0x1e)" ( (string_literal ""outlen != NULL"" " string_content ") , (string_literal ""src/hashes/helper/hash_file.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "uVar3 = hash_is_valid();" (assignment_expression "uVar3 = hash_is_valid()" identifier = (call_expression "hash_is_valid()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((int)uVar3 == 0) {\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }" if (parenthesized_expression "((int)uVar3 == 0)" ( (binary_expression "(int)uVar3 == 0" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }" { (expression_statement "__stream = fopen(param_2,"rb");" (assignment_expression "__stream = fopen(param_2,"rb")" identifier = (call_expression "fopen(param_2,"rb")" identifier (argument_list "(param_2,"rb")" ( identifier , (string_literal ""rb"" " string_content ") )))) ;) (if_statement "if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }" if (parenthesized_expression "(__stream != (FILE *)0x0)" ( (binary_expression "__stream != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }" { (expression_statement "uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);" (assignment_expression "uVar1 = hash_filehandle(param_1,__stream,param_3,param_4)" identifier = (call_expression "hash_filehandle(param_1,__stream,param_3,param_4)" identifier (argument_list "(param_1,__stream,param_3,param_4)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar2 = fclose(__stream);" (assignment_expression "iVar2 = fclose(__stream)" identifier = (call_expression "fclose(__stream)" identifier (argument_list "(__stream)" ( identifier )))) ;) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (if_statement "if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar3 = (ulong)uVar1;\n        }" { (expression_statement "uVar3 = (ulong)uVar1;" (assignment_expression "uVar3 = (ulong)uVar1" identifier = (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) })) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "uVar3 = 0x11;" (assignment_expression "uVar3 = 0x11" identifier = number_literal) ;) })) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d);" (call_expression "crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d)" identifier (argument_list "("out != NULL","src/hashes/helper/hash_file.c",0x1d)" ( (string_literal ""out != NULL"" " string_content ") , (string_literal ""src/hashes/helper/hash_file.c"" " string_content ") , number_literal ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) })) (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) })))
(function_definition "ulong hash_file(undefined4 param_1,char *param_2,long param_3,long param_4)\n\n{\n  uint uVar1;\n  int iVar2;\n  ulong uVar3;\n  FILE *__stream;\n  \n  if (param_2 == (char *)0x0) {\n                    \n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }\n  if (param_3 != 0) {\n    if (param_4 == 0) {\n                    \n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    uVar3 = hash_is_valid();\n    if ((int)uVar3 == 0) {\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }\n    return uVar3;\n  }\n                    \n  crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d);\n}" (type_identifier "ulong") (function_declarator "hash_file(undefined4 param_1,char *param_2,long param_3,long param_4)" (identifier "hash_file") (parameter_list "(undefined4 param_1,char *param_2,long param_3,long param_4)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (identifier "param_4")) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  ulong uVar3;\n  FILE *__stream;\n  \n  if (param_2 == (char *)0x0) {\n                    \n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }\n  if (param_3 != 0) {\n    if (param_4 == 0) {\n                    \n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    uVar3 = hash_is_valid();\n    if ((int)uVar3 == 0) {\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }\n    return uVar3;\n  }\n                    \n  crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d);\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "FILE *__stream;" (type_identifier "FILE") (pointer_declarator "*__stream" (* "*") (identifier "__stream")) (; ";")) (if_statement "if (param_2 == (char *)0x0) {\n                    \n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }" (if "if") (parenthesized_expression "(param_2 == (char *)0x0)" (( "(") (binary_expression "param_2 == (char *)0x0" (identifier "param_2") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);\n  }" ({ "{") (expression_statement "crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c);" (call_expression "crypt_argchk("fname != NULL","src/hashes/helper/hash_file.c",0x1c)" (identifier "crypt_argchk") (argument_list "("fname != NULL","src/hashes/helper/hash_file.c",0x1c)" (( "(") (string_literal ""fname != NULL"" (" """) (string_content "fname != NULL") (" """)) (, ",") (string_literal ""src/hashes/helper/hash_file.c"" (" """) (string_content "src/hashes/helper/hash_file.c") (" """)) (, ",") (number_literal "0x1c") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_3 != 0) {\n    if (param_4 == 0) {\n                    \n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    uVar3 = hash_is_valid();\n    if ((int)uVar3 == 0) {\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }\n    return uVar3;\n  }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (param_4 == 0) {\n                    \n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }\n    uVar3 = hash_is_valid();\n    if ((int)uVar3 == 0) {\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }\n    return uVar3;\n  }" ({ "{") (if_statement "if (param_4 == 0) {\n                    \n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);\n    }" ({ "{") (expression_statement "crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);" (call_expression "crypt_argchk("outlen != NULL","src/hashes/helper/hash_file.c",0x1e)" (identifier "crypt_argchk") (argument_list "("outlen != NULL","src/hashes/helper/hash_file.c",0x1e)" (( "(") (string_literal ""outlen != NULL"" (" """) (string_content "outlen != NULL") (" """)) (, ",") (string_literal ""src/hashes/helper/hash_file.c"" (" """) (string_content "src/hashes/helper/hash_file.c") (" """)) (, ",") (number_literal "0x1e") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar3 = hash_is_valid();" (assignment_expression "uVar3 = hash_is_valid()" (identifier "uVar3") (= "=") (call_expression "hash_is_valid()" (identifier "hash_is_valid") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((int)uVar3 == 0) {\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }" (if "if") (parenthesized_expression "((int)uVar3 == 0)" (( "(") (binary_expression "(int)uVar3 == 0" (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      __stream = fopen(param_2,"rb");\n      if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }\n      uVar3 = 0x11;\n    }" ({ "{") (expression_statement "__stream = fopen(param_2,"rb");" (assignment_expression "__stream = fopen(param_2,"rb")" (identifier "__stream") (= "=") (call_expression "fopen(param_2,"rb")" (identifier "fopen") (argument_list "(param_2,"rb")" (( "(") (identifier "param_2") (, ",") (string_literal ""rb"" (" """) (string_content "rb") (" """)) () ")")))) (; ";")) (if_statement "if (__stream != (FILE *)0x0) {\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }" (if "if") (parenthesized_expression "(__stream != (FILE *)0x0)" (( "(") (binary_expression "__stream != (FILE *)0x0" (identifier "__stream") (!= "!=") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);\n        iVar2 = fclose(__stream);\n        uVar3 = 1;\n        if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }\n        return uVar3;\n      }" ({ "{") (expression_statement "uVar1 = hash_filehandle(param_1,__stream,param_3,param_4);" (assignment_expression "uVar1 = hash_filehandle(param_1,__stream,param_3,param_4)" (identifier "uVar1") (= "=") (call_expression "hash_filehandle(param_1,__stream,param_3,param_4)" (identifier "hash_filehandle") (argument_list "(param_1,__stream,param_3,param_4)" (( "(") (identifier "param_1") (, ",") (identifier "__stream") (, ",") (identifier "param_3") (, ",") (identifier "param_4") () ")")))) (; ";")) (expression_statement "iVar2 = fclose(__stream);" (assignment_expression "iVar2 = fclose(__stream)" (identifier "iVar2") (= "=") (call_expression "fclose(__stream)" (identifier "fclose") (argument_list "(__stream)" (( "(") (identifier "__stream") () ")")))) (; ";")) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" (identifier "uVar3") (= "=") (number_literal "1")) (; ";")) (if_statement "if (iVar2 == 0) {\n          uVar3 = (ulong)uVar1;\n        }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar3 = (ulong)uVar1;\n        }" ({ "{") (expression_statement "uVar3 = (ulong)uVar1;" (assignment_expression "uVar3 = (ulong)uVar1" (identifier "uVar3") (= "=") (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1"))) (; ";")) (} "}"))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "uVar3 = 0x11;" (assignment_expression "uVar3 = 0x11" (identifier "uVar3") (= "=") (number_literal "0x11")) (; ";")) (} "}"))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d);" (call_expression "crypt_argchk("out != NULL","src/hashes/helper/hash_file.c",0x1d)" (identifier "crypt_argchk") (argument_list "("out != NULL","src/hashes/helper/hash_file.c",0x1d)" (( "(") (string_literal ""out != NULL"" (" """) (string_content "out != NULL") (" """)) (, ",") (string_literal ""src/hashes/helper/hash_file.c"" (" """) (string_content "src/hashes/helper/hash_file.c") (" """)) (, ",") (number_literal "0x1d") () ")"))) (; ";")) (} "}")))

int function_1(int hash,char *var_1,type_1 *var_3,type_2 *var_4)

{
  int var_6;
  int iVar2;
  int var_11;
  type_3 *var_8;
  
  if (var_1 == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("fname != NULL","src/hashes/helper/hash_file.c",0x1c);
  }
  if (var_3 != (type_1 *)0x0) {
    if (var_4 == (type_2 *)0x0) {
                    /* WARNING: Subroutine does not return */
      var_2("outlen != NULL","src/hashes/helper/hash_file.c",0x1e);
    }
    var_6 = var_5(hash);
    if (var_6 == 0) {
      var_8 = var_7(var_1,"rb");
      if (var_8 != (type_3 *)0x0) {
        iVar2 = var_9(hash,(type_3 *)var_8,var_3,var_4);
        var_11 = var_10(var_8);
        var_6 = 1;
        if (var_11 == 0) {
          var_6 = iVar2;
        }
        return var_6;
      }
      var_6 = 0x11;
    }
    return var_6;
  }
                    /* WARNING: Subroutine does not return */
  var_2("out != NULL","src/hashes/helper/hash_file.c",0x1d);
}


(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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (return_statement (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal)))))))

ulong MASKED(undefined4 param_1,char *param_2,long param_3,long param_4)

{
  uint uVar1;
  int iVar2;
  ulong uVar3;
  FILE *__stream;
  
  if (param_2 == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("fname != NULL","src/hashes/helper/MASKED.c",0x1c);
  }
  if (param_3 != 0) {
    if (param_4 == 0) {
                    /* WARNING: Subroutine does not return */
      crypt_argchk("outlen != NULL","src/hashes/helper/MASKED.c",0x1e);
    }
    uVar3 = hash_is_valid();
    if ((int)uVar3 == 0) {
      __stream = fopen(param_2,"rb");
      if (__stream != (FILE *)0x0) {
        uVar1 = MASKEDhandle(param_1,__stream,param_3,param_4);
        iVar2 = fclose(__stream);
        uVar3 = 1;
        if (iVar2 == 0) {
          uVar3 = (ulong)uVar1;
        }
        return uVar3;
      }
      uVar3 = 0x11;
    }
    return uVar3;
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("out != NULL","src/hashes/helper/MASKED.c",0x1d);
}

