EVP_MD *EVP_MD_meth_dup(const EVP_MD *md)
{
    EVP_MD *to = EVP_MD_meth_new(md->type, md->pkey_type);
    if (md != NULL)
        memcpy(to, md, sizeof(*to));
    return to;
}
['EVP_MD *EVP_MD_meth_dup(const EVP_MD *md)\n{\n    EVP_MD *to = EVP_MD_meth_new(md->type, md->pkey_type);\n    if (md != NULL)\n        memcpy(to, md, sizeof(*to));\n    return to;\n}', 'EVP_MD *EVP_MD_meth_new(int md_type, int pkey_type)\n{\n    EVP_MD *md = (EVP_MD *)OPENSSL_zalloc(sizeof(EVP_MD));\n    if (md != NULL) {\n        md->type = md_type;\n        md->pkey_type = pkey_type;\n    }\n    return md;\n}', 'void *CRYPTO_zalloc(size_t num, const char *file, int line)\n{\n    void *ret = CRYPTO_malloc(num, file, line);\n    if (ret != NULL)\n        memset(ret, 0, num);\n    return ret;\n}', 'void *CRYPTO_malloc(size_t num, const char *file, int line)\n{\n    void *ret = NULL;\n    if (num <= 0)\n        return NULL;\n    allow_customize = 0;\n#ifndef OPENSSL_NO_CRYPTO_MDEBUG\n    if (call_malloc_debug) {\n        CRYPTO_mem_debug_malloc(NULL, num, 0, file, line);\n        ret = malloc(num);\n        CRYPTO_mem_debug_malloc(ret, num, 1, file, line);\n    } else {\n        ret = malloc(num);\n    }\n#else\n    (void)file;\n    (void)line;\n    ret = malloc(num);\n#endif\n#ifndef OPENSSL_CPUID_OBJ\n    if (ret && (num > 2048)) {\n        extern unsigned char cleanse_ctr;\n        ((unsigned char *)ret)[0] = cleanse_ctr;\n    }\n#endif\n    return ret;\n}']