/* automatically generated by rust-bindgen 0.72.1 */

pub const __MINGW64_VERSION_MAJOR: u32 = 13;
pub const __MINGW64_VERSION_MINOR: u32 = 0;
pub const __MINGW64_VERSION_BUGFIX: u32 = 0;
pub const __MINGW64_VERSION_RC: u32 = 0;
pub const __MINGW64_VERSION_STATE: &[u8; 6] = b"alpha\0";
pub const __MINGW32_MAJOR_VERSION: u32 = 3;
pub const __MINGW32_MINOR_VERSION: u32 = 11;
pub const _M_AMD64: u32 = 100;
pub const _M_X64: u32 = 100;
pub const __: u32 = 1;
pub const __MINGW_USE_UNDERSCORE_PREFIX: u32 = 0;
pub const __MINGW_HAVE_ANSI_C99_PRINTF: u32 = 1;
pub const __MINGW_HAVE_WIDE_C99_PRINTF: u32 = 1;
pub const __MINGW_HAVE_ANSI_C99_SCANF: u32 = 1;
pub const __MINGW_HAVE_WIDE_C99_SCANF: u32 = 1;
pub const __MINGW_SEC_WARN_STR : & [u8 ; 92] = b"This function or variable may be unsafe, use _CRT_SECURE_NO_WARNINGS to disable deprecation\0" ;
pub const __MINGW_MSVC2005_DEPREC_STR : & [u8 ; 117] = b"This POSIX function is deprecated beginning in Visual C++ 2005, use _CRT_NONSTDC_NO_DEPRECATE to disable deprecation\0" ;
pub const __MINGW_FORTIFY_LEVEL: u32 = 0;
pub const __MINGW_FORTIFY_VA_ARG: u32 = 0;
pub const _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES: u32 = 0;
pub const _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES_MEMORY: u32 = 0;
pub const _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES: u32 = 0;
pub const _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT: u32 = 0;
pub const _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_MEMORY: u32 = 0;
pub const __USE_CRTIMP: u32 = 1;
pub const USE___UUIDOF: u32 = 0;
pub const __CRT__NO_INLINE: u32 = 1;
pub const __MSVCRT_VERSION__: u32 = 3584;
pub const _WIN32_WINNT: u32 = 2560;
pub const MINGW_HAS_SECURE_API: u32 = 1;
pub const __STDC_SECURE_LIB__: u32 = 200411;
pub const __GOT_SECURE_LIB__: u32 = 200411;
pub const MINGW_HAS_DDK_H: u32 = 1;
pub const _CRT_PACKING: u32 = 8;
pub const _SECURECRT_FILL_BUFFER_PATTERN: u32 = 253;
pub const _ARGMAX: u32 = 100;
pub const __USE_MINGW_ANSI_STDIO: u32 = 0;
pub const INT8_MIN: i32 = -128;
pub const INT16_MIN: i32 = -32768;
pub const INT32_MIN: i32 = -2147483648;
pub const INT64_MIN: i64 = -9223372036854775808;
pub const INT8_MAX: u32 = 127;
pub const INT16_MAX: u32 = 32767;
pub const INT32_MAX: u32 = 2147483647;
pub const INT64_MAX: u64 = 9223372036854775807;
pub const UINT8_MAX: u32 = 255;
pub const UINT16_MAX: u32 = 65535;
pub const UINT32_MAX: u32 = 4294967295;
pub const UINT64_MAX: i32 = -1;
pub const INT_LEAST8_MIN: i32 = -128;
pub const INT_LEAST16_MIN: i32 = -32768;
pub const INT_LEAST32_MIN: i32 = -2147483648;
pub const INT_LEAST64_MIN: i64 = -9223372036854775808;
pub const INT_LEAST8_MAX: u32 = 127;
pub const INT_LEAST16_MAX: u32 = 32767;
pub const INT_LEAST32_MAX: u32 = 2147483647;
pub const INT_LEAST64_MAX: u64 = 9223372036854775807;
pub const UINT_LEAST8_MAX: u32 = 255;
pub const UINT_LEAST16_MAX: u32 = 65535;
pub const UINT_LEAST32_MAX: u32 = 4294967295;
pub const UINT_LEAST64_MAX: i32 = -1;
pub const INT_FAST8_MIN: i32 = -128;
pub const INT_FAST16_MIN: i32 = -32768;
pub const INT_FAST32_MIN: i32 = -2147483648;
pub const INT_FAST64_MIN: i64 = -9223372036854775808;
pub const INT_FAST8_MAX: u32 = 127;
pub const INT_FAST16_MAX: u32 = 32767;
pub const INT_FAST32_MAX: u32 = 2147483647;
pub const INT_FAST64_MAX: u64 = 9223372036854775807;
pub const UINT_FAST8_MAX: u32 = 255;
pub const UINT_FAST16_MAX: u32 = 65535;
pub const UINT_FAST32_MAX: u32 = 4294967295;
pub const UINT_FAST64_MAX: i32 = -1;
pub const INTPTR_MIN: i64 = -9223372036854775808;
pub const INTPTR_MAX: u64 = 9223372036854775807;
pub const UINTPTR_MAX: i32 = -1;
pub const INTMAX_MIN: i64 = -9223372036854775808;
pub const INTMAX_MAX: u64 = 9223372036854775807;
pub const UINTMAX_MAX: i32 = -1;
pub const PTRDIFF_MIN: i64 = -9223372036854775808;
pub const PTRDIFF_MAX: u64 = 9223372036854775807;
pub const SIG_ATOMIC_MIN: i32 = -2147483648;
pub const SIG_ATOMIC_MAX: u32 = 2147483647;
pub const SIZE_MAX: i32 = -1;
pub const WCHAR_MIN: u32 = 0;
pub const WCHAR_MAX: u32 = 65535;
pub const WINT_MIN: u32 = 0;
pub const WINT_MAX: u32 = 65535;
pub type __gnuc_va_list = __builtin_va_list;
pub type va_list = __gnuc_va_list;
unsafe extern "C" {
    pub fn __mingw_get_crt_info() -> *const ::std::os::raw::c_char;
}
pub type rsize_t = usize;
pub type wchar_t = ::std::os::raw::c_ushort;
pub type wint_t = ::std::os::raw::c_ushort;
pub type wctype_t = ::std::os::raw::c_ushort;
pub type errno_t = ::std::os::raw::c_int;
pub type __time32_t = ::std::os::raw::c_long;
pub type __time64_t = ::std::os::raw::c_longlong;
pub type time_t = __time64_t;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct threadmbcinfostruct {
    _unused: [u8; 0],
}
pub type pthreadlocinfo = *mut threadlocaleinfostruct;
pub type pthreadmbcinfo = *mut threadmbcinfostruct;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __lc_time_data {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct localeinfo_struct {
    pub locinfo: pthreadlocinfo,
    pub mbcinfo: pthreadmbcinfo,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of localeinfo_struct"][::std::mem::size_of::<localeinfo_struct>() - 16usize];
    ["Alignment of localeinfo_struct"][::std::mem::align_of::<localeinfo_struct>() - 8usize];
    ["Offset of field: localeinfo_struct::locinfo"]
        [::std::mem::offset_of!(localeinfo_struct, locinfo) - 0usize];
    ["Offset of field: localeinfo_struct::mbcinfo"]
        [::std::mem::offset_of!(localeinfo_struct, mbcinfo) - 8usize];
};
pub type _locale_tstruct = localeinfo_struct;
pub type _locale_t = *mut localeinfo_struct;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct tagLC_ID {
    pub wLanguage: ::std::os::raw::c_ushort,
    pub wCountry: ::std::os::raw::c_ushort,
    pub wCodePage: ::std::os::raw::c_ushort,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of tagLC_ID"][::std::mem::size_of::<tagLC_ID>() - 6usize];
    ["Alignment of tagLC_ID"][::std::mem::align_of::<tagLC_ID>() - 2usize];
    ["Offset of field: tagLC_ID::wLanguage"][::std::mem::offset_of!(tagLC_ID, wLanguage) - 0usize];
    ["Offset of field: tagLC_ID::wCountry"][::std::mem::offset_of!(tagLC_ID, wCountry) - 2usize];
    ["Offset of field: tagLC_ID::wCodePage"][::std::mem::offset_of!(tagLC_ID, wCodePage) - 4usize];
};
pub type LC_ID = tagLC_ID;
pub type LPLC_ID = *mut tagLC_ID;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct threadlocaleinfostruct {
    pub _locale_pctype: *const ::std::os::raw::c_ushort,
    pub _locale_mb_cur_max: ::std::os::raw::c_int,
    pub _locale_lc_codepage: ::std::os::raw::c_uint,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of threadlocaleinfostruct"][::std::mem::size_of::<threadlocaleinfostruct>() - 16usize];
    ["Alignment of threadlocaleinfostruct"]
        [::std::mem::align_of::<threadlocaleinfostruct>() - 8usize];
    ["Offset of field: threadlocaleinfostruct::_locale_pctype"]
        [::std::mem::offset_of!(threadlocaleinfostruct, _locale_pctype) - 0usize];
    ["Offset of field: threadlocaleinfostruct::_locale_mb_cur_max"]
        [::std::mem::offset_of!(threadlocaleinfostruct, _locale_mb_cur_max) - 8usize];
    ["Offset of field: threadlocaleinfostruct::_locale_lc_codepage"]
        [::std::mem::offset_of!(threadlocaleinfostruct, _locale_lc_codepage) - 12usize];
};
pub type threadlocinfo = threadlocaleinfostruct;
pub type int_least8_t = ::std::os::raw::c_schar;
pub type uint_least8_t = ::std::os::raw::c_uchar;
pub type int_least16_t = ::std::os::raw::c_short;
pub type uint_least16_t = ::std::os::raw::c_ushort;
pub type int_least32_t = ::std::os::raw::c_int;
pub type uint_least32_t = ::std::os::raw::c_uint;
pub type int_least64_t = ::std::os::raw::c_longlong;
pub type uint_least64_t = ::std::os::raw::c_ulonglong;
pub type int_fast8_t = ::std::os::raw::c_schar;
pub type uint_fast8_t = ::std::os::raw::c_uchar;
pub type int_fast16_t = ::std::os::raw::c_short;
pub type uint_fast16_t = ::std::os::raw::c_ushort;
pub type int_fast32_t = ::std::os::raw::c_int;
pub type uint_fast32_t = ::std::os::raw::c_uint;
pub type int_fast64_t = ::std::os::raw::c_longlong;
pub type uint_fast64_t = ::std::os::raw::c_ulonglong;
pub type intmax_t = ::std::os::raw::c_longlong;
pub type uintmax_t = ::std::os::raw::c_ulonglong;
pub type u32_ = u32;
pub type unit_t = ::std::os::raw::c_void;
pub type hc_dynlib_t = *mut ::std::os::raw::c_void;
pub type RS_GET_INFO = *mut ::std::os::raw::c_void;
pub type RS_GLOBAL_INIT = *mut ::std::os::raw::c_void;
pub type RS_GLOBAL_TERM = *mut ::std::os::raw::c_void;
pub type RS_THREAD_INIT = *mut ::std::os::raw::c_void;
pub type RS_THREAD_TERM = *mut ::std::os::raw::c_void;
pub type RS_KERNEL_LOOP = *mut ::std::os::raw::c_void;
pub type RS_NEW_CONTEXT = *mut ::std::os::raw::c_void;
pub type RS_DROP_CONTEXT = *mut ::std::os::raw::c_void;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct salt {
    pub salt_buf: [u32_; 64usize],
    pub salt_buf_pc: [u32_; 64usize],
    pub salt_len: u32_,
    pub salt_len_pc: u32_,
    pub salt_iter: u32_,
    pub salt_iter2: u32_,
    pub salt_dimy: u32_,
    pub salt_sign: [u32_; 2usize],
    pub salt_repeats: u32_,
    pub orig_pos: u32_,
    pub digests_cnt: u32_,
    pub digests_done: u32_,
    pub digests_offset: u32_,
    pub scrypt_N: u32_,
    pub scrypt_r: u32_,
    pub scrypt_p: u32_,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of salt"][::std::mem::size_of::<salt>() - 572usize];
    ["Alignment of salt"][::std::mem::align_of::<salt>() - 4usize];
    ["Offset of field: salt::salt_buf"][::std::mem::offset_of!(salt, salt_buf) - 0usize];
    ["Offset of field: salt::salt_buf_pc"][::std::mem::offset_of!(salt, salt_buf_pc) - 256usize];
    ["Offset of field: salt::salt_len"][::std::mem::offset_of!(salt, salt_len) - 512usize];
    ["Offset of field: salt::salt_len_pc"][::std::mem::offset_of!(salt, salt_len_pc) - 516usize];
    ["Offset of field: salt::salt_iter"][::std::mem::offset_of!(salt, salt_iter) - 520usize];
    ["Offset of field: salt::salt_iter2"][::std::mem::offset_of!(salt, salt_iter2) - 524usize];
    ["Offset of field: salt::salt_dimy"][::std::mem::offset_of!(salt, salt_dimy) - 528usize];
    ["Offset of field: salt::salt_sign"][::std::mem::offset_of!(salt, salt_sign) - 532usize];
    ["Offset of field: salt::salt_repeats"][::std::mem::offset_of!(salt, salt_repeats) - 540usize];
    ["Offset of field: salt::orig_pos"][::std::mem::offset_of!(salt, orig_pos) - 544usize];
    ["Offset of field: salt::digests_cnt"][::std::mem::offset_of!(salt, digests_cnt) - 548usize];
    ["Offset of field: salt::digests_done"][::std::mem::offset_of!(salt, digests_done) - 552usize];
    ["Offset of field: salt::digests_offset"]
        [::std::mem::offset_of!(salt, digests_offset) - 556usize];
    ["Offset of field: salt::scrypt_N"][::std::mem::offset_of!(salt, scrypt_N) - 560usize];
    ["Offset of field: salt::scrypt_r"][::std::mem::offset_of!(salt, scrypt_r) - 564usize];
    ["Offset of field: salt::scrypt_p"][::std::mem::offset_of!(salt, scrypt_p) - 568usize];
};
pub type salt_t = salt;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct generic_io_tmp_t {
    pub pw_buf: [u32_; 64usize],
    pub pw_len: u32_,
    pub out_buf: [[u32_; 64usize]; 32usize],
    pub out_len: [u32_; 32usize],
    pub out_cnt: u32_,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of generic_io_tmp_t"][::std::mem::size_of::<generic_io_tmp_t>() - 8584usize];
    ["Alignment of generic_io_tmp_t"][::std::mem::align_of::<generic_io_tmp_t>() - 4usize];
    ["Offset of field: generic_io_tmp_t::pw_buf"]
        [::std::mem::offset_of!(generic_io_tmp_t, pw_buf) - 0usize];
    ["Offset of field: generic_io_tmp_t::pw_len"]
        [::std::mem::offset_of!(generic_io_tmp_t, pw_len) - 256usize];
    ["Offset of field: generic_io_tmp_t::out_buf"]
        [::std::mem::offset_of!(generic_io_tmp_t, out_buf) - 260usize];
    ["Offset of field: generic_io_tmp_t::out_len"]
        [::std::mem::offset_of!(generic_io_tmp_t, out_len) - 8452usize];
    ["Offset of field: generic_io_tmp_t::out_cnt"]
        [::std::mem::offset_of!(generic_io_tmp_t, out_cnt) - 8580usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct generic_io_t {
    pub hash_buf: [u32_; 256usize],
    pub hash_len: u32_,
    pub salt_buf: [u32_; 256usize],
    pub salt_len: u32_,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of generic_io_t"][::std::mem::size_of::<generic_io_t>() - 2056usize];
    ["Alignment of generic_io_t"][::std::mem::align_of::<generic_io_t>() - 4usize];
    ["Offset of field: generic_io_t::hash_buf"]
        [::std::mem::offset_of!(generic_io_t, hash_buf) - 0usize];
    ["Offset of field: generic_io_t::hash_len"]
        [::std::mem::offset_of!(generic_io_t, hash_len) - 1024usize];
    ["Offset of field: generic_io_t::salt_buf"]
        [::std::mem::offset_of!(generic_io_t, salt_buf) - 1028usize];
    ["Offset of field: generic_io_t::salt_len"]
        [::std::mem::offset_of!(generic_io_t, salt_len) - 2052usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct bridge_context {
    pub units_buf: *mut unit_t,
    pub units_cnt: ::std::os::raw::c_int,
    pub dynlib_filename: *mut ::std::os::raw::c_char,
    pub lib: hc_dynlib_t,
    pub get_info: RS_GET_INFO,
    pub global_init: RS_GLOBAL_INIT,
    pub global_term: RS_GLOBAL_TERM,
    pub thread_init: RS_THREAD_INIT,
    pub thread_term: RS_THREAD_TERM,
    pub kernel_loop: RS_KERNEL_LOOP,
    pub new_context: RS_NEW_CONTEXT,
    pub drop_context: RS_DROP_CONTEXT,
    pub bridge_parameter1: *const ::std::os::raw::c_char,
    pub bridge_parameter2: *const ::std::os::raw::c_char,
    pub bridge_parameter3: *const ::std::os::raw::c_char,
    pub bridge_parameter4: *const ::std::os::raw::c_char,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of bridge_context"][::std::mem::size_of::<bridge_context>() - 128usize];
    ["Alignment of bridge_context"][::std::mem::align_of::<bridge_context>() - 8usize];
    ["Offset of field: bridge_context::units_buf"]
        [::std::mem::offset_of!(bridge_context, units_buf) - 0usize];
    ["Offset of field: bridge_context::units_cnt"]
        [::std::mem::offset_of!(bridge_context, units_cnt) - 8usize];
    ["Offset of field: bridge_context::dynlib_filename"]
        [::std::mem::offset_of!(bridge_context, dynlib_filename) - 16usize];
    ["Offset of field: bridge_context::lib"][::std::mem::offset_of!(bridge_context, lib) - 24usize];
    ["Offset of field: bridge_context::get_info"]
        [::std::mem::offset_of!(bridge_context, get_info) - 32usize];
    ["Offset of field: bridge_context::global_init"]
        [::std::mem::offset_of!(bridge_context, global_init) - 40usize];
    ["Offset of field: bridge_context::global_term"]
        [::std::mem::offset_of!(bridge_context, global_term) - 48usize];
    ["Offset of field: bridge_context::thread_init"]
        [::std::mem::offset_of!(bridge_context, thread_init) - 56usize];
    ["Offset of field: bridge_context::thread_term"]
        [::std::mem::offset_of!(bridge_context, thread_term) - 64usize];
    ["Offset of field: bridge_context::kernel_loop"]
        [::std::mem::offset_of!(bridge_context, kernel_loop) - 72usize];
    ["Offset of field: bridge_context::new_context"]
        [::std::mem::offset_of!(bridge_context, new_context) - 80usize];
    ["Offset of field: bridge_context::drop_context"]
        [::std::mem::offset_of!(bridge_context, drop_context) - 88usize];
    ["Offset of field: bridge_context::bridge_parameter1"]
        [::std::mem::offset_of!(bridge_context, bridge_parameter1) - 96usize];
    ["Offset of field: bridge_context::bridge_parameter2"]
        [::std::mem::offset_of!(bridge_context, bridge_parameter2) - 104usize];
    ["Offset of field: bridge_context::bridge_parameter3"]
        [::std::mem::offset_of!(bridge_context, bridge_parameter3) - 112usize];
    ["Offset of field: bridge_context::bridge_parameter4"]
        [::std::mem::offset_of!(bridge_context, bridge_parameter4) - 120usize];
};
pub type bridge_context_t = bridge_context;
pub type __builtin_va_list = *mut ::std::os::raw::c_char;
