require '_h2ph_pre.ph';

no warnings qw(redefine misc);

unless(defined(&OPENSSL_SAFESTACK_H)) {
    eval 'sub OPENSSL_SAFESTACK_H () {1;}' unless defined(&OPENSSL_SAFESTACK_H);
    require 'openssl/macros.ph';
    unless(defined(&OPENSSL_NO_DEPRECATED_3_0)) {
	eval 'sub HEADER_SAFESTACK_H () {1;}' unless defined(&HEADER_SAFESTACK_H);
    }
    require 'openssl/stack.ph';
    require 'openssl/e_os2.ph';
    if(defined(&__cplusplus)) {
    }
    eval 'sub STACK_OF {
        my($type) = @_;
	    eval q(\'struct stack_st_\'$type);
    }' unless defined(&STACK_OF);
    eval 'sub SKM_DEFINE_STACK_OF_INTERNAL {
        my($t1, $t2, $t3) = @_;
	    eval q( &STACK_OF($t1);  &typedef  &int (* &sk_$t1 &_compfunc)( &const $t3 * &const * &a,  &const $t3 * &const * &b);  &typedef  &void (* &sk_$t1 &_freefunc)($t3 *  &a);  &typedef $t3 *(* &sk_$t1 &_copyfunc)( &const $t3 * &a);  &static  &ossl_unused  &ossl_inline $t2 * &ossl_check_$t1 &_type($t2 * &ptr) {  &return  &ptr; }  &static  &ossl_unused  &ossl_inline  &const  &OPENSSL_STACK * &ossl_check_const_$t1 &_sk_type( &const  &STACK_OF($t1) * &sk) {  &return ( &const  &OPENSSL_STACK *) &sk; }  &static  &ossl_unused  &ossl_inline  &OPENSSL_STACK * &ossl_check_$t1 &_sk_type( &STACK_OF($t1) * &sk) {  &return ( &OPENSSL_STACK *) &sk; }  &static  &ossl_unused  &ossl_inline  &OPENSSL_sk_compfunc  &ossl_check_$t1 &_compfunc_type( &sk_$t1 &_compfunc  &cmp) {  &return ( &OPENSSL_sk_compfunc) &cmp; }  &static  &ossl_unused  &ossl_inline  &OPENSSL_sk_copyfunc  &ossl_check_$t1 &_copyfunc_type( &sk_$t1 &_copyfunc  &cpy) {  &return ( &OPENSSL_sk_copyfunc) &cpy; }  &static  &ossl_unused  &ossl_inline  &OPENSSL_sk_freefunc  &ossl_check_$t1 &_freefunc_type( &sk_$t1 &_freefunc  &fr) {  &return ( &OPENSSL_sk_freefunc) &fr; });
    }' unless defined(&SKM_DEFINE_STACK_OF_INTERNAL);
    eval 'sub SKM_DEFINE_STACK_OF {
        my($t1, $t2, $t3) = @_;
	    eval q( &STACK_OF($t1);  &typedef  &int (* &sk_$t1 &_compfunc)( &const $t3 * &const * &a,  &const $t3 * &const * &b);  &typedef  &void (* &sk_$t1 &_freefunc)($t3 *  &a);  &typedef $t3 *(* &sk_$t1 &_copyfunc)( &const $t3 * &a);  &static  &ossl_unused  &ossl_inline \'int\'  &sk_$t1 &_num( &const  &STACK_OF($t1) * &sk) {  &return  &OPENSSL_sk_num(( &const  &OPENSSL_STACK *) &sk); }  &static  &ossl_unused  &ossl_inline $t2 * &sk_$t1 &_value( &const  &STACK_OF($t1) * &sk, \'int\'  &idx) {  &return ($t2 *) &OPENSSL_sk_value(( &const  &OPENSSL_STACK *) &sk,  &idx); }  &static  &ossl_unused  &ossl_inline  &STACK_OF($t1) * &sk_$t1 &_new( &sk_$t1 &_compfunc  &compare) {  &return ( &STACK_OF($t1) *) &OPENSSL_sk_new(( &OPENSSL_sk_compfunc) &compare); }  &static  &ossl_unused  &ossl_inline  &STACK_OF($t1) * &sk_$t1 &_new_null( &void) {  &return ( &STACK_OF($t1) *) &OPENSSL_sk_new_null(); }  &static  &ossl_unused  &ossl_inline  &STACK_OF($t1) * &sk_$t1 &_new_reserve( &sk_$t1 &_compfunc  &compare, \'int\'  &n) {  &return ( &STACK_OF($t1) *) &OPENSSL_sk_new_reserve(( &OPENSSL_sk_compfunc) &compare,  &n); }  &static  &ossl_unused  &ossl_inline \'int\'  &sk_$t1 &_reserve( &STACK_OF($t1) * &sk, \'int\'  &n) {  &return  &OPENSSL_sk_reserve(( &OPENSSL_STACK *) &sk,  &n); }  &static  &ossl_unused  &ossl_inline  &void  &sk_$t1 &_free( &STACK_OF($t1) * &sk) {  &OPENSSL_sk_free(( &OPENSSL_STACK *) &sk); }  &static  &ossl_unused  &ossl_inline  &void  &sk_$t1 &_zero( &STACK_OF($t1) * &sk) {  &OPENSSL_sk_zero(( &OPENSSL_STACK *) &sk); }  &static  &ossl_unused  &ossl_inline $t2 * &sk_$t1 &_delete( &STACK_OF($t1) * &sk, \'int\'  &i) {  &return ($t2 *) &OPENSSL_sk_delete(( &OPENSSL_STACK *) &sk,  &i); }  &static  &ossl_unused  &ossl_inline $t2 * &sk_$t1 &_delete_ptr( &STACK_OF($t1) * &sk, $t2 * &ptr) {  &return ($t2 *) &OPENSSL_sk_delete_ptr(( &OPENSSL_STACK *) &sk, ( &const  &void *) &ptr); }  &static  &ossl_unused  &ossl_inline \'int\'  &sk_$t1 &_push( &STACK_OF($t1) * &sk, $t2 * &ptr) {  &return  &OPENSSL_sk_push(( &OPENSSL_STACK *) &sk, ( &const  &void *) &ptr); }  &static  &ossl_unused  &ossl_inline \'int\'  &sk_$t1 &_unshift( &STACK_OF($t1) * &sk, $t2 * &ptr) {  &return  &OPENSSL_sk_unshift(( &OPENSSL_STACK *) &sk, ( &const  &void *) &ptr); }  &static  &ossl_unused  &ossl_inline $t2 * &sk_$t1 &_pop( &STACK_OF($t1) * &sk) {  &return ($t2 *) &OPENSSL_sk_pop(( &OPENSSL_STACK *) &sk); }  &static  &ossl_unused  &ossl_inline $t2 * &sk_$t1 &_shift( &STACK_OF($t1) * &sk) {  &return ($t2 *) &OPENSSL_sk_shift(( &OPENSSL_STACK *) &sk); }  &static  &ossl_unused  &ossl_inline  &void  &sk_$t1 &_pop_free( &STACK_OF($t1) * &sk,  &sk_$t1 &_freefunc  &freefunc) {  &OPENSSL_sk_pop_free(( &OPENSSL_STACK *) &sk, ( &OPENSSL_sk_freefunc) &freefunc); }  &static  &ossl_unused  &ossl_inline \'int\'  &sk_$t1 &_insert( &STACK_OF($t1) * &sk, $t2 * &ptr, \'int\'  &idx) {  &return  &OPENSSL_sk_insert(( &OPENSSL_STACK *) &sk, ( &const  &void *) &ptr,  &idx); }  &static  &ossl_unused  &ossl_inline $t2 * &sk_$t1 &_set( &STACK_OF($t1) * &sk, \'int\'  &idx, $t2 * &ptr) {  &return ($t2 *) &OPENSSL_sk_set(( &OPENSSL_STACK *) &sk,  &idx, ( &const  &void *) &ptr); }  &static  &ossl_unused  &ossl_inline \'int\'  &sk_$t1 &_find( &STACK_OF($t1) * &sk, $t2 * &ptr) {  &return  &OPENSSL_sk_find(( &OPENSSL_STACK *) &sk, ( &const  &void *) &ptr); }  &static  &ossl_unused  &ossl_inline \'int\'  &sk_$t1 &_find_ex( &STACK_OF($t1) * &sk, $t2 * &ptr) {  &return  &OPENSSL_sk_find_ex(( &OPENSSL_STACK *) &sk, ( &const  &void *) &ptr); }  &static  &ossl_unused  &ossl_inline \'int\'  &sk_$t1 &_find_all( &STACK_OF($t1) * &sk, $t2 * &ptr, \'int\' * &pnum) {  &return  &OPENSSL_sk_find_all(( &OPENSSL_STACK *) &sk, ( &const  &void *) &ptr,  &pnum); }  &static  &ossl_unused  &ossl_inline  &void  &sk_$t1 &_sort( &STACK_OF($t1) * &sk) {  &OPENSSL_sk_sort(( &OPENSSL_STACK *) &sk); }  &static  &ossl_unused  &ossl_inline \'int\'  &sk_$t1 &_is_sorted( &const  &STACK_OF($t1) * &sk) {  &return  &OPENSSL_sk_is_sorted(( &const  &OPENSSL_STACK *) &sk); }  &static  &ossl_unused  &ossl_inline  &STACK_OF($t1) * &sk_$t1 &_dup( &const  &STACK_OF($t1) * &sk) {  &return ( &STACK_OF($t1) *) &OPENSSL_sk_dup(( &const  &OPENSSL_STACK *) &sk); }  &static  &ossl_unused  &ossl_inline  &STACK_OF($t1) * &sk_$t1 &_deep_copy( &const  &STACK_OF($t1) * &sk,  &sk_$t1 &_copyfunc  &copyfunc,  &sk_$t1 &_freefunc  &freefunc) {  &return ( &STACK_OF($t1) *) &OPENSSL_sk_deep_copy(( &const  &OPENSSL_STACK *) &sk, ( &OPENSSL_sk_copyfunc) &copyfunc, ( &OPENSSL_sk_freefunc) &freefunc); }  &static  &ossl_unused  &ossl_inline  &sk_$t1 &_compfunc  &sk_$t1 &_set_cmp_func( &STACK_OF($t1) * &sk,  &sk_$t1 &_compfunc  &compare) {  &return ( &sk_$t1 &_compfunc) &OPENSSL_sk_set_cmp_func(( &OPENSSL_STACK *) &sk, ( &OPENSSL_sk_compfunc) &compare); });
    }' unless defined(&SKM_DEFINE_STACK_OF);
    eval 'sub DEFINE_STACK_OF {
        my($t) = @_;
	    eval q( &SKM_DEFINE_STACK_OF($t, $t, $t));
    }' unless defined(&DEFINE_STACK_OF);
    eval 'sub DEFINE_STACK_OF_CONST {
        my($t) = @_;
	    eval q( &SKM_DEFINE_STACK_OF($t,  &const $t, $t));
    }' unless defined(&DEFINE_STACK_OF_CONST);
    eval 'sub DEFINE_SPECIAL_STACK_OF {
        my($t1, $t2) = @_;
	    eval q( &SKM_DEFINE_STACK_OF($t1, $t2, $t2));
    }' unless defined(&DEFINE_SPECIAL_STACK_OF);
    eval 'sub DEFINE_SPECIAL_STACK_OF_CONST {
        my($t1, $t2) = @_;
	    eval q( &SKM_DEFINE_STACK_OF($t1,  &const $t2, $t2));
    }' unless defined(&DEFINE_SPECIAL_STACK_OF_CONST);
    eval 'sub sk_OPENSSL_STRING_num {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_num( &ossl_check_const_OPENSSL_STRING_sk_type($sk)));
    }' unless defined(&sk_OPENSSL_STRING_num);
    eval 'sub sk_OPENSSL_STRING_value {
        my($sk, $idx) = @_;
	    eval q(( &OPENSSL_sk_value( &ossl_check_const_OPENSSL_STRING_sk_type($sk), ($idx))));
    }' unless defined(&sk_OPENSSL_STRING_value);
    eval 'sub sk_OPENSSL_STRING_new {
        my($cmp) = @_;
	    eval q((( &STACK_OF( &OPENSSL_STRING) *) &OPENSSL_sk_new( &ossl_check_OPENSSL_STRING_compfunc_type($cmp))));
    }' unless defined(&sk_OPENSSL_STRING_new);
    eval 'sub sk_OPENSSL_STRING_new_null () {
        eval q((( &STACK_OF( &OPENSSL_STRING) *) &OPENSSL_sk_new_null()));
    }' unless defined(&sk_OPENSSL_STRING_new_null);
    eval 'sub sk_OPENSSL_STRING_new_reserve {
        my($cmp, $n) = @_;
	    eval q((( &STACK_OF( &OPENSSL_STRING) *) &OPENSSL_sk_new_reserve( &ossl_check_OPENSSL_STRING_compfunc_type($cmp), ($n))));
    }' unless defined(&sk_OPENSSL_STRING_new_reserve);
    eval 'sub sk_OPENSSL_STRING_reserve {
        my($sk, $n) = @_;
	    eval q( &OPENSSL_sk_reserve( &ossl_check_OPENSSL_STRING_sk_type($sk), ($n)));
    }' unless defined(&sk_OPENSSL_STRING_reserve);
    eval 'sub sk_OPENSSL_STRING_free {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_free( &ossl_check_OPENSSL_STRING_sk_type($sk)));
    }' unless defined(&sk_OPENSSL_STRING_free);
    eval 'sub sk_OPENSSL_STRING_zero {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_zero( &ossl_check_OPENSSL_STRING_sk_type($sk)));
    }' unless defined(&sk_OPENSSL_STRING_zero);
    eval 'sub sk_OPENSSL_STRING_delete {
        my($sk, $i) = @_;
	    eval q(( &OPENSSL_sk_delete( &ossl_check_OPENSSL_STRING_sk_type($sk), ($i))));
    }' unless defined(&sk_OPENSSL_STRING_delete);
    eval 'sub sk_OPENSSL_STRING_delete_ptr {
        my($sk, $ptr) = @_;
	    eval q(( &OPENSSL_sk_delete_ptr( &ossl_check_OPENSSL_STRING_sk_type($sk),  &ossl_check_OPENSSL_STRING_type($ptr))));
    }' unless defined(&sk_OPENSSL_STRING_delete_ptr);
    eval 'sub sk_OPENSSL_STRING_push {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_push( &ossl_check_OPENSSL_STRING_sk_type($sk),  &ossl_check_OPENSSL_STRING_type($ptr)));
    }' unless defined(&sk_OPENSSL_STRING_push);
    eval 'sub sk_OPENSSL_STRING_unshift {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_unshift( &ossl_check_OPENSSL_STRING_sk_type($sk),  &ossl_check_OPENSSL_STRING_type($ptr)));
    }' unless defined(&sk_OPENSSL_STRING_unshift);
    eval 'sub sk_OPENSSL_STRING_pop {
        my($sk) = @_;
	    eval q(( &OPENSSL_sk_pop( &ossl_check_OPENSSL_STRING_sk_type($sk))));
    }' unless defined(&sk_OPENSSL_STRING_pop);
    eval 'sub sk_OPENSSL_STRING_shift {
        my($sk) = @_;
	    eval q(( &OPENSSL_sk_shift( &ossl_check_OPENSSL_STRING_sk_type($sk))));
    }' unless defined(&sk_OPENSSL_STRING_shift);
    eval 'sub sk_OPENSSL_STRING_pop_free {
        my($sk, $freefunc) = @_;
	    eval q( &OPENSSL_sk_pop_free( &ossl_check_OPENSSL_STRING_sk_type($sk), &ossl_check_OPENSSL_STRING_freefunc_type($freefunc)));
    }' unless defined(&sk_OPENSSL_STRING_pop_free);
    eval 'sub sk_OPENSSL_STRING_insert {
        my($sk, $ptr, $idx) = @_;
	    eval q( &OPENSSL_sk_insert( &ossl_check_OPENSSL_STRING_sk_type($sk),  &ossl_check_OPENSSL_STRING_type($ptr), ($idx)));
    }' unless defined(&sk_OPENSSL_STRING_insert);
    eval 'sub sk_OPENSSL_STRING_set {
        my($sk, $idx, $ptr) = @_;
	    eval q(( &OPENSSL_sk_set( &ossl_check_OPENSSL_STRING_sk_type($sk), ($idx),  &ossl_check_OPENSSL_STRING_type($ptr))));
    }' unless defined(&sk_OPENSSL_STRING_set);
    eval 'sub sk_OPENSSL_STRING_find {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_find( &ossl_check_OPENSSL_STRING_sk_type($sk),  &ossl_check_OPENSSL_STRING_type($ptr)));
    }' unless defined(&sk_OPENSSL_STRING_find);
    eval 'sub sk_OPENSSL_STRING_find_ex {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_find_ex( &ossl_check_OPENSSL_STRING_sk_type($sk),  &ossl_check_OPENSSL_STRING_type($ptr)));
    }' unless defined(&sk_OPENSSL_STRING_find_ex);
    eval 'sub sk_OPENSSL_STRING_find_all {
        my($sk, $ptr, $pnum) = @_;
	    eval q( &OPENSSL_sk_find_all( &ossl_check_OPENSSL_STRING_sk_type($sk),  &ossl_check_OPENSSL_STRING_type($ptr), $pnum));
    }' unless defined(&sk_OPENSSL_STRING_find_all);
    eval 'sub sk_OPENSSL_STRING_sort {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_sort( &ossl_check_OPENSSL_STRING_sk_type($sk)));
    }' unless defined(&sk_OPENSSL_STRING_sort);
    eval 'sub sk_OPENSSL_STRING_is_sorted {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_is_sorted( &ossl_check_const_OPENSSL_STRING_sk_type($sk)));
    }' unless defined(&sk_OPENSSL_STRING_is_sorted);
    eval 'sub sk_OPENSSL_STRING_dup {
        my($sk) = @_;
	    eval q((( &STACK_OF( &OPENSSL_STRING) *) &OPENSSL_sk_dup( &ossl_check_const_OPENSSL_STRING_sk_type($sk))));
    }' unless defined(&sk_OPENSSL_STRING_dup);
    eval 'sub sk_OPENSSL_STRING_deep_copy {
        my($sk, $copyfunc, $freefunc) = @_;
	    eval q((( &STACK_OF( &OPENSSL_STRING) *) &OPENSSL_sk_deep_copy( &ossl_check_const_OPENSSL_STRING_sk_type($sk),  &ossl_check_OPENSSL_STRING_copyfunc_type($copyfunc),  &ossl_check_OPENSSL_STRING_freefunc_type($freefunc))));
    }' unless defined(&sk_OPENSSL_STRING_deep_copy);
    eval 'sub sk_OPENSSL_STRING_set_cmp_func {
        my($sk, $cmp) = @_;
	    eval q((( &sk_OPENSSL_STRING_compfunc) &OPENSSL_sk_set_cmp_func( &ossl_check_OPENSSL_STRING_sk_type($sk),  &ossl_check_OPENSSL_STRING_compfunc_type($cmp))));
    }' unless defined(&sk_OPENSSL_STRING_set_cmp_func);
    eval 'sub sk_OPENSSL_CSTRING_num {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_num( &ossl_check_const_OPENSSL_CSTRING_sk_type($sk)));
    }' unless defined(&sk_OPENSSL_CSTRING_num);
    eval 'sub sk_OPENSSL_CSTRING_value {
        my($sk, $idx) = @_;
	    eval q((( &const \'char\' *) &OPENSSL_sk_value( &ossl_check_const_OPENSSL_CSTRING_sk_type($sk), ($idx))));
    }' unless defined(&sk_OPENSSL_CSTRING_value);
    eval 'sub sk_OPENSSL_CSTRING_new {
        my($cmp) = @_;
	    eval q((( &STACK_OF( &OPENSSL_CSTRING) *) &OPENSSL_sk_new( &ossl_check_OPENSSL_CSTRING_compfunc_type($cmp))));
    }' unless defined(&sk_OPENSSL_CSTRING_new);
    eval 'sub sk_OPENSSL_CSTRING_new_null () {
        eval q((( &STACK_OF( &OPENSSL_CSTRING) *) &OPENSSL_sk_new_null()));
    }' unless defined(&sk_OPENSSL_CSTRING_new_null);
    eval 'sub sk_OPENSSL_CSTRING_new_reserve {
        my($cmp, $n) = @_;
	    eval q((( &STACK_OF( &OPENSSL_CSTRING) *) &OPENSSL_sk_new_reserve( &ossl_check_OPENSSL_CSTRING_compfunc_type($cmp), ($n))));
    }' unless defined(&sk_OPENSSL_CSTRING_new_reserve);
    eval 'sub sk_OPENSSL_CSTRING_reserve {
        my($sk, $n) = @_;
	    eval q( &OPENSSL_sk_reserve( &ossl_check_OPENSSL_CSTRING_sk_type($sk), ($n)));
    }' unless defined(&sk_OPENSSL_CSTRING_reserve);
    eval 'sub sk_OPENSSL_CSTRING_free {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_free( &ossl_check_OPENSSL_CSTRING_sk_type($sk)));
    }' unless defined(&sk_OPENSSL_CSTRING_free);
    eval 'sub sk_OPENSSL_CSTRING_zero {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_zero( &ossl_check_OPENSSL_CSTRING_sk_type($sk)));
    }' unless defined(&sk_OPENSSL_CSTRING_zero);
    eval 'sub sk_OPENSSL_CSTRING_delete {
        my($sk, $i) = @_;
	    eval q((( &const \'char\' *) &OPENSSL_sk_delete( &ossl_check_OPENSSL_CSTRING_sk_type($sk), ($i))));
    }' unless defined(&sk_OPENSSL_CSTRING_delete);
    eval 'sub sk_OPENSSL_CSTRING_delete_ptr {
        my($sk, $ptr) = @_;
	    eval q((( &const \'char\' *) &OPENSSL_sk_delete_ptr( &ossl_check_OPENSSL_CSTRING_sk_type($sk),  &ossl_check_OPENSSL_CSTRING_type($ptr))));
    }' unless defined(&sk_OPENSSL_CSTRING_delete_ptr);
    eval 'sub sk_OPENSSL_CSTRING_push {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_push( &ossl_check_OPENSSL_CSTRING_sk_type($sk),  &ossl_check_OPENSSL_CSTRING_type($ptr)));
    }' unless defined(&sk_OPENSSL_CSTRING_push);
    eval 'sub sk_OPENSSL_CSTRING_unshift {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_unshift( &ossl_check_OPENSSL_CSTRING_sk_type($sk),  &ossl_check_OPENSSL_CSTRING_type($ptr)));
    }' unless defined(&sk_OPENSSL_CSTRING_unshift);
    eval 'sub sk_OPENSSL_CSTRING_pop {
        my($sk) = @_;
	    eval q((( &const \'char\' *) &OPENSSL_sk_pop( &ossl_check_OPENSSL_CSTRING_sk_type($sk))));
    }' unless defined(&sk_OPENSSL_CSTRING_pop);
    eval 'sub sk_OPENSSL_CSTRING_shift {
        my($sk) = @_;
	    eval q((( &const \'char\' *) &OPENSSL_sk_shift( &ossl_check_OPENSSL_CSTRING_sk_type($sk))));
    }' unless defined(&sk_OPENSSL_CSTRING_shift);
    eval 'sub sk_OPENSSL_CSTRING_pop_free {
        my($sk, $freefunc) = @_;
	    eval q( &OPENSSL_sk_pop_free( &ossl_check_OPENSSL_CSTRING_sk_type($sk), &ossl_check_OPENSSL_CSTRING_freefunc_type($freefunc)));
    }' unless defined(&sk_OPENSSL_CSTRING_pop_free);
    eval 'sub sk_OPENSSL_CSTRING_insert {
        my($sk, $ptr, $idx) = @_;
	    eval q( &OPENSSL_sk_insert( &ossl_check_OPENSSL_CSTRING_sk_type($sk),  &ossl_check_OPENSSL_CSTRING_type($ptr), ($idx)));
    }' unless defined(&sk_OPENSSL_CSTRING_insert);
    eval 'sub sk_OPENSSL_CSTRING_set {
        my($sk, $idx, $ptr) = @_;
	    eval q((( &const \'char\' *) &OPENSSL_sk_set( &ossl_check_OPENSSL_CSTRING_sk_type($sk), ($idx),  &ossl_check_OPENSSL_CSTRING_type($ptr))));
    }' unless defined(&sk_OPENSSL_CSTRING_set);
    eval 'sub sk_OPENSSL_CSTRING_find {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_find( &ossl_check_OPENSSL_CSTRING_sk_type($sk),  &ossl_check_OPENSSL_CSTRING_type($ptr)));
    }' unless defined(&sk_OPENSSL_CSTRING_find);
    eval 'sub sk_OPENSSL_CSTRING_find_ex {
        my($sk, $ptr) = @_;
	    eval q( &OPENSSL_sk_find_ex( &ossl_check_OPENSSL_CSTRING_sk_type($sk),  &ossl_check_OPENSSL_CSTRING_type($ptr)));
    }' unless defined(&sk_OPENSSL_CSTRING_find_ex);
    eval 'sub sk_OPENSSL_CSTRING_find_all {
        my($sk, $ptr, $pnum) = @_;
	    eval q( &OPENSSL_sk_find_all( &ossl_check_OPENSSL_CSTRING_sk_type($sk),  &ossl_check_OPENSSL_CSTRING_type($ptr), $pnum));
    }' unless defined(&sk_OPENSSL_CSTRING_find_all);
    eval 'sub sk_OPENSSL_CSTRING_sort {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_sort( &ossl_check_OPENSSL_CSTRING_sk_type($sk)));
    }' unless defined(&sk_OPENSSL_CSTRING_sort);
    eval 'sub sk_OPENSSL_CSTRING_is_sorted {
        my($sk) = @_;
	    eval q( &OPENSSL_sk_is_sorted( &ossl_check_const_OPENSSL_CSTRING_sk_type($sk)));
    }' unless defined(&sk_OPENSSL_CSTRING_is_sorted);
    eval 'sub sk_OPENSSL_CSTRING_dup {
        my($sk) = @_;
	    eval q((( &STACK_OF( &OPENSSL_CSTRING) *) &OPENSSL_sk_dup( &ossl_check_const_OPENSSL_CSTRING_sk_type($sk))));
    }' unless defined(&sk_OPENSSL_CSTRING_dup);
    eval 'sub sk_OPENSSL_CSTRING_deep_copy {
        my($sk, $copyfunc, $freefunc) = @_;
	    eval q((( &STACK_OF( &OPENSSL_CSTRING) *) &OPENSSL_sk_deep_copy( &ossl_check_const_OPENSSL_CSTRING_sk_type($sk),  &ossl_check_OPENSSL_CSTRING_copyfunc_type($copyfunc),  &ossl_check_OPENSSL_CSTRING_freefunc_type($freefunc))));
    }' unless defined(&sk_OPENSSL_CSTRING_deep_copy);
    eval 'sub sk_OPENSSL_CSTRING_set_cmp_func {
        my($sk, $cmp) = @_;
	    eval q((( &sk_OPENSSL_CSTRING_compfunc) &OPENSSL_sk_set_cmp_func( &ossl_check_OPENSSL_CSTRING_sk_type($sk),  &ossl_check_OPENSSL_CSTRING_compfunc_type($cmp))));
    }' unless defined(&sk_OPENSSL_CSTRING_set_cmp_func);
    if(!defined(&OPENSSL_NO_DEPRECATED_3_0)) {
	eval 'sub sk_OPENSSL_BLOCK_num {
	    my($sk) = @_;
    	    eval q( &OPENSSL_sk_num( &ossl_check_const_OPENSSL_BLOCK_sk_type($sk)));
	}' unless defined(&sk_OPENSSL_BLOCK_num);
	eval 'sub sk_OPENSSL_BLOCK_value {
	    my($sk, $idx) = @_;
    	    eval q((( &void *) &OPENSSL_sk_value( &ossl_check_const_OPENSSL_BLOCK_sk_type($sk), ($idx))));
	}' unless defined(&sk_OPENSSL_BLOCK_value);
	eval 'sub sk_OPENSSL_BLOCK_new {
	    my($cmp) = @_;
    	    eval q((( &STACK_OF( &OPENSSL_BLOCK) *) &OPENSSL_sk_new( &ossl_check_OPENSSL_BLOCK_compfunc_type($cmp))));
	}' unless defined(&sk_OPENSSL_BLOCK_new);
	eval 'sub sk_OPENSSL_BLOCK_new_null () {
	    eval q((( &STACK_OF( &OPENSSL_BLOCK) *) &OPENSSL_sk_new_null()));
	}' unless defined(&sk_OPENSSL_BLOCK_new_null);
	eval 'sub sk_OPENSSL_BLOCK_new_reserve {
	    my($cmp, $n) = @_;
    	    eval q((( &STACK_OF( &OPENSSL_BLOCK) *) &OPENSSL_sk_new_reserve( &ossl_check_OPENSSL_BLOCK_compfunc_type($cmp), ($n))));
	}' unless defined(&sk_OPENSSL_BLOCK_new_reserve);
	eval 'sub sk_OPENSSL_BLOCK_reserve {
	    my($sk, $n) = @_;
    	    eval q( &OPENSSL_sk_reserve( &ossl_check_OPENSSL_BLOCK_sk_type($sk), ($n)));
	}' unless defined(&sk_OPENSSL_BLOCK_reserve);
	eval 'sub sk_OPENSSL_BLOCK_free {
	    my($sk) = @_;
    	    eval q( &OPENSSL_sk_free( &ossl_check_OPENSSL_BLOCK_sk_type($sk)));
	}' unless defined(&sk_OPENSSL_BLOCK_free);
	eval 'sub sk_OPENSSL_BLOCK_zero {
	    my($sk) = @_;
    	    eval q( &OPENSSL_sk_zero( &ossl_check_OPENSSL_BLOCK_sk_type($sk)));
	}' unless defined(&sk_OPENSSL_BLOCK_zero);
	eval 'sub sk_OPENSSL_BLOCK_delete {
	    my($sk, $i) = @_;
    	    eval q((( &void *) &OPENSSL_sk_delete( &ossl_check_OPENSSL_BLOCK_sk_type($sk), ($i))));
	}' unless defined(&sk_OPENSSL_BLOCK_delete);
	eval 'sub sk_OPENSSL_BLOCK_delete_ptr {
	    my($sk, $ptr) = @_;
    	    eval q((( &void *) &OPENSSL_sk_delete_ptr( &ossl_check_OPENSSL_BLOCK_sk_type($sk),  &ossl_check_OPENSSL_BLOCK_type($ptr))));
	}' unless defined(&sk_OPENSSL_BLOCK_delete_ptr);
	eval 'sub sk_OPENSSL_BLOCK_push {
	    my($sk, $ptr) = @_;
    	    eval q( &OPENSSL_sk_push( &ossl_check_OPENSSL_BLOCK_sk_type($sk),  &ossl_check_OPENSSL_BLOCK_type($ptr)));
	}' unless defined(&sk_OPENSSL_BLOCK_push);
	eval 'sub sk_OPENSSL_BLOCK_unshift {
	    my($sk, $ptr) = @_;
    	    eval q( &OPENSSL_sk_unshift( &ossl_check_OPENSSL_BLOCK_sk_type($sk),  &ossl_check_OPENSSL_BLOCK_type($ptr)));
	}' unless defined(&sk_OPENSSL_BLOCK_unshift);
	eval 'sub sk_OPENSSL_BLOCK_pop {
	    my($sk) = @_;
    	    eval q((( &void *) &OPENSSL_sk_pop( &ossl_check_OPENSSL_BLOCK_sk_type($sk))));
	}' unless defined(&sk_OPENSSL_BLOCK_pop);
	eval 'sub sk_OPENSSL_BLOCK_shift {
	    my($sk) = @_;
    	    eval q((( &void *) &OPENSSL_sk_shift( &ossl_check_OPENSSL_BLOCK_sk_type($sk))));
	}' unless defined(&sk_OPENSSL_BLOCK_shift);
	eval 'sub sk_OPENSSL_BLOCK_pop_free {
	    my($sk, $freefunc) = @_;
    	    eval q( &OPENSSL_sk_pop_free( &ossl_check_OPENSSL_BLOCK_sk_type($sk), &ossl_check_OPENSSL_BLOCK_freefunc_type($freefunc)));
	}' unless defined(&sk_OPENSSL_BLOCK_pop_free);
	eval 'sub sk_OPENSSL_BLOCK_insert {
	    my($sk, $ptr, $idx) = @_;
    	    eval q( &OPENSSL_sk_insert( &ossl_check_OPENSSL_BLOCK_sk_type($sk),  &ossl_check_OPENSSL_BLOCK_type($ptr), ($idx)));
	}' unless defined(&sk_OPENSSL_BLOCK_insert);
	eval 'sub sk_OPENSSL_BLOCK_set {
	    my($sk, $idx, $ptr) = @_;
    	    eval q((( &void *) &OPENSSL_sk_set( &ossl_check_OPENSSL_BLOCK_sk_type($sk), ($idx),  &ossl_check_OPENSSL_BLOCK_type($ptr))));
	}' unless defined(&sk_OPENSSL_BLOCK_set);
	eval 'sub sk_OPENSSL_BLOCK_find {
	    my($sk, $ptr) = @_;
    	    eval q( &OPENSSL_sk_find( &ossl_check_OPENSSL_BLOCK_sk_type($sk),  &ossl_check_OPENSSL_BLOCK_type($ptr)));
	}' unless defined(&sk_OPENSSL_BLOCK_find);
	eval 'sub sk_OPENSSL_BLOCK_find_ex {
	    my($sk, $ptr) = @_;
    	    eval q( &OPENSSL_sk_find_ex( &ossl_check_OPENSSL_BLOCK_sk_type($sk),  &ossl_check_OPENSSL_BLOCK_type($ptr)));
	}' unless defined(&sk_OPENSSL_BLOCK_find_ex);
	eval 'sub sk_OPENSSL_BLOCK_find_all {
	    my($sk, $ptr, $pnum) = @_;
    	    eval q( &OPENSSL_sk_find_all( &ossl_check_OPENSSL_BLOCK_sk_type($sk),  &ossl_check_OPENSSL_BLOCK_type($ptr), $pnum));
	}' unless defined(&sk_OPENSSL_BLOCK_find_all);
	eval 'sub sk_OPENSSL_BLOCK_sort {
	    my($sk) = @_;
    	    eval q( &OPENSSL_sk_sort( &ossl_check_OPENSSL_BLOCK_sk_type($sk)));
	}' unless defined(&sk_OPENSSL_BLOCK_sort);
	eval 'sub sk_OPENSSL_BLOCK_is_sorted {
	    my($sk) = @_;
    	    eval q( &OPENSSL_sk_is_sorted( &ossl_check_const_OPENSSL_BLOCK_sk_type($sk)));
	}' unless defined(&sk_OPENSSL_BLOCK_is_sorted);
	eval 'sub sk_OPENSSL_BLOCK_dup {
	    my($sk) = @_;
    	    eval q((( &STACK_OF( &OPENSSL_BLOCK) *) &OPENSSL_sk_dup( &ossl_check_const_OPENSSL_BLOCK_sk_type($sk))));
	}' unless defined(&sk_OPENSSL_BLOCK_dup);
	eval 'sub sk_OPENSSL_BLOCK_deep_copy {
	    my($sk, $copyfunc, $freefunc) = @_;
    	    eval q((( &STACK_OF( &OPENSSL_BLOCK) *) &OPENSSL_sk_deep_copy( &ossl_check_const_OPENSSL_BLOCK_sk_type($sk),  &ossl_check_OPENSSL_BLOCK_copyfunc_type($copyfunc),  &ossl_check_OPENSSL_BLOCK_freefunc_type($freefunc))));
	}' unless defined(&sk_OPENSSL_BLOCK_deep_copy);
	eval 'sub sk_OPENSSL_BLOCK_set_cmp_func {
	    my($sk, $cmp) = @_;
    	    eval q((( &sk_OPENSSL_BLOCK_compfunc) &OPENSSL_sk_set_cmp_func( &ossl_check_OPENSSL_BLOCK_sk_type($sk),  &ossl_check_OPENSSL_BLOCK_compfunc_type($cmp))));
	}' unless defined(&sk_OPENSSL_BLOCK_set_cmp_func);
    }
    if(defined(&__cplusplus)) {
    }
}
1;
