{"name": "EVP_Digest", "code": "_BOOL8 __fastcall EVP_Digest ( __int64 @@a1@@ , __int64 @@a2@@ , __int64 @@a3@@ , _DWORD * @@a4@@ , _DWORD * @@a5@@ , __int64 @@a6@@ ) { _BOOL4 @@v7@@ ; _BOOL4 @@v12@@ ; _QWORD * @@v13@@ ; @@v13@@ = ( _QWORD * ) EVP_MD_CTX_new ( ) ; if ( ! @@v13@@ ) return Number L ; EVP_MD_CTX_set_flags ( @@v13@@ , Number L ) ; @@v7@@ = ( unsigned int ) EVP_DigestInit_ex ( @@v13@@ , @@a5@@ , @@a6@@ ) && ( unsigned int ) EVP_DigestUpdate ( ( __int64 ) @@v13@@ , @@a1@@ , @@a2@@ ) && ( unsigned int ) EVP_DigestFinal_ex ( @@v13@@ , @@a3@@ , @@a4@@ ) ; @@v12@@ = @@v7@@ ; EVP_MD_CTX_free ( @@v13@@ ) ; return @@v12@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a4", "t": {"T": 3, "t": "_DWORD"}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "a5", "t": {"T": 3, "t": "_DWORD"}, "location": "r72"}, {"n": "v7", "t": {"T": 1, "n": "_BOOL4", "s": 4}, "location": "r8"}, {"n": "a6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r80"}, {"n": "v12", "t": {"T": 1, "n": "_BOOL4", "s": 4}, "location": "s12"}, {"n": "v13", "t": {"T": 3, "t": "_QWORD"}, "location": "s8"}]}
{"name": "EVP_MD_CTX_free", "code": "__int64 __fastcall EVP_MD_CTX_free ( _QWORD * @@a1@@ ) { EVP_MD_CTX_reset ( @@a1@@ ) ; return CRYPTO_free ( @@a1@@ , String , Number L ) ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "_QWORD"}, "location": "r56"}]} {"name": "EVP_DigestInit", "code": "__int64 __fastcall EVP_DigestInit ( _QWORD * @@a1@@ , __int64 @@a2@@ ) { EVP_MD_CTX_reset ( @@a1@@ ) ; return EVP_DigestInit_ex ( @@a1@@ , @@a2@@ , Number L ) ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "_QWORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}]} {"name": "EVP_DigestInit_ex", "code": "__int64 __fastcall EVP_DigestInit_ex ( _QWORD * @@a1@@ , _DWORD * @@a2@@ , __int64 @@a3@@ ) { __int64 @@result@@ ; _DWORD * @@v5@@ ; int @@v6@@ ; __int64 @@v7@@ ; @@v5@@ = @@a2@@ ; EVP_MD_CTX_clear_flags ( @@a1@@ , Number L ) ; if ( @@a1@@ [ Number ] && * @@a1@@ && ( ! @@a2@@ || * @@a2@@ == * ( _DWORD * ) * @@a1@@ ) ) goto LABEL_28 ; if ( @@a2@@ ) { ENGINE_finish ( @@a1@@ [ Number ] ) ; if ( @@a3@@ ) { if ( ! ( unsigned int ) ENGINE_init ( @@a3@@ ) ) { ERR_put_error ( Number L , Number L , Number L , String , Number L ) ; return Number L ; } } else { @@a3@@ = ENGINE_get_digest_engine ( ( unsigned int ) * @@a2@@ ) ; } if ( @@a3@@ ) { @@v7@@ = ENGINE_get_digest ( @@a3@@ , ( unsigned int ) * @@a2@@ ) ; if ( ! @@v7@@ ) { ERR_put_error ( Number L , Number L , Number L , String , Number L ) ; ENGINE_finish ( @@a3@@ ) ; return Number L ; } @@v5@@ = ( _DWORD * ) @@v7@@ ; @@a1@@ [ Number ] = @@a3@@ ; } else { @@a1@@ [ Number ] = Number L ; } } else { if ( ! * @@a1@@ ) { ERR_put_error ( Number L , Number L , Number L , String , Number L ) ; return Number L ; } @@v5@@ = ( _DWORD * ) * @@a1@@ ; } if ( @@v5@@ == ( _DWORD * ) * @@a1@@ ) goto LABEL_28 ; if ( * @@a1@@ && * ( _DWORD * ) ( * @@a1@@ + Number L ) ) { CRYPTO_clear_free ( @@a1@@ [ Number ] , * ( int * ) ( * @@a1@@ + Number L ) , String , Number L ) ; @@a1@@ [ Number ] = Number L ; } * @@a1@@ = @@v5@@ ; if ( ( @@a1@@ [ Number ] & Number ) != Number || ! @@v5@@ [ Number ] || ( @@a1@@ [ Number ] = * ( ( _QWORD * ) @@v5@@ + Number ) , ( @@a1@@ [ Number ] = CRYPTO_zalloc ( ( int ) @@v5@@ [ Number ] , String , Number L ) ) != Number L ) ) { LABEL_28 : if ( ! @@a1@@ [ Number ] || ( @@v6@@ = EVP_PKEY_CTX_ctrl ( @@a1@@ [ Number ] , Number , Number L , Number L , Number L , @@a1@@ ) , @@v6@@ > Number ) || @@v6@@ == Number ) { if ( ( @@a1@@ [ Number ] & Number ) != Number ) @@result@@ = Number L ; else @@result@@ = ( * ( __int64 ( __fastcall * * ) ( _QWORD * ) ) ( * @@a1@@ + Number L ) ) ( @@a1@@ ) ; } else { @@result@@ = Number L ; } } else { ERR_put_error ( Number L , Number L , Number L , String , Number L ) ; @@result@@ = Number L ; } return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a1", "t": {"T": 3, "t": "_QWORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "_DWORD"}, "location": "r64"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v6", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v5", "t": {"T": 3, "t": "_DWORD"}, "location": "s32"}, {"n": "v7", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s8"}]} {"name": "EVP_DigestUpdate", "code": "__int64 __fastcall EVP_DigestUpdate ( __int64 @@a1@@ , __int64 @@a2@@ , __int64 @@a3@@ ) { return ( * ( __int64 ( __fastcall * * ) ( __int64 , __int64 , __int64 ) ) ( @@a1@@ + Number ) ) ( @@a1@@ , @@a2@@ , @@a3@@ ) ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}]} {"name": "EVP_DigestFinal", "code": "__int64 __fastcall EVP_DigestFinal ( _QWORD * @@a1@@ , __int64 @@a2@@ , __int64 @@a3@@ ) { unsigned int @@v4@@ ; @@v4@@ = EVP_DigestFinal_ex ( @@a1@@ , @@a2@@ , @@a3@@ ) ; EVP_MD_CTX_reset ( @@a1@@ ) ; return @@v4@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a1", "t": {"T": 3, "t": "_QWORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "v4", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s4"}]} {"name": "EVP_DigestFinal_ex", "code": "__int64 __fastcall EVP_DigestFinal_ex ( _QWORD * @@a1@@ , __int64 @@a2@@ , _DWORD * @@a3@@ ) { unsigned int @@v5@@ ; if ( * ( int * ) ( * @@a1@@ + Number L ) > Number ) OPENSSL_die ( String , String , Number L ) ; @@v5@@ = ( * ( __int64 ( __fastcall * * ) ( _QWORD * , __int64 ) ) ( * @@a1@@ + Number L ) ) ( @@a1@@ , @@a2@@ ) ; if ( @@a3@@ ) * @@a3@@ = * ( _DWORD * ) ( * @@a1@@ + Number L ) ; if ( * ( _QWORD * ) ( * @@a1@@ + Number L ) ) { ( * ( void ( __fastcall * * ) ( _QWORD * ) ) ( * @@a1@@ + Number L ) ) ( @@a1@@ ) ; EVP_MD_CTX_set_flags ( @@a1@@ , Number L ) ; } OPENSSL_cleanse ( @@a1@@ [ Number ] , * ( int * ) ( * @@a1@@ + Number L ) ) ; return @@v5@@ ; }", "source": [{"n": "a3", "t": {"T": 3, "t": "_DWORD"}, "location": "r16"}, {"n": "a1", "t": {"T": 3, "t": "_QWORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "v5", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s4"}]} {"name": "EVP_DigestFinalXOF", "code": "__int64 __fastcall EVP_DigestFinalXOF ( _QWORD * @@a1@@ , __int64 @@a2@@ , unsigned __int64 @@a3@@ ) { unsigned int @@v4@@ ; @@v4@@ = Number ; if ( ( * ( _QWORD * ) ( * @@a1@@ + Number L ) & Number L ) != Number && @@a3@@ < Number && ( * ( unsigned int ( __fastcall * * ) ( _QWORD * , __int64 , _QWORD , _QWORD ) ) ( * @@a1@@ + Number L ) ) ( @@a1@@ , Number L , ( unsigned int ) @@a3@@ , Number L ) ) { @@v4@@ = ( * ( __int64 ( __fastcall * * ) ( _QWORD * , __int64 ) ) ( * @@a1@@ + Number L ) ) ( @@a1@@ , @@a2@@ ) ; if ( * ( _QWORD * ) ( * @@a1@@ + Number L ) ) { ( * ( void ( __fastcall * * ) ( _QWORD * ) ) ( * @@a1@@ + Number L ) ) ( @@a1@@ ) ; EVP_MD_CTX_set_flags ( @@a1@@ , Number L ) ; } OPENSSL_cleanse ( @@a1@@ [ Number ] , * ( int * ) ( * @@a1@@ + Number L ) ) ; } else { ERR_put_error ( Number L , Number L , Number L , String , Number L ) ; } return @@v4@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "r16"}, {"n": "a1", "t": {"T": 3, "t": "_QWORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "v4", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s4"}]}