require '_h2ph_pre.ph';

no warnings qw(redefine misc);

unless(defined(&OPENSSL_ASN1_H)) {
    eval 'sub OPENSSL_ASN1_H () {1;}' unless defined(&OPENSSL_ASN1_H);
    require 'openssl/macros.ph';
    unless(defined(&OPENSSL_NO_DEPRECATED_3_0)) {
	eval 'sub HEADER_ASN1_H () {1;}' unless defined(&HEADER_ASN1_H);
    }
    require 'time.ph';
    require 'openssl/e_os2.ph';
    require 'openssl/opensslconf.ph';
    require 'openssl/bio.ph';
    require 'openssl/safestack.ph';
    require 'openssl/asn1err.ph';
    require 'openssl/symhacks.ph';
    require 'openssl/types.ph';
    require 'openssl/bn.ph';
    if(defined(&OPENSSL_BUILD_SHLIBCRYPTO)) {
	undef(&OPENSSL_EXTERN) if defined(&OPENSSL_EXTERN);
	eval 'sub OPENSSL_EXTERN () { &OPENSSL_EXPORT;}' unless defined(&OPENSSL_EXTERN);
    }
    if(defined(&__cplusplus)) {
    }
    eval 'sub V_ASN1_UNIVERSAL () {0x;}' unless defined(&V_ASN1_UNIVERSAL);
    eval 'sub V_ASN1_APPLICATION () {0x40;}' unless defined(&V_ASN1_APPLICATION);
    eval 'sub V_ASN1_CONTEXT_SPECIFIC () {0x80;}' unless defined(&V_ASN1_CONTEXT_SPECIFIC);
    eval 'sub V_ASN1_PRIVATE () {0xc0;}' unless defined(&V_ASN1_PRIVATE);
    eval 'sub V_ASN1_CONSTRUCTED () {0x20;}' unless defined(&V_ASN1_CONSTRUCTED);
    eval 'sub V_ASN1_PRIMITIVE_TAG () {0x1f;}' unless defined(&V_ASN1_PRIMITIVE_TAG);
    eval 'sub V_ASN1_PRIMATIVE_TAG () { &V_ASN1_PRIMITIVE_TAG;}' unless defined(&V_ASN1_PRIMATIVE_TAG);
    eval 'sub V_ASN1_APP_CHOOSE () {-2;}' unless defined(&V_ASN1_APP_CHOOSE);
    eval 'sub V_ASN1_OTHER () {-3;}' unless defined(&V_ASN1_OTHER);
    eval 'sub V_ASN1_ANY () {-4;}' unless defined(&V_ASN1_ANY);
    eval 'sub V_ASN1_UNDEF () {-1;}' unless defined(&V_ASN1_UNDEF);
    eval 'sub V_ASN1_EOC () {0;}' unless defined(&V_ASN1_EOC);
    eval 'sub V_ASN1_BOOLEAN () {1;}' unless defined(&V_ASN1_BOOLEAN);
    eval 'sub V_ASN1_INTEGER () {2;}' unless defined(&V_ASN1_INTEGER);
    eval 'sub V_ASN1_BIT_STRING () {3;}' unless defined(&V_ASN1_BIT_STRING);
    eval 'sub V_ASN1_OCTET_STRING () {4;}' unless defined(&V_ASN1_OCTET_STRING);
    eval 'sub V_ASN1_NULL () {5;}' unless defined(&V_ASN1_NULL);
    eval 'sub V_ASN1_OBJECT () {6;}' unless defined(&V_ASN1_OBJECT);
    eval 'sub V_ASN1_OBJECT_DESCRIPTOR () {7;}' unless defined(&V_ASN1_OBJECT_DESCRIPTOR);
    eval 'sub V_ASN1_EXTERNAL () {8;}' unless defined(&V_ASN1_EXTERNAL);
    eval 'sub V_ASN1_REAL () {9;}' unless defined(&V_ASN1_REAL);
    eval 'sub V_ASN1_ENUMERATED () {10;}' unless defined(&V_ASN1_ENUMERATED);
    eval 'sub V_ASN1_UTF8STRING () {12;}' unless defined(&V_ASN1_UTF8STRING);
    eval 'sub V_ASN1_SEQUENCE () {16;}' unless defined(&V_ASN1_SEQUENCE);
    eval 'sub V_ASN1_SET () {17;}' unless defined(&V_ASN1_SET);
    eval 'sub V_ASN1_NUMERICSTRING () {18;}' unless defined(&V_ASN1_NUMERICSTRING);
    eval 'sub V_ASN1_PRINTABLESTRING () {19;}' unless defined(&V_ASN1_PRINTABLESTRING);
    eval 'sub V_ASN1_T61STRING () {20;}' unless defined(&V_ASN1_T61STRING);
    eval 'sub V_ASN1_TELETEXSTRING () {20;}' unless defined(&V_ASN1_TELETEXSTRING);
    eval 'sub V_ASN1_VIDEOTEXSTRING () {21;}' unless defined(&V_ASN1_VIDEOTEXSTRING);
    eval 'sub V_ASN1_IA5STRING () {22;}' unless defined(&V_ASN1_IA5STRING);
    eval 'sub V_ASN1_UTCTIME () {23;}' unless defined(&V_ASN1_UTCTIME);
    eval 'sub V_ASN1_GENERALIZEDTIME () {24;}' unless defined(&V_ASN1_GENERALIZEDTIME);
    eval 'sub V_ASN1_GRAPHICSTRING () {25;}' unless defined(&V_ASN1_GRAPHICSTRING);
    eval 'sub V_ASN1_ISO64STRING () {26;}' unless defined(&V_ASN1_ISO64STRING);
    eval 'sub V_ASN1_VISIBLESTRING () {26;}' unless defined(&V_ASN1_VISIBLESTRING);
    eval 'sub V_ASN1_GENERALSTRING () {27;}' unless defined(&V_ASN1_GENERALSTRING);
    eval 'sub V_ASN1_UNIVERSALSTRING () {28;}' unless defined(&V_ASN1_UNIVERSALSTRING);
    eval 'sub V_ASN1_BMPSTRING () {30;}' unless defined(&V_ASN1_BMPSTRING);
    eval 'sub V_ASN1_NEG () {0x100;}' unless defined(&V_ASN1_NEG);
    eval 'sub V_ASN1_NEG_INTEGER () {(2|  &V_ASN1_NEG);}' unless defined(&V_ASN1_NEG_INTEGER);
    eval 'sub V_ASN1_NEG_ENUMERATED () {(10|  &V_ASN1_NEG);}' unless defined(&V_ASN1_NEG_ENUMERATED);
    eval 'sub B_ASN1_NUMERICSTRING () {0x1;}' unless defined(&B_ASN1_NUMERICSTRING);
    eval 'sub B_ASN1_PRINTABLESTRING () {0x2;}' unless defined(&B_ASN1_PRINTABLESTRING);
    eval 'sub B_ASN1_T61STRING () {0x4;}' unless defined(&B_ASN1_T61STRING);
    eval 'sub B_ASN1_TELETEXSTRING () {0x4;}' unless defined(&B_ASN1_TELETEXSTRING);
    eval 'sub B_ASN1_VIDEOTEXSTRING () {0x8;}' unless defined(&B_ASN1_VIDEOTEXSTRING);
    eval 'sub B_ASN1_IA5STRING () {0x10;}' unless defined(&B_ASN1_IA5STRING);
    eval 'sub B_ASN1_GRAPHICSTRING () {0x20;}' unless defined(&B_ASN1_GRAPHICSTRING);
    eval 'sub B_ASN1_ISO64STRING () {0x40;}' unless defined(&B_ASN1_ISO64STRING);
    eval 'sub B_ASN1_VISIBLESTRING () {0x40;}' unless defined(&B_ASN1_VISIBLESTRING);
    eval 'sub B_ASN1_GENERALSTRING () {0x80;}' unless defined(&B_ASN1_GENERALSTRING);
    eval 'sub B_ASN1_UNIVERSALSTRING () {0x100;}' unless defined(&B_ASN1_UNIVERSALSTRING);
    eval 'sub B_ASN1_OCTET_STRING () {0x200;}' unless defined(&B_ASN1_OCTET_STRING);
    eval 'sub B_ASN1_BIT_STRING () {0x400;}' unless defined(&B_ASN1_BIT_STRING);
    eval 'sub B_ASN1_BMPSTRING () {0x800;}' unless defined(&B_ASN1_BMPSTRING);
    eval 'sub B_ASN1_UNKNOWN () {0x1000;}' unless defined(&B_ASN1_UNKNOWN);
    eval 'sub B_ASN1_UTF8STRING () {0x2000;}' unless defined(&B_ASN1_UTF8STRING);
    eval 'sub B_ASN1_UTCTIME () {0x4000;}' unless defined(&B_ASN1_UTCTIME);
    eval 'sub B_ASN1_GENERALIZEDTIME () {0x8000;}' unless defined(&B_ASN1_GENERALIZEDTIME);
    eval 'sub B_ASN1_SEQUENCE () {0x10000;}' unless defined(&B_ASN1_SEQUENCE);
    eval 'sub MBSTRING_FLAG () {0x1000;}' unless defined(&MBSTRING_FLAG);
    eval 'sub MBSTRING_UTF8 () {( &MBSTRING_FLAG);}' unless defined(&MBSTRING_UTF8);
    eval 'sub MBSTRING_ASC () {( &MBSTRING_FLAG | 1);}' unless defined(&MBSTRING_ASC);
    eval 'sub MBSTRING_BMP () {( &MBSTRING_FLAG | 2);}' unless defined(&MBSTRING_BMP);
    eval 'sub MBSTRING_UNIV () {( &MBSTRING_FLAG | 4);}' unless defined(&MBSTRING_UNIV);
    eval 'sub SMIME_OLDMIME () {0x400;}' unless defined(&SMIME_OLDMIME);
    eval 'sub SMIME_CRLFEOL () {0x800;}' unless defined(&SMIME_CRLFEOL);
    eval 'sub SMIME_STREAM () {0x1000;}' unless defined(&SMIME_STREAM);
    eval 'sub sk_X509_ALGOR_num {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_num( &ossl_check_const_X509_ALGOR_sk_type($sk)));
    }' unless defined(&sk_X509_ALGOR_num);
    eval 'sub sk_X509_ALGOR_value {
        my($sk, $idx) = @_;
	    eval q((( &X509_ALGOR *) &OPENSSL_sk_value( &ossl_check_const_X509_ALGOR_sk_type($sk), ($idx))));
    }' unless defined(&sk_X509_ALGOR_value);
    eval 'sub sk_X509_ALGOR_new {
        my($cmp) = @_;
	    eval q((( &STACK_OF( &X509_ALGOR) *) &OPENSSL_sk_new( &ossl_check_X509_ALGOR_compfunc_type($cmp))));
    }' unless defined(&sk_X509_ALGOR_new);
    eval 'sub sk_X509_ALGOR_new_null () {
        eval q((( &STACK_OF( &X509_ALGOR) *) &OPENSSL_sk_new_null()));
    }' unless defined(&sk_X509_ALGOR_new_null);
    eval 'sub sk_X509_ALGOR_new_reserve {
        my($cmp, $n) = @_;
	    eval q((( &STACK_OF( &X509_ALGOR) *) &OPENSSL_sk_new_reserve( &ossl_check_X509_ALGOR_compfunc_type($cmp), ($n))));
    }' unless defined(&sk_X509_ALGOR_new_reserve);
    eval 'sub sk_X509_ALGOR_reserve {
        my($sk, $n) = @_;
	    eval q( &OPENSSL_sk_reserve( &ossl_check_X509_ALGOR_sk_type($sk), ($n)));
    }' unless defined(&sk_X509_ALGOR_reserve);
    eval 'sub sk_X509_ALGOR_free {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_free( &ossl_check_X509_ALGOR_sk_type($sk)));
    }' unless defined(&sk_X509_ALGOR_free);
    eval 'sub sk_X509_ALGOR_zero {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_zero( &ossl_check_X509_ALGOR_sk_type($sk)));
    }' unless defined(&sk_X509_ALGOR_zero);
    eval 'sub sk_X509_ALGOR_delete {
        my($sk, $i) = @_;
	    eval q((( &X509_ALGOR *) &OPENSSL_sk_delete( &ossl_check_X509_ALGOR_sk_type($sk), ($i))));
    }' unless defined(&sk_X509_ALGOR_delete);
    eval 'sub sk_X509_ALGOR_delete_ptr {
        my($sk, $ptr) = @_;
	    eval q((( &X509_ALGOR *) &OPENSSL_sk_delete_ptr( &ossl_check_X509_ALGOR_sk_type($sk),  &ossl_check_X509_ALGOR_type($ptr))));
    }' unless defined(&sk_X509_ALGOR_delete_ptr);
    eval 'sub sk_X509_ALGOR_push {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_push( &ossl_check_X509_ALGOR_sk_type($sk),  &ossl_check_X509_ALGOR_type($ptr)));
    }' unless defined(&sk_X509_ALGOR_push);
    eval 'sub sk_X509_ALGOR_unshift {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_unshift( &ossl_check_X509_ALGOR_sk_type($sk),  &ossl_check_X509_ALGOR_type($ptr)));
    }' unless defined(&sk_X509_ALGOR_unshift);
    eval 'sub sk_X509_ALGOR_pop {
        my($sk) = @_;
	    eval q((( &X509_ALGOR *) &OPENSSL_sk_pop( &ossl_check_X509_ALGOR_sk_type($sk))));
    }' unless defined(&sk_X509_ALGOR_pop);
    eval 'sub sk_X509_ALGOR_shift {
        my($sk) = @_;
	    eval q((( &X509_ALGOR *) &OPENSSL_sk_shift( &ossl_check_X509_ALGOR_sk_type($sk))));
    }' unless defined(&sk_X509_ALGOR_shift);
    eval 'sub sk_X509_ALGOR_pop_free {
        my($sk, $freefunc) = @_;
	    eval q( &OPENSSL_sk_pop_free( &ossl_check_X509_ALGOR_sk_type($sk), &ossl_check_X509_ALGOR_freefunc_type($freefunc)));
    }' unless defined(&sk_X509_ALGOR_pop_free);
    eval 'sub sk_X509_ALGOR_insert {
        my($sk, $ptr, $idx) = @_;
	    eval q( &OPENSSL_sk_insert( &ossl_check_X509_ALGOR_sk_type($sk),  &ossl_check_X509_ALGOR_type($ptr), ($idx)));
    }' unless defined(&sk_X509_ALGOR_insert);
    eval 'sub sk_X509_ALGOR_set {
        my($sk, $idx, $ptr) = @_;
	    eval q((( &X509_ALGOR *) &OPENSSL_sk_set( &ossl_check_X509_ALGOR_sk_type($sk), ($idx),  &ossl_check_X509_ALGOR_type($ptr))));
    }' unless defined(&sk_X509_ALGOR_set);
    eval 'sub sk_X509_ALGOR_find {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_find( &ossl_check_X509_ALGOR_sk_type($sk),  &ossl_check_X509_ALGOR_type($ptr)));
    }' unless defined(&sk_X509_ALGOR_find);
    eval 'sub sk_X509_ALGOR_find_ex {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_find_ex( &ossl_check_X509_ALGOR_sk_type($sk),  &ossl_check_X509_ALGOR_type($ptr)));
    }' unless defined(&sk_X509_ALGOR_find_ex);
    eval 'sub sk_X509_ALGOR_find_all {
        my($sk, $ptr, $pnum) = @_;
	    eval q( &OPENSSL_sk_find_all( &ossl_check_X509_ALGOR_sk_type($sk),  &ossl_check_X509_ALGOR_type($ptr), $pnum));
    }' unless defined(&sk_X509_ALGOR_find_all);
    eval 'sub sk_X509_ALGOR_sort {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_sort( &ossl_check_X509_ALGOR_sk_type($sk)));
    }' unless defined(&sk_X509_ALGOR_sort);
    eval 'sub sk_X509_ALGOR_is_sorted {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_is_sorted( &ossl_check_const_X509_ALGOR_sk_type($sk)));
    }' unless defined(&sk_X509_ALGOR_is_sorted);
    eval 'sub sk_X509_ALGOR_dup {
        my($sk) = @_;
	    eval q((( &STACK_OF( &X509_ALGOR) *) &OPENSSL_sk_dup( &ossl_check_const_X509_ALGOR_sk_type($sk))));
    }' unless defined(&sk_X509_ALGOR_dup);
    eval 'sub sk_X509_ALGOR_deep_copy {
        my($sk, $copyfunc, $freefunc) = @_;
	    eval q((( &STACK_OF( &X509_ALGOR) *) &OPENSSL_sk_deep_copy( &ossl_check_const_X509_ALGOR_sk_type($sk),  &ossl_check_X509_ALGOR_copyfunc_type($copyfunc),  &ossl_check_X509_ALGOR_freefunc_type($freefunc))));
    }' unless defined(&sk_X509_ALGOR_deep_copy);
    eval 'sub sk_X509_ALGOR_set_cmp_func {
        my($sk, $cmp) = @_;
	    eval q((( &sk_X509_ALGOR_compfunc) &OPENSSL_sk_set_cmp_func( &ossl_check_X509_ALGOR_sk_type($sk),  &ossl_check_X509_ALGOR_compfunc_type($cmp))));
    }' unless defined(&sk_X509_ALGOR_set_cmp_func);
    eval 'sub ASN1_STRING_FLAG_BITS_LEFT () {0x8;}' unless defined(&ASN1_STRING_FLAG_BITS_LEFT);
    eval 'sub ASN1_STRING_FLAG_NDEF () {0x10;}' unless defined(&ASN1_STRING_FLAG_NDEF);
    eval 'sub ASN1_STRING_FLAG_CONT () {0x20;}' unless defined(&ASN1_STRING_FLAG_CONT);
    eval 'sub ASN1_STRING_FLAG_MSTRING () {0x40;}' unless defined(&ASN1_STRING_FLAG_MSTRING);
    eval 'sub ASN1_STRING_FLAG_EMBED () {0x80;}' unless defined(&ASN1_STRING_FLAG_EMBED);
    eval 'sub ASN1_STRING_FLAG_X509_TIME () {0x100;}' unless defined(&ASN1_STRING_FLAG_X509_TIME);
    eval 'sub ASN1_LONG_UNDEF () {0x7fffffff;}' unless defined(&ASN1_LONG_UNDEF);
    eval 'sub STABLE_FLAGS_MALLOC () {0x1;}' unless defined(&STABLE_FLAGS_MALLOC);
    eval 'sub STABLE_FLAGS_CLEAR () { &STABLE_FLAGS_MALLOC;}' unless defined(&STABLE_FLAGS_CLEAR);
    eval 'sub STABLE_NO_MASK () {0x2;}' unless defined(&STABLE_NO_MASK);
    eval 'sub DIRSTRING_TYPE () {( &B_ASN1_PRINTABLESTRING |  &B_ASN1_T61STRING |  &B_ASN1_BMPSTRING |  &B_ASN1_UTF8STRING);}' unless defined(&DIRSTRING_TYPE);
    eval 'sub PKCS9STRING_TYPE () {( &DIRSTRING_TYPE |  &B_ASN1_IA5STRING);}' unless defined(&PKCS9STRING_TYPE);
    eval 'sub sk_ASN1_STRING_TABLE_num {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_num( &ossl_check_const_ASN1_STRING_TABLE_sk_type($sk)));
    }' unless defined(&sk_ASN1_STRING_TABLE_num);
    eval 'sub sk_ASN1_STRING_TABLE_value {
        my($sk, $idx) = @_;
	    eval q((( &ASN1_STRING_TABLE *) &OPENSSL_sk_value( &ossl_check_const_ASN1_STRING_TABLE_sk_type($sk), ($idx))));
    }' unless defined(&sk_ASN1_STRING_TABLE_value);
    eval 'sub sk_ASN1_STRING_TABLE_new {
        my($cmp) = @_;
	    eval q((( &STACK_OF( &ASN1_STRING_TABLE) *) &OPENSSL_sk_new( &ossl_check_ASN1_STRING_TABLE_compfunc_type($cmp))));
    }' unless defined(&sk_ASN1_STRING_TABLE_new);
    eval 'sub sk_ASN1_STRING_TABLE_new_null () {
        eval q((( &STACK_OF( &ASN1_STRING_TABLE) *) &OPENSSL_sk_new_null()));
    }' unless defined(&sk_ASN1_STRING_TABLE_new_null);
    eval 'sub sk_ASN1_STRING_TABLE_new_reserve {
        my($cmp, $n) = @_;
	    eval q((( &STACK_OF( &ASN1_STRING_TABLE) *) &OPENSSL_sk_new_reserve( &ossl_check_ASN1_STRING_TABLE_compfunc_type($cmp), ($n))));
    }' unless defined(&sk_ASN1_STRING_TABLE_new_reserve);
    eval 'sub sk_ASN1_STRING_TABLE_reserve {
        my($sk, $n) = @_;
	    eval q( &OPENSSL_sk_reserve( &ossl_check_ASN1_STRING_TABLE_sk_type($sk), ($n)));
    }' unless defined(&sk_ASN1_STRING_TABLE_reserve);
    eval 'sub sk_ASN1_STRING_TABLE_free {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_free( &ossl_check_ASN1_STRING_TABLE_sk_type($sk)));
    }' unless defined(&sk_ASN1_STRING_TABLE_free);
    eval 'sub sk_ASN1_STRING_TABLE_zero {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_zero( &ossl_check_ASN1_STRING_TABLE_sk_type($sk)));
    }' unless defined(&sk_ASN1_STRING_TABLE_zero);
    eval 'sub sk_ASN1_STRING_TABLE_delete {
        my($sk, $i) = @_;
	    eval q((( &ASN1_STRING_TABLE *) &OPENSSL_sk_delete( &ossl_check_ASN1_STRING_TABLE_sk_type($sk), ($i))));
    }' unless defined(&sk_ASN1_STRING_TABLE_delete);
    eval 'sub sk_ASN1_STRING_TABLE_delete_ptr {
        my($sk, $ptr) = @_;
	    eval q((( &ASN1_STRING_TABLE *) &OPENSSL_sk_delete_ptr( &ossl_check_ASN1_STRING_TABLE_sk_type($sk),  &ossl_check_ASN1_STRING_TABLE_type($ptr))));
    }' unless defined(&sk_ASN1_STRING_TABLE_delete_ptr);
    eval 'sub sk_ASN1_STRING_TABLE_push {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_push( &ossl_check_ASN1_STRING_TABLE_sk_type($sk),  &ossl_check_ASN1_STRING_TABLE_type($ptr)));
    }' unless defined(&sk_ASN1_STRING_TABLE_push);
    eval 'sub sk_ASN1_STRING_TABLE_unshift {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_unshift( &ossl_check_ASN1_STRING_TABLE_sk_type($sk),  &ossl_check_ASN1_STRING_TABLE_type($ptr)));
    }' unless defined(&sk_ASN1_STRING_TABLE_unshift);
    eval 'sub sk_ASN1_STRING_TABLE_pop {
        my($sk) = @_;
	    eval q((( &ASN1_STRING_TABLE *) &OPENSSL_sk_pop( &ossl_check_ASN1_STRING_TABLE_sk_type($sk))));
    }' unless defined(&sk_ASN1_STRING_TABLE_pop);
    eval 'sub sk_ASN1_STRING_TABLE_shift {
        my($sk) = @_;
	    eval q((( &ASN1_STRING_TABLE *) &OPENSSL_sk_shift( &ossl_check_ASN1_STRING_TABLE_sk_type($sk))));
    }' unless defined(&sk_ASN1_STRING_TABLE_shift);
    eval 'sub sk_ASN1_STRING_TABLE_pop_free {
        my($sk, $freefunc) = @_;
	    eval q( &OPENSSL_sk_pop_free( &ossl_check_ASN1_STRING_TABLE_sk_type($sk), &ossl_check_ASN1_STRING_TABLE_freefunc_type($freefunc)));
    }' unless defined(&sk_ASN1_STRING_TABLE_pop_free);
    eval 'sub sk_ASN1_STRING_TABLE_insert {
        my($sk, $ptr, $idx) = @_;
	    eval q( &OPENSSL_sk_insert( &ossl_check_ASN1_STRING_TABLE_sk_type($sk),  &ossl_check_ASN1_STRING_TABLE_type($ptr), ($idx)));
    }' unless defined(&sk_ASN1_STRING_TABLE_insert);
    eval 'sub sk_ASN1_STRING_TABLE_set {
        my($sk, $idx, $ptr) = @_;
	    eval q((( &ASN1_STRING_TABLE *) &OPENSSL_sk_set( &ossl_check_ASN1_STRING_TABLE_sk_type($sk), ($idx),  &ossl_check_ASN1_STRING_TABLE_type($ptr))));
    }' unless defined(&sk_ASN1_STRING_TABLE_set);
    eval 'sub sk_ASN1_STRING_TABLE_find {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_find( &ossl_check_ASN1_STRING_TABLE_sk_type($sk),  &ossl_check_ASN1_STRING_TABLE_type($ptr)));
    }' unless defined(&sk_ASN1_STRING_TABLE_find);
    eval 'sub sk_ASN1_STRING_TABLE_find_ex {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_find_ex( &ossl_check_ASN1_STRING_TABLE_sk_type($sk),  &ossl_check_ASN1_STRING_TABLE_type($ptr)));
    }' unless defined(&sk_ASN1_STRING_TABLE_find_ex);
    eval 'sub sk_ASN1_STRING_TABLE_find_all {
        my($sk, $ptr, $pnum) = @_;
	    eval q( &OPENSSL_sk_find_all( &ossl_check_ASN1_STRING_TABLE_sk_type($sk),  &ossl_check_ASN1_STRING_TABLE_type($ptr), $pnum));
    }' unless defined(&sk_ASN1_STRING_TABLE_find_all);
    eval 'sub sk_ASN1_STRING_TABLE_sort {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_sort( &ossl_check_ASN1_STRING_TABLE_sk_type($sk)));
    }' unless defined(&sk_ASN1_STRING_TABLE_sort);
    eval 'sub sk_ASN1_STRING_TABLE_is_sorted {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_is_sorted( &ossl_check_const_ASN1_STRING_TABLE_sk_type($sk)));
    }' unless defined(&sk_ASN1_STRING_TABLE_is_sorted);
    eval 'sub sk_ASN1_STRING_TABLE_dup {
        my($sk) = @_;
	    eval q((( &STACK_OF( &ASN1_STRING_TABLE) *) &OPENSSL_sk_dup( &ossl_check_const_ASN1_STRING_TABLE_sk_type($sk))));
    }' unless defined(&sk_ASN1_STRING_TABLE_dup);
    eval 'sub sk_ASN1_STRING_TABLE_deep_copy {
        my($sk, $copyfunc, $freefunc) = @_;
	    eval q((( &STACK_OF( &ASN1_STRING_TABLE) *) &OPENSSL_sk_deep_copy( &ossl_check_const_ASN1_STRING_TABLE_sk_type($sk),  &ossl_check_ASN1_STRING_TABLE_copyfunc_type($copyfunc),  &ossl_check_ASN1_STRING_TABLE_freefunc_type($freefunc))));
    }' unless defined(&sk_ASN1_STRING_TABLE_deep_copy);
    eval 'sub sk_ASN1_STRING_TABLE_set_cmp_func {
        my($sk, $cmp) = @_;
	    eval q((( &sk_ASN1_STRING_TABLE_compfunc) &OPENSSL_sk_set_cmp_func( &ossl_check_ASN1_STRING_TABLE_sk_type($sk),  &ossl_check_ASN1_STRING_TABLE_compfunc_type($cmp))));
    }' unless defined(&sk_ASN1_STRING_TABLE_set_cmp_func);
    eval 'sub ub_name () {32768;}' unless defined(&ub_name);
    eval 'sub ub_common_name () {64;}' unless defined(&ub_common_name);
    eval 'sub ub_locality_name () {128;}' unless defined(&ub_locality_name);
    eval 'sub ub_state_name () {128;}' unless defined(&ub_state_name);
    eval 'sub ub_organization_name () {64;}' unless defined(&ub_organization_name);
    eval 'sub ub_organization_unit_name () {64;}' unless defined(&ub_organization_unit_name);
    eval 'sub ub_title () {64;}' unless defined(&ub_title);
    eval 'sub ub_email_address () {128;}' unless defined(&ub_email_address);
    eval 'sub DECLARE_ASN1_FUNCTIONS_attr {
        my($attr, $type) = @_;
	    eval q( &DECLARE_ASN1_FUNCTIONS_name_attr($attr, $type, $type));
    }' unless defined(&DECLARE_ASN1_FUNCTIONS_attr);
    eval 'sub DECLARE_ASN1_FUNCTIONS {
        my($type) = @_;
	    eval q( &DECLARE_ASN1_FUNCTIONS_attr( &extern, $type));
    }' unless defined(&DECLARE_ASN1_FUNCTIONS);
    eval 'sub DECLARE_ASN1_ALLOC_FUNCTIONS_attr {
        my($attr, $type) = @_;
	    eval q( &DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr($attr, $type, $type));
    }' unless defined(&DECLARE_ASN1_ALLOC_FUNCTIONS_attr);
    eval 'sub DECLARE_ASN1_ALLOC_FUNCTIONS {
        my($type) = @_;
	    eval q( &DECLARE_ASN1_ALLOC_FUNCTIONS_attr( &extern, $type));
    }' unless defined(&DECLARE_ASN1_ALLOC_FUNCTIONS);
    eval 'sub DECLARE_ASN1_FUNCTIONS_name_attr {
        my($attr, $type, $name) = @_;
	    eval q( &DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr($attr, $type, $name)  &DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr($attr, $type, $name));
    }' unless defined(&DECLARE_ASN1_FUNCTIONS_name_attr);
    eval 'sub DECLARE_ASN1_FUNCTIONS_name {
        my($type, $name) = @_;
	    eval q( &DECLARE_ASN1_FUNCTIONS_name_attr( &extern, $type, $name));
    }' unless defined(&DECLARE_ASN1_FUNCTIONS_name);
    eval 'sub DECLARE_ASN1_ENCODE_FUNCTIONS_attr {
        my($attr, $type, $itname, $name) = @_;
	    eval q( &DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr($attr, $type, $name)  &DECLARE_ASN1_ITEM_attr($attr, $itname));
    }' unless defined(&DECLARE_ASN1_ENCODE_FUNCTIONS_attr);
    eval 'sub DECLARE_ASN1_ENCODE_FUNCTIONS {
        my($type, $itname, $name) = @_;
	    eval q( &DECLARE_ASN1_ENCODE_FUNCTIONS_attr( &extern, $type, $itname, $name));
    }' unless defined(&DECLARE_ASN1_ENCODE_FUNCTIONS);
    eval 'sub DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr {
        my($attr, $type, $name) = @_;
	    eval q( &DECLARE_ASN1_ENCODE_FUNCTIONS_attr($attr, $type, $name, $name));
    }' unless defined(&DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr);
    eval 'sub DECLARE_ASN1_ENCODE_FUNCTIONS_name {
        my($type, $name) = @_;
	    eval q( &DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr( &extern, $type, $name));
    }' unless defined(&DECLARE_ASN1_ENCODE_FUNCTIONS_name);
    eval 'sub DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr {
        my($attr, $type, $name) = @_;
	    eval q($attr $type * &d2i_$name($type ** &a,  &const \'unsigned char\' ** &in, \'long len\'); $attr \'int\'  &i2d_$name( &const $type * &a, \'unsigned char\' ** &out););
    }' unless defined(&DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr);
    eval 'sub DECLARE_ASN1_ENCODE_FUNCTIONS_only {
        my($type, $name) = @_;
	    eval q( &DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr( &extern, $type, $name));
    }' unless defined(&DECLARE_ASN1_ENCODE_FUNCTIONS_only);
    eval 'sub DECLARE_ASN1_NDEF_FUNCTION_attr {
        my($attr, $name) = @_;
	    eval q($attr \'int\'  &i2d_$name &_NDEF( &const $name * &a, \'unsigned char\' ** &out););
    }' unless defined(&DECLARE_ASN1_NDEF_FUNCTION_attr);
    eval 'sub DECLARE_ASN1_NDEF_FUNCTION {
        my($name) = @_;
	    eval q( &DECLARE_ASN1_NDEF_FUNCTION_attr( &extern, $name));
    }' unless defined(&DECLARE_ASN1_NDEF_FUNCTION);
    eval 'sub DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr {
        my($attr, $type, $name) = @_;
	    eval q($attr $type *$name &_new( &void); $attr  &void $name &_free($type * &a););
    }' unless defined(&DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr);
    eval 'sub DECLARE_ASN1_ALLOC_FUNCTIONS_name {
        my($type, $name) = @_;
	    eval q( &DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr( &extern, $type, $name));
    }' unless defined(&DECLARE_ASN1_ALLOC_FUNCTIONS_name);
    eval 'sub DECLARE_ASN1_DUP_FUNCTION_attr {
        my($attr, $type) = @_;
	    eval q( &DECLARE_ASN1_DUP_FUNCTION_name_attr($attr, $type, $type));
    }' unless defined(&DECLARE_ASN1_DUP_FUNCTION_attr);
    eval 'sub DECLARE_ASN1_DUP_FUNCTION {
        my($type) = @_;
	    eval q( &DECLARE_ASN1_DUP_FUNCTION_attr( &extern, $type));
    }' unless defined(&DECLARE_ASN1_DUP_FUNCTION);
    eval 'sub DECLARE_ASN1_DUP_FUNCTION_name_attr {
        my($attr, $type, $name) = @_;
	    eval q($attr $type *$name &_dup( &const $type * &a););
    }' unless defined(&DECLARE_ASN1_DUP_FUNCTION_name_attr);
    eval 'sub DECLARE_ASN1_DUP_FUNCTION_name {
        my($type, $name) = @_;
	    eval q( &DECLARE_ASN1_DUP_FUNCTION_name_attr( &extern, $type, $name));
    }' unless defined(&DECLARE_ASN1_DUP_FUNCTION_name);
    eval 'sub DECLARE_ASN1_PRINT_FUNCTION_attr {
        my($attr, $stname) = @_;
	    eval q( &DECLARE_ASN1_PRINT_FUNCTION_fname_attr($attr, $stname, $stname));
    }' unless defined(&DECLARE_ASN1_PRINT_FUNCTION_attr);
    eval 'sub DECLARE_ASN1_PRINT_FUNCTION {
        my($stname) = @_;
	    eval q( &DECLARE_ASN1_PRINT_FUNCTION_attr( &extern, $stname));
    }' unless defined(&DECLARE_ASN1_PRINT_FUNCTION);
    eval 'sub DECLARE_ASN1_PRINT_FUNCTION_fname_attr {
        my($attr, $stname, $fname) = @_;
	    eval q($attr \'int\' $fname &_print_ctx( &BIO * &out,  &const $stname * &x, \'int\'  &indent,  &const  &ASN1_PCTX * &pctx););
    }' unless defined(&DECLARE_ASN1_PRINT_FUNCTION_fname_attr);
    eval 'sub DECLARE_ASN1_PRINT_FUNCTION_fname {
        my($stname, $fname) = @_;
	    eval q( &DECLARE_ASN1_PRINT_FUNCTION_fname_attr( &extern, $stname, $fname));
    }' unless defined(&DECLARE_ASN1_PRINT_FUNCTION_fname);
    eval 'sub D2I_OF {
        my($type) = @_;
	    eval q($type *(*)($type **,  &const \'unsigned char\' **, \'long\'));
    }' unless defined(&D2I_OF);
    eval 'sub I2D_OF {
        my($type) = @_;
	    eval q( &int (*)( &const $type *, \'unsigned char\' **));
    }' unless defined(&I2D_OF);
    eval 'sub CHECKED_D2I_OF {
        my($type, $d2i) = @_;
	    eval q((( &d2i_of_void *)(1? $d2i : (( &D2I_OF($type))0))));
    }' unless defined(&CHECKED_D2I_OF);
    eval 'sub CHECKED_I2D_OF {
        my($type, $i2d) = @_;
	    eval q((( &i2d_of_void *)(1? $i2d : (( &I2D_OF($type))0))));
    }' unless defined(&CHECKED_I2D_OF);
    eval 'sub CHECKED_NEW_OF {
        my($type, $xnew) = @_;
	    eval q((( &void *(*)( &void))(1? $xnew : (($type * (*)( &void))0))));
    }' unless defined(&CHECKED_NEW_OF);
    eval 'sub CHECKED_PTR_OF {
        my($type, $p) = @_;
	    eval q((( &void *)(1? $p : ($type *)0)));
    }' unless defined(&CHECKED_PTR_OF);
    eval 'sub CHECKED_PPTR_OF {
        my($type, $p) = @_;
	    eval q((( &void **)(1? $p : ($type **)0)));
    }' unless defined(&CHECKED_PPTR_OF);
    eval 'sub TYPEDEF_D2I_OF {
        my($type) = @_;
	    eval q( &typedef $type * &d2i_of_$type($type **,  &const \'unsigned char\' **, \'long\'));
    }' unless defined(&TYPEDEF_D2I_OF);
    eval 'sub TYPEDEF_I2D_OF {
        my($type) = @_;
	    eval q( &typedef \'int\'  &i2d_of_$type( &const $type *, \'unsigned char\' **));
    }' unless defined(&TYPEDEF_I2D_OF);
    eval 'sub TYPEDEF_D2I2D_OF {
        my($type) = @_;
	    eval q( &TYPEDEF_D2I_OF($type);  &TYPEDEF_I2D_OF($type));
    }' unless defined(&TYPEDEF_D2I2D_OF);
    eval 'sub ASN1_ITEM_ptr {
        my($iptr) = @_;
	    eval q(($iptr()));
    }' unless defined(&ASN1_ITEM_ptr);
    eval 'sub ASN1_ITEM_ref {
        my($iptr) = @_;
	    eval q(($iptr &_it));
    }' unless defined(&ASN1_ITEM_ref);
    eval 'sub ASN1_ITEM_rptr {
        my($ref) = @_;
	    eval q(($ref &_it()));
    }' unless defined(&ASN1_ITEM_rptr);
    eval 'sub DECLARE_ASN1_ITEM_attr {
        my($attr, $name) = @_;
	    eval q($attr  &const  &ASN1_ITEM *$name &_it( &void););
    }' unless defined(&DECLARE_ASN1_ITEM_attr);
    eval 'sub DECLARE_ASN1_ITEM {
        my($name) = @_;
	    eval q( &DECLARE_ASN1_ITEM_attr( &extern, $name));
    }' unless defined(&DECLARE_ASN1_ITEM);
    eval 'sub ASN1_STRFLGS_ESC_2253 () {1;}' unless defined(&ASN1_STRFLGS_ESC_2253);
    eval 'sub ASN1_STRFLGS_ESC_CTRL () {2;}' unless defined(&ASN1_STRFLGS_ESC_CTRL);
    eval 'sub ASN1_STRFLGS_ESC_MSB () {4;}' unless defined(&ASN1_STRFLGS_ESC_MSB);
    eval 'sub ASN1_DTFLGS_TYPE_MASK () {0xf;}' unless defined(&ASN1_DTFLGS_TYPE_MASK);
    eval 'sub ASN1_DTFLGS_RFC822 () {0x;}' unless defined(&ASN1_DTFLGS_RFC822);
    eval 'sub ASN1_DTFLGS_ISO8601 () {0x1;}' unless defined(&ASN1_DTFLGS_ISO8601);
    eval 'sub ASN1_STRFLGS_ESC_QUOTE () {8;}' unless defined(&ASN1_STRFLGS_ESC_QUOTE);
    eval 'sub CHARTYPE_PRINTABLESTRING () {0x10;}' unless defined(&CHARTYPE_PRINTABLESTRING);
    eval 'sub CHARTYPE_FIRST_ESC_2253 () {0x20;}' unless defined(&CHARTYPE_FIRST_ESC_2253);
    eval 'sub CHARTYPE_LAST_ESC_2253 () {0x40;}' unless defined(&CHARTYPE_LAST_ESC_2253);
    eval 'sub ASN1_STRFLGS_UTF8_CONVERT () {0x10;}' unless defined(&ASN1_STRFLGS_UTF8_CONVERT);
    eval 'sub ASN1_STRFLGS_IGNORE_TYPE () {0x20;}' unless defined(&ASN1_STRFLGS_IGNORE_TYPE);
    eval 'sub ASN1_STRFLGS_SHOW_TYPE () {0x40;}' unless defined(&ASN1_STRFLGS_SHOW_TYPE);
    eval 'sub ASN1_STRFLGS_DUMP_ALL () {0x80;}' unless defined(&ASN1_STRFLGS_DUMP_ALL);
    eval 'sub ASN1_STRFLGS_DUMP_UNKNOWN () {0x100;}' unless defined(&ASN1_STRFLGS_DUMP_UNKNOWN);
    eval 'sub ASN1_STRFLGS_DUMP_DER () {0x200;}' unless defined(&ASN1_STRFLGS_DUMP_DER);
    eval 'sub ASN1_STRFLGS_ESC_2254 () {0x400;}' unless defined(&ASN1_STRFLGS_ESC_2254);
    eval 'sub ASN1_STRFLGS_RFC2253 () {( &ASN1_STRFLGS_ESC_2253 |  &ASN1_STRFLGS_ESC_CTRL |  &ASN1_STRFLGS_ESC_MSB |  &ASN1_STRFLGS_UTF8_CONVERT |  &ASN1_STRFLGS_DUMP_UNKNOWN |  &ASN1_STRFLGS_DUMP_DER);}' unless defined(&ASN1_STRFLGS_RFC2253);
    eval 'sub sk_ASN1_TYPE_num {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_num( &ossl_check_const_ASN1_TYPE_sk_type($sk)));
    }' unless defined(&sk_ASN1_TYPE_num);
    eval 'sub sk_ASN1_TYPE_value {
        my($sk, $idx) = @_;
	    eval q((( &ASN1_TYPE *) &OPENSSL_sk_value( &ossl_check_const_ASN1_TYPE_sk_type($sk), ($idx))));
    }' unless defined(&sk_ASN1_TYPE_value);
    eval 'sub sk_ASN1_TYPE_new {
        my($cmp) = @_;
	    eval q((( &STACK_OF( &ASN1_TYPE) *) &OPENSSL_sk_new( &ossl_check_ASN1_TYPE_compfunc_type($cmp))));
    }' unless defined(&sk_ASN1_TYPE_new);
    eval 'sub sk_ASN1_TYPE_new_null () {
        eval q((( &STACK_OF( &ASN1_TYPE) *) &OPENSSL_sk_new_null()));
    }' unless defined(&sk_ASN1_TYPE_new_null);
    eval 'sub sk_ASN1_TYPE_new_reserve {
        my($cmp, $n) = @_;
	    eval q((( &STACK_OF( &ASN1_TYPE) *) &OPENSSL_sk_new_reserve( &ossl_check_ASN1_TYPE_compfunc_type($cmp), ($n))));
    }' unless defined(&sk_ASN1_TYPE_new_reserve);
    eval 'sub sk_ASN1_TYPE_reserve {
        my($sk, $n) = @_;
	    eval q( &OPENSSL_sk_reserve( &ossl_check_ASN1_TYPE_sk_type($sk), ($n)));
    }' unless defined(&sk_ASN1_TYPE_reserve);
    eval 'sub sk_ASN1_TYPE_free {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_free( &ossl_check_ASN1_TYPE_sk_type($sk)));
    }' unless defined(&sk_ASN1_TYPE_free);
    eval 'sub sk_ASN1_TYPE_zero {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_zero( &ossl_check_ASN1_TYPE_sk_type($sk)));
    }' unless defined(&sk_ASN1_TYPE_zero);
    eval 'sub sk_ASN1_TYPE_delete {
        my($sk, $i) = @_;
	    eval q((( &ASN1_TYPE *) &OPENSSL_sk_delete( &ossl_check_ASN1_TYPE_sk_type($sk), ($i))));
    }' unless defined(&sk_ASN1_TYPE_delete);
    eval 'sub sk_ASN1_TYPE_delete_ptr {
        my($sk, $ptr) = @_;
	    eval q((( &ASN1_TYPE *) &OPENSSL_sk_delete_ptr( &ossl_check_ASN1_TYPE_sk_type($sk),  &ossl_check_ASN1_TYPE_type($ptr))));
    }' unless defined(&sk_ASN1_TYPE_delete_ptr);
    eval 'sub sk_ASN1_TYPE_push {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_push( &ossl_check_ASN1_TYPE_sk_type($sk),  &ossl_check_ASN1_TYPE_type($ptr)));
    }' unless defined(&sk_ASN1_TYPE_push);
    eval 'sub sk_ASN1_TYPE_unshift {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_unshift( &ossl_check_ASN1_TYPE_sk_type($sk),  &ossl_check_ASN1_TYPE_type($ptr)));
    }' unless defined(&sk_ASN1_TYPE_unshift);
    eval 'sub sk_ASN1_TYPE_pop {
        my($sk) = @_;
	    eval q((( &ASN1_TYPE *) &OPENSSL_sk_pop( &ossl_check_ASN1_TYPE_sk_type($sk))));
    }' unless defined(&sk_ASN1_TYPE_pop);
    eval 'sub sk_ASN1_TYPE_shift {
        my($sk) = @_;
	    eval q((( &ASN1_TYPE *) &OPENSSL_sk_shift( &ossl_check_ASN1_TYPE_sk_type($sk))));
    }' unless defined(&sk_ASN1_TYPE_shift);
    eval 'sub sk_ASN1_TYPE_pop_free {
        my($sk, $freefunc) = @_;
	    eval q( &OPENSSL_sk_pop_free( &ossl_check_ASN1_TYPE_sk_type($sk), &ossl_check_ASN1_TYPE_freefunc_type($freefunc)));
    }' unless defined(&sk_ASN1_TYPE_pop_free);
    eval 'sub sk_ASN1_TYPE_insert {
        my($sk, $ptr, $idx) = @_;
	    eval q( &OPENSSL_sk_insert( &ossl_check_ASN1_TYPE_sk_type($sk),  &ossl_check_ASN1_TYPE_type($ptr), ($idx)));
    }' unless defined(&sk_ASN1_TYPE_insert);
    eval 'sub sk_ASN1_TYPE_set {
        my($sk, $idx, $ptr) = @_;
	    eval q((( &ASN1_TYPE *) &OPENSSL_sk_set( &ossl_check_ASN1_TYPE_sk_type($sk), ($idx),  &ossl_check_ASN1_TYPE_type($ptr))));
    }' unless defined(&sk_ASN1_TYPE_set);
    eval 'sub sk_ASN1_TYPE_find {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_find( &ossl_check_ASN1_TYPE_sk_type($sk),  &ossl_check_ASN1_TYPE_type($ptr)));
    }' unless defined(&sk_ASN1_TYPE_find);
    eval 'sub sk_ASN1_TYPE_find_ex {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_find_ex( &ossl_check_ASN1_TYPE_sk_type($sk),  &ossl_check_ASN1_TYPE_type($ptr)));
    }' unless defined(&sk_ASN1_TYPE_find_ex);
    eval 'sub sk_ASN1_TYPE_find_all {
        my($sk, $ptr, $pnum) = @_;
	    eval q( &OPENSSL_sk_find_all( &ossl_check_ASN1_TYPE_sk_type($sk),  &ossl_check_ASN1_TYPE_type($ptr), $pnum));
    }' unless defined(&sk_ASN1_TYPE_find_all);
    eval 'sub sk_ASN1_TYPE_sort {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_sort( &ossl_check_ASN1_TYPE_sk_type($sk)));
    }' unless defined(&sk_ASN1_TYPE_sort);
    eval 'sub sk_ASN1_TYPE_is_sorted {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_is_sorted( &ossl_check_const_ASN1_TYPE_sk_type($sk)));
    }' unless defined(&sk_ASN1_TYPE_is_sorted);
    eval 'sub sk_ASN1_TYPE_dup {
        my($sk) = @_;
	    eval q((( &STACK_OF( &ASN1_TYPE) *) &OPENSSL_sk_dup( &ossl_check_const_ASN1_TYPE_sk_type($sk))));
    }' unless defined(&sk_ASN1_TYPE_dup);
    eval 'sub sk_ASN1_TYPE_deep_copy {
        my($sk, $copyfunc, $freefunc) = @_;
	    eval q((( &STACK_OF( &ASN1_TYPE) *) &OPENSSL_sk_deep_copy( &ossl_check_const_ASN1_TYPE_sk_type($sk),  &ossl_check_ASN1_TYPE_copyfunc_type($copyfunc),  &ossl_check_ASN1_TYPE_freefunc_type($freefunc))));
    }' unless defined(&sk_ASN1_TYPE_deep_copy);
    eval 'sub sk_ASN1_TYPE_set_cmp_func {
        my($sk, $cmp) = @_;
	    eval q((( &sk_ASN1_TYPE_compfunc) &OPENSSL_sk_set_cmp_func( &ossl_check_ASN1_TYPE_sk_type($sk),  &ossl_check_ASN1_TYPE_compfunc_type($cmp))));
    }' unless defined(&sk_ASN1_TYPE_set_cmp_func);
    eval 'sub B_ASN1_TIME () { &B_ASN1_UTCTIME |  &B_ASN1_GENERALIZEDTIME;}' unless defined(&B_ASN1_TIME);
    eval 'sub B_ASN1_PRINTABLE () { &B_ASN1_NUMERICSTRING |  &B_ASN1_PRINTABLESTRING |  &B_ASN1_T61STRING |  &B_ASN1_IA5STRING |  &B_ASN1_BIT_STRING |  &B_ASN1_UNIVERSALSTRING |  &B_ASN1_BMPSTRING |  &B_ASN1_UTF8STRING |  &B_ASN1_SEQUENCE |  &B_ASN1_UNKNOWN;}' unless defined(&B_ASN1_PRINTABLE);
    eval 'sub B_ASN1_DIRECTORYSTRING () { &B_ASN1_PRINTABLESTRING |  &B_ASN1_TELETEXSTRING |  &B_ASN1_BMPSTRING |  &B_ASN1_UNIVERSALSTRING |  &B_ASN1_UTF8STRING;}' unless defined(&B_ASN1_DIRECTORYSTRING);
    eval 'sub B_ASN1_DISPLAYTEXT () { &B_ASN1_IA5STRING |  &B_ASN1_VISIBLESTRING |  &B_ASN1_BMPSTRING |  &B_ASN1_UTF8STRING;}' unless defined(&B_ASN1_DISPLAYTEXT);
    eval 'sub sk_ASN1_OBJECT_num {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_num( &ossl_check_const_ASN1_OBJECT_sk_type($sk)));
    }' unless defined(&sk_ASN1_OBJECT_num);
    eval 'sub sk_ASN1_OBJECT_value {
        my($sk, $idx) = @_;
	    eval q((( &ASN1_OBJECT *) &OPENSSL_sk_value( &ossl_check_const_ASN1_OBJECT_sk_type($sk), ($idx))));
    }' unless defined(&sk_ASN1_OBJECT_value);
    eval 'sub sk_ASN1_OBJECT_new {
        my($cmp) = @_;
	    eval q((( &STACK_OF( &ASN1_OBJECT) *) &OPENSSL_sk_new( &ossl_check_ASN1_OBJECT_compfunc_type($cmp))));
    }' unless defined(&sk_ASN1_OBJECT_new);
    eval 'sub sk_ASN1_OBJECT_new_null () {
        eval q((( &STACK_OF( &ASN1_OBJECT) *) &OPENSSL_sk_new_null()));
    }' unless defined(&sk_ASN1_OBJECT_new_null);
    eval 'sub sk_ASN1_OBJECT_new_reserve {
        my($cmp, $n) = @_;
	    eval q((( &STACK_OF( &ASN1_OBJECT) *) &OPENSSL_sk_new_reserve( &ossl_check_ASN1_OBJECT_compfunc_type($cmp), ($n))));
    }' unless defined(&sk_ASN1_OBJECT_new_reserve);
    eval 'sub sk_ASN1_OBJECT_reserve {
        my($sk, $n) = @_;
	    eval q( &OPENSSL_sk_reserve( &ossl_check_ASN1_OBJECT_sk_type($sk), ($n)));
    }' unless defined(&sk_ASN1_OBJECT_reserve);
    eval 'sub sk_ASN1_OBJECT_free {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_free( &ossl_check_ASN1_OBJECT_sk_type($sk)));
    }' unless defined(&sk_ASN1_OBJECT_free);
    eval 'sub sk_ASN1_OBJECT_zero {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_zero( &ossl_check_ASN1_OBJECT_sk_type($sk)));
    }' unless defined(&sk_ASN1_OBJECT_zero);
    eval 'sub sk_ASN1_OBJECT_delete {
        my($sk, $i) = @_;
	    eval q((( &ASN1_OBJECT *) &OPENSSL_sk_delete( &ossl_check_ASN1_OBJECT_sk_type($sk), ($i))));
    }' unless defined(&sk_ASN1_OBJECT_delete);
    eval 'sub sk_ASN1_OBJECT_delete_ptr {
        my($sk, $ptr) = @_;
	    eval q((( &ASN1_OBJECT *) &OPENSSL_sk_delete_ptr( &ossl_check_ASN1_OBJECT_sk_type($sk),  &ossl_check_ASN1_OBJECT_type($ptr))));
    }' unless defined(&sk_ASN1_OBJECT_delete_ptr);
    eval 'sub sk_ASN1_OBJECT_push {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_push( &ossl_check_ASN1_OBJECT_sk_type($sk),  &ossl_check_ASN1_OBJECT_type($ptr)));
    }' unless defined(&sk_ASN1_OBJECT_push);
    eval 'sub sk_ASN1_OBJECT_unshift {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_unshift( &ossl_check_ASN1_OBJECT_sk_type($sk),  &ossl_check_ASN1_OBJECT_type($ptr)));
    }' unless defined(&sk_ASN1_OBJECT_unshift);
    eval 'sub sk_ASN1_OBJECT_pop {
        my($sk) = @_;
	    eval q((( &ASN1_OBJECT *) &OPENSSL_sk_pop( &ossl_check_ASN1_OBJECT_sk_type($sk))));
    }' unless defined(&sk_ASN1_OBJECT_pop);
    eval 'sub sk_ASN1_OBJECT_shift {
        my($sk) = @_;
	    eval q((( &ASN1_OBJECT *) &OPENSSL_sk_shift( &ossl_check_ASN1_OBJECT_sk_type($sk))));
    }' unless defined(&sk_ASN1_OBJECT_shift);
    eval 'sub sk_ASN1_OBJECT_pop_free {
        my($sk, $freefunc) = @_;
	    eval q( &OPENSSL_sk_pop_free( &ossl_check_ASN1_OBJECT_sk_type($sk), &ossl_check_ASN1_OBJECT_freefunc_type($freefunc)));
    }' unless defined(&sk_ASN1_OBJECT_pop_free);
    eval 'sub sk_ASN1_OBJECT_insert {
        my($sk, $ptr, $idx) = @_;
	    eval q( &OPENSSL_sk_insert( &ossl_check_ASN1_OBJECT_sk_type($sk),  &ossl_check_ASN1_OBJECT_type($ptr), ($idx)));
    }' unless defined(&sk_ASN1_OBJECT_insert);
    eval 'sub sk_ASN1_OBJECT_set {
        my($sk, $idx, $ptr) = @_;
	    eval q((( &ASN1_OBJECT *) &OPENSSL_sk_set( &ossl_check_ASN1_OBJECT_sk_type($sk), ($idx),  &ossl_check_ASN1_OBJECT_type($ptr))));
    }' unless defined(&sk_ASN1_OBJECT_set);
    eval 'sub sk_ASN1_OBJECT_find {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_find( &ossl_check_ASN1_OBJECT_sk_type($sk),  &ossl_check_ASN1_OBJECT_type($ptr)));
    }' unless defined(&sk_ASN1_OBJECT_find);
    eval 'sub sk_ASN1_OBJECT_find_ex {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_find_ex( &ossl_check_ASN1_OBJECT_sk_type($sk),  &ossl_check_ASN1_OBJECT_type($ptr)));
    }' unless defined(&sk_ASN1_OBJECT_find_ex);
    eval 'sub sk_ASN1_OBJECT_find_all {
        my($sk, $ptr, $pnum) = @_;
	    eval q( &OPENSSL_sk_find_all( &ossl_check_ASN1_OBJECT_sk_type($sk),  &ossl_check_ASN1_OBJECT_type($ptr), $pnum));
    }' unless defined(&sk_ASN1_OBJECT_find_all);
    eval 'sub sk_ASN1_OBJECT_sort {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_sort( &ossl_check_ASN1_OBJECT_sk_type($sk)));
    }' unless defined(&sk_ASN1_OBJECT_sort);
    eval 'sub sk_ASN1_OBJECT_is_sorted {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_is_sorted( &ossl_check_const_ASN1_OBJECT_sk_type($sk)));
    }' unless defined(&sk_ASN1_OBJECT_is_sorted);
    eval 'sub sk_ASN1_OBJECT_dup {
        my($sk) = @_;
	    eval q((( &STACK_OF( &ASN1_OBJECT) *) &OPENSSL_sk_dup( &ossl_check_const_ASN1_OBJECT_sk_type($sk))));
    }' unless defined(&sk_ASN1_OBJECT_dup);
    eval 'sub sk_ASN1_OBJECT_deep_copy {
        my($sk, $copyfunc, $freefunc) = @_;
	    eval q((( &STACK_OF( &ASN1_OBJECT) *) &OPENSSL_sk_deep_copy( &ossl_check_const_ASN1_OBJECT_sk_type($sk),  &ossl_check_ASN1_OBJECT_copyfunc_type($copyfunc),  &ossl_check_ASN1_OBJECT_freefunc_type($freefunc))));
    }' unless defined(&sk_ASN1_OBJECT_deep_copy);
    eval 'sub sk_ASN1_OBJECT_set_cmp_func {
        my($sk, $cmp) = @_;
	    eval q((( &sk_ASN1_OBJECT_compfunc) &OPENSSL_sk_set_cmp_func( &ossl_check_ASN1_OBJECT_sk_type($sk),  &ossl_check_ASN1_OBJECT_compfunc_type($cmp))));
    }' unless defined(&sk_ASN1_OBJECT_set_cmp_func);
    unless(defined(&OPENSSL_NO_DEPRECATED_3_0)) {
    }
    unless(defined(&OPENSSL_NO_DEPRECATED_1_1_0)) {
    }
    eval 'sub sk_ASN1_INTEGER_num {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_num( &ossl_check_const_ASN1_INTEGER_sk_type($sk)));
    }' unless defined(&sk_ASN1_INTEGER_num);
    eval 'sub sk_ASN1_INTEGER_value {
        my($sk, $idx) = @_;
	    eval q((( &ASN1_INTEGER *) &OPENSSL_sk_value( &ossl_check_const_ASN1_INTEGER_sk_type($sk), ($idx))));
    }' unless defined(&sk_ASN1_INTEGER_value);
    eval 'sub sk_ASN1_INTEGER_new {
        my($cmp) = @_;
	    eval q((( &STACK_OF( &ASN1_INTEGER) *) &OPENSSL_sk_new( &ossl_check_ASN1_INTEGER_compfunc_type($cmp))));
    }' unless defined(&sk_ASN1_INTEGER_new);
    eval 'sub sk_ASN1_INTEGER_new_null () {
        eval q((( &STACK_OF( &ASN1_INTEGER) *) &OPENSSL_sk_new_null()));
    }' unless defined(&sk_ASN1_INTEGER_new_null);
    eval 'sub sk_ASN1_INTEGER_new_reserve {
        my($cmp, $n) = @_;
	    eval q((( &STACK_OF( &ASN1_INTEGER) *) &OPENSSL_sk_new_reserve( &ossl_check_ASN1_INTEGER_compfunc_type($cmp), ($n))));
    }' unless defined(&sk_ASN1_INTEGER_new_reserve);
    eval 'sub sk_ASN1_INTEGER_reserve {
        my($sk, $n) = @_;
	    eval q( &OPENSSL_sk_reserve( &ossl_check_ASN1_INTEGER_sk_type($sk), ($n)));
    }' unless defined(&sk_ASN1_INTEGER_reserve);
    eval 'sub sk_ASN1_INTEGER_free {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_free( &ossl_check_ASN1_INTEGER_sk_type($sk)));
    }' unless defined(&sk_ASN1_INTEGER_free);
    eval 'sub sk_ASN1_INTEGER_zero {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_zero( &ossl_check_ASN1_INTEGER_sk_type($sk)));
    }' unless defined(&sk_ASN1_INTEGER_zero);
    eval 'sub sk_ASN1_INTEGER_delete {
        my($sk, $i) = @_;
	    eval q((( &ASN1_INTEGER *) &OPENSSL_sk_delete( &ossl_check_ASN1_INTEGER_sk_type($sk), ($i))));
    }' unless defined(&sk_ASN1_INTEGER_delete);
    eval 'sub sk_ASN1_INTEGER_delete_ptr {
        my($sk, $ptr) = @_;
	    eval q((( &ASN1_INTEGER *) &OPENSSL_sk_delete_ptr( &ossl_check_ASN1_INTEGER_sk_type($sk),  &ossl_check_ASN1_INTEGER_type($ptr))));
    }' unless defined(&sk_ASN1_INTEGER_delete_ptr);
    eval 'sub sk_ASN1_INTEGER_push {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_push( &ossl_check_ASN1_INTEGER_sk_type($sk),  &ossl_check_ASN1_INTEGER_type($ptr)));
    }' unless defined(&sk_ASN1_INTEGER_push);
    eval 'sub sk_ASN1_INTEGER_unshift {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_unshift( &ossl_check_ASN1_INTEGER_sk_type($sk),  &ossl_check_ASN1_INTEGER_type($ptr)));
    }' unless defined(&sk_ASN1_INTEGER_unshift);
    eval 'sub sk_ASN1_INTEGER_pop {
        my($sk) = @_;
	    eval q((( &ASN1_INTEGER *) &OPENSSL_sk_pop( &ossl_check_ASN1_INTEGER_sk_type($sk))));
    }' unless defined(&sk_ASN1_INTEGER_pop);
    eval 'sub sk_ASN1_INTEGER_shift {
        my($sk) = @_;
	    eval q((( &ASN1_INTEGER *) &OPENSSL_sk_shift( &ossl_check_ASN1_INTEGER_sk_type($sk))));
    }' unless defined(&sk_ASN1_INTEGER_shift);
    eval 'sub sk_ASN1_INTEGER_pop_free {
        my($sk, $freefunc) = @_;
	    eval q( &OPENSSL_sk_pop_free( &ossl_check_ASN1_INTEGER_sk_type($sk), &ossl_check_ASN1_INTEGER_freefunc_type($freefunc)));
    }' unless defined(&sk_ASN1_INTEGER_pop_free);
    eval 'sub sk_ASN1_INTEGER_insert {
        my($sk, $ptr, $idx) = @_;
	    eval q( &OPENSSL_sk_insert( &ossl_check_ASN1_INTEGER_sk_type($sk),  &ossl_check_ASN1_INTEGER_type($ptr), ($idx)));
    }' unless defined(&sk_ASN1_INTEGER_insert);
    eval 'sub sk_ASN1_INTEGER_set {
        my($sk, $idx, $ptr) = @_;
	    eval q((( &ASN1_INTEGER *) &OPENSSL_sk_set( &ossl_check_ASN1_INTEGER_sk_type($sk), ($idx),  &ossl_check_ASN1_INTEGER_type($ptr))));
    }' unless defined(&sk_ASN1_INTEGER_set);
    eval 'sub sk_ASN1_INTEGER_find {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_find( &ossl_check_ASN1_INTEGER_sk_type($sk),  &ossl_check_ASN1_INTEGER_type($ptr)));
    }' unless defined(&sk_ASN1_INTEGER_find);
    eval 'sub sk_ASN1_INTEGER_find_ex {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_find_ex( &ossl_check_ASN1_INTEGER_sk_type($sk),  &ossl_check_ASN1_INTEGER_type($ptr)));
    }' unless defined(&sk_ASN1_INTEGER_find_ex);
    eval 'sub sk_ASN1_INTEGER_find_all {
        my($sk, $ptr, $pnum) = @_;
	    eval q( &OPENSSL_sk_find_all( &ossl_check_ASN1_INTEGER_sk_type($sk),  &ossl_check_ASN1_INTEGER_type($ptr), $pnum));
    }' unless defined(&sk_ASN1_INTEGER_find_all);
    eval 'sub sk_ASN1_INTEGER_sort {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_sort( &ossl_check_ASN1_INTEGER_sk_type($sk)));
    }' unless defined(&sk_ASN1_INTEGER_sort);
    eval 'sub sk_ASN1_INTEGER_is_sorted {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_is_sorted( &ossl_check_const_ASN1_INTEGER_sk_type($sk)));
    }' unless defined(&sk_ASN1_INTEGER_is_sorted);
    eval 'sub sk_ASN1_INTEGER_dup {
        my($sk) = @_;
	    eval q((( &STACK_OF( &ASN1_INTEGER) *) &OPENSSL_sk_dup( &ossl_check_const_ASN1_INTEGER_sk_type($sk))));
    }' unless defined(&sk_ASN1_INTEGER_dup);
    eval 'sub sk_ASN1_INTEGER_deep_copy {
        my($sk, $copyfunc, $freefunc) = @_;
	    eval q((( &STACK_OF( &ASN1_INTEGER) *) &OPENSSL_sk_deep_copy( &ossl_check_const_ASN1_INTEGER_sk_type($sk),  &ossl_check_ASN1_INTEGER_copyfunc_type($copyfunc),  &ossl_check_ASN1_INTEGER_freefunc_type($freefunc))));
    }' unless defined(&sk_ASN1_INTEGER_deep_copy);
    eval 'sub sk_ASN1_INTEGER_set_cmp_func {
        my($sk, $cmp) = @_;
	    eval q((( &sk_ASN1_INTEGER_compfunc) &OPENSSL_sk_set_cmp_func( &ossl_check_ASN1_INTEGER_sk_type($sk),  &ossl_check_ASN1_INTEGER_compfunc_type($cmp))));
    }' unless defined(&sk_ASN1_INTEGER_set_cmp_func);
    eval 'sub sk_ASN1_UTF8STRING_num {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_num( &ossl_check_const_ASN1_UTF8STRING_sk_type($sk)));
    }' unless defined(&sk_ASN1_UTF8STRING_num);
    eval 'sub sk_ASN1_UTF8STRING_value {
        my($sk, $idx) = @_;
	    eval q((( &ASN1_UTF8STRING *) &OPENSSL_sk_value( &ossl_check_const_ASN1_UTF8STRING_sk_type($sk), ($idx))));
    }' unless defined(&sk_ASN1_UTF8STRING_value);
    eval 'sub sk_ASN1_UTF8STRING_new {
        my($cmp) = @_;
	    eval q((( &STACK_OF( &ASN1_UTF8STRING) *) &OPENSSL_sk_new( &ossl_check_ASN1_UTF8STRING_compfunc_type($cmp))));
    }' unless defined(&sk_ASN1_UTF8STRING_new);
    eval 'sub sk_ASN1_UTF8STRING_new_null () {
        eval q((( &STACK_OF( &ASN1_UTF8STRING) *) &OPENSSL_sk_new_null()));
    }' unless defined(&sk_ASN1_UTF8STRING_new_null);
    eval 'sub sk_ASN1_UTF8STRING_new_reserve {
        my($cmp, $n) = @_;
	    eval q((( &STACK_OF( &ASN1_UTF8STRING) *) &OPENSSL_sk_new_reserve( &ossl_check_ASN1_UTF8STRING_compfunc_type($cmp), ($n))));
    }' unless defined(&sk_ASN1_UTF8STRING_new_reserve);
    eval 'sub sk_ASN1_UTF8STRING_reserve {
        my($sk, $n) = @_;
	    eval q( &OPENSSL_sk_reserve( &ossl_check_ASN1_UTF8STRING_sk_type($sk), ($n)));
    }' unless defined(&sk_ASN1_UTF8STRING_reserve);
    eval 'sub sk_ASN1_UTF8STRING_free {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_free( &ossl_check_ASN1_UTF8STRING_sk_type($sk)));
    }' unless defined(&sk_ASN1_UTF8STRING_free);
    eval 'sub sk_ASN1_UTF8STRING_zero {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_zero( &ossl_check_ASN1_UTF8STRING_sk_type($sk)));
    }' unless defined(&sk_ASN1_UTF8STRING_zero);
    eval 'sub sk_ASN1_UTF8STRING_delete {
        my($sk, $i) = @_;
	    eval q((( &ASN1_UTF8STRING *) &OPENSSL_sk_delete( &ossl_check_ASN1_UTF8STRING_sk_type($sk), ($i))));
    }' unless defined(&sk_ASN1_UTF8STRING_delete);
    eval 'sub sk_ASN1_UTF8STRING_delete_ptr {
        my($sk, $ptr) = @_;
	    eval q((( &ASN1_UTF8STRING *) &OPENSSL_sk_delete_ptr( &ossl_check_ASN1_UTF8STRING_sk_type($sk),  &ossl_check_ASN1_UTF8STRING_type($ptr))));
    }' unless defined(&sk_ASN1_UTF8STRING_delete_ptr);
    eval 'sub sk_ASN1_UTF8STRING_push {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_push( &ossl_check_ASN1_UTF8STRING_sk_type($sk),  &ossl_check_ASN1_UTF8STRING_type($ptr)));
    }' unless defined(&sk_ASN1_UTF8STRING_push);
    eval 'sub sk_ASN1_UTF8STRING_unshift {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_unshift( &ossl_check_ASN1_UTF8STRING_sk_type($sk),  &ossl_check_ASN1_UTF8STRING_type($ptr)));
    }' unless defined(&sk_ASN1_UTF8STRING_unshift);
    eval 'sub sk_ASN1_UTF8STRING_pop {
        my($sk) = @_;
	    eval q((( &ASN1_UTF8STRING *) &OPENSSL_sk_pop( &ossl_check_ASN1_UTF8STRING_sk_type($sk))));
    }' unless defined(&sk_ASN1_UTF8STRING_pop);
    eval 'sub sk_ASN1_UTF8STRING_shift {
        my($sk) = @_;
	    eval q((( &ASN1_UTF8STRING *) &OPENSSL_sk_shift( &ossl_check_ASN1_UTF8STRING_sk_type($sk))));
    }' unless defined(&sk_ASN1_UTF8STRING_shift);
    eval 'sub sk_ASN1_UTF8STRING_pop_free {
        my($sk, $freefunc) = @_;
	    eval q( &OPENSSL_sk_pop_free( &ossl_check_ASN1_UTF8STRING_sk_type($sk), &ossl_check_ASN1_UTF8STRING_freefunc_type($freefunc)));
    }' unless defined(&sk_ASN1_UTF8STRING_pop_free);
    eval 'sub sk_ASN1_UTF8STRING_insert {
        my($sk, $ptr, $idx) = @_;
	    eval q( &OPENSSL_sk_insert( &ossl_check_ASN1_UTF8STRING_sk_type($sk),  &ossl_check_ASN1_UTF8STRING_type($ptr), ($idx)));
    }' unless defined(&sk_ASN1_UTF8STRING_insert);
    eval 'sub sk_ASN1_UTF8STRING_set {
        my($sk, $idx, $ptr) = @_;
	    eval q((( &ASN1_UTF8STRING *) &OPENSSL_sk_set( &ossl_check_ASN1_UTF8STRING_sk_type($sk), ($idx),  &ossl_check_ASN1_UTF8STRING_type($ptr))));
    }' unless defined(&sk_ASN1_UTF8STRING_set);
    eval 'sub sk_ASN1_UTF8STRING_find {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_find( &ossl_check_ASN1_UTF8STRING_sk_type($sk),  &ossl_check_ASN1_UTF8STRING_type($ptr)));
    }' unless defined(&sk_ASN1_UTF8STRING_find);
    eval 'sub sk_ASN1_UTF8STRING_find_ex {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_find_ex( &ossl_check_ASN1_UTF8STRING_sk_type($sk),  &ossl_check_ASN1_UTF8STRING_type($ptr)));
    }' unless defined(&sk_ASN1_UTF8STRING_find_ex);
    eval 'sub sk_ASN1_UTF8STRING_find_all {
        my($sk, $ptr, $pnum) = @_;
	    eval q( &OPENSSL_sk_find_all( &ossl_check_ASN1_UTF8STRING_sk_type($sk),  &ossl_check_ASN1_UTF8STRING_type($ptr), $pnum));
    }' unless defined(&sk_ASN1_UTF8STRING_find_all);
    eval 'sub sk_ASN1_UTF8STRING_sort {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_sort( &ossl_check_ASN1_UTF8STRING_sk_type($sk)));
    }' unless defined(&sk_ASN1_UTF8STRING_sort);
    eval 'sub sk_ASN1_UTF8STRING_is_sorted {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_is_sorted( &ossl_check_const_ASN1_UTF8STRING_sk_type($sk)));
    }' unless defined(&sk_ASN1_UTF8STRING_is_sorted);
    eval 'sub sk_ASN1_UTF8STRING_dup {
        my($sk) = @_;
	    eval q((( &STACK_OF( &ASN1_UTF8STRING) *) &OPENSSL_sk_dup( &ossl_check_const_ASN1_UTF8STRING_sk_type($sk))));
    }' unless defined(&sk_ASN1_UTF8STRING_dup);
    eval 'sub sk_ASN1_UTF8STRING_deep_copy {
        my($sk, $copyfunc, $freefunc) = @_;
	    eval q((( &STACK_OF( &ASN1_UTF8STRING) *) &OPENSSL_sk_deep_copy( &ossl_check_const_ASN1_UTF8STRING_sk_type($sk),  &ossl_check_ASN1_UTF8STRING_copyfunc_type($copyfunc),  &ossl_check_ASN1_UTF8STRING_freefunc_type($freefunc))));
    }' unless defined(&sk_ASN1_UTF8STRING_deep_copy);
    eval 'sub sk_ASN1_UTF8STRING_set_cmp_func {
        my($sk, $cmp) = @_;
	    eval q((( &sk_ASN1_UTF8STRING_compfunc) &OPENSSL_sk_set_cmp_func( &ossl_check_ASN1_UTF8STRING_sk_type($sk),  &ossl_check_ASN1_UTF8STRING_compfunc_type($cmp))));
    }' unless defined(&sk_ASN1_UTF8STRING_set_cmp_func);
    eval 'sub sk_ASN1_GENERALSTRING_num {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_num( &ossl_check_const_ASN1_GENERALSTRING_sk_type($sk)));
    }' unless defined(&sk_ASN1_GENERALSTRING_num);
    eval 'sub sk_ASN1_GENERALSTRING_value {
        my($sk, $idx) = @_;
	    eval q((( &ASN1_GENERALSTRING *) &OPENSSL_sk_value( &ossl_check_const_ASN1_GENERALSTRING_sk_type($sk), ($idx))));
    }' unless defined(&sk_ASN1_GENERALSTRING_value);
    eval 'sub sk_ASN1_GENERALSTRING_new {
        my($cmp) = @_;
	    eval q((( &STACK_OF( &ASN1_GENERALSTRING) *) &OPENSSL_sk_new( &ossl_check_ASN1_GENERALSTRING_compfunc_type($cmp))));
    }' unless defined(&sk_ASN1_GENERALSTRING_new);
    eval 'sub sk_ASN1_GENERALSTRING_new_null () {
        eval q((( &STACK_OF( &ASN1_GENERALSTRING) *) &OPENSSL_sk_new_null()));
    }' unless defined(&sk_ASN1_GENERALSTRING_new_null);
    eval 'sub sk_ASN1_GENERALSTRING_new_reserve {
        my($cmp, $n) = @_;
	    eval q((( &STACK_OF( &ASN1_GENERALSTRING) *) &OPENSSL_sk_new_reserve( &ossl_check_ASN1_GENERALSTRING_compfunc_type($cmp), ($n))));
    }' unless defined(&sk_ASN1_GENERALSTRING_new_reserve);
    eval 'sub sk_ASN1_GENERALSTRING_reserve {
        my($sk, $n) = @_;
	    eval q( &OPENSSL_sk_reserve( &ossl_check_ASN1_GENERALSTRING_sk_type($sk), ($n)));
    }' unless defined(&sk_ASN1_GENERALSTRING_reserve);
    eval 'sub sk_ASN1_GENERALSTRING_free {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_free( &ossl_check_ASN1_GENERALSTRING_sk_type($sk)));
    }' unless defined(&sk_ASN1_GENERALSTRING_free);
    eval 'sub sk_ASN1_GENERALSTRING_zero {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_zero( &ossl_check_ASN1_GENERALSTRING_sk_type($sk)));
    }' unless defined(&sk_ASN1_GENERALSTRING_zero);
    eval 'sub sk_ASN1_GENERALSTRING_delete {
        my($sk, $i) = @_;
	    eval q((( &ASN1_GENERALSTRING *) &OPENSSL_sk_delete( &ossl_check_ASN1_GENERALSTRING_sk_type($sk), ($i))));
    }' unless defined(&sk_ASN1_GENERALSTRING_delete);
    eval 'sub sk_ASN1_GENERALSTRING_delete_ptr {
        my($sk, $ptr) = @_;
	    eval q((( &ASN1_GENERALSTRING *) &OPENSSL_sk_delete_ptr( &ossl_check_ASN1_GENERALSTRING_sk_type($sk),  &ossl_check_ASN1_GENERALSTRING_type($ptr))));
    }' unless defined(&sk_ASN1_GENERALSTRING_delete_ptr);
    eval 'sub sk_ASN1_GENERALSTRING_push {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_push( &ossl_check_ASN1_GENERALSTRING_sk_type($sk),  &ossl_check_ASN1_GENERALSTRING_type($ptr)));
    }' unless defined(&sk_ASN1_GENERALSTRING_push);
    eval 'sub sk_ASN1_GENERALSTRING_unshift {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_unshift( &ossl_check_ASN1_GENERALSTRING_sk_type($sk),  &ossl_check_ASN1_GENERALSTRING_type($ptr)));
    }' unless defined(&sk_ASN1_GENERALSTRING_unshift);
    eval 'sub sk_ASN1_GENERALSTRING_pop {
        my($sk) = @_;
	    eval q((( &ASN1_GENERALSTRING *) &OPENSSL_sk_pop( &ossl_check_ASN1_GENERALSTRING_sk_type($sk))));
    }' unless defined(&sk_ASN1_GENERALSTRING_pop);
    eval 'sub sk_ASN1_GENERALSTRING_shift {
        my($sk) = @_;
	    eval q((( &ASN1_GENERALSTRING *) &OPENSSL_sk_shift( &ossl_check_ASN1_GENERALSTRING_sk_type($sk))));
    }' unless defined(&sk_ASN1_GENERALSTRING_shift);
    eval 'sub sk_ASN1_GENERALSTRING_pop_free {
        my($sk, $freefunc) = @_;
	    eval q( &OPENSSL_sk_pop_free( &ossl_check_ASN1_GENERALSTRING_sk_type($sk), &ossl_check_ASN1_GENERALSTRING_freefunc_type($freefunc)));
    }' unless defined(&sk_ASN1_GENERALSTRING_pop_free);
    eval 'sub sk_ASN1_GENERALSTRING_insert {
        my($sk, $ptr, $idx) = @_;
	    eval q( &OPENSSL_sk_insert( &ossl_check_ASN1_GENERALSTRING_sk_type($sk),  &ossl_check_ASN1_GENERALSTRING_type($ptr), ($idx)));
    }' unless defined(&sk_ASN1_GENERALSTRING_insert);
    eval 'sub sk_ASN1_GENERALSTRING_set {
        my($sk, $idx, $ptr) = @_;
	    eval q((( &ASN1_GENERALSTRING *) &OPENSSL_sk_set( &ossl_check_ASN1_GENERALSTRING_sk_type($sk), ($idx),  &ossl_check_ASN1_GENERALSTRING_type($ptr))));
    }' unless defined(&sk_ASN1_GENERALSTRING_set);
    eval 'sub sk_ASN1_GENERALSTRING_find {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_find( &ossl_check_ASN1_GENERALSTRING_sk_type($sk),  &ossl_check_ASN1_GENERALSTRING_type($ptr)));
    }' unless defined(&sk_ASN1_GENERALSTRING_find);
    eval 'sub sk_ASN1_GENERALSTRING_find_ex {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_find_ex( &ossl_check_ASN1_GENERALSTRING_sk_type($sk),  &ossl_check_ASN1_GENERALSTRING_type($ptr)));
    }' unless defined(&sk_ASN1_GENERALSTRING_find_ex);
    eval 'sub sk_ASN1_GENERALSTRING_find_all {
        my($sk, $ptr, $pnum) = @_;
	    eval q( &OPENSSL_sk_find_all( &ossl_check_ASN1_GENERALSTRING_sk_type($sk),  &ossl_check_ASN1_GENERALSTRING_type($ptr), $pnum));
    }' unless defined(&sk_ASN1_GENERALSTRING_find_all);
    eval 'sub sk_ASN1_GENERALSTRING_sort {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_sort( &ossl_check_ASN1_GENERALSTRING_sk_type($sk)));
    }' unless defined(&sk_ASN1_GENERALSTRING_sort);
    eval 'sub sk_ASN1_GENERALSTRING_is_sorted {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_is_sorted( &ossl_check_const_ASN1_GENERALSTRING_sk_type($sk)));
    }' unless defined(&sk_ASN1_GENERALSTRING_is_sorted);
    eval 'sub sk_ASN1_GENERALSTRING_dup {
        my($sk) = @_;
	    eval q((( &STACK_OF( &ASN1_GENERALSTRING) *) &OPENSSL_sk_dup( &ossl_check_const_ASN1_GENERALSTRING_sk_type($sk))));
    }' unless defined(&sk_ASN1_GENERALSTRING_dup);
    eval 'sub sk_ASN1_GENERALSTRING_deep_copy {
        my($sk, $copyfunc, $freefunc) = @_;
	    eval q((( &STACK_OF( &ASN1_GENERALSTRING) *) &OPENSSL_sk_deep_copy( &ossl_check_const_ASN1_GENERALSTRING_sk_type($sk),  &ossl_check_ASN1_GENERALSTRING_copyfunc_type($copyfunc),  &ossl_check_ASN1_GENERALSTRING_freefunc_type($freefunc))));
    }' unless defined(&sk_ASN1_GENERALSTRING_deep_copy);
    eval 'sub sk_ASN1_GENERALSTRING_set_cmp_func {
        my($sk, $cmp) = @_;
	    eval q((( &sk_ASN1_GENERALSTRING_compfunc) &OPENSSL_sk_set_cmp_func( &ossl_check_ASN1_GENERALSTRING_sk_type($sk),  &ossl_check_ASN1_GENERALSTRING_compfunc_type($cmp))));
    }' unless defined(&sk_ASN1_GENERALSTRING_set_cmp_func);
    eval 'sub ASN1_dup_of {
        my($type, $i2d, $d2i, $x) = @_;
	    eval q((($type *) &ASN1_dup( &CHECKED_I2D_OF($type, $i2d),  &CHECKED_D2I_OF($type, $d2i),  &CHECKED_PTR_OF( &const $type, $x))));
    }' unless defined(&ASN1_dup_of);
    eval 'sub M_ASN1_new_of {
        my($type) = @_;
	    eval q(($type *) &ASN1_item_new( &ASN1_ITEM_rptr($type)));
    }' unless defined(&M_ASN1_new_of);
    eval 'sub M_ASN1_free_of {
        my($x, $type) = @_;
	    eval q( &ASN1_item_free( &CHECKED_PTR_OF($type, $x),  &ASN1_ITEM_rptr($type)));
    }' unless defined(&M_ASN1_free_of);
    unless(defined(&OPENSSL_NO_STDIO)) {
	eval 'sub ASN1_d2i_fp_of {
	    my($type, $xnew, $d2i, $in, $x) = @_;
    	    eval q((($type *) &ASN1_d2i_fp( &CHECKED_NEW_OF($type, $xnew),  &CHECKED_D2I_OF($type, $d2i), $in,  &CHECKED_PPTR_OF($type, $x))));
	}' unless defined(&ASN1_d2i_fp_of);
	eval 'sub ASN1_i2d_fp_of {
	    my($type, $i2d, $out, $x) = @_;
    	    eval q(( &ASN1_i2d_fp( &CHECKED_I2D_OF($type, $i2d), $out,  &CHECKED_PTR_OF( &const $type, $x))));
	}' unless defined(&ASN1_i2d_fp_of);
    }
    eval 'sub ASN1_d2i_bio_of {
        my($type, $xnew, $d2i, $in, $x) = @_;
	    eval q((($type *) &ASN1_d2i_bio( &CHECKED_NEW_OF($type, $xnew),  &CHECKED_D2I_OF($type, $d2i), $in,  &CHECKED_PPTR_OF($type, $x))));
    }' unless defined(&ASN1_d2i_bio_of);
    eval 'sub ASN1_i2d_bio_of {
        my($type, $i2d, $out, $x) = @_;
	    eval q(( &ASN1_i2d_bio( &CHECKED_I2D_OF($type, $i2d), $out,  &CHECKED_PTR_OF( &const $type, $x))));
    }' unless defined(&ASN1_i2d_bio_of);
    eval 'sub ASN1_PCTX_FLAGS_SHOW_ABSENT () {0x1;}' unless defined(&ASN1_PCTX_FLAGS_SHOW_ABSENT);
    eval 'sub ASN1_PCTX_FLAGS_SHOW_SEQUENCE () {0x2;}' unless defined(&ASN1_PCTX_FLAGS_SHOW_SEQUENCE);
    eval 'sub ASN1_PCTX_FLAGS_SHOW_SSOF () {0x4;}' unless defined(&ASN1_PCTX_FLAGS_SHOW_SSOF);
    eval 'sub ASN1_PCTX_FLAGS_SHOW_TYPE () {0x8;}' unless defined(&ASN1_PCTX_FLAGS_SHOW_TYPE);
    eval 'sub ASN1_PCTX_FLAGS_NO_ANY_TYPE () {0x10;}' unless defined(&ASN1_PCTX_FLAGS_NO_ANY_TYPE);
    eval 'sub ASN1_PCTX_FLAGS_NO_MSTRING_TYPE () {0x20;}' unless defined(&ASN1_PCTX_FLAGS_NO_MSTRING_TYPE);
    eval 'sub ASN1_PCTX_FLAGS_NO_FIELD_NAME () {0x40;}' unless defined(&ASN1_PCTX_FLAGS_NO_FIELD_NAME);
    eval 'sub ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME () {0x80;}' unless defined(&ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME);
    eval 'sub ASN1_PCTX_FLAGS_NO_STRUCT_NAME () {0x100;}' unless defined(&ASN1_PCTX_FLAGS_NO_STRUCT_NAME);
    eval 'sub DECLARE_ASN1_FUNCTIONS_fname {
        my($type, $itname, $name) = @_;
	    eval q( &DECLARE_ASN1_ALLOC_FUNCTIONS_name($type, $name)  &DECLARE_ASN1_ENCODE_FUNCTIONS($type, $itname, $name));
    }' unless defined(&DECLARE_ASN1_FUNCTIONS_fname);
    eval 'sub DECLARE_ASN1_FUNCTIONS_const {
        my($type) = @_;
	    eval q( &DECLARE_ASN1_FUNCTIONS($type));
    }' unless defined(&DECLARE_ASN1_FUNCTIONS_const);
    eval 'sub DECLARE_ASN1_ENCODE_FUNCTIONS_const {
        my($type, $name) = @_;
	    eval q( &DECLARE_ASN1_ENCODE_FUNCTIONS($type, $name));
    }' unless defined(&DECLARE_ASN1_ENCODE_FUNCTIONS_const);
    eval 'sub I2D_OF_const {
        my($type) = @_;
	    eval q( &I2D_OF($type));
    }' unless defined(&I2D_OF_const);
    eval 'sub ASN1_dup_of_const {
        my($type, $i2d, $d2i, $x) = @_;
	    eval q( &ASN1_dup_of($type, $i2d, $d2i, $x));
    }' unless defined(&ASN1_dup_of_const);
    eval 'sub ASN1_i2d_fp_of_const {
        my($type, $i2d, $out, $x) = @_;
	    eval q( &ASN1_i2d_fp_of($type, $i2d, $out, $x));
    }' unless defined(&ASN1_i2d_fp_of_const);
    eval 'sub ASN1_i2d_bio_of_const {
        my($type, $i2d, $out, $x) = @_;
	    eval q( &ASN1_i2d_bio_of($type, $i2d, $out, $x));
    }' unless defined(&ASN1_i2d_bio_of_const);
    if(defined(&__cplusplus)) {
    }
}
1;
