Skip to main content

tss_esapi_sys/opt/rustwide/workdir/src/bindings/
x86_64-unknown-linux-gnu.rs

1/* automatically generated by rust-bindgen 0.66.1 */
2
3pub const _STDINT_H: u32 = 1;
4pub const _FEATURES_H: u32 = 1;
5pub const _DEFAULT_SOURCE: u32 = 1;
6pub const __GLIBC_USE_ISOC2X: u32 = 0;
7pub const __USE_ISOC11: u32 = 1;
8pub const __USE_ISOC99: u32 = 1;
9pub const __USE_ISOC95: u32 = 1;
10pub const __USE_POSIX_IMPLICITLY: u32 = 1;
11pub const _POSIX_SOURCE: u32 = 1;
12pub const _POSIX_C_SOURCE: u32 = 200809;
13pub const __USE_POSIX: u32 = 1;
14pub const __USE_POSIX2: u32 = 1;
15pub const __USE_POSIX199309: u32 = 1;
16pub const __USE_POSIX199506: u32 = 1;
17pub const __USE_XOPEN2K: u32 = 1;
18pub const __USE_XOPEN2K8: u32 = 1;
19pub const _ATFILE_SOURCE: u32 = 1;
20pub const __USE_MISC: u32 = 1;
21pub const __USE_ATFILE: u32 = 1;
22pub const __USE_FORTIFY_LEVEL: u32 = 0;
23pub const __GLIBC_USE_DEPRECATED_GETS: u32 = 0;
24pub const __GLIBC_USE_DEPRECATED_SCANF: u32 = 0;
25pub const _STDC_PREDEF_H: u32 = 1;
26pub const __STDC_IEC_559__: u32 = 1;
27pub const __STDC_IEC_559_COMPLEX__: u32 = 1;
28pub const __STDC_ISO_10646__: u32 = 201706;
29pub const __GNU_LIBRARY__: u32 = 6;
30pub const __GLIBC__: u32 = 2;
31pub const __GLIBC_MINOR__: u32 = 31;
32pub const _SYS_CDEFS_H: u32 = 1;
33pub const __glibc_c99_flexarr_available: u32 = 1;
34pub const __WORDSIZE: u32 = 64;
35pub const __WORDSIZE_TIME64_COMPAT32: u32 = 1;
36pub const __SYSCALL_WORDSIZE: u32 = 64;
37pub const __LONG_DOUBLE_USES_FLOAT128: u32 = 0;
38pub const __HAVE_GENERIC_SELECTION: u32 = 1;
39pub const __GLIBC_USE_LIB_EXT2: u32 = 0;
40pub const __GLIBC_USE_IEC_60559_BFP_EXT: u32 = 0;
41pub const __GLIBC_USE_IEC_60559_BFP_EXT_C2X: u32 = 0;
42pub const __GLIBC_USE_IEC_60559_FUNCS_EXT: u32 = 0;
43pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X: u32 = 0;
44pub const __GLIBC_USE_IEC_60559_TYPES_EXT: u32 = 0;
45pub const _BITS_TYPES_H: u32 = 1;
46pub const __TIMESIZE: u32 = 64;
47pub const _BITS_TYPESIZES_H: u32 = 1;
48pub const __OFF_T_MATCHES_OFF64_T: u32 = 1;
49pub const __INO_T_MATCHES_INO64_T: u32 = 1;
50pub const __RLIM_T_MATCHES_RLIM64_T: u32 = 1;
51pub const __STATFS_MATCHES_STATFS64: u32 = 1;
52pub const __FD_SETSIZE: u32 = 1024;
53pub const _BITS_TIME64_H: u32 = 1;
54pub const _BITS_WCHAR_H: u32 = 1;
55pub const _BITS_STDINT_INTN_H: u32 = 1;
56pub const _BITS_STDINT_UINTN_H: u32 = 1;
57pub const INT8_MIN: i32 = -128;
58pub const INT16_MIN: i32 = -32768;
59pub const INT32_MIN: i32 = -2147483648;
60pub const INT8_MAX: u32 = 127;
61pub const INT16_MAX: u32 = 32767;
62pub const INT32_MAX: u32 = 2147483647;
63pub const UINT8_MAX: u32 = 255;
64pub const UINT16_MAX: u32 = 65535;
65pub const UINT32_MAX: u32 = 4294967295;
66pub const INT_LEAST8_MIN: i32 = -128;
67pub const INT_LEAST16_MIN: i32 = -32768;
68pub const INT_LEAST32_MIN: i32 = -2147483648;
69pub const INT_LEAST8_MAX: u32 = 127;
70pub const INT_LEAST16_MAX: u32 = 32767;
71pub const INT_LEAST32_MAX: u32 = 2147483647;
72pub const UINT_LEAST8_MAX: u32 = 255;
73pub const UINT_LEAST16_MAX: u32 = 65535;
74pub const UINT_LEAST32_MAX: u32 = 4294967295;
75pub const INT_FAST8_MIN: i32 = -128;
76pub const INT_FAST16_MIN: i64 = -9223372036854775808;
77pub const INT_FAST32_MIN: i64 = -9223372036854775808;
78pub const INT_FAST8_MAX: u32 = 127;
79pub const INT_FAST16_MAX: u64 = 9223372036854775807;
80pub const INT_FAST32_MAX: u64 = 9223372036854775807;
81pub const UINT_FAST8_MAX: u32 = 255;
82pub const UINT_FAST16_MAX: i32 = -1;
83pub const UINT_FAST32_MAX: i32 = -1;
84pub const INTPTR_MIN: i64 = -9223372036854775808;
85pub const INTPTR_MAX: u64 = 9223372036854775807;
86pub const UINTPTR_MAX: i32 = -1;
87pub const PTRDIFF_MIN: i64 = -9223372036854775808;
88pub const PTRDIFF_MAX: u64 = 9223372036854775807;
89pub const SIG_ATOMIC_MIN: i32 = -2147483648;
90pub const SIG_ATOMIC_MAX: u32 = 2147483647;
91pub const SIZE_MAX: i32 = -1;
92pub const WINT_MIN: u32 = 0;
93pub const WINT_MAX: u32 = 4294967295;
94pub const TSS2_RC_LAYER_SHIFT: u32 = 16;
95pub const TSS2_BASE_RC_GENERAL_FAILURE: u32 = 1;
96pub const TSS2_BASE_RC_NOT_IMPLEMENTED: u32 = 2;
97pub const TSS2_BASE_RC_BAD_CONTEXT: u32 = 3;
98pub const TSS2_BASE_RC_ABI_MISMATCH: u32 = 4;
99pub const TSS2_BASE_RC_BAD_REFERENCE: u32 = 5;
100pub const TSS2_BASE_RC_INSUFFICIENT_BUFFER: u32 = 6;
101pub const TSS2_BASE_RC_BAD_SEQUENCE: u32 = 7;
102pub const TSS2_BASE_RC_NO_CONNECTION: u32 = 8;
103pub const TSS2_BASE_RC_TRY_AGAIN: u32 = 9;
104pub const TSS2_BASE_RC_IO_ERROR: u32 = 10;
105pub const TSS2_BASE_RC_BAD_VALUE: u32 = 11;
106pub const TSS2_BASE_RC_NOT_PERMITTED: u32 = 12;
107pub const TSS2_BASE_RC_INVALID_SESSIONS: u32 = 13;
108pub const TSS2_BASE_RC_NO_DECRYPT_PARAM: u32 = 14;
109pub const TSS2_BASE_RC_NO_ENCRYPT_PARAM: u32 = 15;
110pub const TSS2_BASE_RC_BAD_SIZE: u32 = 16;
111pub const TSS2_BASE_RC_MALFORMED_RESPONSE: u32 = 17;
112pub const TSS2_BASE_RC_INSUFFICIENT_CONTEXT: u32 = 18;
113pub const TSS2_BASE_RC_INSUFFICIENT_RESPONSE: u32 = 19;
114pub const TSS2_BASE_RC_INCOMPATIBLE_TCTI: u32 = 20;
115pub const TSS2_BASE_RC_NOT_SUPPORTED: u32 = 21;
116pub const TSS2_BASE_RC_BAD_TCTI_STRUCTURE: u32 = 22;
117pub const TSS2_BASE_RC_MEMORY: u32 = 23;
118pub const TSS2_BASE_RC_BAD_TR: u32 = 24;
119pub const TSS2_BASE_RC_MULTIPLE_DECRYPT_SESSIONS: u32 = 25;
120pub const TSS2_BASE_RC_MULTIPLE_ENCRYPT_SESSIONS: u32 = 26;
121pub const TSS2_BASE_RC_RSP_AUTH_FAILED: u32 = 27;
122pub const TSS2_BASE_RC_NO_CONFIG: u32 = 28;
123pub const TSS2_BASE_RC_BAD_PATH: u32 = 29;
124pub const TSS2_BASE_RC_NOT_DELETABLE: u32 = 30;
125pub const TSS2_BASE_RC_PATH_ALREADY_EXISTS: u32 = 31;
126pub const TSS2_BASE_RC_KEY_NOT_FOUND: u32 = 32;
127pub const TSS2_BASE_RC_SIGNATURE_VERIFICATION_FAILED: u32 = 33;
128pub const TSS2_BASE_RC_HASH_MISMATCH: u32 = 34;
129pub const TSS2_BASE_RC_KEY_NOT_DUPLICABLE: u32 = 35;
130pub const TSS2_BASE_RC_PATH_NOT_FOUND: u32 = 36;
131pub const TSS2_BASE_RC_NO_CERT: u32 = 37;
132pub const TSS2_BASE_RC_NO_PCR: u32 = 38;
133pub const TSS2_BASE_RC_PCR_NOT_RESETTABLE: u32 = 39;
134pub const TSS2_BASE_RC_BAD_TEMPLATE: u32 = 40;
135pub const TSS2_BASE_RC_AUTHORIZATION_FAILED: u32 = 41;
136pub const TSS2_BASE_RC_AUTHORIZATION_UNKNOWN: u32 = 42;
137pub const TSS2_BASE_RC_NV_NOT_READABLE: u32 = 43;
138pub const TSS2_BASE_RC_NV_TOO_SMALL: u32 = 44;
139pub const TSS2_BASE_RC_NV_NOT_WRITEABLE: u32 = 45;
140pub const TSS2_BASE_RC_POLICY_UNKNOWN: u32 = 46;
141pub const TSS2_BASE_RC_NV_WRONG_TYPE: u32 = 47;
142pub const TSS2_BASE_RC_NAME_ALREADY_EXISTS: u32 = 48;
143pub const TSS2_BASE_RC_NO_TPM: u32 = 49;
144pub const TSS2_BASE_RC_BAD_KEY: u32 = 50;
145pub const TSS2_BASE_RC_NO_HANDLE: u32 = 51;
146pub const TSS2_LAYER_IMPLEMENTATION_SPECIFIC_OFFSET: u32 = 63488;
147pub const TSS2_LEVEL_IMPLEMENTATION_SPECIFIC_SHIFT: u32 = 11;
148pub const TPM2_MAX_COMMAND_SIZE: u32 = 4096;
149pub const TPM2_MAX_RESPONSE_SIZE: u32 = 4096;
150pub const TPM2_NUM_PCR_BANKS: u32 = 16;
151pub const TPM2_MAX_DIGEST_BUFFER: u32 = 1024;
152pub const TPM2_MAX_NV_BUFFER_SIZE: u32 = 2048;
153pub const TPM2_MAX_PCRS: u32 = 32;
154pub const TPM2_MAX_ALG_LIST_SIZE: u32 = 128;
155pub const TPM2_MAX_CAP_CC: u32 = 256;
156pub const TPM2_MAX_CAP_BUFFER: u32 = 1024;
157pub const TPM2_MAX_CONTEXT_SIZE: u32 = 5120;
158pub const TPM2_SHA_DIGEST_SIZE: u32 = 20;
159pub const TPM2_SHA1_DIGEST_SIZE: u32 = 20;
160pub const TPM2_SHA256_DIGEST_SIZE: u32 = 32;
161pub const TPM2_SHA384_DIGEST_SIZE: u32 = 48;
162pub const TPM2_SHA512_DIGEST_SIZE: u32 = 64;
163pub const TPM2_SM3_256_DIGEST_SIZE: u32 = 32;
164pub const TPM2_MAX_SYM_BLOCK_SIZE: u32 = 16;
165pub const TPM2_MAX_SYM_DATA: u32 = 256;
166pub const TPM2_MAX_ECC_KEY_BYTES: u32 = 128;
167pub const TPM2_MAX_SYM_KEY_BYTES: u32 = 32;
168pub const TPM2_MAX_RSA_KEY_BYTES: u32 = 512;
169pub const TPM2_LABEL_MAX_BUFFER: u32 = 32;
170pub const TPM2_PCR_SELECT_MAX: u32 = 4;
171pub const TPM2_PRIVATE_VENDOR_SPECIFIC_BYTES: u32 = 1280;
172pub const TPMA_LOCALITY_EXTENDED_SHIFT: u32 = 5;
173pub const TPMA_CC_COMMANDINDEX_SHIFT: u32 = 0;
174pub const TPMA_CC_CHANDLES_SHIFT: u32 = 25;
175pub const TPMA_CC_RES_SHIFT: u32 = 30;
176pub const TPM2_NO: u32 = 0;
177pub const TPM2_YES: u32 = 1;
178pub const TPM2_NV_INDEX_INDEX_SHIFT: u32 = 0;
179pub const TPM2_NV_INDEX_RH_NV_SHIFT: u32 = 24;
180pub const TPMA_NV_TPM2_NT_SHIFT: u32 = 4;
181pub const _SYS_POLL_H: u32 = 1;
182pub const POLLIN: u32 = 1;
183pub const POLLPRI: u32 = 2;
184pub const POLLOUT: u32 = 4;
185pub const POLLRDNORM: u32 = 64;
186pub const POLLRDBAND: u32 = 128;
187pub const POLLWRNORM: u32 = 256;
188pub const POLLWRBAND: u32 = 512;
189pub const POLLERR: u32 = 8;
190pub const POLLHUP: u32 = 16;
191pub const POLLNVAL: u32 = 32;
192pub const TSS2_TCTI_TIMEOUT_BLOCK: i32 = -1;
193pub const TSS2_TCTI_TIMEOUT_NONE: u32 = 0;
194pub const TSS2_TCTI_INFO_SYMBOL: &[u8; 15] = b"Tss2_Tcti_Info\0";
195pub const TSS2_SYS_MAX_SESSIONS: u32 = 3;
196pub const ESYS_TR_NONE: u32 = 4095;
197pub const ESYS_TR_PASSWORD: u32 = 255;
198pub const ESYS_TR_PCR0: u32 = 0;
199pub const ESYS_TR_PCR1: u32 = 1;
200pub const ESYS_TR_PCR2: u32 = 2;
201pub const ESYS_TR_PCR3: u32 = 3;
202pub const ESYS_TR_PCR4: u32 = 4;
203pub const ESYS_TR_PCR5: u32 = 5;
204pub const ESYS_TR_PCR6: u32 = 6;
205pub const ESYS_TR_PCR7: u32 = 7;
206pub const ESYS_TR_PCR8: u32 = 8;
207pub const ESYS_TR_PCR9: u32 = 9;
208pub const ESYS_TR_PCR10: u32 = 10;
209pub const ESYS_TR_PCR11: u32 = 11;
210pub const ESYS_TR_PCR12: u32 = 12;
211pub const ESYS_TR_PCR13: u32 = 13;
212pub const ESYS_TR_PCR14: u32 = 14;
213pub const ESYS_TR_PCR15: u32 = 15;
214pub const ESYS_TR_PCR16: u32 = 16;
215pub const ESYS_TR_PCR17: u32 = 17;
216pub const ESYS_TR_PCR18: u32 = 18;
217pub const ESYS_TR_PCR19: u32 = 19;
218pub const ESYS_TR_PCR20: u32 = 20;
219pub const ESYS_TR_PCR21: u32 = 21;
220pub const ESYS_TR_PCR22: u32 = 22;
221pub const ESYS_TR_PCR23: u32 = 23;
222pub const ESYS_TR_PCR24: u32 = 24;
223pub const ESYS_TR_PCR25: u32 = 25;
224pub const ESYS_TR_PCR26: u32 = 26;
225pub const ESYS_TR_PCR27: u32 = 27;
226pub const ESYS_TR_PCR28: u32 = 28;
227pub const ESYS_TR_PCR29: u32 = 29;
228pub const ESYS_TR_PCR30: u32 = 30;
229pub const ESYS_TR_PCR31: u32 = 31;
230pub const ESYS_TR_RH_OWNER: u32 = 257;
231pub const ESYS_TR_RH_NULL: u32 = 263;
232pub const ESYS_TR_RH_LOCKOUT: u32 = 266;
233pub const ESYS_TR_RH_ENDORSEMENT: u32 = 267;
234pub const ESYS_TR_RH_PLATFORM: u32 = 268;
235pub const ESYS_TR_RH_PLATFORM_NV: u32 = 269;
236pub const ESYS_TR_RH_AUTH_FIRST: u32 = 272;
237pub const ESYS_TR_MIN_OBJECT: u32 = 4096;
238pub const _INTTYPES_H: u32 = 1;
239pub const ____gwchar_t_defined: u32 = 1;
240pub const __PRI64_PREFIX: &[u8; 2] = b"l\0";
241pub const __PRIPTR_PREFIX: &[u8; 2] = b"l\0";
242pub const PRId8: &[u8; 2] = b"d\0";
243pub const PRId16: &[u8; 2] = b"d\0";
244pub const PRId32: &[u8; 2] = b"d\0";
245pub const PRId64: &[u8; 3] = b"ld\0";
246pub const PRIdLEAST8: &[u8; 2] = b"d\0";
247pub const PRIdLEAST16: &[u8; 2] = b"d\0";
248pub const PRIdLEAST32: &[u8; 2] = b"d\0";
249pub const PRIdLEAST64: &[u8; 3] = b"ld\0";
250pub const PRIdFAST8: &[u8; 2] = b"d\0";
251pub const PRIdFAST16: &[u8; 3] = b"ld\0";
252pub const PRIdFAST32: &[u8; 3] = b"ld\0";
253pub const PRIdFAST64: &[u8; 3] = b"ld\0";
254pub const PRIi8: &[u8; 2] = b"i\0";
255pub const PRIi16: &[u8; 2] = b"i\0";
256pub const PRIi32: &[u8; 2] = b"i\0";
257pub const PRIi64: &[u8; 3] = b"li\0";
258pub const PRIiLEAST8: &[u8; 2] = b"i\0";
259pub const PRIiLEAST16: &[u8; 2] = b"i\0";
260pub const PRIiLEAST32: &[u8; 2] = b"i\0";
261pub const PRIiLEAST64: &[u8; 3] = b"li\0";
262pub const PRIiFAST8: &[u8; 2] = b"i\0";
263pub const PRIiFAST16: &[u8; 3] = b"li\0";
264pub const PRIiFAST32: &[u8; 3] = b"li\0";
265pub const PRIiFAST64: &[u8; 3] = b"li\0";
266pub const PRIo8: &[u8; 2] = b"o\0";
267pub const PRIo16: &[u8; 2] = b"o\0";
268pub const PRIo32: &[u8; 2] = b"o\0";
269pub const PRIo64: &[u8; 3] = b"lo\0";
270pub const PRIoLEAST8: &[u8; 2] = b"o\0";
271pub const PRIoLEAST16: &[u8; 2] = b"o\0";
272pub const PRIoLEAST32: &[u8; 2] = b"o\0";
273pub const PRIoLEAST64: &[u8; 3] = b"lo\0";
274pub const PRIoFAST8: &[u8; 2] = b"o\0";
275pub const PRIoFAST16: &[u8; 3] = b"lo\0";
276pub const PRIoFAST32: &[u8; 3] = b"lo\0";
277pub const PRIoFAST64: &[u8; 3] = b"lo\0";
278pub const PRIu8: &[u8; 2] = b"u\0";
279pub const PRIu16: &[u8; 2] = b"u\0";
280pub const PRIu32: &[u8; 2] = b"u\0";
281pub const PRIu64: &[u8; 3] = b"lu\0";
282pub const PRIuLEAST8: &[u8; 2] = b"u\0";
283pub const PRIuLEAST16: &[u8; 2] = b"u\0";
284pub const PRIuLEAST32: &[u8; 2] = b"u\0";
285pub const PRIuLEAST64: &[u8; 3] = b"lu\0";
286pub const PRIuFAST8: &[u8; 2] = b"u\0";
287pub const PRIuFAST16: &[u8; 3] = b"lu\0";
288pub const PRIuFAST32: &[u8; 3] = b"lu\0";
289pub const PRIuFAST64: &[u8; 3] = b"lu\0";
290pub const PRIx8: &[u8; 2] = b"x\0";
291pub const PRIx16: &[u8; 2] = b"x\0";
292pub const PRIx32: &[u8; 2] = b"x\0";
293pub const PRIx64: &[u8; 3] = b"lx\0";
294pub const PRIxLEAST8: &[u8; 2] = b"x\0";
295pub const PRIxLEAST16: &[u8; 2] = b"x\0";
296pub const PRIxLEAST32: &[u8; 2] = b"x\0";
297pub const PRIxLEAST64: &[u8; 3] = b"lx\0";
298pub const PRIxFAST8: &[u8; 2] = b"x\0";
299pub const PRIxFAST16: &[u8; 3] = b"lx\0";
300pub const PRIxFAST32: &[u8; 3] = b"lx\0";
301pub const PRIxFAST64: &[u8; 3] = b"lx\0";
302pub const PRIX8: &[u8; 2] = b"X\0";
303pub const PRIX16: &[u8; 2] = b"X\0";
304pub const PRIX32: &[u8; 2] = b"X\0";
305pub const PRIX64: &[u8; 3] = b"lX\0";
306pub const PRIXLEAST8: &[u8; 2] = b"X\0";
307pub const PRIXLEAST16: &[u8; 2] = b"X\0";
308pub const PRIXLEAST32: &[u8; 2] = b"X\0";
309pub const PRIXLEAST64: &[u8; 3] = b"lX\0";
310pub const PRIXFAST8: &[u8; 2] = b"X\0";
311pub const PRIXFAST16: &[u8; 3] = b"lX\0";
312pub const PRIXFAST32: &[u8; 3] = b"lX\0";
313pub const PRIXFAST64: &[u8; 3] = b"lX\0";
314pub const PRIdMAX: &[u8; 3] = b"ld\0";
315pub const PRIiMAX: &[u8; 3] = b"li\0";
316pub const PRIoMAX: &[u8; 3] = b"lo\0";
317pub const PRIuMAX: &[u8; 3] = b"lu\0";
318pub const PRIxMAX: &[u8; 3] = b"lx\0";
319pub const PRIXMAX: &[u8; 3] = b"lX\0";
320pub const PRIdPTR: &[u8; 3] = b"ld\0";
321pub const PRIiPTR: &[u8; 3] = b"li\0";
322pub const PRIoPTR: &[u8; 3] = b"lo\0";
323pub const PRIuPTR: &[u8; 3] = b"lu\0";
324pub const PRIxPTR: &[u8; 3] = b"lx\0";
325pub const PRIXPTR: &[u8; 3] = b"lX\0";
326pub const SCNd8: &[u8; 4] = b"hhd\0";
327pub const SCNd16: &[u8; 3] = b"hd\0";
328pub const SCNd32: &[u8; 2] = b"d\0";
329pub const SCNd64: &[u8; 3] = b"ld\0";
330pub const SCNdLEAST8: &[u8; 4] = b"hhd\0";
331pub const SCNdLEAST16: &[u8; 3] = b"hd\0";
332pub const SCNdLEAST32: &[u8; 2] = b"d\0";
333pub const SCNdLEAST64: &[u8; 3] = b"ld\0";
334pub const SCNdFAST8: &[u8; 4] = b"hhd\0";
335pub const SCNdFAST16: &[u8; 3] = b"ld\0";
336pub const SCNdFAST32: &[u8; 3] = b"ld\0";
337pub const SCNdFAST64: &[u8; 3] = b"ld\0";
338pub const SCNi8: &[u8; 4] = b"hhi\0";
339pub const SCNi16: &[u8; 3] = b"hi\0";
340pub const SCNi32: &[u8; 2] = b"i\0";
341pub const SCNi64: &[u8; 3] = b"li\0";
342pub const SCNiLEAST8: &[u8; 4] = b"hhi\0";
343pub const SCNiLEAST16: &[u8; 3] = b"hi\0";
344pub const SCNiLEAST32: &[u8; 2] = b"i\0";
345pub const SCNiLEAST64: &[u8; 3] = b"li\0";
346pub const SCNiFAST8: &[u8; 4] = b"hhi\0";
347pub const SCNiFAST16: &[u8; 3] = b"li\0";
348pub const SCNiFAST32: &[u8; 3] = b"li\0";
349pub const SCNiFAST64: &[u8; 3] = b"li\0";
350pub const SCNu8: &[u8; 4] = b"hhu\0";
351pub const SCNu16: &[u8; 3] = b"hu\0";
352pub const SCNu32: &[u8; 2] = b"u\0";
353pub const SCNu64: &[u8; 3] = b"lu\0";
354pub const SCNuLEAST8: &[u8; 4] = b"hhu\0";
355pub const SCNuLEAST16: &[u8; 3] = b"hu\0";
356pub const SCNuLEAST32: &[u8; 2] = b"u\0";
357pub const SCNuLEAST64: &[u8; 3] = b"lu\0";
358pub const SCNuFAST8: &[u8; 4] = b"hhu\0";
359pub const SCNuFAST16: &[u8; 3] = b"lu\0";
360pub const SCNuFAST32: &[u8; 3] = b"lu\0";
361pub const SCNuFAST64: &[u8; 3] = b"lu\0";
362pub const SCNo8: &[u8; 4] = b"hho\0";
363pub const SCNo16: &[u8; 3] = b"ho\0";
364pub const SCNo32: &[u8; 2] = b"o\0";
365pub const SCNo64: &[u8; 3] = b"lo\0";
366pub const SCNoLEAST8: &[u8; 4] = b"hho\0";
367pub const SCNoLEAST16: &[u8; 3] = b"ho\0";
368pub const SCNoLEAST32: &[u8; 2] = b"o\0";
369pub const SCNoLEAST64: &[u8; 3] = b"lo\0";
370pub const SCNoFAST8: &[u8; 4] = b"hho\0";
371pub const SCNoFAST16: &[u8; 3] = b"lo\0";
372pub const SCNoFAST32: &[u8; 3] = b"lo\0";
373pub const SCNoFAST64: &[u8; 3] = b"lo\0";
374pub const SCNx8: &[u8; 4] = b"hhx\0";
375pub const SCNx16: &[u8; 3] = b"hx\0";
376pub const SCNx32: &[u8; 2] = b"x\0";
377pub const SCNx64: &[u8; 3] = b"lx\0";
378pub const SCNxLEAST8: &[u8; 4] = b"hhx\0";
379pub const SCNxLEAST16: &[u8; 3] = b"hx\0";
380pub const SCNxLEAST32: &[u8; 2] = b"x\0";
381pub const SCNxLEAST64: &[u8; 3] = b"lx\0";
382pub const SCNxFAST8: &[u8; 4] = b"hhx\0";
383pub const SCNxFAST16: &[u8; 3] = b"lx\0";
384pub const SCNxFAST32: &[u8; 3] = b"lx\0";
385pub const SCNxFAST64: &[u8; 3] = b"lx\0";
386pub const SCNdMAX: &[u8; 3] = b"ld\0";
387pub const SCNiMAX: &[u8; 3] = b"li\0";
388pub const SCNoMAX: &[u8; 3] = b"lo\0";
389pub const SCNuMAX: &[u8; 3] = b"lu\0";
390pub const SCNxMAX: &[u8; 3] = b"lx\0";
391pub const SCNdPTR: &[u8; 3] = b"ld\0";
392pub const SCNiPTR: &[u8; 3] = b"li\0";
393pub const SCNoPTR: &[u8; 3] = b"lo\0";
394pub const SCNuPTR: &[u8; 3] = b"lu\0";
395pub const SCNxPTR: &[u8; 3] = b"lx\0";
396pub const _STDLIB_H: u32 = 1;
397pub const WNOHANG: u32 = 1;
398pub const WUNTRACED: u32 = 2;
399pub const WSTOPPED: u32 = 2;
400pub const WEXITED: u32 = 4;
401pub const WCONTINUED: u32 = 8;
402pub const WNOWAIT: u32 = 16777216;
403pub const __WNOTHREAD: u32 = 536870912;
404pub const __WALL: u32 = 1073741824;
405pub const __WCLONE: u32 = 2147483648;
406pub const __ENUM_IDTYPE_T: u32 = 1;
407pub const __W_CONTINUED: u32 = 65535;
408pub const __WCOREFLAG: u32 = 128;
409pub const __HAVE_FLOAT128: u32 = 0;
410pub const __HAVE_DISTINCT_FLOAT128: u32 = 0;
411pub const __HAVE_FLOAT64X: u32 = 1;
412pub const __HAVE_FLOAT64X_LONG_DOUBLE: u32 = 1;
413pub const __HAVE_FLOAT16: u32 = 0;
414pub const __HAVE_FLOAT32: u32 = 1;
415pub const __HAVE_FLOAT64: u32 = 1;
416pub const __HAVE_FLOAT32X: u32 = 1;
417pub const __HAVE_FLOAT128X: u32 = 0;
418pub const __HAVE_DISTINCT_FLOAT16: u32 = 0;
419pub const __HAVE_DISTINCT_FLOAT32: u32 = 0;
420pub const __HAVE_DISTINCT_FLOAT64: u32 = 0;
421pub const __HAVE_DISTINCT_FLOAT32X: u32 = 0;
422pub const __HAVE_DISTINCT_FLOAT64X: u32 = 0;
423pub const __HAVE_DISTINCT_FLOAT128X: u32 = 0;
424pub const __HAVE_FLOATN_NOT_TYPEDEF: u32 = 0;
425pub const __ldiv_t_defined: u32 = 1;
426pub const __lldiv_t_defined: u32 = 1;
427pub const RAND_MAX: u32 = 2147483647;
428pub const EXIT_FAILURE: u32 = 1;
429pub const EXIT_SUCCESS: u32 = 0;
430pub const _SYS_TYPES_H: u32 = 1;
431pub const __clock_t_defined: u32 = 1;
432pub const __clockid_t_defined: u32 = 1;
433pub const __time_t_defined: u32 = 1;
434pub const __timer_t_defined: u32 = 1;
435pub const __BIT_TYPES_DEFINED__: u32 = 1;
436pub const _ENDIAN_H: u32 = 1;
437pub const _BITS_ENDIAN_H: u32 = 1;
438pub const __LITTLE_ENDIAN: u32 = 1234;
439pub const __BIG_ENDIAN: u32 = 4321;
440pub const __PDP_ENDIAN: u32 = 3412;
441pub const _BITS_ENDIANNESS_H: u32 = 1;
442pub const __BYTE_ORDER: u32 = 1234;
443pub const __FLOAT_WORD_ORDER: u32 = 1234;
444pub const LITTLE_ENDIAN: u32 = 1234;
445pub const BIG_ENDIAN: u32 = 4321;
446pub const PDP_ENDIAN: u32 = 3412;
447pub const BYTE_ORDER: u32 = 1234;
448pub const _BITS_BYTESWAP_H: u32 = 1;
449pub const _BITS_UINTN_IDENTITY_H: u32 = 1;
450pub const _SYS_SELECT_H: u32 = 1;
451pub const __FD_ZERO_STOS: &[u8; 6] = b"stosq\0";
452pub const __sigset_t_defined: u32 = 1;
453pub const __timeval_defined: u32 = 1;
454pub const _STRUCT_TIMESPEC: u32 = 1;
455pub const FD_SETSIZE: u32 = 1024;
456pub const _BITS_PTHREADTYPES_COMMON_H: u32 = 1;
457pub const _THREAD_SHARED_TYPES_H: u32 = 1;
458pub const _BITS_PTHREADTYPES_ARCH_H: u32 = 1;
459pub const __SIZEOF_PTHREAD_MUTEX_T: u32 = 40;
460pub const __SIZEOF_PTHREAD_ATTR_T: u32 = 56;
461pub const __SIZEOF_PTHREAD_RWLOCK_T: u32 = 56;
462pub const __SIZEOF_PTHREAD_BARRIER_T: u32 = 32;
463pub const __SIZEOF_PTHREAD_MUTEXATTR_T: u32 = 4;
464pub const __SIZEOF_PTHREAD_COND_T: u32 = 48;
465pub const __SIZEOF_PTHREAD_CONDATTR_T: u32 = 4;
466pub const __SIZEOF_PTHREAD_RWLOCKATTR_T: u32 = 8;
467pub const __SIZEOF_PTHREAD_BARRIERATTR_T: u32 = 4;
468pub const _THREAD_MUTEX_INTERNAL_H: u32 = 1;
469pub const __PTHREAD_MUTEX_HAVE_PREV: u32 = 1;
470pub const __have_pthread_attr_t: u32 = 1;
471pub const _ALLOCA_H: u32 = 1;
472pub type __u_char = ::std::os::raw::c_uchar;
473pub type __u_short = ::std::os::raw::c_ushort;
474pub type __u_int = ::std::os::raw::c_uint;
475pub type __u_long = ::std::os::raw::c_ulong;
476pub type __int8_t = ::std::os::raw::c_schar;
477pub type __uint8_t = ::std::os::raw::c_uchar;
478pub type __int16_t = ::std::os::raw::c_short;
479pub type __uint16_t = ::std::os::raw::c_ushort;
480pub type __int32_t = ::std::os::raw::c_int;
481pub type __uint32_t = ::std::os::raw::c_uint;
482pub type __int64_t = ::std::os::raw::c_long;
483pub type __uint64_t = ::std::os::raw::c_ulong;
484pub type __int_least8_t = __int8_t;
485pub type __uint_least8_t = __uint8_t;
486pub type __int_least16_t = __int16_t;
487pub type __uint_least16_t = __uint16_t;
488pub type __int_least32_t = __int32_t;
489pub type __uint_least32_t = __uint32_t;
490pub type __int_least64_t = __int64_t;
491pub type __uint_least64_t = __uint64_t;
492pub type __quad_t = ::std::os::raw::c_long;
493pub type __u_quad_t = ::std::os::raw::c_ulong;
494pub type __intmax_t = ::std::os::raw::c_long;
495pub type __uintmax_t = ::std::os::raw::c_ulong;
496pub type __dev_t = ::std::os::raw::c_ulong;
497pub type __uid_t = ::std::os::raw::c_uint;
498pub type __gid_t = ::std::os::raw::c_uint;
499pub type __ino_t = ::std::os::raw::c_ulong;
500pub type __ino64_t = ::std::os::raw::c_ulong;
501pub type __mode_t = ::std::os::raw::c_uint;
502pub type __nlink_t = ::std::os::raw::c_ulong;
503pub type __off_t = ::std::os::raw::c_long;
504pub type __off64_t = ::std::os::raw::c_long;
505pub type __pid_t = ::std::os::raw::c_int;
506#[repr(C)]
507#[derive(Debug, Default, Copy, Clone)]
508pub struct __fsid_t {
509    pub __val: [::std::os::raw::c_int; 2usize],
510}
511#[test]
512fn bindgen_test_layout___fsid_t() {
513    const UNINIT: ::std::mem::MaybeUninit<__fsid_t> = ::std::mem::MaybeUninit::uninit();
514    let ptr = UNINIT.as_ptr();
515    assert_eq!(
516        ::std::mem::size_of::<__fsid_t>(),
517        8usize,
518        concat!("Size of: ", stringify!(__fsid_t))
519    );
520    assert_eq!(
521        ::std::mem::align_of::<__fsid_t>(),
522        4usize,
523        concat!("Alignment of ", stringify!(__fsid_t))
524    );
525    assert_eq!(
526        unsafe { ::std::ptr::addr_of!((*ptr).__val) as usize - ptr as usize },
527        0usize,
528        concat!(
529            "Offset of field: ",
530            stringify!(__fsid_t),
531            "::",
532            stringify!(__val)
533        )
534    );
535}
536pub type __clock_t = ::std::os::raw::c_long;
537pub type __rlim_t = ::std::os::raw::c_ulong;
538pub type __rlim64_t = ::std::os::raw::c_ulong;
539pub type __id_t = ::std::os::raw::c_uint;
540pub type __time_t = ::std::os::raw::c_long;
541pub type __useconds_t = ::std::os::raw::c_uint;
542pub type __suseconds_t = ::std::os::raw::c_long;
543pub type __daddr_t = ::std::os::raw::c_int;
544pub type __key_t = ::std::os::raw::c_int;
545pub type __clockid_t = ::std::os::raw::c_int;
546pub type __timer_t = *mut ::std::os::raw::c_void;
547pub type __blksize_t = ::std::os::raw::c_long;
548pub type __blkcnt_t = ::std::os::raw::c_long;
549pub type __blkcnt64_t = ::std::os::raw::c_long;
550pub type __fsblkcnt_t = ::std::os::raw::c_ulong;
551pub type __fsblkcnt64_t = ::std::os::raw::c_ulong;
552pub type __fsfilcnt_t = ::std::os::raw::c_ulong;
553pub type __fsfilcnt64_t = ::std::os::raw::c_ulong;
554pub type __fsword_t = ::std::os::raw::c_long;
555pub type __ssize_t = ::std::os::raw::c_long;
556pub type __syscall_slong_t = ::std::os::raw::c_long;
557pub type __syscall_ulong_t = ::std::os::raw::c_ulong;
558pub type __loff_t = __off64_t;
559pub type __caddr_t = *mut ::std::os::raw::c_char;
560pub type __intptr_t = ::std::os::raw::c_long;
561pub type __socklen_t = ::std::os::raw::c_uint;
562pub type __sig_atomic_t = ::std::os::raw::c_int;
563pub type int_least8_t = __int_least8_t;
564pub type int_least16_t = __int_least16_t;
565pub type int_least32_t = __int_least32_t;
566pub type int_least64_t = __int_least64_t;
567pub type uint_least8_t = __uint_least8_t;
568pub type uint_least16_t = __uint_least16_t;
569pub type uint_least32_t = __uint_least32_t;
570pub type uint_least64_t = __uint_least64_t;
571pub type int_fast8_t = ::std::os::raw::c_schar;
572pub type int_fast16_t = ::std::os::raw::c_long;
573pub type int_fast32_t = ::std::os::raw::c_long;
574pub type int_fast64_t = ::std::os::raw::c_long;
575pub type uint_fast8_t = ::std::os::raw::c_uchar;
576pub type uint_fast16_t = ::std::os::raw::c_ulong;
577pub type uint_fast32_t = ::std::os::raw::c_ulong;
578pub type uint_fast64_t = ::std::os::raw::c_ulong;
579pub type intmax_t = __intmax_t;
580pub type uintmax_t = __uintmax_t;
581pub type size_t = ::std::os::raw::c_ulong;
582pub type wchar_t = ::std::os::raw::c_int;
583pub type UINT8 = u8;
584pub type BYTE = u8;
585pub type INT8 = i8;
586pub type BOOL = ::std::os::raw::c_int;
587pub type UINT16 = u16;
588pub type INT16 = i16;
589pub type UINT32 = u32;
590pub type INT32 = i32;
591pub type UINT64 = u64;
592pub type INT64 = i64;
593#[repr(C)]
594#[derive(Debug, Default, Copy, Clone)]
595pub struct TSS2_ABI_VERSION {
596    pub tssCreator: u32,
597    pub tssFamily: u32,
598    pub tssLevel: u32,
599    pub tssVersion: u32,
600}
601#[test]
602fn bindgen_test_layout_TSS2_ABI_VERSION() {
603    const UNINIT: ::std::mem::MaybeUninit<TSS2_ABI_VERSION> = ::std::mem::MaybeUninit::uninit();
604    let ptr = UNINIT.as_ptr();
605    assert_eq!(
606        ::std::mem::size_of::<TSS2_ABI_VERSION>(),
607        16usize,
608        concat!("Size of: ", stringify!(TSS2_ABI_VERSION))
609    );
610    assert_eq!(
611        ::std::mem::align_of::<TSS2_ABI_VERSION>(),
612        4usize,
613        concat!("Alignment of ", stringify!(TSS2_ABI_VERSION))
614    );
615    assert_eq!(
616        unsafe { ::std::ptr::addr_of!((*ptr).tssCreator) as usize - ptr as usize },
617        0usize,
618        concat!(
619            "Offset of field: ",
620            stringify!(TSS2_ABI_VERSION),
621            "::",
622            stringify!(tssCreator)
623        )
624    );
625    assert_eq!(
626        unsafe { ::std::ptr::addr_of!((*ptr).tssFamily) as usize - ptr as usize },
627        4usize,
628        concat!(
629            "Offset of field: ",
630            stringify!(TSS2_ABI_VERSION),
631            "::",
632            stringify!(tssFamily)
633        )
634    );
635    assert_eq!(
636        unsafe { ::std::ptr::addr_of!((*ptr).tssLevel) as usize - ptr as usize },
637        8usize,
638        concat!(
639            "Offset of field: ",
640            stringify!(TSS2_ABI_VERSION),
641            "::",
642            stringify!(tssLevel)
643        )
644    );
645    assert_eq!(
646        unsafe { ::std::ptr::addr_of!((*ptr).tssVersion) as usize - ptr as usize },
647        12usize,
648        concat!(
649            "Offset of field: ",
650            stringify!(TSS2_ABI_VERSION),
651            "::",
652            stringify!(tssVersion)
653        )
654    );
655}
656pub type TSS2_RC = u32;
657pub type TPM2_ALG_ID = UINT16;
658pub type TPM2_ECC_CURVE = UINT16;
659pub type TPM2_CC = UINT32;
660pub type TPM2_ALGORITHM_ID = UINT32;
661pub type TPM2_MODIFIER_INDICATOR = UINT32;
662pub type TPM2_AUTHORIZATION_SIZE = UINT32;
663pub type TPM2_PARAMETER_SIZE = UINT32;
664pub type TPM2_KEY_SIZE = UINT16;
665pub type TPM2_KEY_BITS = UINT16;
666pub type TPM2_SPEC = UINT32;
667pub type TPM2_GENERATED = UINT32;
668pub type TPM2_RC = UINT32;
669pub type TPM2_CLOCK_ADJUST = INT8;
670pub type TPM2_EO = UINT16;
671pub type TPM2_ST = UINT16;
672pub type TPM2_SU = UINT16;
673pub type TPM2_SE = UINT8;
674pub type TPM2_CAP = UINT32;
675pub type TPM2_PT = UINT32;
676pub type TPM2_PT_PCR = UINT32;
677pub type TPM2_PS = UINT32;
678pub type TPM2_HANDLE = UINT32;
679pub type TPM2_HT = UINT8;
680pub type TPM2_RH = TPM2_HANDLE;
681pub type TPM2_HC = TPM2_HANDLE;
682pub type TPMA_ALGORITHM = u32;
683pub type TPMA_OBJECT = u32;
684pub type TPMA_SESSION = UINT8;
685pub type TPMA_LOCALITY = UINT8;
686pub type TPMA_PERMANENT = u32;
687pub type TPMA_STARTUP_CLEAR = u32;
688pub type TPMA_MEMORY = u32;
689pub type TPMA_CC = u32;
690pub type TPMA_MODES = u32;
691pub type TPMI_YES_NO = BYTE;
692pub type TPMI_DH_OBJECT = TPM2_HANDLE;
693pub type TPMI_DH_PERSISTENT = TPM2_HANDLE;
694pub type TPMI_DH_ENTITY = TPM2_HANDLE;
695pub type TPMI_DH_PCR = TPM2_HANDLE;
696pub type TPMI_SH_AUTH_SESSION = TPM2_HANDLE;
697pub type TPMI_SH_HMAC = TPM2_HANDLE;
698pub type TPMI_SH_POLICY = TPM2_HANDLE;
699pub type TPMI_DH_CONTEXT = TPM2_HANDLE;
700pub type TPMI_RH_HIERARCHY = TPM2_HANDLE;
701pub type TPMI_RH_ENABLES = TPM2_HANDLE;
702pub type TPMI_RH_HIERARCHY_AUTH = TPM2_HANDLE;
703pub type TPMI_RH_PLATFORM = TPM2_HANDLE;
704pub type TPMI_RH_OWNER = TPM2_HANDLE;
705pub type TPMI_RH_ENDORSEMENT = TPM2_HANDLE;
706pub type TPMI_RH_PROVISION = TPM2_HANDLE;
707pub type TPMI_RH_CLEAR = TPM2_HANDLE;
708pub type TPMI_RH_NV_AUTH = TPM2_HANDLE;
709pub type TPMI_RH_LOCKOUT = TPM2_HANDLE;
710pub type TPMI_RH_NV_INDEX = TPM2_HANDLE;
711pub type TPMI_ALG_HASH = TPM2_ALG_ID;
712pub type TPMI_ALG_ASYM = TPM2_ALG_ID;
713pub type TPMI_ALG_SYM = TPM2_ALG_ID;
714pub type TPMI_ALG_SYM_OBJECT = TPM2_ALG_ID;
715pub type TPMI_ALG_SYM_MODE = TPM2_ALG_ID;
716pub type TPMI_ALG_KDF = TPM2_ALG_ID;
717pub type TPMI_ALG_SIG_SCHEME = TPM2_ALG_ID;
718pub type TPMI_ECC_KEY_EXCHANGE = TPM2_ALG_ID;
719pub type TPMI_ST_COMMAND_TAG = TPM2_ST;
720#[repr(C)]
721#[derive(Debug, Default, Copy, Clone)]
722pub struct TPMS_EMPTY {
723    pub empty: [BYTE; 1usize],
724}
725#[test]
726fn bindgen_test_layout_TPMS_EMPTY() {
727    const UNINIT: ::std::mem::MaybeUninit<TPMS_EMPTY> = ::std::mem::MaybeUninit::uninit();
728    let ptr = UNINIT.as_ptr();
729    assert_eq!(
730        ::std::mem::size_of::<TPMS_EMPTY>(),
731        1usize,
732        concat!("Size of: ", stringify!(TPMS_EMPTY))
733    );
734    assert_eq!(
735        ::std::mem::align_of::<TPMS_EMPTY>(),
736        1usize,
737        concat!("Alignment of ", stringify!(TPMS_EMPTY))
738    );
739    assert_eq!(
740        unsafe { ::std::ptr::addr_of!((*ptr).empty) as usize - ptr as usize },
741        0usize,
742        concat!(
743            "Offset of field: ",
744            stringify!(TPMS_EMPTY),
745            "::",
746            stringify!(empty)
747        )
748    );
749}
750#[repr(C)]
751#[derive(Debug, Default, Copy, Clone)]
752pub struct TPMS_ALGORITHM_DESCRIPTION {
753    pub alg: TPM2_ALG_ID,
754    pub attributes: TPMA_ALGORITHM,
755}
756#[test]
757fn bindgen_test_layout_TPMS_ALGORITHM_DESCRIPTION() {
758    const UNINIT: ::std::mem::MaybeUninit<TPMS_ALGORITHM_DESCRIPTION> =
759        ::std::mem::MaybeUninit::uninit();
760    let ptr = UNINIT.as_ptr();
761    assert_eq!(
762        ::std::mem::size_of::<TPMS_ALGORITHM_DESCRIPTION>(),
763        8usize,
764        concat!("Size of: ", stringify!(TPMS_ALGORITHM_DESCRIPTION))
765    );
766    assert_eq!(
767        ::std::mem::align_of::<TPMS_ALGORITHM_DESCRIPTION>(),
768        4usize,
769        concat!("Alignment of ", stringify!(TPMS_ALGORITHM_DESCRIPTION))
770    );
771    assert_eq!(
772        unsafe { ::std::ptr::addr_of!((*ptr).alg) as usize - ptr as usize },
773        0usize,
774        concat!(
775            "Offset of field: ",
776            stringify!(TPMS_ALGORITHM_DESCRIPTION),
777            "::",
778            stringify!(alg)
779        )
780    );
781    assert_eq!(
782        unsafe { ::std::ptr::addr_of!((*ptr).attributes) as usize - ptr as usize },
783        4usize,
784        concat!(
785            "Offset of field: ",
786            stringify!(TPMS_ALGORITHM_DESCRIPTION),
787            "::",
788            stringify!(attributes)
789        )
790    );
791}
792#[repr(C)]
793#[derive(Copy, Clone)]
794pub union TPMU_HA {
795    pub sha1: [BYTE; 20usize],
796    pub sha256: [BYTE; 32usize],
797    pub sha384: [BYTE; 48usize],
798    pub sha512: [BYTE; 64usize],
799    pub sm3_256: [BYTE; 32usize],
800}
801#[test]
802fn bindgen_test_layout_TPMU_HA() {
803    const UNINIT: ::std::mem::MaybeUninit<TPMU_HA> = ::std::mem::MaybeUninit::uninit();
804    let ptr = UNINIT.as_ptr();
805    assert_eq!(
806        ::std::mem::size_of::<TPMU_HA>(),
807        64usize,
808        concat!("Size of: ", stringify!(TPMU_HA))
809    );
810    assert_eq!(
811        ::std::mem::align_of::<TPMU_HA>(),
812        1usize,
813        concat!("Alignment of ", stringify!(TPMU_HA))
814    );
815    assert_eq!(
816        unsafe { ::std::ptr::addr_of!((*ptr).sha1) as usize - ptr as usize },
817        0usize,
818        concat!(
819            "Offset of field: ",
820            stringify!(TPMU_HA),
821            "::",
822            stringify!(sha1)
823        )
824    );
825    assert_eq!(
826        unsafe { ::std::ptr::addr_of!((*ptr).sha256) as usize - ptr as usize },
827        0usize,
828        concat!(
829            "Offset of field: ",
830            stringify!(TPMU_HA),
831            "::",
832            stringify!(sha256)
833        )
834    );
835    assert_eq!(
836        unsafe { ::std::ptr::addr_of!((*ptr).sha384) as usize - ptr as usize },
837        0usize,
838        concat!(
839            "Offset of field: ",
840            stringify!(TPMU_HA),
841            "::",
842            stringify!(sha384)
843        )
844    );
845    assert_eq!(
846        unsafe { ::std::ptr::addr_of!((*ptr).sha512) as usize - ptr as usize },
847        0usize,
848        concat!(
849            "Offset of field: ",
850            stringify!(TPMU_HA),
851            "::",
852            stringify!(sha512)
853        )
854    );
855    assert_eq!(
856        unsafe { ::std::ptr::addr_of!((*ptr).sm3_256) as usize - ptr as usize },
857        0usize,
858        concat!(
859            "Offset of field: ",
860            stringify!(TPMU_HA),
861            "::",
862            stringify!(sm3_256)
863        )
864    );
865}
866impl Default for TPMU_HA {
867    fn default() -> Self {
868        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
869        unsafe {
870            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
871            s.assume_init()
872        }
873    }
874}
875#[repr(C)]
876#[derive(Copy, Clone)]
877pub struct TPMT_HA {
878    pub hashAlg: TPMI_ALG_HASH,
879    pub digest: TPMU_HA,
880}
881#[test]
882fn bindgen_test_layout_TPMT_HA() {
883    const UNINIT: ::std::mem::MaybeUninit<TPMT_HA> = ::std::mem::MaybeUninit::uninit();
884    let ptr = UNINIT.as_ptr();
885    assert_eq!(
886        ::std::mem::size_of::<TPMT_HA>(),
887        66usize,
888        concat!("Size of: ", stringify!(TPMT_HA))
889    );
890    assert_eq!(
891        ::std::mem::align_of::<TPMT_HA>(),
892        2usize,
893        concat!("Alignment of ", stringify!(TPMT_HA))
894    );
895    assert_eq!(
896        unsafe { ::std::ptr::addr_of!((*ptr).hashAlg) as usize - ptr as usize },
897        0usize,
898        concat!(
899            "Offset of field: ",
900            stringify!(TPMT_HA),
901            "::",
902            stringify!(hashAlg)
903        )
904    );
905    assert_eq!(
906        unsafe { ::std::ptr::addr_of!((*ptr).digest) as usize - ptr as usize },
907        2usize,
908        concat!(
909            "Offset of field: ",
910            stringify!(TPMT_HA),
911            "::",
912            stringify!(digest)
913        )
914    );
915}
916impl Default for TPMT_HA {
917    fn default() -> Self {
918        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
919        unsafe {
920            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
921            s.assume_init()
922        }
923    }
924}
925#[repr(C)]
926#[derive(Debug, Copy, Clone)]
927pub struct TPM2B_DIGEST {
928    pub size: UINT16,
929    pub buffer: [BYTE; 64usize],
930}
931#[test]
932fn bindgen_test_layout_TPM2B_DIGEST() {
933    const UNINIT: ::std::mem::MaybeUninit<TPM2B_DIGEST> = ::std::mem::MaybeUninit::uninit();
934    let ptr = UNINIT.as_ptr();
935    assert_eq!(
936        ::std::mem::size_of::<TPM2B_DIGEST>(),
937        66usize,
938        concat!("Size of: ", stringify!(TPM2B_DIGEST))
939    );
940    assert_eq!(
941        ::std::mem::align_of::<TPM2B_DIGEST>(),
942        2usize,
943        concat!("Alignment of ", stringify!(TPM2B_DIGEST))
944    );
945    assert_eq!(
946        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
947        0usize,
948        concat!(
949            "Offset of field: ",
950            stringify!(TPM2B_DIGEST),
951            "::",
952            stringify!(size)
953        )
954    );
955    assert_eq!(
956        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
957        2usize,
958        concat!(
959            "Offset of field: ",
960            stringify!(TPM2B_DIGEST),
961            "::",
962            stringify!(buffer)
963        )
964    );
965}
966impl Default for TPM2B_DIGEST {
967    fn default() -> Self {
968        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
969        unsafe {
970            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
971            s.assume_init()
972        }
973    }
974}
975#[repr(C)]
976#[derive(Debug, Copy, Clone)]
977pub struct TPM2B_DATA {
978    pub size: UINT16,
979    pub buffer: [BYTE; 64usize],
980}
981#[test]
982fn bindgen_test_layout_TPM2B_DATA() {
983    const UNINIT: ::std::mem::MaybeUninit<TPM2B_DATA> = ::std::mem::MaybeUninit::uninit();
984    let ptr = UNINIT.as_ptr();
985    assert_eq!(
986        ::std::mem::size_of::<TPM2B_DATA>(),
987        66usize,
988        concat!("Size of: ", stringify!(TPM2B_DATA))
989    );
990    assert_eq!(
991        ::std::mem::align_of::<TPM2B_DATA>(),
992        2usize,
993        concat!("Alignment of ", stringify!(TPM2B_DATA))
994    );
995    assert_eq!(
996        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
997        0usize,
998        concat!(
999            "Offset of field: ",
1000            stringify!(TPM2B_DATA),
1001            "::",
1002            stringify!(size)
1003        )
1004    );
1005    assert_eq!(
1006        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
1007        2usize,
1008        concat!(
1009            "Offset of field: ",
1010            stringify!(TPM2B_DATA),
1011            "::",
1012            stringify!(buffer)
1013        )
1014    );
1015}
1016impl Default for TPM2B_DATA {
1017    fn default() -> Self {
1018        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1019        unsafe {
1020            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1021            s.assume_init()
1022        }
1023    }
1024}
1025pub type TPM2B_NONCE = TPM2B_DIGEST;
1026pub type TPM2B_AUTH = TPM2B_DIGEST;
1027pub type TPM2B_OPERAND = TPM2B_DIGEST;
1028#[repr(C)]
1029#[derive(Debug, Copy, Clone)]
1030pub struct TPM2B_EVENT {
1031    pub size: UINT16,
1032    pub buffer: [BYTE; 1024usize],
1033}
1034#[test]
1035fn bindgen_test_layout_TPM2B_EVENT() {
1036    const UNINIT: ::std::mem::MaybeUninit<TPM2B_EVENT> = ::std::mem::MaybeUninit::uninit();
1037    let ptr = UNINIT.as_ptr();
1038    assert_eq!(
1039        ::std::mem::size_of::<TPM2B_EVENT>(),
1040        1026usize,
1041        concat!("Size of: ", stringify!(TPM2B_EVENT))
1042    );
1043    assert_eq!(
1044        ::std::mem::align_of::<TPM2B_EVENT>(),
1045        2usize,
1046        concat!("Alignment of ", stringify!(TPM2B_EVENT))
1047    );
1048    assert_eq!(
1049        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
1050        0usize,
1051        concat!(
1052            "Offset of field: ",
1053            stringify!(TPM2B_EVENT),
1054            "::",
1055            stringify!(size)
1056        )
1057    );
1058    assert_eq!(
1059        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
1060        2usize,
1061        concat!(
1062            "Offset of field: ",
1063            stringify!(TPM2B_EVENT),
1064            "::",
1065            stringify!(buffer)
1066        )
1067    );
1068}
1069impl Default for TPM2B_EVENT {
1070    fn default() -> Self {
1071        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1072        unsafe {
1073            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1074            s.assume_init()
1075        }
1076    }
1077}
1078#[repr(C)]
1079#[derive(Debug, Copy, Clone)]
1080pub struct TPM2B_MAX_BUFFER {
1081    pub size: UINT16,
1082    pub buffer: [BYTE; 1024usize],
1083}
1084#[test]
1085fn bindgen_test_layout_TPM2B_MAX_BUFFER() {
1086    const UNINIT: ::std::mem::MaybeUninit<TPM2B_MAX_BUFFER> = ::std::mem::MaybeUninit::uninit();
1087    let ptr = UNINIT.as_ptr();
1088    assert_eq!(
1089        ::std::mem::size_of::<TPM2B_MAX_BUFFER>(),
1090        1026usize,
1091        concat!("Size of: ", stringify!(TPM2B_MAX_BUFFER))
1092    );
1093    assert_eq!(
1094        ::std::mem::align_of::<TPM2B_MAX_BUFFER>(),
1095        2usize,
1096        concat!("Alignment of ", stringify!(TPM2B_MAX_BUFFER))
1097    );
1098    assert_eq!(
1099        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
1100        0usize,
1101        concat!(
1102            "Offset of field: ",
1103            stringify!(TPM2B_MAX_BUFFER),
1104            "::",
1105            stringify!(size)
1106        )
1107    );
1108    assert_eq!(
1109        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
1110        2usize,
1111        concat!(
1112            "Offset of field: ",
1113            stringify!(TPM2B_MAX_BUFFER),
1114            "::",
1115            stringify!(buffer)
1116        )
1117    );
1118}
1119impl Default for TPM2B_MAX_BUFFER {
1120    fn default() -> Self {
1121        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1122        unsafe {
1123            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1124            s.assume_init()
1125        }
1126    }
1127}
1128#[repr(C)]
1129#[derive(Debug, Copy, Clone)]
1130pub struct TPM2B_MAX_NV_BUFFER {
1131    pub size: UINT16,
1132    pub buffer: [BYTE; 2048usize],
1133}
1134#[test]
1135fn bindgen_test_layout_TPM2B_MAX_NV_BUFFER() {
1136    const UNINIT: ::std::mem::MaybeUninit<TPM2B_MAX_NV_BUFFER> = ::std::mem::MaybeUninit::uninit();
1137    let ptr = UNINIT.as_ptr();
1138    assert_eq!(
1139        ::std::mem::size_of::<TPM2B_MAX_NV_BUFFER>(),
1140        2050usize,
1141        concat!("Size of: ", stringify!(TPM2B_MAX_NV_BUFFER))
1142    );
1143    assert_eq!(
1144        ::std::mem::align_of::<TPM2B_MAX_NV_BUFFER>(),
1145        2usize,
1146        concat!("Alignment of ", stringify!(TPM2B_MAX_NV_BUFFER))
1147    );
1148    assert_eq!(
1149        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
1150        0usize,
1151        concat!(
1152            "Offset of field: ",
1153            stringify!(TPM2B_MAX_NV_BUFFER),
1154            "::",
1155            stringify!(size)
1156        )
1157    );
1158    assert_eq!(
1159        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
1160        2usize,
1161        concat!(
1162            "Offset of field: ",
1163            stringify!(TPM2B_MAX_NV_BUFFER),
1164            "::",
1165            stringify!(buffer)
1166        )
1167    );
1168}
1169impl Default for TPM2B_MAX_NV_BUFFER {
1170    fn default() -> Self {
1171        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1172        unsafe {
1173            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1174            s.assume_init()
1175        }
1176    }
1177}
1178pub type TPM2B_TIMEOUT = TPM2B_DIGEST;
1179#[repr(C)]
1180#[derive(Debug, Default, Copy, Clone)]
1181pub struct TPM2B_IV {
1182    pub size: UINT16,
1183    pub buffer: [BYTE; 16usize],
1184}
1185#[test]
1186fn bindgen_test_layout_TPM2B_IV() {
1187    const UNINIT: ::std::mem::MaybeUninit<TPM2B_IV> = ::std::mem::MaybeUninit::uninit();
1188    let ptr = UNINIT.as_ptr();
1189    assert_eq!(
1190        ::std::mem::size_of::<TPM2B_IV>(),
1191        18usize,
1192        concat!("Size of: ", stringify!(TPM2B_IV))
1193    );
1194    assert_eq!(
1195        ::std::mem::align_of::<TPM2B_IV>(),
1196        2usize,
1197        concat!("Alignment of ", stringify!(TPM2B_IV))
1198    );
1199    assert_eq!(
1200        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
1201        0usize,
1202        concat!(
1203            "Offset of field: ",
1204            stringify!(TPM2B_IV),
1205            "::",
1206            stringify!(size)
1207        )
1208    );
1209    assert_eq!(
1210        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
1211        2usize,
1212        concat!(
1213            "Offset of field: ",
1214            stringify!(TPM2B_IV),
1215            "::",
1216            stringify!(buffer)
1217        )
1218    );
1219}
1220#[repr(C)]
1221#[derive(Copy, Clone)]
1222pub union TPMU_NAME {
1223    pub digest: TPMT_HA,
1224    pub handle: TPM2_HANDLE,
1225}
1226#[test]
1227fn bindgen_test_layout_TPMU_NAME() {
1228    const UNINIT: ::std::mem::MaybeUninit<TPMU_NAME> = ::std::mem::MaybeUninit::uninit();
1229    let ptr = UNINIT.as_ptr();
1230    assert_eq!(
1231        ::std::mem::size_of::<TPMU_NAME>(),
1232        68usize,
1233        concat!("Size of: ", stringify!(TPMU_NAME))
1234    );
1235    assert_eq!(
1236        ::std::mem::align_of::<TPMU_NAME>(),
1237        4usize,
1238        concat!("Alignment of ", stringify!(TPMU_NAME))
1239    );
1240    assert_eq!(
1241        unsafe { ::std::ptr::addr_of!((*ptr).digest) as usize - ptr as usize },
1242        0usize,
1243        concat!(
1244            "Offset of field: ",
1245            stringify!(TPMU_NAME),
1246            "::",
1247            stringify!(digest)
1248        )
1249    );
1250    assert_eq!(
1251        unsafe { ::std::ptr::addr_of!((*ptr).handle) as usize - ptr as usize },
1252        0usize,
1253        concat!(
1254            "Offset of field: ",
1255            stringify!(TPMU_NAME),
1256            "::",
1257            stringify!(handle)
1258        )
1259    );
1260}
1261impl Default for TPMU_NAME {
1262    fn default() -> Self {
1263        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1264        unsafe {
1265            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1266            s.assume_init()
1267        }
1268    }
1269}
1270#[repr(C)]
1271#[derive(Debug, Copy, Clone)]
1272pub struct TPM2B_NAME {
1273    pub size: UINT16,
1274    pub name: [BYTE; 68usize],
1275}
1276#[test]
1277fn bindgen_test_layout_TPM2B_NAME() {
1278    const UNINIT: ::std::mem::MaybeUninit<TPM2B_NAME> = ::std::mem::MaybeUninit::uninit();
1279    let ptr = UNINIT.as_ptr();
1280    assert_eq!(
1281        ::std::mem::size_of::<TPM2B_NAME>(),
1282        70usize,
1283        concat!("Size of: ", stringify!(TPM2B_NAME))
1284    );
1285    assert_eq!(
1286        ::std::mem::align_of::<TPM2B_NAME>(),
1287        2usize,
1288        concat!("Alignment of ", stringify!(TPM2B_NAME))
1289    );
1290    assert_eq!(
1291        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
1292        0usize,
1293        concat!(
1294            "Offset of field: ",
1295            stringify!(TPM2B_NAME),
1296            "::",
1297            stringify!(size)
1298        )
1299    );
1300    assert_eq!(
1301        unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize },
1302        2usize,
1303        concat!(
1304            "Offset of field: ",
1305            stringify!(TPM2B_NAME),
1306            "::",
1307            stringify!(name)
1308        )
1309    );
1310}
1311impl Default for TPM2B_NAME {
1312    fn default() -> Self {
1313        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1314        unsafe {
1315            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1316            s.assume_init()
1317        }
1318    }
1319}
1320#[repr(C)]
1321#[derive(Debug, Default, Copy, Clone)]
1322pub struct TPMS_PCR_SELECT {
1323    pub sizeofSelect: UINT8,
1324    pub pcrSelect: [BYTE; 4usize],
1325}
1326#[test]
1327fn bindgen_test_layout_TPMS_PCR_SELECT() {
1328    const UNINIT: ::std::mem::MaybeUninit<TPMS_PCR_SELECT> = ::std::mem::MaybeUninit::uninit();
1329    let ptr = UNINIT.as_ptr();
1330    assert_eq!(
1331        ::std::mem::size_of::<TPMS_PCR_SELECT>(),
1332        5usize,
1333        concat!("Size of: ", stringify!(TPMS_PCR_SELECT))
1334    );
1335    assert_eq!(
1336        ::std::mem::align_of::<TPMS_PCR_SELECT>(),
1337        1usize,
1338        concat!("Alignment of ", stringify!(TPMS_PCR_SELECT))
1339    );
1340    assert_eq!(
1341        unsafe { ::std::ptr::addr_of!((*ptr).sizeofSelect) as usize - ptr as usize },
1342        0usize,
1343        concat!(
1344            "Offset of field: ",
1345            stringify!(TPMS_PCR_SELECT),
1346            "::",
1347            stringify!(sizeofSelect)
1348        )
1349    );
1350    assert_eq!(
1351        unsafe { ::std::ptr::addr_of!((*ptr).pcrSelect) as usize - ptr as usize },
1352        1usize,
1353        concat!(
1354            "Offset of field: ",
1355            stringify!(TPMS_PCR_SELECT),
1356            "::",
1357            stringify!(pcrSelect)
1358        )
1359    );
1360}
1361#[repr(C)]
1362#[derive(Debug, Default, Copy, Clone)]
1363pub struct TPMS_PCR_SELECTION {
1364    pub hash: TPMI_ALG_HASH,
1365    pub sizeofSelect: UINT8,
1366    pub pcrSelect: [BYTE; 4usize],
1367}
1368#[test]
1369fn bindgen_test_layout_TPMS_PCR_SELECTION() {
1370    const UNINIT: ::std::mem::MaybeUninit<TPMS_PCR_SELECTION> = ::std::mem::MaybeUninit::uninit();
1371    let ptr = UNINIT.as_ptr();
1372    assert_eq!(
1373        ::std::mem::size_of::<TPMS_PCR_SELECTION>(),
1374        8usize,
1375        concat!("Size of: ", stringify!(TPMS_PCR_SELECTION))
1376    );
1377    assert_eq!(
1378        ::std::mem::align_of::<TPMS_PCR_SELECTION>(),
1379        2usize,
1380        concat!("Alignment of ", stringify!(TPMS_PCR_SELECTION))
1381    );
1382    assert_eq!(
1383        unsafe { ::std::ptr::addr_of!((*ptr).hash) as usize - ptr as usize },
1384        0usize,
1385        concat!(
1386            "Offset of field: ",
1387            stringify!(TPMS_PCR_SELECTION),
1388            "::",
1389            stringify!(hash)
1390        )
1391    );
1392    assert_eq!(
1393        unsafe { ::std::ptr::addr_of!((*ptr).sizeofSelect) as usize - ptr as usize },
1394        2usize,
1395        concat!(
1396            "Offset of field: ",
1397            stringify!(TPMS_PCR_SELECTION),
1398            "::",
1399            stringify!(sizeofSelect)
1400        )
1401    );
1402    assert_eq!(
1403        unsafe { ::std::ptr::addr_of!((*ptr).pcrSelect) as usize - ptr as usize },
1404        3usize,
1405        concat!(
1406            "Offset of field: ",
1407            stringify!(TPMS_PCR_SELECTION),
1408            "::",
1409            stringify!(pcrSelect)
1410        )
1411    );
1412}
1413#[repr(C)]
1414#[derive(Debug, Copy, Clone)]
1415pub struct TPMT_TK_CREATION {
1416    pub tag: TPM2_ST,
1417    pub hierarchy: TPMI_RH_HIERARCHY,
1418    pub digest: TPM2B_DIGEST,
1419}
1420#[test]
1421fn bindgen_test_layout_TPMT_TK_CREATION() {
1422    const UNINIT: ::std::mem::MaybeUninit<TPMT_TK_CREATION> = ::std::mem::MaybeUninit::uninit();
1423    let ptr = UNINIT.as_ptr();
1424    assert_eq!(
1425        ::std::mem::size_of::<TPMT_TK_CREATION>(),
1426        76usize,
1427        concat!("Size of: ", stringify!(TPMT_TK_CREATION))
1428    );
1429    assert_eq!(
1430        ::std::mem::align_of::<TPMT_TK_CREATION>(),
1431        4usize,
1432        concat!("Alignment of ", stringify!(TPMT_TK_CREATION))
1433    );
1434    assert_eq!(
1435        unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize },
1436        0usize,
1437        concat!(
1438            "Offset of field: ",
1439            stringify!(TPMT_TK_CREATION),
1440            "::",
1441            stringify!(tag)
1442        )
1443    );
1444    assert_eq!(
1445        unsafe { ::std::ptr::addr_of!((*ptr).hierarchy) as usize - ptr as usize },
1446        4usize,
1447        concat!(
1448            "Offset of field: ",
1449            stringify!(TPMT_TK_CREATION),
1450            "::",
1451            stringify!(hierarchy)
1452        )
1453    );
1454    assert_eq!(
1455        unsafe { ::std::ptr::addr_of!((*ptr).digest) as usize - ptr as usize },
1456        8usize,
1457        concat!(
1458            "Offset of field: ",
1459            stringify!(TPMT_TK_CREATION),
1460            "::",
1461            stringify!(digest)
1462        )
1463    );
1464}
1465impl Default for TPMT_TK_CREATION {
1466    fn default() -> Self {
1467        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1468        unsafe {
1469            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1470            s.assume_init()
1471        }
1472    }
1473}
1474#[repr(C)]
1475#[derive(Debug, Copy, Clone)]
1476pub struct TPMT_TK_VERIFIED {
1477    pub tag: TPM2_ST,
1478    pub hierarchy: TPMI_RH_HIERARCHY,
1479    pub digest: TPM2B_DIGEST,
1480}
1481#[test]
1482fn bindgen_test_layout_TPMT_TK_VERIFIED() {
1483    const UNINIT: ::std::mem::MaybeUninit<TPMT_TK_VERIFIED> = ::std::mem::MaybeUninit::uninit();
1484    let ptr = UNINIT.as_ptr();
1485    assert_eq!(
1486        ::std::mem::size_of::<TPMT_TK_VERIFIED>(),
1487        76usize,
1488        concat!("Size of: ", stringify!(TPMT_TK_VERIFIED))
1489    );
1490    assert_eq!(
1491        ::std::mem::align_of::<TPMT_TK_VERIFIED>(),
1492        4usize,
1493        concat!("Alignment of ", stringify!(TPMT_TK_VERIFIED))
1494    );
1495    assert_eq!(
1496        unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize },
1497        0usize,
1498        concat!(
1499            "Offset of field: ",
1500            stringify!(TPMT_TK_VERIFIED),
1501            "::",
1502            stringify!(tag)
1503        )
1504    );
1505    assert_eq!(
1506        unsafe { ::std::ptr::addr_of!((*ptr).hierarchy) as usize - ptr as usize },
1507        4usize,
1508        concat!(
1509            "Offset of field: ",
1510            stringify!(TPMT_TK_VERIFIED),
1511            "::",
1512            stringify!(hierarchy)
1513        )
1514    );
1515    assert_eq!(
1516        unsafe { ::std::ptr::addr_of!((*ptr).digest) as usize - ptr as usize },
1517        8usize,
1518        concat!(
1519            "Offset of field: ",
1520            stringify!(TPMT_TK_VERIFIED),
1521            "::",
1522            stringify!(digest)
1523        )
1524    );
1525}
1526impl Default for TPMT_TK_VERIFIED {
1527    fn default() -> Self {
1528        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1529        unsafe {
1530            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1531            s.assume_init()
1532        }
1533    }
1534}
1535#[repr(C)]
1536#[derive(Debug, Copy, Clone)]
1537pub struct TPMT_TK_AUTH {
1538    pub tag: TPM2_ST,
1539    pub hierarchy: TPMI_RH_HIERARCHY,
1540    pub digest: TPM2B_DIGEST,
1541}
1542#[test]
1543fn bindgen_test_layout_TPMT_TK_AUTH() {
1544    const UNINIT: ::std::mem::MaybeUninit<TPMT_TK_AUTH> = ::std::mem::MaybeUninit::uninit();
1545    let ptr = UNINIT.as_ptr();
1546    assert_eq!(
1547        ::std::mem::size_of::<TPMT_TK_AUTH>(),
1548        76usize,
1549        concat!("Size of: ", stringify!(TPMT_TK_AUTH))
1550    );
1551    assert_eq!(
1552        ::std::mem::align_of::<TPMT_TK_AUTH>(),
1553        4usize,
1554        concat!("Alignment of ", stringify!(TPMT_TK_AUTH))
1555    );
1556    assert_eq!(
1557        unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize },
1558        0usize,
1559        concat!(
1560            "Offset of field: ",
1561            stringify!(TPMT_TK_AUTH),
1562            "::",
1563            stringify!(tag)
1564        )
1565    );
1566    assert_eq!(
1567        unsafe { ::std::ptr::addr_of!((*ptr).hierarchy) as usize - ptr as usize },
1568        4usize,
1569        concat!(
1570            "Offset of field: ",
1571            stringify!(TPMT_TK_AUTH),
1572            "::",
1573            stringify!(hierarchy)
1574        )
1575    );
1576    assert_eq!(
1577        unsafe { ::std::ptr::addr_of!((*ptr).digest) as usize - ptr as usize },
1578        8usize,
1579        concat!(
1580            "Offset of field: ",
1581            stringify!(TPMT_TK_AUTH),
1582            "::",
1583            stringify!(digest)
1584        )
1585    );
1586}
1587impl Default for TPMT_TK_AUTH {
1588    fn default() -> Self {
1589        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1590        unsafe {
1591            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1592            s.assume_init()
1593        }
1594    }
1595}
1596#[repr(C)]
1597#[derive(Debug, Copy, Clone)]
1598pub struct TPMT_TK_HASHCHECK {
1599    pub tag: TPM2_ST,
1600    pub hierarchy: TPMI_RH_HIERARCHY,
1601    pub digest: TPM2B_DIGEST,
1602}
1603#[test]
1604fn bindgen_test_layout_TPMT_TK_HASHCHECK() {
1605    const UNINIT: ::std::mem::MaybeUninit<TPMT_TK_HASHCHECK> = ::std::mem::MaybeUninit::uninit();
1606    let ptr = UNINIT.as_ptr();
1607    assert_eq!(
1608        ::std::mem::size_of::<TPMT_TK_HASHCHECK>(),
1609        76usize,
1610        concat!("Size of: ", stringify!(TPMT_TK_HASHCHECK))
1611    );
1612    assert_eq!(
1613        ::std::mem::align_of::<TPMT_TK_HASHCHECK>(),
1614        4usize,
1615        concat!("Alignment of ", stringify!(TPMT_TK_HASHCHECK))
1616    );
1617    assert_eq!(
1618        unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize },
1619        0usize,
1620        concat!(
1621            "Offset of field: ",
1622            stringify!(TPMT_TK_HASHCHECK),
1623            "::",
1624            stringify!(tag)
1625        )
1626    );
1627    assert_eq!(
1628        unsafe { ::std::ptr::addr_of!((*ptr).hierarchy) as usize - ptr as usize },
1629        4usize,
1630        concat!(
1631            "Offset of field: ",
1632            stringify!(TPMT_TK_HASHCHECK),
1633            "::",
1634            stringify!(hierarchy)
1635        )
1636    );
1637    assert_eq!(
1638        unsafe { ::std::ptr::addr_of!((*ptr).digest) as usize - ptr as usize },
1639        8usize,
1640        concat!(
1641            "Offset of field: ",
1642            stringify!(TPMT_TK_HASHCHECK),
1643            "::",
1644            stringify!(digest)
1645        )
1646    );
1647}
1648impl Default for TPMT_TK_HASHCHECK {
1649    fn default() -> Self {
1650        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1651        unsafe {
1652            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1653            s.assume_init()
1654        }
1655    }
1656}
1657#[repr(C)]
1658#[derive(Debug, Default, Copy, Clone)]
1659pub struct TPMS_ALG_PROPERTY {
1660    pub alg: TPM2_ALG_ID,
1661    pub algProperties: TPMA_ALGORITHM,
1662}
1663#[test]
1664fn bindgen_test_layout_TPMS_ALG_PROPERTY() {
1665    const UNINIT: ::std::mem::MaybeUninit<TPMS_ALG_PROPERTY> = ::std::mem::MaybeUninit::uninit();
1666    let ptr = UNINIT.as_ptr();
1667    assert_eq!(
1668        ::std::mem::size_of::<TPMS_ALG_PROPERTY>(),
1669        8usize,
1670        concat!("Size of: ", stringify!(TPMS_ALG_PROPERTY))
1671    );
1672    assert_eq!(
1673        ::std::mem::align_of::<TPMS_ALG_PROPERTY>(),
1674        4usize,
1675        concat!("Alignment of ", stringify!(TPMS_ALG_PROPERTY))
1676    );
1677    assert_eq!(
1678        unsafe { ::std::ptr::addr_of!((*ptr).alg) as usize - ptr as usize },
1679        0usize,
1680        concat!(
1681            "Offset of field: ",
1682            stringify!(TPMS_ALG_PROPERTY),
1683            "::",
1684            stringify!(alg)
1685        )
1686    );
1687    assert_eq!(
1688        unsafe { ::std::ptr::addr_of!((*ptr).algProperties) as usize - ptr as usize },
1689        4usize,
1690        concat!(
1691            "Offset of field: ",
1692            stringify!(TPMS_ALG_PROPERTY),
1693            "::",
1694            stringify!(algProperties)
1695        )
1696    );
1697}
1698#[repr(C)]
1699#[derive(Debug, Default, Copy, Clone)]
1700pub struct TPMS_TAGGED_PROPERTY {
1701    pub property: TPM2_PT,
1702    pub value: UINT32,
1703}
1704#[test]
1705fn bindgen_test_layout_TPMS_TAGGED_PROPERTY() {
1706    const UNINIT: ::std::mem::MaybeUninit<TPMS_TAGGED_PROPERTY> = ::std::mem::MaybeUninit::uninit();
1707    let ptr = UNINIT.as_ptr();
1708    assert_eq!(
1709        ::std::mem::size_of::<TPMS_TAGGED_PROPERTY>(),
1710        8usize,
1711        concat!("Size of: ", stringify!(TPMS_TAGGED_PROPERTY))
1712    );
1713    assert_eq!(
1714        ::std::mem::align_of::<TPMS_TAGGED_PROPERTY>(),
1715        4usize,
1716        concat!("Alignment of ", stringify!(TPMS_TAGGED_PROPERTY))
1717    );
1718    assert_eq!(
1719        unsafe { ::std::ptr::addr_of!((*ptr).property) as usize - ptr as usize },
1720        0usize,
1721        concat!(
1722            "Offset of field: ",
1723            stringify!(TPMS_TAGGED_PROPERTY),
1724            "::",
1725            stringify!(property)
1726        )
1727    );
1728    assert_eq!(
1729        unsafe { ::std::ptr::addr_of!((*ptr).value) as usize - ptr as usize },
1730        4usize,
1731        concat!(
1732            "Offset of field: ",
1733            stringify!(TPMS_TAGGED_PROPERTY),
1734            "::",
1735            stringify!(value)
1736        )
1737    );
1738}
1739#[repr(C)]
1740#[derive(Debug, Default, Copy, Clone)]
1741pub struct TPMS_TAGGED_PCR_SELECT {
1742    pub tag: TPM2_PT_PCR,
1743    pub sizeofSelect: UINT8,
1744    pub pcrSelect: [BYTE; 4usize],
1745}
1746#[test]
1747fn bindgen_test_layout_TPMS_TAGGED_PCR_SELECT() {
1748    const UNINIT: ::std::mem::MaybeUninit<TPMS_TAGGED_PCR_SELECT> =
1749        ::std::mem::MaybeUninit::uninit();
1750    let ptr = UNINIT.as_ptr();
1751    assert_eq!(
1752        ::std::mem::size_of::<TPMS_TAGGED_PCR_SELECT>(),
1753        12usize,
1754        concat!("Size of: ", stringify!(TPMS_TAGGED_PCR_SELECT))
1755    );
1756    assert_eq!(
1757        ::std::mem::align_of::<TPMS_TAGGED_PCR_SELECT>(),
1758        4usize,
1759        concat!("Alignment of ", stringify!(TPMS_TAGGED_PCR_SELECT))
1760    );
1761    assert_eq!(
1762        unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize },
1763        0usize,
1764        concat!(
1765            "Offset of field: ",
1766            stringify!(TPMS_TAGGED_PCR_SELECT),
1767            "::",
1768            stringify!(tag)
1769        )
1770    );
1771    assert_eq!(
1772        unsafe { ::std::ptr::addr_of!((*ptr).sizeofSelect) as usize - ptr as usize },
1773        4usize,
1774        concat!(
1775            "Offset of field: ",
1776            stringify!(TPMS_TAGGED_PCR_SELECT),
1777            "::",
1778            stringify!(sizeofSelect)
1779        )
1780    );
1781    assert_eq!(
1782        unsafe { ::std::ptr::addr_of!((*ptr).pcrSelect) as usize - ptr as usize },
1783        5usize,
1784        concat!(
1785            "Offset of field: ",
1786            stringify!(TPMS_TAGGED_PCR_SELECT),
1787            "::",
1788            stringify!(pcrSelect)
1789        )
1790    );
1791}
1792#[repr(C)]
1793#[derive(Copy, Clone)]
1794pub struct TPMS_TAGGED_POLICY {
1795    pub handle: TPM2_HANDLE,
1796    pub policyHash: TPMT_HA,
1797}
1798#[test]
1799fn bindgen_test_layout_TPMS_TAGGED_POLICY() {
1800    const UNINIT: ::std::mem::MaybeUninit<TPMS_TAGGED_POLICY> = ::std::mem::MaybeUninit::uninit();
1801    let ptr = UNINIT.as_ptr();
1802    assert_eq!(
1803        ::std::mem::size_of::<TPMS_TAGGED_POLICY>(),
1804        72usize,
1805        concat!("Size of: ", stringify!(TPMS_TAGGED_POLICY))
1806    );
1807    assert_eq!(
1808        ::std::mem::align_of::<TPMS_TAGGED_POLICY>(),
1809        4usize,
1810        concat!("Alignment of ", stringify!(TPMS_TAGGED_POLICY))
1811    );
1812    assert_eq!(
1813        unsafe { ::std::ptr::addr_of!((*ptr).handle) as usize - ptr as usize },
1814        0usize,
1815        concat!(
1816            "Offset of field: ",
1817            stringify!(TPMS_TAGGED_POLICY),
1818            "::",
1819            stringify!(handle)
1820        )
1821    );
1822    assert_eq!(
1823        unsafe { ::std::ptr::addr_of!((*ptr).policyHash) as usize - ptr as usize },
1824        4usize,
1825        concat!(
1826            "Offset of field: ",
1827            stringify!(TPMS_TAGGED_POLICY),
1828            "::",
1829            stringify!(policyHash)
1830        )
1831    );
1832}
1833impl Default for TPMS_TAGGED_POLICY {
1834    fn default() -> Self {
1835        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1836        unsafe {
1837            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1838            s.assume_init()
1839        }
1840    }
1841}
1842#[repr(C)]
1843#[derive(Debug, Copy, Clone)]
1844pub struct TPML_CC {
1845    pub count: UINT32,
1846    pub commandCodes: [TPM2_CC; 256usize],
1847}
1848#[test]
1849fn bindgen_test_layout_TPML_CC() {
1850    const UNINIT: ::std::mem::MaybeUninit<TPML_CC> = ::std::mem::MaybeUninit::uninit();
1851    let ptr = UNINIT.as_ptr();
1852    assert_eq!(
1853        ::std::mem::size_of::<TPML_CC>(),
1854        1028usize,
1855        concat!("Size of: ", stringify!(TPML_CC))
1856    );
1857    assert_eq!(
1858        ::std::mem::align_of::<TPML_CC>(),
1859        4usize,
1860        concat!("Alignment of ", stringify!(TPML_CC))
1861    );
1862    assert_eq!(
1863        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
1864        0usize,
1865        concat!(
1866            "Offset of field: ",
1867            stringify!(TPML_CC),
1868            "::",
1869            stringify!(count)
1870        )
1871    );
1872    assert_eq!(
1873        unsafe { ::std::ptr::addr_of!((*ptr).commandCodes) as usize - ptr as usize },
1874        4usize,
1875        concat!(
1876            "Offset of field: ",
1877            stringify!(TPML_CC),
1878            "::",
1879            stringify!(commandCodes)
1880        )
1881    );
1882}
1883impl Default for TPML_CC {
1884    fn default() -> Self {
1885        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1886        unsafe {
1887            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1888            s.assume_init()
1889        }
1890    }
1891}
1892#[repr(C)]
1893#[derive(Debug, Copy, Clone)]
1894pub struct TPML_CCA {
1895    pub count: UINT32,
1896    pub commandAttributes: [TPMA_CC; 256usize],
1897}
1898#[test]
1899fn bindgen_test_layout_TPML_CCA() {
1900    const UNINIT: ::std::mem::MaybeUninit<TPML_CCA> = ::std::mem::MaybeUninit::uninit();
1901    let ptr = UNINIT.as_ptr();
1902    assert_eq!(
1903        ::std::mem::size_of::<TPML_CCA>(),
1904        1028usize,
1905        concat!("Size of: ", stringify!(TPML_CCA))
1906    );
1907    assert_eq!(
1908        ::std::mem::align_of::<TPML_CCA>(),
1909        4usize,
1910        concat!("Alignment of ", stringify!(TPML_CCA))
1911    );
1912    assert_eq!(
1913        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
1914        0usize,
1915        concat!(
1916            "Offset of field: ",
1917            stringify!(TPML_CCA),
1918            "::",
1919            stringify!(count)
1920        )
1921    );
1922    assert_eq!(
1923        unsafe { ::std::ptr::addr_of!((*ptr).commandAttributes) as usize - ptr as usize },
1924        4usize,
1925        concat!(
1926            "Offset of field: ",
1927            stringify!(TPML_CCA),
1928            "::",
1929            stringify!(commandAttributes)
1930        )
1931    );
1932}
1933impl Default for TPML_CCA {
1934    fn default() -> Self {
1935        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1936        unsafe {
1937            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1938            s.assume_init()
1939        }
1940    }
1941}
1942#[repr(C)]
1943#[derive(Debug, Copy, Clone)]
1944pub struct TPML_ALG {
1945    pub count: UINT32,
1946    pub algorithms: [TPM2_ALG_ID; 128usize],
1947}
1948#[test]
1949fn bindgen_test_layout_TPML_ALG() {
1950    const UNINIT: ::std::mem::MaybeUninit<TPML_ALG> = ::std::mem::MaybeUninit::uninit();
1951    let ptr = UNINIT.as_ptr();
1952    assert_eq!(
1953        ::std::mem::size_of::<TPML_ALG>(),
1954        260usize,
1955        concat!("Size of: ", stringify!(TPML_ALG))
1956    );
1957    assert_eq!(
1958        ::std::mem::align_of::<TPML_ALG>(),
1959        4usize,
1960        concat!("Alignment of ", stringify!(TPML_ALG))
1961    );
1962    assert_eq!(
1963        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
1964        0usize,
1965        concat!(
1966            "Offset of field: ",
1967            stringify!(TPML_ALG),
1968            "::",
1969            stringify!(count)
1970        )
1971    );
1972    assert_eq!(
1973        unsafe { ::std::ptr::addr_of!((*ptr).algorithms) as usize - ptr as usize },
1974        4usize,
1975        concat!(
1976            "Offset of field: ",
1977            stringify!(TPML_ALG),
1978            "::",
1979            stringify!(algorithms)
1980        )
1981    );
1982}
1983impl Default for TPML_ALG {
1984    fn default() -> Self {
1985        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1986        unsafe {
1987            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1988            s.assume_init()
1989        }
1990    }
1991}
1992#[repr(C)]
1993#[derive(Debug, Copy, Clone)]
1994pub struct TPML_HANDLE {
1995    pub count: UINT32,
1996    pub handle: [TPM2_HANDLE; 254usize],
1997}
1998#[test]
1999fn bindgen_test_layout_TPML_HANDLE() {
2000    const UNINIT: ::std::mem::MaybeUninit<TPML_HANDLE> = ::std::mem::MaybeUninit::uninit();
2001    let ptr = UNINIT.as_ptr();
2002    assert_eq!(
2003        ::std::mem::size_of::<TPML_HANDLE>(),
2004        1020usize,
2005        concat!("Size of: ", stringify!(TPML_HANDLE))
2006    );
2007    assert_eq!(
2008        ::std::mem::align_of::<TPML_HANDLE>(),
2009        4usize,
2010        concat!("Alignment of ", stringify!(TPML_HANDLE))
2011    );
2012    assert_eq!(
2013        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
2014        0usize,
2015        concat!(
2016            "Offset of field: ",
2017            stringify!(TPML_HANDLE),
2018            "::",
2019            stringify!(count)
2020        )
2021    );
2022    assert_eq!(
2023        unsafe { ::std::ptr::addr_of!((*ptr).handle) as usize - ptr as usize },
2024        4usize,
2025        concat!(
2026            "Offset of field: ",
2027            stringify!(TPML_HANDLE),
2028            "::",
2029            stringify!(handle)
2030        )
2031    );
2032}
2033impl Default for TPML_HANDLE {
2034    fn default() -> Self {
2035        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2036        unsafe {
2037            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2038            s.assume_init()
2039        }
2040    }
2041}
2042#[repr(C)]
2043#[derive(Debug, Copy, Clone)]
2044pub struct TPML_DIGEST {
2045    pub count: UINT32,
2046    pub digests: [TPM2B_DIGEST; 8usize],
2047}
2048#[test]
2049fn bindgen_test_layout_TPML_DIGEST() {
2050    const UNINIT: ::std::mem::MaybeUninit<TPML_DIGEST> = ::std::mem::MaybeUninit::uninit();
2051    let ptr = UNINIT.as_ptr();
2052    assert_eq!(
2053        ::std::mem::size_of::<TPML_DIGEST>(),
2054        532usize,
2055        concat!("Size of: ", stringify!(TPML_DIGEST))
2056    );
2057    assert_eq!(
2058        ::std::mem::align_of::<TPML_DIGEST>(),
2059        4usize,
2060        concat!("Alignment of ", stringify!(TPML_DIGEST))
2061    );
2062    assert_eq!(
2063        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
2064        0usize,
2065        concat!(
2066            "Offset of field: ",
2067            stringify!(TPML_DIGEST),
2068            "::",
2069            stringify!(count)
2070        )
2071    );
2072    assert_eq!(
2073        unsafe { ::std::ptr::addr_of!((*ptr).digests) as usize - ptr as usize },
2074        4usize,
2075        concat!(
2076            "Offset of field: ",
2077            stringify!(TPML_DIGEST),
2078            "::",
2079            stringify!(digests)
2080        )
2081    );
2082}
2083impl Default for TPML_DIGEST {
2084    fn default() -> Self {
2085        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2086        unsafe {
2087            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2088            s.assume_init()
2089        }
2090    }
2091}
2092#[repr(C)]
2093#[derive(Copy, Clone)]
2094pub struct TPML_DIGEST_VALUES {
2095    pub count: UINT32,
2096    pub digests: [TPMT_HA; 16usize],
2097}
2098#[test]
2099fn bindgen_test_layout_TPML_DIGEST_VALUES() {
2100    const UNINIT: ::std::mem::MaybeUninit<TPML_DIGEST_VALUES> = ::std::mem::MaybeUninit::uninit();
2101    let ptr = UNINIT.as_ptr();
2102    assert_eq!(
2103        ::std::mem::size_of::<TPML_DIGEST_VALUES>(),
2104        1060usize,
2105        concat!("Size of: ", stringify!(TPML_DIGEST_VALUES))
2106    );
2107    assert_eq!(
2108        ::std::mem::align_of::<TPML_DIGEST_VALUES>(),
2109        4usize,
2110        concat!("Alignment of ", stringify!(TPML_DIGEST_VALUES))
2111    );
2112    assert_eq!(
2113        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
2114        0usize,
2115        concat!(
2116            "Offset of field: ",
2117            stringify!(TPML_DIGEST_VALUES),
2118            "::",
2119            stringify!(count)
2120        )
2121    );
2122    assert_eq!(
2123        unsafe { ::std::ptr::addr_of!((*ptr).digests) as usize - ptr as usize },
2124        4usize,
2125        concat!(
2126            "Offset of field: ",
2127            stringify!(TPML_DIGEST_VALUES),
2128            "::",
2129            stringify!(digests)
2130        )
2131    );
2132}
2133impl Default for TPML_DIGEST_VALUES {
2134    fn default() -> Self {
2135        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2136        unsafe {
2137            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2138            s.assume_init()
2139        }
2140    }
2141}
2142#[repr(C)]
2143#[derive(Debug, Default, Copy, Clone)]
2144pub struct TPML_PCR_SELECTION {
2145    pub count: UINT32,
2146    pub pcrSelections: [TPMS_PCR_SELECTION; 16usize],
2147}
2148#[test]
2149fn bindgen_test_layout_TPML_PCR_SELECTION() {
2150    const UNINIT: ::std::mem::MaybeUninit<TPML_PCR_SELECTION> = ::std::mem::MaybeUninit::uninit();
2151    let ptr = UNINIT.as_ptr();
2152    assert_eq!(
2153        ::std::mem::size_of::<TPML_PCR_SELECTION>(),
2154        132usize,
2155        concat!("Size of: ", stringify!(TPML_PCR_SELECTION))
2156    );
2157    assert_eq!(
2158        ::std::mem::align_of::<TPML_PCR_SELECTION>(),
2159        4usize,
2160        concat!("Alignment of ", stringify!(TPML_PCR_SELECTION))
2161    );
2162    assert_eq!(
2163        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
2164        0usize,
2165        concat!(
2166            "Offset of field: ",
2167            stringify!(TPML_PCR_SELECTION),
2168            "::",
2169            stringify!(count)
2170        )
2171    );
2172    assert_eq!(
2173        unsafe { ::std::ptr::addr_of!((*ptr).pcrSelections) as usize - ptr as usize },
2174        4usize,
2175        concat!(
2176            "Offset of field: ",
2177            stringify!(TPML_PCR_SELECTION),
2178            "::",
2179            stringify!(pcrSelections)
2180        )
2181    );
2182}
2183#[repr(C)]
2184#[derive(Debug, Copy, Clone)]
2185pub struct TPML_ALG_PROPERTY {
2186    pub count: UINT32,
2187    pub algProperties: [TPMS_ALG_PROPERTY; 127usize],
2188}
2189#[test]
2190fn bindgen_test_layout_TPML_ALG_PROPERTY() {
2191    const UNINIT: ::std::mem::MaybeUninit<TPML_ALG_PROPERTY> = ::std::mem::MaybeUninit::uninit();
2192    let ptr = UNINIT.as_ptr();
2193    assert_eq!(
2194        ::std::mem::size_of::<TPML_ALG_PROPERTY>(),
2195        1020usize,
2196        concat!("Size of: ", stringify!(TPML_ALG_PROPERTY))
2197    );
2198    assert_eq!(
2199        ::std::mem::align_of::<TPML_ALG_PROPERTY>(),
2200        4usize,
2201        concat!("Alignment of ", stringify!(TPML_ALG_PROPERTY))
2202    );
2203    assert_eq!(
2204        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
2205        0usize,
2206        concat!(
2207            "Offset of field: ",
2208            stringify!(TPML_ALG_PROPERTY),
2209            "::",
2210            stringify!(count)
2211        )
2212    );
2213    assert_eq!(
2214        unsafe { ::std::ptr::addr_of!((*ptr).algProperties) as usize - ptr as usize },
2215        4usize,
2216        concat!(
2217            "Offset of field: ",
2218            stringify!(TPML_ALG_PROPERTY),
2219            "::",
2220            stringify!(algProperties)
2221        )
2222    );
2223}
2224impl Default for TPML_ALG_PROPERTY {
2225    fn default() -> Self {
2226        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2227        unsafe {
2228            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2229            s.assume_init()
2230        }
2231    }
2232}
2233#[repr(C)]
2234#[derive(Debug, Copy, Clone)]
2235pub struct TPML_TAGGED_TPM_PROPERTY {
2236    pub count: UINT32,
2237    pub tpmProperty: [TPMS_TAGGED_PROPERTY; 127usize],
2238}
2239#[test]
2240fn bindgen_test_layout_TPML_TAGGED_TPM_PROPERTY() {
2241    const UNINIT: ::std::mem::MaybeUninit<TPML_TAGGED_TPM_PROPERTY> =
2242        ::std::mem::MaybeUninit::uninit();
2243    let ptr = UNINIT.as_ptr();
2244    assert_eq!(
2245        ::std::mem::size_of::<TPML_TAGGED_TPM_PROPERTY>(),
2246        1020usize,
2247        concat!("Size of: ", stringify!(TPML_TAGGED_TPM_PROPERTY))
2248    );
2249    assert_eq!(
2250        ::std::mem::align_of::<TPML_TAGGED_TPM_PROPERTY>(),
2251        4usize,
2252        concat!("Alignment of ", stringify!(TPML_TAGGED_TPM_PROPERTY))
2253    );
2254    assert_eq!(
2255        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
2256        0usize,
2257        concat!(
2258            "Offset of field: ",
2259            stringify!(TPML_TAGGED_TPM_PROPERTY),
2260            "::",
2261            stringify!(count)
2262        )
2263    );
2264    assert_eq!(
2265        unsafe { ::std::ptr::addr_of!((*ptr).tpmProperty) as usize - ptr as usize },
2266        4usize,
2267        concat!(
2268            "Offset of field: ",
2269            stringify!(TPML_TAGGED_TPM_PROPERTY),
2270            "::",
2271            stringify!(tpmProperty)
2272        )
2273    );
2274}
2275impl Default for TPML_TAGGED_TPM_PROPERTY {
2276    fn default() -> Self {
2277        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2278        unsafe {
2279            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2280            s.assume_init()
2281        }
2282    }
2283}
2284#[repr(C)]
2285#[derive(Debug, Copy, Clone)]
2286pub struct TPML_TAGGED_PCR_PROPERTY {
2287    pub count: UINT32,
2288    pub pcrProperty: [TPMS_TAGGED_PCR_SELECT; 84usize],
2289}
2290#[test]
2291fn bindgen_test_layout_TPML_TAGGED_PCR_PROPERTY() {
2292    const UNINIT: ::std::mem::MaybeUninit<TPML_TAGGED_PCR_PROPERTY> =
2293        ::std::mem::MaybeUninit::uninit();
2294    let ptr = UNINIT.as_ptr();
2295    assert_eq!(
2296        ::std::mem::size_of::<TPML_TAGGED_PCR_PROPERTY>(),
2297        1012usize,
2298        concat!("Size of: ", stringify!(TPML_TAGGED_PCR_PROPERTY))
2299    );
2300    assert_eq!(
2301        ::std::mem::align_of::<TPML_TAGGED_PCR_PROPERTY>(),
2302        4usize,
2303        concat!("Alignment of ", stringify!(TPML_TAGGED_PCR_PROPERTY))
2304    );
2305    assert_eq!(
2306        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
2307        0usize,
2308        concat!(
2309            "Offset of field: ",
2310            stringify!(TPML_TAGGED_PCR_PROPERTY),
2311            "::",
2312            stringify!(count)
2313        )
2314    );
2315    assert_eq!(
2316        unsafe { ::std::ptr::addr_of!((*ptr).pcrProperty) as usize - ptr as usize },
2317        4usize,
2318        concat!(
2319            "Offset of field: ",
2320            stringify!(TPML_TAGGED_PCR_PROPERTY),
2321            "::",
2322            stringify!(pcrProperty)
2323        )
2324    );
2325}
2326impl Default for TPML_TAGGED_PCR_PROPERTY {
2327    fn default() -> Self {
2328        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2329        unsafe {
2330            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2331            s.assume_init()
2332        }
2333    }
2334}
2335#[repr(C)]
2336#[derive(Debug, Copy, Clone)]
2337pub struct TPML_ECC_CURVE {
2338    pub count: UINT32,
2339    pub eccCurves: [TPM2_ECC_CURVE; 508usize],
2340}
2341#[test]
2342fn bindgen_test_layout_TPML_ECC_CURVE() {
2343    const UNINIT: ::std::mem::MaybeUninit<TPML_ECC_CURVE> = ::std::mem::MaybeUninit::uninit();
2344    let ptr = UNINIT.as_ptr();
2345    assert_eq!(
2346        ::std::mem::size_of::<TPML_ECC_CURVE>(),
2347        1020usize,
2348        concat!("Size of: ", stringify!(TPML_ECC_CURVE))
2349    );
2350    assert_eq!(
2351        ::std::mem::align_of::<TPML_ECC_CURVE>(),
2352        4usize,
2353        concat!("Alignment of ", stringify!(TPML_ECC_CURVE))
2354    );
2355    assert_eq!(
2356        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
2357        0usize,
2358        concat!(
2359            "Offset of field: ",
2360            stringify!(TPML_ECC_CURVE),
2361            "::",
2362            stringify!(count)
2363        )
2364    );
2365    assert_eq!(
2366        unsafe { ::std::ptr::addr_of!((*ptr).eccCurves) as usize - ptr as usize },
2367        4usize,
2368        concat!(
2369            "Offset of field: ",
2370            stringify!(TPML_ECC_CURVE),
2371            "::",
2372            stringify!(eccCurves)
2373        )
2374    );
2375}
2376impl Default for TPML_ECC_CURVE {
2377    fn default() -> Self {
2378        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2379        unsafe {
2380            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2381            s.assume_init()
2382        }
2383    }
2384}
2385#[repr(C)]
2386#[derive(Debug, Copy, Clone)]
2387pub struct TPML_INTEL_PTT_PROPERTY {
2388    pub count: UINT32,
2389    pub property: [UINT32; 256usize],
2390}
2391#[test]
2392fn bindgen_test_layout_TPML_INTEL_PTT_PROPERTY() {
2393    const UNINIT: ::std::mem::MaybeUninit<TPML_INTEL_PTT_PROPERTY> =
2394        ::std::mem::MaybeUninit::uninit();
2395    let ptr = UNINIT.as_ptr();
2396    assert_eq!(
2397        ::std::mem::size_of::<TPML_INTEL_PTT_PROPERTY>(),
2398        1028usize,
2399        concat!("Size of: ", stringify!(TPML_INTEL_PTT_PROPERTY))
2400    );
2401    assert_eq!(
2402        ::std::mem::align_of::<TPML_INTEL_PTT_PROPERTY>(),
2403        4usize,
2404        concat!("Alignment of ", stringify!(TPML_INTEL_PTT_PROPERTY))
2405    );
2406    assert_eq!(
2407        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
2408        0usize,
2409        concat!(
2410            "Offset of field: ",
2411            stringify!(TPML_INTEL_PTT_PROPERTY),
2412            "::",
2413            stringify!(count)
2414        )
2415    );
2416    assert_eq!(
2417        unsafe { ::std::ptr::addr_of!((*ptr).property) as usize - ptr as usize },
2418        4usize,
2419        concat!(
2420            "Offset of field: ",
2421            stringify!(TPML_INTEL_PTT_PROPERTY),
2422            "::",
2423            stringify!(property)
2424        )
2425    );
2426}
2427impl Default for TPML_INTEL_PTT_PROPERTY {
2428    fn default() -> Self {
2429        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2430        unsafe {
2431            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2432            s.assume_init()
2433        }
2434    }
2435}
2436#[repr(C)]
2437#[derive(Copy, Clone)]
2438pub union TPMU_CAPABILITIES {
2439    pub algorithms: TPML_ALG_PROPERTY,
2440    pub handles: TPML_HANDLE,
2441    pub command: TPML_CCA,
2442    pub ppCommands: TPML_CC,
2443    pub auditCommands: TPML_CC,
2444    pub assignedPCR: TPML_PCR_SELECTION,
2445    pub tpmProperties: TPML_TAGGED_TPM_PROPERTY,
2446    pub pcrProperties: TPML_TAGGED_PCR_PROPERTY,
2447    pub eccCurves: TPML_ECC_CURVE,
2448    pub intelPttProperty: TPML_INTEL_PTT_PROPERTY,
2449}
2450#[test]
2451fn bindgen_test_layout_TPMU_CAPABILITIES() {
2452    const UNINIT: ::std::mem::MaybeUninit<TPMU_CAPABILITIES> = ::std::mem::MaybeUninit::uninit();
2453    let ptr = UNINIT.as_ptr();
2454    assert_eq!(
2455        ::std::mem::size_of::<TPMU_CAPABILITIES>(),
2456        1028usize,
2457        concat!("Size of: ", stringify!(TPMU_CAPABILITIES))
2458    );
2459    assert_eq!(
2460        ::std::mem::align_of::<TPMU_CAPABILITIES>(),
2461        4usize,
2462        concat!("Alignment of ", stringify!(TPMU_CAPABILITIES))
2463    );
2464    assert_eq!(
2465        unsafe { ::std::ptr::addr_of!((*ptr).algorithms) as usize - ptr as usize },
2466        0usize,
2467        concat!(
2468            "Offset of field: ",
2469            stringify!(TPMU_CAPABILITIES),
2470            "::",
2471            stringify!(algorithms)
2472        )
2473    );
2474    assert_eq!(
2475        unsafe { ::std::ptr::addr_of!((*ptr).handles) as usize - ptr as usize },
2476        0usize,
2477        concat!(
2478            "Offset of field: ",
2479            stringify!(TPMU_CAPABILITIES),
2480            "::",
2481            stringify!(handles)
2482        )
2483    );
2484    assert_eq!(
2485        unsafe { ::std::ptr::addr_of!((*ptr).command) as usize - ptr as usize },
2486        0usize,
2487        concat!(
2488            "Offset of field: ",
2489            stringify!(TPMU_CAPABILITIES),
2490            "::",
2491            stringify!(command)
2492        )
2493    );
2494    assert_eq!(
2495        unsafe { ::std::ptr::addr_of!((*ptr).ppCommands) as usize - ptr as usize },
2496        0usize,
2497        concat!(
2498            "Offset of field: ",
2499            stringify!(TPMU_CAPABILITIES),
2500            "::",
2501            stringify!(ppCommands)
2502        )
2503    );
2504    assert_eq!(
2505        unsafe { ::std::ptr::addr_of!((*ptr).auditCommands) as usize - ptr as usize },
2506        0usize,
2507        concat!(
2508            "Offset of field: ",
2509            stringify!(TPMU_CAPABILITIES),
2510            "::",
2511            stringify!(auditCommands)
2512        )
2513    );
2514    assert_eq!(
2515        unsafe { ::std::ptr::addr_of!((*ptr).assignedPCR) as usize - ptr as usize },
2516        0usize,
2517        concat!(
2518            "Offset of field: ",
2519            stringify!(TPMU_CAPABILITIES),
2520            "::",
2521            stringify!(assignedPCR)
2522        )
2523    );
2524    assert_eq!(
2525        unsafe { ::std::ptr::addr_of!((*ptr).tpmProperties) as usize - ptr as usize },
2526        0usize,
2527        concat!(
2528            "Offset of field: ",
2529            stringify!(TPMU_CAPABILITIES),
2530            "::",
2531            stringify!(tpmProperties)
2532        )
2533    );
2534    assert_eq!(
2535        unsafe { ::std::ptr::addr_of!((*ptr).pcrProperties) as usize - ptr as usize },
2536        0usize,
2537        concat!(
2538            "Offset of field: ",
2539            stringify!(TPMU_CAPABILITIES),
2540            "::",
2541            stringify!(pcrProperties)
2542        )
2543    );
2544    assert_eq!(
2545        unsafe { ::std::ptr::addr_of!((*ptr).eccCurves) as usize - ptr as usize },
2546        0usize,
2547        concat!(
2548            "Offset of field: ",
2549            stringify!(TPMU_CAPABILITIES),
2550            "::",
2551            stringify!(eccCurves)
2552        )
2553    );
2554    assert_eq!(
2555        unsafe { ::std::ptr::addr_of!((*ptr).intelPttProperty) as usize - ptr as usize },
2556        0usize,
2557        concat!(
2558            "Offset of field: ",
2559            stringify!(TPMU_CAPABILITIES),
2560            "::",
2561            stringify!(intelPttProperty)
2562        )
2563    );
2564}
2565impl Default for TPMU_CAPABILITIES {
2566    fn default() -> Self {
2567        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2568        unsafe {
2569            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2570            s.assume_init()
2571        }
2572    }
2573}
2574#[repr(C)]
2575#[derive(Copy, Clone)]
2576pub struct TPMS_CAPABILITY_DATA {
2577    pub capability: TPM2_CAP,
2578    pub data: TPMU_CAPABILITIES,
2579}
2580#[test]
2581fn bindgen_test_layout_TPMS_CAPABILITY_DATA() {
2582    const UNINIT: ::std::mem::MaybeUninit<TPMS_CAPABILITY_DATA> = ::std::mem::MaybeUninit::uninit();
2583    let ptr = UNINIT.as_ptr();
2584    assert_eq!(
2585        ::std::mem::size_of::<TPMS_CAPABILITY_DATA>(),
2586        1032usize,
2587        concat!("Size of: ", stringify!(TPMS_CAPABILITY_DATA))
2588    );
2589    assert_eq!(
2590        ::std::mem::align_of::<TPMS_CAPABILITY_DATA>(),
2591        4usize,
2592        concat!("Alignment of ", stringify!(TPMS_CAPABILITY_DATA))
2593    );
2594    assert_eq!(
2595        unsafe { ::std::ptr::addr_of!((*ptr).capability) as usize - ptr as usize },
2596        0usize,
2597        concat!(
2598            "Offset of field: ",
2599            stringify!(TPMS_CAPABILITY_DATA),
2600            "::",
2601            stringify!(capability)
2602        )
2603    );
2604    assert_eq!(
2605        unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize },
2606        4usize,
2607        concat!(
2608            "Offset of field: ",
2609            stringify!(TPMS_CAPABILITY_DATA),
2610            "::",
2611            stringify!(data)
2612        )
2613    );
2614}
2615impl Default for TPMS_CAPABILITY_DATA {
2616    fn default() -> Self {
2617        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2618        unsafe {
2619            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2620            s.assume_init()
2621        }
2622    }
2623}
2624#[repr(C)]
2625#[derive(Debug, Default, Copy, Clone)]
2626pub struct TPMS_CLOCK_INFO {
2627    pub clock: UINT64,
2628    pub resetCount: UINT32,
2629    pub restartCount: UINT32,
2630    pub safe: TPMI_YES_NO,
2631}
2632#[test]
2633fn bindgen_test_layout_TPMS_CLOCK_INFO() {
2634    const UNINIT: ::std::mem::MaybeUninit<TPMS_CLOCK_INFO> = ::std::mem::MaybeUninit::uninit();
2635    let ptr = UNINIT.as_ptr();
2636    assert_eq!(
2637        ::std::mem::size_of::<TPMS_CLOCK_INFO>(),
2638        24usize,
2639        concat!("Size of: ", stringify!(TPMS_CLOCK_INFO))
2640    );
2641    assert_eq!(
2642        ::std::mem::align_of::<TPMS_CLOCK_INFO>(),
2643        8usize,
2644        concat!("Alignment of ", stringify!(TPMS_CLOCK_INFO))
2645    );
2646    assert_eq!(
2647        unsafe { ::std::ptr::addr_of!((*ptr).clock) as usize - ptr as usize },
2648        0usize,
2649        concat!(
2650            "Offset of field: ",
2651            stringify!(TPMS_CLOCK_INFO),
2652            "::",
2653            stringify!(clock)
2654        )
2655    );
2656    assert_eq!(
2657        unsafe { ::std::ptr::addr_of!((*ptr).resetCount) as usize - ptr as usize },
2658        8usize,
2659        concat!(
2660            "Offset of field: ",
2661            stringify!(TPMS_CLOCK_INFO),
2662            "::",
2663            stringify!(resetCount)
2664        )
2665    );
2666    assert_eq!(
2667        unsafe { ::std::ptr::addr_of!((*ptr).restartCount) as usize - ptr as usize },
2668        12usize,
2669        concat!(
2670            "Offset of field: ",
2671            stringify!(TPMS_CLOCK_INFO),
2672            "::",
2673            stringify!(restartCount)
2674        )
2675    );
2676    assert_eq!(
2677        unsafe { ::std::ptr::addr_of!((*ptr).safe) as usize - ptr as usize },
2678        16usize,
2679        concat!(
2680            "Offset of field: ",
2681            stringify!(TPMS_CLOCK_INFO),
2682            "::",
2683            stringify!(safe)
2684        )
2685    );
2686}
2687#[repr(C)]
2688#[derive(Debug, Default, Copy, Clone)]
2689pub struct TPMS_TIME_INFO {
2690    pub time: UINT64,
2691    pub clockInfo: TPMS_CLOCK_INFO,
2692}
2693#[test]
2694fn bindgen_test_layout_TPMS_TIME_INFO() {
2695    const UNINIT: ::std::mem::MaybeUninit<TPMS_TIME_INFO> = ::std::mem::MaybeUninit::uninit();
2696    let ptr = UNINIT.as_ptr();
2697    assert_eq!(
2698        ::std::mem::size_of::<TPMS_TIME_INFO>(),
2699        32usize,
2700        concat!("Size of: ", stringify!(TPMS_TIME_INFO))
2701    );
2702    assert_eq!(
2703        ::std::mem::align_of::<TPMS_TIME_INFO>(),
2704        8usize,
2705        concat!("Alignment of ", stringify!(TPMS_TIME_INFO))
2706    );
2707    assert_eq!(
2708        unsafe { ::std::ptr::addr_of!((*ptr).time) as usize - ptr as usize },
2709        0usize,
2710        concat!(
2711            "Offset of field: ",
2712            stringify!(TPMS_TIME_INFO),
2713            "::",
2714            stringify!(time)
2715        )
2716    );
2717    assert_eq!(
2718        unsafe { ::std::ptr::addr_of!((*ptr).clockInfo) as usize - ptr as usize },
2719        8usize,
2720        concat!(
2721            "Offset of field: ",
2722            stringify!(TPMS_TIME_INFO),
2723            "::",
2724            stringify!(clockInfo)
2725        )
2726    );
2727}
2728#[repr(C)]
2729#[derive(Debug, Default, Copy, Clone)]
2730pub struct TPMS_TIME_ATTEST_INFO {
2731    pub time: TPMS_TIME_INFO,
2732    pub firmwareVersion: UINT64,
2733}
2734#[test]
2735fn bindgen_test_layout_TPMS_TIME_ATTEST_INFO() {
2736    const UNINIT: ::std::mem::MaybeUninit<TPMS_TIME_ATTEST_INFO> =
2737        ::std::mem::MaybeUninit::uninit();
2738    let ptr = UNINIT.as_ptr();
2739    assert_eq!(
2740        ::std::mem::size_of::<TPMS_TIME_ATTEST_INFO>(),
2741        40usize,
2742        concat!("Size of: ", stringify!(TPMS_TIME_ATTEST_INFO))
2743    );
2744    assert_eq!(
2745        ::std::mem::align_of::<TPMS_TIME_ATTEST_INFO>(),
2746        8usize,
2747        concat!("Alignment of ", stringify!(TPMS_TIME_ATTEST_INFO))
2748    );
2749    assert_eq!(
2750        unsafe { ::std::ptr::addr_of!((*ptr).time) as usize - ptr as usize },
2751        0usize,
2752        concat!(
2753            "Offset of field: ",
2754            stringify!(TPMS_TIME_ATTEST_INFO),
2755            "::",
2756            stringify!(time)
2757        )
2758    );
2759    assert_eq!(
2760        unsafe { ::std::ptr::addr_of!((*ptr).firmwareVersion) as usize - ptr as usize },
2761        32usize,
2762        concat!(
2763            "Offset of field: ",
2764            stringify!(TPMS_TIME_ATTEST_INFO),
2765            "::",
2766            stringify!(firmwareVersion)
2767        )
2768    );
2769}
2770#[repr(C)]
2771#[derive(Debug, Copy, Clone)]
2772pub struct TPMS_CERTIFY_INFO {
2773    pub name: TPM2B_NAME,
2774    pub qualifiedName: TPM2B_NAME,
2775}
2776#[test]
2777fn bindgen_test_layout_TPMS_CERTIFY_INFO() {
2778    const UNINIT: ::std::mem::MaybeUninit<TPMS_CERTIFY_INFO> = ::std::mem::MaybeUninit::uninit();
2779    let ptr = UNINIT.as_ptr();
2780    assert_eq!(
2781        ::std::mem::size_of::<TPMS_CERTIFY_INFO>(),
2782        140usize,
2783        concat!("Size of: ", stringify!(TPMS_CERTIFY_INFO))
2784    );
2785    assert_eq!(
2786        ::std::mem::align_of::<TPMS_CERTIFY_INFO>(),
2787        2usize,
2788        concat!("Alignment of ", stringify!(TPMS_CERTIFY_INFO))
2789    );
2790    assert_eq!(
2791        unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize },
2792        0usize,
2793        concat!(
2794            "Offset of field: ",
2795            stringify!(TPMS_CERTIFY_INFO),
2796            "::",
2797            stringify!(name)
2798        )
2799    );
2800    assert_eq!(
2801        unsafe { ::std::ptr::addr_of!((*ptr).qualifiedName) as usize - ptr as usize },
2802        70usize,
2803        concat!(
2804            "Offset of field: ",
2805            stringify!(TPMS_CERTIFY_INFO),
2806            "::",
2807            stringify!(qualifiedName)
2808        )
2809    );
2810}
2811impl Default for TPMS_CERTIFY_INFO {
2812    fn default() -> Self {
2813        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2814        unsafe {
2815            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2816            s.assume_init()
2817        }
2818    }
2819}
2820#[repr(C)]
2821#[derive(Debug, Copy, Clone)]
2822pub struct TPMS_QUOTE_INFO {
2823    pub pcrSelect: TPML_PCR_SELECTION,
2824    pub pcrDigest: TPM2B_DIGEST,
2825}
2826#[test]
2827fn bindgen_test_layout_TPMS_QUOTE_INFO() {
2828    const UNINIT: ::std::mem::MaybeUninit<TPMS_QUOTE_INFO> = ::std::mem::MaybeUninit::uninit();
2829    let ptr = UNINIT.as_ptr();
2830    assert_eq!(
2831        ::std::mem::size_of::<TPMS_QUOTE_INFO>(),
2832        200usize,
2833        concat!("Size of: ", stringify!(TPMS_QUOTE_INFO))
2834    );
2835    assert_eq!(
2836        ::std::mem::align_of::<TPMS_QUOTE_INFO>(),
2837        4usize,
2838        concat!("Alignment of ", stringify!(TPMS_QUOTE_INFO))
2839    );
2840    assert_eq!(
2841        unsafe { ::std::ptr::addr_of!((*ptr).pcrSelect) as usize - ptr as usize },
2842        0usize,
2843        concat!(
2844            "Offset of field: ",
2845            stringify!(TPMS_QUOTE_INFO),
2846            "::",
2847            stringify!(pcrSelect)
2848        )
2849    );
2850    assert_eq!(
2851        unsafe { ::std::ptr::addr_of!((*ptr).pcrDigest) as usize - ptr as usize },
2852        132usize,
2853        concat!(
2854            "Offset of field: ",
2855            stringify!(TPMS_QUOTE_INFO),
2856            "::",
2857            stringify!(pcrDigest)
2858        )
2859    );
2860}
2861impl Default for TPMS_QUOTE_INFO {
2862    fn default() -> Self {
2863        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2864        unsafe {
2865            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2866            s.assume_init()
2867        }
2868    }
2869}
2870#[repr(C)]
2871#[derive(Debug, Copy, Clone)]
2872pub struct TPMS_COMMAND_AUDIT_INFO {
2873    pub auditCounter: UINT64,
2874    pub digestAlg: TPM2_ALG_ID,
2875    pub auditDigest: TPM2B_DIGEST,
2876    pub commandDigest: TPM2B_DIGEST,
2877}
2878#[test]
2879fn bindgen_test_layout_TPMS_COMMAND_AUDIT_INFO() {
2880    const UNINIT: ::std::mem::MaybeUninit<TPMS_COMMAND_AUDIT_INFO> =
2881        ::std::mem::MaybeUninit::uninit();
2882    let ptr = UNINIT.as_ptr();
2883    assert_eq!(
2884        ::std::mem::size_of::<TPMS_COMMAND_AUDIT_INFO>(),
2885        144usize,
2886        concat!("Size of: ", stringify!(TPMS_COMMAND_AUDIT_INFO))
2887    );
2888    assert_eq!(
2889        ::std::mem::align_of::<TPMS_COMMAND_AUDIT_INFO>(),
2890        8usize,
2891        concat!("Alignment of ", stringify!(TPMS_COMMAND_AUDIT_INFO))
2892    );
2893    assert_eq!(
2894        unsafe { ::std::ptr::addr_of!((*ptr).auditCounter) as usize - ptr as usize },
2895        0usize,
2896        concat!(
2897            "Offset of field: ",
2898            stringify!(TPMS_COMMAND_AUDIT_INFO),
2899            "::",
2900            stringify!(auditCounter)
2901        )
2902    );
2903    assert_eq!(
2904        unsafe { ::std::ptr::addr_of!((*ptr).digestAlg) as usize - ptr as usize },
2905        8usize,
2906        concat!(
2907            "Offset of field: ",
2908            stringify!(TPMS_COMMAND_AUDIT_INFO),
2909            "::",
2910            stringify!(digestAlg)
2911        )
2912    );
2913    assert_eq!(
2914        unsafe { ::std::ptr::addr_of!((*ptr).auditDigest) as usize - ptr as usize },
2915        10usize,
2916        concat!(
2917            "Offset of field: ",
2918            stringify!(TPMS_COMMAND_AUDIT_INFO),
2919            "::",
2920            stringify!(auditDigest)
2921        )
2922    );
2923    assert_eq!(
2924        unsafe { ::std::ptr::addr_of!((*ptr).commandDigest) as usize - ptr as usize },
2925        76usize,
2926        concat!(
2927            "Offset of field: ",
2928            stringify!(TPMS_COMMAND_AUDIT_INFO),
2929            "::",
2930            stringify!(commandDigest)
2931        )
2932    );
2933}
2934impl Default for TPMS_COMMAND_AUDIT_INFO {
2935    fn default() -> Self {
2936        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2937        unsafe {
2938            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2939            s.assume_init()
2940        }
2941    }
2942}
2943#[repr(C)]
2944#[derive(Debug, Copy, Clone)]
2945pub struct TPMS_SESSION_AUDIT_INFO {
2946    pub exclusiveSession: TPMI_YES_NO,
2947    pub sessionDigest: TPM2B_DIGEST,
2948}
2949#[test]
2950fn bindgen_test_layout_TPMS_SESSION_AUDIT_INFO() {
2951    const UNINIT: ::std::mem::MaybeUninit<TPMS_SESSION_AUDIT_INFO> =
2952        ::std::mem::MaybeUninit::uninit();
2953    let ptr = UNINIT.as_ptr();
2954    assert_eq!(
2955        ::std::mem::size_of::<TPMS_SESSION_AUDIT_INFO>(),
2956        68usize,
2957        concat!("Size of: ", stringify!(TPMS_SESSION_AUDIT_INFO))
2958    );
2959    assert_eq!(
2960        ::std::mem::align_of::<TPMS_SESSION_AUDIT_INFO>(),
2961        2usize,
2962        concat!("Alignment of ", stringify!(TPMS_SESSION_AUDIT_INFO))
2963    );
2964    assert_eq!(
2965        unsafe { ::std::ptr::addr_of!((*ptr).exclusiveSession) as usize - ptr as usize },
2966        0usize,
2967        concat!(
2968            "Offset of field: ",
2969            stringify!(TPMS_SESSION_AUDIT_INFO),
2970            "::",
2971            stringify!(exclusiveSession)
2972        )
2973    );
2974    assert_eq!(
2975        unsafe { ::std::ptr::addr_of!((*ptr).sessionDigest) as usize - ptr as usize },
2976        2usize,
2977        concat!(
2978            "Offset of field: ",
2979            stringify!(TPMS_SESSION_AUDIT_INFO),
2980            "::",
2981            stringify!(sessionDigest)
2982        )
2983    );
2984}
2985impl Default for TPMS_SESSION_AUDIT_INFO {
2986    fn default() -> Self {
2987        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2988        unsafe {
2989            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2990            s.assume_init()
2991        }
2992    }
2993}
2994#[repr(C)]
2995#[derive(Debug, Copy, Clone)]
2996pub struct TPMS_CREATION_INFO {
2997    pub objectName: TPM2B_NAME,
2998    pub creationHash: TPM2B_DIGEST,
2999}
3000#[test]
3001fn bindgen_test_layout_TPMS_CREATION_INFO() {
3002    const UNINIT: ::std::mem::MaybeUninit<TPMS_CREATION_INFO> = ::std::mem::MaybeUninit::uninit();
3003    let ptr = UNINIT.as_ptr();
3004    assert_eq!(
3005        ::std::mem::size_of::<TPMS_CREATION_INFO>(),
3006        136usize,
3007        concat!("Size of: ", stringify!(TPMS_CREATION_INFO))
3008    );
3009    assert_eq!(
3010        ::std::mem::align_of::<TPMS_CREATION_INFO>(),
3011        2usize,
3012        concat!("Alignment of ", stringify!(TPMS_CREATION_INFO))
3013    );
3014    assert_eq!(
3015        unsafe { ::std::ptr::addr_of!((*ptr).objectName) as usize - ptr as usize },
3016        0usize,
3017        concat!(
3018            "Offset of field: ",
3019            stringify!(TPMS_CREATION_INFO),
3020            "::",
3021            stringify!(objectName)
3022        )
3023    );
3024    assert_eq!(
3025        unsafe { ::std::ptr::addr_of!((*ptr).creationHash) as usize - ptr as usize },
3026        70usize,
3027        concat!(
3028            "Offset of field: ",
3029            stringify!(TPMS_CREATION_INFO),
3030            "::",
3031            stringify!(creationHash)
3032        )
3033    );
3034}
3035impl Default for TPMS_CREATION_INFO {
3036    fn default() -> Self {
3037        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3038        unsafe {
3039            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3040            s.assume_init()
3041        }
3042    }
3043}
3044#[repr(C)]
3045#[derive(Debug, Copy, Clone)]
3046pub struct TPMS_NV_CERTIFY_INFO {
3047    pub indexName: TPM2B_NAME,
3048    pub offset: UINT16,
3049    pub nvContents: TPM2B_MAX_NV_BUFFER,
3050}
3051#[test]
3052fn bindgen_test_layout_TPMS_NV_CERTIFY_INFO() {
3053    const UNINIT: ::std::mem::MaybeUninit<TPMS_NV_CERTIFY_INFO> = ::std::mem::MaybeUninit::uninit();
3054    let ptr = UNINIT.as_ptr();
3055    assert_eq!(
3056        ::std::mem::size_of::<TPMS_NV_CERTIFY_INFO>(),
3057        2122usize,
3058        concat!("Size of: ", stringify!(TPMS_NV_CERTIFY_INFO))
3059    );
3060    assert_eq!(
3061        ::std::mem::align_of::<TPMS_NV_CERTIFY_INFO>(),
3062        2usize,
3063        concat!("Alignment of ", stringify!(TPMS_NV_CERTIFY_INFO))
3064    );
3065    assert_eq!(
3066        unsafe { ::std::ptr::addr_of!((*ptr).indexName) as usize - ptr as usize },
3067        0usize,
3068        concat!(
3069            "Offset of field: ",
3070            stringify!(TPMS_NV_CERTIFY_INFO),
3071            "::",
3072            stringify!(indexName)
3073        )
3074    );
3075    assert_eq!(
3076        unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize },
3077        70usize,
3078        concat!(
3079            "Offset of field: ",
3080            stringify!(TPMS_NV_CERTIFY_INFO),
3081            "::",
3082            stringify!(offset)
3083        )
3084    );
3085    assert_eq!(
3086        unsafe { ::std::ptr::addr_of!((*ptr).nvContents) as usize - ptr as usize },
3087        72usize,
3088        concat!(
3089            "Offset of field: ",
3090            stringify!(TPMS_NV_CERTIFY_INFO),
3091            "::",
3092            stringify!(nvContents)
3093        )
3094    );
3095}
3096impl Default for TPMS_NV_CERTIFY_INFO {
3097    fn default() -> Self {
3098        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3099        unsafe {
3100            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3101            s.assume_init()
3102        }
3103    }
3104}
3105pub type TPMI_ST_ATTEST = TPM2_ST;
3106#[repr(C)]
3107#[derive(Copy, Clone)]
3108pub union TPMU_ATTEST {
3109    pub certify: TPMS_CERTIFY_INFO,
3110    pub creation: TPMS_CREATION_INFO,
3111    pub quote: TPMS_QUOTE_INFO,
3112    pub commandAudit: TPMS_COMMAND_AUDIT_INFO,
3113    pub sessionAudit: TPMS_SESSION_AUDIT_INFO,
3114    pub time: TPMS_TIME_ATTEST_INFO,
3115    pub nv: TPMS_NV_CERTIFY_INFO,
3116}
3117#[test]
3118fn bindgen_test_layout_TPMU_ATTEST() {
3119    const UNINIT: ::std::mem::MaybeUninit<TPMU_ATTEST> = ::std::mem::MaybeUninit::uninit();
3120    let ptr = UNINIT.as_ptr();
3121    assert_eq!(
3122        ::std::mem::size_of::<TPMU_ATTEST>(),
3123        2128usize,
3124        concat!("Size of: ", stringify!(TPMU_ATTEST))
3125    );
3126    assert_eq!(
3127        ::std::mem::align_of::<TPMU_ATTEST>(),
3128        8usize,
3129        concat!("Alignment of ", stringify!(TPMU_ATTEST))
3130    );
3131    assert_eq!(
3132        unsafe { ::std::ptr::addr_of!((*ptr).certify) as usize - ptr as usize },
3133        0usize,
3134        concat!(
3135            "Offset of field: ",
3136            stringify!(TPMU_ATTEST),
3137            "::",
3138            stringify!(certify)
3139        )
3140    );
3141    assert_eq!(
3142        unsafe { ::std::ptr::addr_of!((*ptr).creation) as usize - ptr as usize },
3143        0usize,
3144        concat!(
3145            "Offset of field: ",
3146            stringify!(TPMU_ATTEST),
3147            "::",
3148            stringify!(creation)
3149        )
3150    );
3151    assert_eq!(
3152        unsafe { ::std::ptr::addr_of!((*ptr).quote) as usize - ptr as usize },
3153        0usize,
3154        concat!(
3155            "Offset of field: ",
3156            stringify!(TPMU_ATTEST),
3157            "::",
3158            stringify!(quote)
3159        )
3160    );
3161    assert_eq!(
3162        unsafe { ::std::ptr::addr_of!((*ptr).commandAudit) as usize - ptr as usize },
3163        0usize,
3164        concat!(
3165            "Offset of field: ",
3166            stringify!(TPMU_ATTEST),
3167            "::",
3168            stringify!(commandAudit)
3169        )
3170    );
3171    assert_eq!(
3172        unsafe { ::std::ptr::addr_of!((*ptr).sessionAudit) as usize - ptr as usize },
3173        0usize,
3174        concat!(
3175            "Offset of field: ",
3176            stringify!(TPMU_ATTEST),
3177            "::",
3178            stringify!(sessionAudit)
3179        )
3180    );
3181    assert_eq!(
3182        unsafe { ::std::ptr::addr_of!((*ptr).time) as usize - ptr as usize },
3183        0usize,
3184        concat!(
3185            "Offset of field: ",
3186            stringify!(TPMU_ATTEST),
3187            "::",
3188            stringify!(time)
3189        )
3190    );
3191    assert_eq!(
3192        unsafe { ::std::ptr::addr_of!((*ptr).nv) as usize - ptr as usize },
3193        0usize,
3194        concat!(
3195            "Offset of field: ",
3196            stringify!(TPMU_ATTEST),
3197            "::",
3198            stringify!(nv)
3199        )
3200    );
3201}
3202impl Default for TPMU_ATTEST {
3203    fn default() -> Self {
3204        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3205        unsafe {
3206            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3207            s.assume_init()
3208        }
3209    }
3210}
3211#[repr(C)]
3212#[derive(Copy, Clone)]
3213pub struct TPMS_ATTEST {
3214    pub magic: TPM2_GENERATED,
3215    pub type_: TPMI_ST_ATTEST,
3216    pub qualifiedSigner: TPM2B_NAME,
3217    pub extraData: TPM2B_DATA,
3218    pub clockInfo: TPMS_CLOCK_INFO,
3219    pub firmwareVersion: UINT64,
3220    pub attested: TPMU_ATTEST,
3221}
3222#[test]
3223fn bindgen_test_layout_TPMS_ATTEST() {
3224    const UNINIT: ::std::mem::MaybeUninit<TPMS_ATTEST> = ::std::mem::MaybeUninit::uninit();
3225    let ptr = UNINIT.as_ptr();
3226    assert_eq!(
3227        ::std::mem::size_of::<TPMS_ATTEST>(),
3228        2304usize,
3229        concat!("Size of: ", stringify!(TPMS_ATTEST))
3230    );
3231    assert_eq!(
3232        ::std::mem::align_of::<TPMS_ATTEST>(),
3233        8usize,
3234        concat!("Alignment of ", stringify!(TPMS_ATTEST))
3235    );
3236    assert_eq!(
3237        unsafe { ::std::ptr::addr_of!((*ptr).magic) as usize - ptr as usize },
3238        0usize,
3239        concat!(
3240            "Offset of field: ",
3241            stringify!(TPMS_ATTEST),
3242            "::",
3243            stringify!(magic)
3244        )
3245    );
3246    assert_eq!(
3247        unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize },
3248        4usize,
3249        concat!(
3250            "Offset of field: ",
3251            stringify!(TPMS_ATTEST),
3252            "::",
3253            stringify!(type_)
3254        )
3255    );
3256    assert_eq!(
3257        unsafe { ::std::ptr::addr_of!((*ptr).qualifiedSigner) as usize - ptr as usize },
3258        6usize,
3259        concat!(
3260            "Offset of field: ",
3261            stringify!(TPMS_ATTEST),
3262            "::",
3263            stringify!(qualifiedSigner)
3264        )
3265    );
3266    assert_eq!(
3267        unsafe { ::std::ptr::addr_of!((*ptr).extraData) as usize - ptr as usize },
3268        76usize,
3269        concat!(
3270            "Offset of field: ",
3271            stringify!(TPMS_ATTEST),
3272            "::",
3273            stringify!(extraData)
3274        )
3275    );
3276    assert_eq!(
3277        unsafe { ::std::ptr::addr_of!((*ptr).clockInfo) as usize - ptr as usize },
3278        144usize,
3279        concat!(
3280            "Offset of field: ",
3281            stringify!(TPMS_ATTEST),
3282            "::",
3283            stringify!(clockInfo)
3284        )
3285    );
3286    assert_eq!(
3287        unsafe { ::std::ptr::addr_of!((*ptr).firmwareVersion) as usize - ptr as usize },
3288        168usize,
3289        concat!(
3290            "Offset of field: ",
3291            stringify!(TPMS_ATTEST),
3292            "::",
3293            stringify!(firmwareVersion)
3294        )
3295    );
3296    assert_eq!(
3297        unsafe { ::std::ptr::addr_of!((*ptr).attested) as usize - ptr as usize },
3298        176usize,
3299        concat!(
3300            "Offset of field: ",
3301            stringify!(TPMS_ATTEST),
3302            "::",
3303            stringify!(attested)
3304        )
3305    );
3306}
3307impl Default for TPMS_ATTEST {
3308    fn default() -> Self {
3309        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3310        unsafe {
3311            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3312            s.assume_init()
3313        }
3314    }
3315}
3316#[repr(C)]
3317#[derive(Debug, Copy, Clone)]
3318pub struct TPM2B_ATTEST {
3319    pub size: UINT16,
3320    pub attestationData: [BYTE; 2304usize],
3321}
3322#[test]
3323fn bindgen_test_layout_TPM2B_ATTEST() {
3324    const UNINIT: ::std::mem::MaybeUninit<TPM2B_ATTEST> = ::std::mem::MaybeUninit::uninit();
3325    let ptr = UNINIT.as_ptr();
3326    assert_eq!(
3327        ::std::mem::size_of::<TPM2B_ATTEST>(),
3328        2306usize,
3329        concat!("Size of: ", stringify!(TPM2B_ATTEST))
3330    );
3331    assert_eq!(
3332        ::std::mem::align_of::<TPM2B_ATTEST>(),
3333        2usize,
3334        concat!("Alignment of ", stringify!(TPM2B_ATTEST))
3335    );
3336    assert_eq!(
3337        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
3338        0usize,
3339        concat!(
3340            "Offset of field: ",
3341            stringify!(TPM2B_ATTEST),
3342            "::",
3343            stringify!(size)
3344        )
3345    );
3346    assert_eq!(
3347        unsafe { ::std::ptr::addr_of!((*ptr).attestationData) as usize - ptr as usize },
3348        2usize,
3349        concat!(
3350            "Offset of field: ",
3351            stringify!(TPM2B_ATTEST),
3352            "::",
3353            stringify!(attestationData)
3354        )
3355    );
3356}
3357impl Default for TPM2B_ATTEST {
3358    fn default() -> Self {
3359        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3360        unsafe {
3361            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3362            s.assume_init()
3363        }
3364    }
3365}
3366#[repr(C)]
3367#[derive(Debug, Copy, Clone)]
3368pub struct TPMS_AUTH_COMMAND {
3369    pub sessionHandle: TPMI_SH_AUTH_SESSION,
3370    pub nonce: TPM2B_NONCE,
3371    pub sessionAttributes: TPMA_SESSION,
3372    pub hmac: TPM2B_AUTH,
3373}
3374#[test]
3375fn bindgen_test_layout_TPMS_AUTH_COMMAND() {
3376    const UNINIT: ::std::mem::MaybeUninit<TPMS_AUTH_COMMAND> = ::std::mem::MaybeUninit::uninit();
3377    let ptr = UNINIT.as_ptr();
3378    assert_eq!(
3379        ::std::mem::size_of::<TPMS_AUTH_COMMAND>(),
3380        140usize,
3381        concat!("Size of: ", stringify!(TPMS_AUTH_COMMAND))
3382    );
3383    assert_eq!(
3384        ::std::mem::align_of::<TPMS_AUTH_COMMAND>(),
3385        4usize,
3386        concat!("Alignment of ", stringify!(TPMS_AUTH_COMMAND))
3387    );
3388    assert_eq!(
3389        unsafe { ::std::ptr::addr_of!((*ptr).sessionHandle) as usize - ptr as usize },
3390        0usize,
3391        concat!(
3392            "Offset of field: ",
3393            stringify!(TPMS_AUTH_COMMAND),
3394            "::",
3395            stringify!(sessionHandle)
3396        )
3397    );
3398    assert_eq!(
3399        unsafe { ::std::ptr::addr_of!((*ptr).nonce) as usize - ptr as usize },
3400        4usize,
3401        concat!(
3402            "Offset of field: ",
3403            stringify!(TPMS_AUTH_COMMAND),
3404            "::",
3405            stringify!(nonce)
3406        )
3407    );
3408    assert_eq!(
3409        unsafe { ::std::ptr::addr_of!((*ptr).sessionAttributes) as usize - ptr as usize },
3410        70usize,
3411        concat!(
3412            "Offset of field: ",
3413            stringify!(TPMS_AUTH_COMMAND),
3414            "::",
3415            stringify!(sessionAttributes)
3416        )
3417    );
3418    assert_eq!(
3419        unsafe { ::std::ptr::addr_of!((*ptr).hmac) as usize - ptr as usize },
3420        72usize,
3421        concat!(
3422            "Offset of field: ",
3423            stringify!(TPMS_AUTH_COMMAND),
3424            "::",
3425            stringify!(hmac)
3426        )
3427    );
3428}
3429impl Default for TPMS_AUTH_COMMAND {
3430    fn default() -> Self {
3431        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3432        unsafe {
3433            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3434            s.assume_init()
3435        }
3436    }
3437}
3438#[repr(C)]
3439#[derive(Debug, Copy, Clone)]
3440pub struct TPMS_AUTH_RESPONSE {
3441    pub nonce: TPM2B_NONCE,
3442    pub sessionAttributes: TPMA_SESSION,
3443    pub hmac: TPM2B_AUTH,
3444}
3445#[test]
3446fn bindgen_test_layout_TPMS_AUTH_RESPONSE() {
3447    const UNINIT: ::std::mem::MaybeUninit<TPMS_AUTH_RESPONSE> = ::std::mem::MaybeUninit::uninit();
3448    let ptr = UNINIT.as_ptr();
3449    assert_eq!(
3450        ::std::mem::size_of::<TPMS_AUTH_RESPONSE>(),
3451        134usize,
3452        concat!("Size of: ", stringify!(TPMS_AUTH_RESPONSE))
3453    );
3454    assert_eq!(
3455        ::std::mem::align_of::<TPMS_AUTH_RESPONSE>(),
3456        2usize,
3457        concat!("Alignment of ", stringify!(TPMS_AUTH_RESPONSE))
3458    );
3459    assert_eq!(
3460        unsafe { ::std::ptr::addr_of!((*ptr).nonce) as usize - ptr as usize },
3461        0usize,
3462        concat!(
3463            "Offset of field: ",
3464            stringify!(TPMS_AUTH_RESPONSE),
3465            "::",
3466            stringify!(nonce)
3467        )
3468    );
3469    assert_eq!(
3470        unsafe { ::std::ptr::addr_of!((*ptr).sessionAttributes) as usize - ptr as usize },
3471        66usize,
3472        concat!(
3473            "Offset of field: ",
3474            stringify!(TPMS_AUTH_RESPONSE),
3475            "::",
3476            stringify!(sessionAttributes)
3477        )
3478    );
3479    assert_eq!(
3480        unsafe { ::std::ptr::addr_of!((*ptr).hmac) as usize - ptr as usize },
3481        68usize,
3482        concat!(
3483            "Offset of field: ",
3484            stringify!(TPMS_AUTH_RESPONSE),
3485            "::",
3486            stringify!(hmac)
3487        )
3488    );
3489}
3490impl Default for TPMS_AUTH_RESPONSE {
3491    fn default() -> Self {
3492        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3493        unsafe {
3494            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3495            s.assume_init()
3496        }
3497    }
3498}
3499pub type TPMI_AES_KEY_BITS = TPM2_KEY_BITS;
3500pub type TPMI_SM4_KEY_BITS = TPM2_KEY_BITS;
3501pub type TPMI_CAMELLIA_KEY_BITS = TPM2_KEY_BITS;
3502#[repr(C)]
3503#[derive(Copy, Clone)]
3504pub union TPMU_SYM_KEY_BITS {
3505    pub aes: TPMI_AES_KEY_BITS,
3506    pub sm4: TPMI_SM4_KEY_BITS,
3507    pub camellia: TPMI_CAMELLIA_KEY_BITS,
3508    pub sym: TPM2_KEY_BITS,
3509    pub exclusiveOr: TPMI_ALG_HASH,
3510}
3511#[test]
3512fn bindgen_test_layout_TPMU_SYM_KEY_BITS() {
3513    const UNINIT: ::std::mem::MaybeUninit<TPMU_SYM_KEY_BITS> = ::std::mem::MaybeUninit::uninit();
3514    let ptr = UNINIT.as_ptr();
3515    assert_eq!(
3516        ::std::mem::size_of::<TPMU_SYM_KEY_BITS>(),
3517        2usize,
3518        concat!("Size of: ", stringify!(TPMU_SYM_KEY_BITS))
3519    );
3520    assert_eq!(
3521        ::std::mem::align_of::<TPMU_SYM_KEY_BITS>(),
3522        2usize,
3523        concat!("Alignment of ", stringify!(TPMU_SYM_KEY_BITS))
3524    );
3525    assert_eq!(
3526        unsafe { ::std::ptr::addr_of!((*ptr).aes) as usize - ptr as usize },
3527        0usize,
3528        concat!(
3529            "Offset of field: ",
3530            stringify!(TPMU_SYM_KEY_BITS),
3531            "::",
3532            stringify!(aes)
3533        )
3534    );
3535    assert_eq!(
3536        unsafe { ::std::ptr::addr_of!((*ptr).sm4) as usize - ptr as usize },
3537        0usize,
3538        concat!(
3539            "Offset of field: ",
3540            stringify!(TPMU_SYM_KEY_BITS),
3541            "::",
3542            stringify!(sm4)
3543        )
3544    );
3545    assert_eq!(
3546        unsafe { ::std::ptr::addr_of!((*ptr).camellia) as usize - ptr as usize },
3547        0usize,
3548        concat!(
3549            "Offset of field: ",
3550            stringify!(TPMU_SYM_KEY_BITS),
3551            "::",
3552            stringify!(camellia)
3553        )
3554    );
3555    assert_eq!(
3556        unsafe { ::std::ptr::addr_of!((*ptr).sym) as usize - ptr as usize },
3557        0usize,
3558        concat!(
3559            "Offset of field: ",
3560            stringify!(TPMU_SYM_KEY_BITS),
3561            "::",
3562            stringify!(sym)
3563        )
3564    );
3565    assert_eq!(
3566        unsafe { ::std::ptr::addr_of!((*ptr).exclusiveOr) as usize - ptr as usize },
3567        0usize,
3568        concat!(
3569            "Offset of field: ",
3570            stringify!(TPMU_SYM_KEY_BITS),
3571            "::",
3572            stringify!(exclusiveOr)
3573        )
3574    );
3575}
3576impl Default for TPMU_SYM_KEY_BITS {
3577    fn default() -> Self {
3578        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3579        unsafe {
3580            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3581            s.assume_init()
3582        }
3583    }
3584}
3585#[repr(C)]
3586#[derive(Copy, Clone)]
3587pub union TPMU_SYM_MODE {
3588    pub aes: TPMI_ALG_SYM_MODE,
3589    pub sm4: TPMI_ALG_SYM_MODE,
3590    pub camellia: TPMI_ALG_SYM_MODE,
3591    pub sym: TPMI_ALG_SYM_MODE,
3592}
3593#[test]
3594fn bindgen_test_layout_TPMU_SYM_MODE() {
3595    const UNINIT: ::std::mem::MaybeUninit<TPMU_SYM_MODE> = ::std::mem::MaybeUninit::uninit();
3596    let ptr = UNINIT.as_ptr();
3597    assert_eq!(
3598        ::std::mem::size_of::<TPMU_SYM_MODE>(),
3599        2usize,
3600        concat!("Size of: ", stringify!(TPMU_SYM_MODE))
3601    );
3602    assert_eq!(
3603        ::std::mem::align_of::<TPMU_SYM_MODE>(),
3604        2usize,
3605        concat!("Alignment of ", stringify!(TPMU_SYM_MODE))
3606    );
3607    assert_eq!(
3608        unsafe { ::std::ptr::addr_of!((*ptr).aes) as usize - ptr as usize },
3609        0usize,
3610        concat!(
3611            "Offset of field: ",
3612            stringify!(TPMU_SYM_MODE),
3613            "::",
3614            stringify!(aes)
3615        )
3616    );
3617    assert_eq!(
3618        unsafe { ::std::ptr::addr_of!((*ptr).sm4) as usize - ptr as usize },
3619        0usize,
3620        concat!(
3621            "Offset of field: ",
3622            stringify!(TPMU_SYM_MODE),
3623            "::",
3624            stringify!(sm4)
3625        )
3626    );
3627    assert_eq!(
3628        unsafe { ::std::ptr::addr_of!((*ptr).camellia) as usize - ptr as usize },
3629        0usize,
3630        concat!(
3631            "Offset of field: ",
3632            stringify!(TPMU_SYM_MODE),
3633            "::",
3634            stringify!(camellia)
3635        )
3636    );
3637    assert_eq!(
3638        unsafe { ::std::ptr::addr_of!((*ptr).sym) as usize - ptr as usize },
3639        0usize,
3640        concat!(
3641            "Offset of field: ",
3642            stringify!(TPMU_SYM_MODE),
3643            "::",
3644            stringify!(sym)
3645        )
3646    );
3647}
3648impl Default for TPMU_SYM_MODE {
3649    fn default() -> Self {
3650        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3651        unsafe {
3652            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3653            s.assume_init()
3654        }
3655    }
3656}
3657#[repr(C)]
3658#[derive(Copy, Clone)]
3659pub struct TPMT_SYM_DEF {
3660    pub algorithm: TPMI_ALG_SYM,
3661    pub keyBits: TPMU_SYM_KEY_BITS,
3662    pub mode: TPMU_SYM_MODE,
3663}
3664#[test]
3665fn bindgen_test_layout_TPMT_SYM_DEF() {
3666    const UNINIT: ::std::mem::MaybeUninit<TPMT_SYM_DEF> = ::std::mem::MaybeUninit::uninit();
3667    let ptr = UNINIT.as_ptr();
3668    assert_eq!(
3669        ::std::mem::size_of::<TPMT_SYM_DEF>(),
3670        6usize,
3671        concat!("Size of: ", stringify!(TPMT_SYM_DEF))
3672    );
3673    assert_eq!(
3674        ::std::mem::align_of::<TPMT_SYM_DEF>(),
3675        2usize,
3676        concat!("Alignment of ", stringify!(TPMT_SYM_DEF))
3677    );
3678    assert_eq!(
3679        unsafe { ::std::ptr::addr_of!((*ptr).algorithm) as usize - ptr as usize },
3680        0usize,
3681        concat!(
3682            "Offset of field: ",
3683            stringify!(TPMT_SYM_DEF),
3684            "::",
3685            stringify!(algorithm)
3686        )
3687    );
3688    assert_eq!(
3689        unsafe { ::std::ptr::addr_of!((*ptr).keyBits) as usize - ptr as usize },
3690        2usize,
3691        concat!(
3692            "Offset of field: ",
3693            stringify!(TPMT_SYM_DEF),
3694            "::",
3695            stringify!(keyBits)
3696        )
3697    );
3698    assert_eq!(
3699        unsafe { ::std::ptr::addr_of!((*ptr).mode) as usize - ptr as usize },
3700        4usize,
3701        concat!(
3702            "Offset of field: ",
3703            stringify!(TPMT_SYM_DEF),
3704            "::",
3705            stringify!(mode)
3706        )
3707    );
3708}
3709impl Default for TPMT_SYM_DEF {
3710    fn default() -> Self {
3711        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3712        unsafe {
3713            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3714            s.assume_init()
3715        }
3716    }
3717}
3718#[repr(C)]
3719#[derive(Copy, Clone)]
3720pub struct TPMT_SYM_DEF_OBJECT {
3721    pub algorithm: TPMI_ALG_SYM_OBJECT,
3722    pub keyBits: TPMU_SYM_KEY_BITS,
3723    pub mode: TPMU_SYM_MODE,
3724}
3725#[test]
3726fn bindgen_test_layout_TPMT_SYM_DEF_OBJECT() {
3727    const UNINIT: ::std::mem::MaybeUninit<TPMT_SYM_DEF_OBJECT> = ::std::mem::MaybeUninit::uninit();
3728    let ptr = UNINIT.as_ptr();
3729    assert_eq!(
3730        ::std::mem::size_of::<TPMT_SYM_DEF_OBJECT>(),
3731        6usize,
3732        concat!("Size of: ", stringify!(TPMT_SYM_DEF_OBJECT))
3733    );
3734    assert_eq!(
3735        ::std::mem::align_of::<TPMT_SYM_DEF_OBJECT>(),
3736        2usize,
3737        concat!("Alignment of ", stringify!(TPMT_SYM_DEF_OBJECT))
3738    );
3739    assert_eq!(
3740        unsafe { ::std::ptr::addr_of!((*ptr).algorithm) as usize - ptr as usize },
3741        0usize,
3742        concat!(
3743            "Offset of field: ",
3744            stringify!(TPMT_SYM_DEF_OBJECT),
3745            "::",
3746            stringify!(algorithm)
3747        )
3748    );
3749    assert_eq!(
3750        unsafe { ::std::ptr::addr_of!((*ptr).keyBits) as usize - ptr as usize },
3751        2usize,
3752        concat!(
3753            "Offset of field: ",
3754            stringify!(TPMT_SYM_DEF_OBJECT),
3755            "::",
3756            stringify!(keyBits)
3757        )
3758    );
3759    assert_eq!(
3760        unsafe { ::std::ptr::addr_of!((*ptr).mode) as usize - ptr as usize },
3761        4usize,
3762        concat!(
3763            "Offset of field: ",
3764            stringify!(TPMT_SYM_DEF_OBJECT),
3765            "::",
3766            stringify!(mode)
3767        )
3768    );
3769}
3770impl Default for TPMT_SYM_DEF_OBJECT {
3771    fn default() -> Self {
3772        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3773        unsafe {
3774            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3775            s.assume_init()
3776        }
3777    }
3778}
3779#[repr(C)]
3780#[derive(Debug, Default, Copy, Clone)]
3781pub struct TPM2B_SYM_KEY {
3782    pub size: UINT16,
3783    pub buffer: [BYTE; 32usize],
3784}
3785#[test]
3786fn bindgen_test_layout_TPM2B_SYM_KEY() {
3787    const UNINIT: ::std::mem::MaybeUninit<TPM2B_SYM_KEY> = ::std::mem::MaybeUninit::uninit();
3788    let ptr = UNINIT.as_ptr();
3789    assert_eq!(
3790        ::std::mem::size_of::<TPM2B_SYM_KEY>(),
3791        34usize,
3792        concat!("Size of: ", stringify!(TPM2B_SYM_KEY))
3793    );
3794    assert_eq!(
3795        ::std::mem::align_of::<TPM2B_SYM_KEY>(),
3796        2usize,
3797        concat!("Alignment of ", stringify!(TPM2B_SYM_KEY))
3798    );
3799    assert_eq!(
3800        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
3801        0usize,
3802        concat!(
3803            "Offset of field: ",
3804            stringify!(TPM2B_SYM_KEY),
3805            "::",
3806            stringify!(size)
3807        )
3808    );
3809    assert_eq!(
3810        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
3811        2usize,
3812        concat!(
3813            "Offset of field: ",
3814            stringify!(TPM2B_SYM_KEY),
3815            "::",
3816            stringify!(buffer)
3817        )
3818    );
3819}
3820#[repr(C)]
3821#[derive(Copy, Clone)]
3822pub struct TPMS_SYMCIPHER_PARMS {
3823    pub sym: TPMT_SYM_DEF_OBJECT,
3824}
3825#[test]
3826fn bindgen_test_layout_TPMS_SYMCIPHER_PARMS() {
3827    const UNINIT: ::std::mem::MaybeUninit<TPMS_SYMCIPHER_PARMS> = ::std::mem::MaybeUninit::uninit();
3828    let ptr = UNINIT.as_ptr();
3829    assert_eq!(
3830        ::std::mem::size_of::<TPMS_SYMCIPHER_PARMS>(),
3831        6usize,
3832        concat!("Size of: ", stringify!(TPMS_SYMCIPHER_PARMS))
3833    );
3834    assert_eq!(
3835        ::std::mem::align_of::<TPMS_SYMCIPHER_PARMS>(),
3836        2usize,
3837        concat!("Alignment of ", stringify!(TPMS_SYMCIPHER_PARMS))
3838    );
3839    assert_eq!(
3840        unsafe { ::std::ptr::addr_of!((*ptr).sym) as usize - ptr as usize },
3841        0usize,
3842        concat!(
3843            "Offset of field: ",
3844            stringify!(TPMS_SYMCIPHER_PARMS),
3845            "::",
3846            stringify!(sym)
3847        )
3848    );
3849}
3850impl Default for TPMS_SYMCIPHER_PARMS {
3851    fn default() -> Self {
3852        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3853        unsafe {
3854            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3855            s.assume_init()
3856        }
3857    }
3858}
3859#[repr(C)]
3860#[derive(Debug, Copy, Clone)]
3861pub struct TPM2B_SENSITIVE_DATA {
3862    pub size: UINT16,
3863    pub buffer: [BYTE; 256usize],
3864}
3865#[test]
3866fn bindgen_test_layout_TPM2B_SENSITIVE_DATA() {
3867    const UNINIT: ::std::mem::MaybeUninit<TPM2B_SENSITIVE_DATA> = ::std::mem::MaybeUninit::uninit();
3868    let ptr = UNINIT.as_ptr();
3869    assert_eq!(
3870        ::std::mem::size_of::<TPM2B_SENSITIVE_DATA>(),
3871        258usize,
3872        concat!("Size of: ", stringify!(TPM2B_SENSITIVE_DATA))
3873    );
3874    assert_eq!(
3875        ::std::mem::align_of::<TPM2B_SENSITIVE_DATA>(),
3876        2usize,
3877        concat!("Alignment of ", stringify!(TPM2B_SENSITIVE_DATA))
3878    );
3879    assert_eq!(
3880        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
3881        0usize,
3882        concat!(
3883            "Offset of field: ",
3884            stringify!(TPM2B_SENSITIVE_DATA),
3885            "::",
3886            stringify!(size)
3887        )
3888    );
3889    assert_eq!(
3890        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
3891        2usize,
3892        concat!(
3893            "Offset of field: ",
3894            stringify!(TPM2B_SENSITIVE_DATA),
3895            "::",
3896            stringify!(buffer)
3897        )
3898    );
3899}
3900impl Default for TPM2B_SENSITIVE_DATA {
3901    fn default() -> Self {
3902        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3903        unsafe {
3904            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3905            s.assume_init()
3906        }
3907    }
3908}
3909#[repr(C)]
3910#[derive(Debug, Copy, Clone)]
3911pub struct TPMS_SENSITIVE_CREATE {
3912    pub userAuth: TPM2B_AUTH,
3913    pub data: TPM2B_SENSITIVE_DATA,
3914}
3915#[test]
3916fn bindgen_test_layout_TPMS_SENSITIVE_CREATE() {
3917    const UNINIT: ::std::mem::MaybeUninit<TPMS_SENSITIVE_CREATE> =
3918        ::std::mem::MaybeUninit::uninit();
3919    let ptr = UNINIT.as_ptr();
3920    assert_eq!(
3921        ::std::mem::size_of::<TPMS_SENSITIVE_CREATE>(),
3922        324usize,
3923        concat!("Size of: ", stringify!(TPMS_SENSITIVE_CREATE))
3924    );
3925    assert_eq!(
3926        ::std::mem::align_of::<TPMS_SENSITIVE_CREATE>(),
3927        2usize,
3928        concat!("Alignment of ", stringify!(TPMS_SENSITIVE_CREATE))
3929    );
3930    assert_eq!(
3931        unsafe { ::std::ptr::addr_of!((*ptr).userAuth) as usize - ptr as usize },
3932        0usize,
3933        concat!(
3934            "Offset of field: ",
3935            stringify!(TPMS_SENSITIVE_CREATE),
3936            "::",
3937            stringify!(userAuth)
3938        )
3939    );
3940    assert_eq!(
3941        unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize },
3942        66usize,
3943        concat!(
3944            "Offset of field: ",
3945            stringify!(TPMS_SENSITIVE_CREATE),
3946            "::",
3947            stringify!(data)
3948        )
3949    );
3950}
3951impl Default for TPMS_SENSITIVE_CREATE {
3952    fn default() -> Self {
3953        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3954        unsafe {
3955            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3956            s.assume_init()
3957        }
3958    }
3959}
3960#[repr(C)]
3961#[derive(Debug, Copy, Clone)]
3962pub struct TPM2B_SENSITIVE_CREATE {
3963    pub size: UINT16,
3964    pub sensitive: TPMS_SENSITIVE_CREATE,
3965}
3966#[test]
3967fn bindgen_test_layout_TPM2B_SENSITIVE_CREATE() {
3968    const UNINIT: ::std::mem::MaybeUninit<TPM2B_SENSITIVE_CREATE> =
3969        ::std::mem::MaybeUninit::uninit();
3970    let ptr = UNINIT.as_ptr();
3971    assert_eq!(
3972        ::std::mem::size_of::<TPM2B_SENSITIVE_CREATE>(),
3973        326usize,
3974        concat!("Size of: ", stringify!(TPM2B_SENSITIVE_CREATE))
3975    );
3976    assert_eq!(
3977        ::std::mem::align_of::<TPM2B_SENSITIVE_CREATE>(),
3978        2usize,
3979        concat!("Alignment of ", stringify!(TPM2B_SENSITIVE_CREATE))
3980    );
3981    assert_eq!(
3982        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
3983        0usize,
3984        concat!(
3985            "Offset of field: ",
3986            stringify!(TPM2B_SENSITIVE_CREATE),
3987            "::",
3988            stringify!(size)
3989        )
3990    );
3991    assert_eq!(
3992        unsafe { ::std::ptr::addr_of!((*ptr).sensitive) as usize - ptr as usize },
3993        2usize,
3994        concat!(
3995            "Offset of field: ",
3996            stringify!(TPM2B_SENSITIVE_CREATE),
3997            "::",
3998            stringify!(sensitive)
3999        )
4000    );
4001}
4002impl Default for TPM2B_SENSITIVE_CREATE {
4003    fn default() -> Self {
4004        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4005        unsafe {
4006            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4007            s.assume_init()
4008        }
4009    }
4010}
4011#[repr(C)]
4012#[derive(Debug, Default, Copy, Clone)]
4013pub struct TPMS_SCHEME_HASH {
4014    pub hashAlg: TPMI_ALG_HASH,
4015}
4016#[test]
4017fn bindgen_test_layout_TPMS_SCHEME_HASH() {
4018    const UNINIT: ::std::mem::MaybeUninit<TPMS_SCHEME_HASH> = ::std::mem::MaybeUninit::uninit();
4019    let ptr = UNINIT.as_ptr();
4020    assert_eq!(
4021        ::std::mem::size_of::<TPMS_SCHEME_HASH>(),
4022        2usize,
4023        concat!("Size of: ", stringify!(TPMS_SCHEME_HASH))
4024    );
4025    assert_eq!(
4026        ::std::mem::align_of::<TPMS_SCHEME_HASH>(),
4027        2usize,
4028        concat!("Alignment of ", stringify!(TPMS_SCHEME_HASH))
4029    );
4030    assert_eq!(
4031        unsafe { ::std::ptr::addr_of!((*ptr).hashAlg) as usize - ptr as usize },
4032        0usize,
4033        concat!(
4034            "Offset of field: ",
4035            stringify!(TPMS_SCHEME_HASH),
4036            "::",
4037            stringify!(hashAlg)
4038        )
4039    );
4040}
4041#[repr(C)]
4042#[derive(Debug, Default, Copy, Clone)]
4043pub struct TPMS_SCHEME_ECDAA {
4044    pub hashAlg: TPMI_ALG_HASH,
4045    pub count: UINT16,
4046}
4047#[test]
4048fn bindgen_test_layout_TPMS_SCHEME_ECDAA() {
4049    const UNINIT: ::std::mem::MaybeUninit<TPMS_SCHEME_ECDAA> = ::std::mem::MaybeUninit::uninit();
4050    let ptr = UNINIT.as_ptr();
4051    assert_eq!(
4052        ::std::mem::size_of::<TPMS_SCHEME_ECDAA>(),
4053        4usize,
4054        concat!("Size of: ", stringify!(TPMS_SCHEME_ECDAA))
4055    );
4056    assert_eq!(
4057        ::std::mem::align_of::<TPMS_SCHEME_ECDAA>(),
4058        2usize,
4059        concat!("Alignment of ", stringify!(TPMS_SCHEME_ECDAA))
4060    );
4061    assert_eq!(
4062        unsafe { ::std::ptr::addr_of!((*ptr).hashAlg) as usize - ptr as usize },
4063        0usize,
4064        concat!(
4065            "Offset of field: ",
4066            stringify!(TPMS_SCHEME_ECDAA),
4067            "::",
4068            stringify!(hashAlg)
4069        )
4070    );
4071    assert_eq!(
4072        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
4073        2usize,
4074        concat!(
4075            "Offset of field: ",
4076            stringify!(TPMS_SCHEME_ECDAA),
4077            "::",
4078            stringify!(count)
4079        )
4080    );
4081}
4082pub type TPMI_ALG_KEYEDHASH_SCHEME = TPM2_ALG_ID;
4083pub type TPMS_SCHEME_HMAC = TPMS_SCHEME_HASH;
4084#[repr(C)]
4085#[derive(Debug, Default, Copy, Clone)]
4086pub struct TPMS_SCHEME_XOR {
4087    pub hashAlg: TPMI_ALG_HASH,
4088    pub kdf: TPMI_ALG_KDF,
4089}
4090#[test]
4091fn bindgen_test_layout_TPMS_SCHEME_XOR() {
4092    const UNINIT: ::std::mem::MaybeUninit<TPMS_SCHEME_XOR> = ::std::mem::MaybeUninit::uninit();
4093    let ptr = UNINIT.as_ptr();
4094    assert_eq!(
4095        ::std::mem::size_of::<TPMS_SCHEME_XOR>(),
4096        4usize,
4097        concat!("Size of: ", stringify!(TPMS_SCHEME_XOR))
4098    );
4099    assert_eq!(
4100        ::std::mem::align_of::<TPMS_SCHEME_XOR>(),
4101        2usize,
4102        concat!("Alignment of ", stringify!(TPMS_SCHEME_XOR))
4103    );
4104    assert_eq!(
4105        unsafe { ::std::ptr::addr_of!((*ptr).hashAlg) as usize - ptr as usize },
4106        0usize,
4107        concat!(
4108            "Offset of field: ",
4109            stringify!(TPMS_SCHEME_XOR),
4110            "::",
4111            stringify!(hashAlg)
4112        )
4113    );
4114    assert_eq!(
4115        unsafe { ::std::ptr::addr_of!((*ptr).kdf) as usize - ptr as usize },
4116        2usize,
4117        concat!(
4118            "Offset of field: ",
4119            stringify!(TPMS_SCHEME_XOR),
4120            "::",
4121            stringify!(kdf)
4122        )
4123    );
4124}
4125#[repr(C)]
4126#[derive(Copy, Clone)]
4127pub union TPMU_SCHEME_KEYEDHASH {
4128    pub hmac: TPMS_SCHEME_HMAC,
4129    pub exclusiveOr: TPMS_SCHEME_XOR,
4130}
4131#[test]
4132fn bindgen_test_layout_TPMU_SCHEME_KEYEDHASH() {
4133    const UNINIT: ::std::mem::MaybeUninit<TPMU_SCHEME_KEYEDHASH> =
4134        ::std::mem::MaybeUninit::uninit();
4135    let ptr = UNINIT.as_ptr();
4136    assert_eq!(
4137        ::std::mem::size_of::<TPMU_SCHEME_KEYEDHASH>(),
4138        4usize,
4139        concat!("Size of: ", stringify!(TPMU_SCHEME_KEYEDHASH))
4140    );
4141    assert_eq!(
4142        ::std::mem::align_of::<TPMU_SCHEME_KEYEDHASH>(),
4143        2usize,
4144        concat!("Alignment of ", stringify!(TPMU_SCHEME_KEYEDHASH))
4145    );
4146    assert_eq!(
4147        unsafe { ::std::ptr::addr_of!((*ptr).hmac) as usize - ptr as usize },
4148        0usize,
4149        concat!(
4150            "Offset of field: ",
4151            stringify!(TPMU_SCHEME_KEYEDHASH),
4152            "::",
4153            stringify!(hmac)
4154        )
4155    );
4156    assert_eq!(
4157        unsafe { ::std::ptr::addr_of!((*ptr).exclusiveOr) as usize - ptr as usize },
4158        0usize,
4159        concat!(
4160            "Offset of field: ",
4161            stringify!(TPMU_SCHEME_KEYEDHASH),
4162            "::",
4163            stringify!(exclusiveOr)
4164        )
4165    );
4166}
4167impl Default for TPMU_SCHEME_KEYEDHASH {
4168    fn default() -> Self {
4169        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4170        unsafe {
4171            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4172            s.assume_init()
4173        }
4174    }
4175}
4176#[repr(C)]
4177#[derive(Copy, Clone)]
4178pub struct TPMT_KEYEDHASH_SCHEME {
4179    pub scheme: TPMI_ALG_KEYEDHASH_SCHEME,
4180    pub details: TPMU_SCHEME_KEYEDHASH,
4181}
4182#[test]
4183fn bindgen_test_layout_TPMT_KEYEDHASH_SCHEME() {
4184    const UNINIT: ::std::mem::MaybeUninit<TPMT_KEYEDHASH_SCHEME> =
4185        ::std::mem::MaybeUninit::uninit();
4186    let ptr = UNINIT.as_ptr();
4187    assert_eq!(
4188        ::std::mem::size_of::<TPMT_KEYEDHASH_SCHEME>(),
4189        6usize,
4190        concat!("Size of: ", stringify!(TPMT_KEYEDHASH_SCHEME))
4191    );
4192    assert_eq!(
4193        ::std::mem::align_of::<TPMT_KEYEDHASH_SCHEME>(),
4194        2usize,
4195        concat!("Alignment of ", stringify!(TPMT_KEYEDHASH_SCHEME))
4196    );
4197    assert_eq!(
4198        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
4199        0usize,
4200        concat!(
4201            "Offset of field: ",
4202            stringify!(TPMT_KEYEDHASH_SCHEME),
4203            "::",
4204            stringify!(scheme)
4205        )
4206    );
4207    assert_eq!(
4208        unsafe { ::std::ptr::addr_of!((*ptr).details) as usize - ptr as usize },
4209        2usize,
4210        concat!(
4211            "Offset of field: ",
4212            stringify!(TPMT_KEYEDHASH_SCHEME),
4213            "::",
4214            stringify!(details)
4215        )
4216    );
4217}
4218impl Default for TPMT_KEYEDHASH_SCHEME {
4219    fn default() -> Self {
4220        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4221        unsafe {
4222            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4223            s.assume_init()
4224        }
4225    }
4226}
4227pub type TPMS_SIG_SCHEME_RSASSA = TPMS_SCHEME_HASH;
4228pub type TPMS_SIG_SCHEME_RSAPSS = TPMS_SCHEME_HASH;
4229pub type TPMS_SIG_SCHEME_ECDSA = TPMS_SCHEME_HASH;
4230pub type TPMS_SIG_SCHEME_SM2 = TPMS_SCHEME_HASH;
4231pub type TPMS_SIG_SCHEME_ECSCHNORR = TPMS_SCHEME_HASH;
4232pub type TPMS_SIG_SCHEME_ECDAA = TPMS_SCHEME_ECDAA;
4233#[repr(C)]
4234#[derive(Copy, Clone)]
4235pub union TPMU_SIG_SCHEME {
4236    pub rsassa: TPMS_SIG_SCHEME_RSASSA,
4237    pub rsapss: TPMS_SIG_SCHEME_RSAPSS,
4238    pub ecdsa: TPMS_SIG_SCHEME_ECDSA,
4239    pub ecdaa: TPMS_SIG_SCHEME_ECDAA,
4240    pub sm2: TPMS_SIG_SCHEME_SM2,
4241    pub ecschnorr: TPMS_SIG_SCHEME_ECSCHNORR,
4242    pub hmac: TPMS_SCHEME_HMAC,
4243    pub any: TPMS_SCHEME_HASH,
4244}
4245#[test]
4246fn bindgen_test_layout_TPMU_SIG_SCHEME() {
4247    const UNINIT: ::std::mem::MaybeUninit<TPMU_SIG_SCHEME> = ::std::mem::MaybeUninit::uninit();
4248    let ptr = UNINIT.as_ptr();
4249    assert_eq!(
4250        ::std::mem::size_of::<TPMU_SIG_SCHEME>(),
4251        4usize,
4252        concat!("Size of: ", stringify!(TPMU_SIG_SCHEME))
4253    );
4254    assert_eq!(
4255        ::std::mem::align_of::<TPMU_SIG_SCHEME>(),
4256        2usize,
4257        concat!("Alignment of ", stringify!(TPMU_SIG_SCHEME))
4258    );
4259    assert_eq!(
4260        unsafe { ::std::ptr::addr_of!((*ptr).rsassa) as usize - ptr as usize },
4261        0usize,
4262        concat!(
4263            "Offset of field: ",
4264            stringify!(TPMU_SIG_SCHEME),
4265            "::",
4266            stringify!(rsassa)
4267        )
4268    );
4269    assert_eq!(
4270        unsafe { ::std::ptr::addr_of!((*ptr).rsapss) as usize - ptr as usize },
4271        0usize,
4272        concat!(
4273            "Offset of field: ",
4274            stringify!(TPMU_SIG_SCHEME),
4275            "::",
4276            stringify!(rsapss)
4277        )
4278    );
4279    assert_eq!(
4280        unsafe { ::std::ptr::addr_of!((*ptr).ecdsa) as usize - ptr as usize },
4281        0usize,
4282        concat!(
4283            "Offset of field: ",
4284            stringify!(TPMU_SIG_SCHEME),
4285            "::",
4286            stringify!(ecdsa)
4287        )
4288    );
4289    assert_eq!(
4290        unsafe { ::std::ptr::addr_of!((*ptr).ecdaa) as usize - ptr as usize },
4291        0usize,
4292        concat!(
4293            "Offset of field: ",
4294            stringify!(TPMU_SIG_SCHEME),
4295            "::",
4296            stringify!(ecdaa)
4297        )
4298    );
4299    assert_eq!(
4300        unsafe { ::std::ptr::addr_of!((*ptr).sm2) as usize - ptr as usize },
4301        0usize,
4302        concat!(
4303            "Offset of field: ",
4304            stringify!(TPMU_SIG_SCHEME),
4305            "::",
4306            stringify!(sm2)
4307        )
4308    );
4309    assert_eq!(
4310        unsafe { ::std::ptr::addr_of!((*ptr).ecschnorr) as usize - ptr as usize },
4311        0usize,
4312        concat!(
4313            "Offset of field: ",
4314            stringify!(TPMU_SIG_SCHEME),
4315            "::",
4316            stringify!(ecschnorr)
4317        )
4318    );
4319    assert_eq!(
4320        unsafe { ::std::ptr::addr_of!((*ptr).hmac) as usize - ptr as usize },
4321        0usize,
4322        concat!(
4323            "Offset of field: ",
4324            stringify!(TPMU_SIG_SCHEME),
4325            "::",
4326            stringify!(hmac)
4327        )
4328    );
4329    assert_eq!(
4330        unsafe { ::std::ptr::addr_of!((*ptr).any) as usize - ptr as usize },
4331        0usize,
4332        concat!(
4333            "Offset of field: ",
4334            stringify!(TPMU_SIG_SCHEME),
4335            "::",
4336            stringify!(any)
4337        )
4338    );
4339}
4340impl Default for TPMU_SIG_SCHEME {
4341    fn default() -> Self {
4342        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4343        unsafe {
4344            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4345            s.assume_init()
4346        }
4347    }
4348}
4349#[repr(C)]
4350#[derive(Copy, Clone)]
4351pub struct TPMT_SIG_SCHEME {
4352    pub scheme: TPMI_ALG_SIG_SCHEME,
4353    pub details: TPMU_SIG_SCHEME,
4354}
4355#[test]
4356fn bindgen_test_layout_TPMT_SIG_SCHEME() {
4357    const UNINIT: ::std::mem::MaybeUninit<TPMT_SIG_SCHEME> = ::std::mem::MaybeUninit::uninit();
4358    let ptr = UNINIT.as_ptr();
4359    assert_eq!(
4360        ::std::mem::size_of::<TPMT_SIG_SCHEME>(),
4361        6usize,
4362        concat!("Size of: ", stringify!(TPMT_SIG_SCHEME))
4363    );
4364    assert_eq!(
4365        ::std::mem::align_of::<TPMT_SIG_SCHEME>(),
4366        2usize,
4367        concat!("Alignment of ", stringify!(TPMT_SIG_SCHEME))
4368    );
4369    assert_eq!(
4370        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
4371        0usize,
4372        concat!(
4373            "Offset of field: ",
4374            stringify!(TPMT_SIG_SCHEME),
4375            "::",
4376            stringify!(scheme)
4377        )
4378    );
4379    assert_eq!(
4380        unsafe { ::std::ptr::addr_of!((*ptr).details) as usize - ptr as usize },
4381        2usize,
4382        concat!(
4383            "Offset of field: ",
4384            stringify!(TPMT_SIG_SCHEME),
4385            "::",
4386            stringify!(details)
4387        )
4388    );
4389}
4390impl Default for TPMT_SIG_SCHEME {
4391    fn default() -> Self {
4392        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4393        unsafe {
4394            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4395            s.assume_init()
4396        }
4397    }
4398}
4399pub type TPMS_ENC_SCHEME_OAEP = TPMS_SCHEME_HASH;
4400pub type TPMS_ENC_SCHEME_RSAES = TPMS_EMPTY;
4401pub type TPMS_KEY_SCHEME_ECDH = TPMS_SCHEME_HASH;
4402pub type TPMS_KEY_SCHEME_ECMQV = TPMS_SCHEME_HASH;
4403pub type TPMS_SCHEME_MGF1 = TPMS_SCHEME_HASH;
4404pub type TPMS_SCHEME_KDF1_SP800_56A = TPMS_SCHEME_HASH;
4405pub type TPMS_SCHEME_KDF2 = TPMS_SCHEME_HASH;
4406pub type TPMS_SCHEME_KDF1_SP800_108 = TPMS_SCHEME_HASH;
4407#[repr(C)]
4408#[derive(Copy, Clone)]
4409pub union TPMU_KDF_SCHEME {
4410    pub mgf1: TPMS_SCHEME_MGF1,
4411    pub kdf1_sp800_56a: TPMS_SCHEME_KDF1_SP800_56A,
4412    pub kdf2: TPMS_SCHEME_KDF2,
4413    pub kdf1_sp800_108: TPMS_SCHEME_KDF1_SP800_108,
4414}
4415#[test]
4416fn bindgen_test_layout_TPMU_KDF_SCHEME() {
4417    const UNINIT: ::std::mem::MaybeUninit<TPMU_KDF_SCHEME> = ::std::mem::MaybeUninit::uninit();
4418    let ptr = UNINIT.as_ptr();
4419    assert_eq!(
4420        ::std::mem::size_of::<TPMU_KDF_SCHEME>(),
4421        2usize,
4422        concat!("Size of: ", stringify!(TPMU_KDF_SCHEME))
4423    );
4424    assert_eq!(
4425        ::std::mem::align_of::<TPMU_KDF_SCHEME>(),
4426        2usize,
4427        concat!("Alignment of ", stringify!(TPMU_KDF_SCHEME))
4428    );
4429    assert_eq!(
4430        unsafe { ::std::ptr::addr_of!((*ptr).mgf1) as usize - ptr as usize },
4431        0usize,
4432        concat!(
4433            "Offset of field: ",
4434            stringify!(TPMU_KDF_SCHEME),
4435            "::",
4436            stringify!(mgf1)
4437        )
4438    );
4439    assert_eq!(
4440        unsafe { ::std::ptr::addr_of!((*ptr).kdf1_sp800_56a) as usize - ptr as usize },
4441        0usize,
4442        concat!(
4443            "Offset of field: ",
4444            stringify!(TPMU_KDF_SCHEME),
4445            "::",
4446            stringify!(kdf1_sp800_56a)
4447        )
4448    );
4449    assert_eq!(
4450        unsafe { ::std::ptr::addr_of!((*ptr).kdf2) as usize - ptr as usize },
4451        0usize,
4452        concat!(
4453            "Offset of field: ",
4454            stringify!(TPMU_KDF_SCHEME),
4455            "::",
4456            stringify!(kdf2)
4457        )
4458    );
4459    assert_eq!(
4460        unsafe { ::std::ptr::addr_of!((*ptr).kdf1_sp800_108) as usize - ptr as usize },
4461        0usize,
4462        concat!(
4463            "Offset of field: ",
4464            stringify!(TPMU_KDF_SCHEME),
4465            "::",
4466            stringify!(kdf1_sp800_108)
4467        )
4468    );
4469}
4470impl Default for TPMU_KDF_SCHEME {
4471    fn default() -> Self {
4472        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4473        unsafe {
4474            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4475            s.assume_init()
4476        }
4477    }
4478}
4479#[repr(C)]
4480#[derive(Copy, Clone)]
4481pub struct TPMT_KDF_SCHEME {
4482    pub scheme: TPMI_ALG_KDF,
4483    pub details: TPMU_KDF_SCHEME,
4484}
4485#[test]
4486fn bindgen_test_layout_TPMT_KDF_SCHEME() {
4487    const UNINIT: ::std::mem::MaybeUninit<TPMT_KDF_SCHEME> = ::std::mem::MaybeUninit::uninit();
4488    let ptr = UNINIT.as_ptr();
4489    assert_eq!(
4490        ::std::mem::size_of::<TPMT_KDF_SCHEME>(),
4491        4usize,
4492        concat!("Size of: ", stringify!(TPMT_KDF_SCHEME))
4493    );
4494    assert_eq!(
4495        ::std::mem::align_of::<TPMT_KDF_SCHEME>(),
4496        2usize,
4497        concat!("Alignment of ", stringify!(TPMT_KDF_SCHEME))
4498    );
4499    assert_eq!(
4500        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
4501        0usize,
4502        concat!(
4503            "Offset of field: ",
4504            stringify!(TPMT_KDF_SCHEME),
4505            "::",
4506            stringify!(scheme)
4507        )
4508    );
4509    assert_eq!(
4510        unsafe { ::std::ptr::addr_of!((*ptr).details) as usize - ptr as usize },
4511        2usize,
4512        concat!(
4513            "Offset of field: ",
4514            stringify!(TPMT_KDF_SCHEME),
4515            "::",
4516            stringify!(details)
4517        )
4518    );
4519}
4520impl Default for TPMT_KDF_SCHEME {
4521    fn default() -> Self {
4522        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4523        unsafe {
4524            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4525            s.assume_init()
4526        }
4527    }
4528}
4529pub type TPMI_ALG_ASYM_SCHEME = TPM2_ALG_ID;
4530#[repr(C)]
4531#[derive(Copy, Clone)]
4532pub union TPMU_ASYM_SCHEME {
4533    pub ecdh: TPMS_KEY_SCHEME_ECDH,
4534    pub ecmqv: TPMS_KEY_SCHEME_ECMQV,
4535    pub rsassa: TPMS_SIG_SCHEME_RSASSA,
4536    pub rsapss: TPMS_SIG_SCHEME_RSAPSS,
4537    pub ecdsa: TPMS_SIG_SCHEME_ECDSA,
4538    pub ecdaa: TPMS_SIG_SCHEME_ECDAA,
4539    pub sm2: TPMS_SIG_SCHEME_SM2,
4540    pub ecschnorr: TPMS_SIG_SCHEME_ECSCHNORR,
4541    pub rsaes: TPMS_ENC_SCHEME_RSAES,
4542    pub oaep: TPMS_ENC_SCHEME_OAEP,
4543    pub anySig: TPMS_SCHEME_HASH,
4544}
4545#[test]
4546fn bindgen_test_layout_TPMU_ASYM_SCHEME() {
4547    const UNINIT: ::std::mem::MaybeUninit<TPMU_ASYM_SCHEME> = ::std::mem::MaybeUninit::uninit();
4548    let ptr = UNINIT.as_ptr();
4549    assert_eq!(
4550        ::std::mem::size_of::<TPMU_ASYM_SCHEME>(),
4551        4usize,
4552        concat!("Size of: ", stringify!(TPMU_ASYM_SCHEME))
4553    );
4554    assert_eq!(
4555        ::std::mem::align_of::<TPMU_ASYM_SCHEME>(),
4556        2usize,
4557        concat!("Alignment of ", stringify!(TPMU_ASYM_SCHEME))
4558    );
4559    assert_eq!(
4560        unsafe { ::std::ptr::addr_of!((*ptr).ecdh) as usize - ptr as usize },
4561        0usize,
4562        concat!(
4563            "Offset of field: ",
4564            stringify!(TPMU_ASYM_SCHEME),
4565            "::",
4566            stringify!(ecdh)
4567        )
4568    );
4569    assert_eq!(
4570        unsafe { ::std::ptr::addr_of!((*ptr).ecmqv) as usize - ptr as usize },
4571        0usize,
4572        concat!(
4573            "Offset of field: ",
4574            stringify!(TPMU_ASYM_SCHEME),
4575            "::",
4576            stringify!(ecmqv)
4577        )
4578    );
4579    assert_eq!(
4580        unsafe { ::std::ptr::addr_of!((*ptr).rsassa) as usize - ptr as usize },
4581        0usize,
4582        concat!(
4583            "Offset of field: ",
4584            stringify!(TPMU_ASYM_SCHEME),
4585            "::",
4586            stringify!(rsassa)
4587        )
4588    );
4589    assert_eq!(
4590        unsafe { ::std::ptr::addr_of!((*ptr).rsapss) as usize - ptr as usize },
4591        0usize,
4592        concat!(
4593            "Offset of field: ",
4594            stringify!(TPMU_ASYM_SCHEME),
4595            "::",
4596            stringify!(rsapss)
4597        )
4598    );
4599    assert_eq!(
4600        unsafe { ::std::ptr::addr_of!((*ptr).ecdsa) as usize - ptr as usize },
4601        0usize,
4602        concat!(
4603            "Offset of field: ",
4604            stringify!(TPMU_ASYM_SCHEME),
4605            "::",
4606            stringify!(ecdsa)
4607        )
4608    );
4609    assert_eq!(
4610        unsafe { ::std::ptr::addr_of!((*ptr).ecdaa) as usize - ptr as usize },
4611        0usize,
4612        concat!(
4613            "Offset of field: ",
4614            stringify!(TPMU_ASYM_SCHEME),
4615            "::",
4616            stringify!(ecdaa)
4617        )
4618    );
4619    assert_eq!(
4620        unsafe { ::std::ptr::addr_of!((*ptr).sm2) as usize - ptr as usize },
4621        0usize,
4622        concat!(
4623            "Offset of field: ",
4624            stringify!(TPMU_ASYM_SCHEME),
4625            "::",
4626            stringify!(sm2)
4627        )
4628    );
4629    assert_eq!(
4630        unsafe { ::std::ptr::addr_of!((*ptr).ecschnorr) as usize - ptr as usize },
4631        0usize,
4632        concat!(
4633            "Offset of field: ",
4634            stringify!(TPMU_ASYM_SCHEME),
4635            "::",
4636            stringify!(ecschnorr)
4637        )
4638    );
4639    assert_eq!(
4640        unsafe { ::std::ptr::addr_of!((*ptr).rsaes) as usize - ptr as usize },
4641        0usize,
4642        concat!(
4643            "Offset of field: ",
4644            stringify!(TPMU_ASYM_SCHEME),
4645            "::",
4646            stringify!(rsaes)
4647        )
4648    );
4649    assert_eq!(
4650        unsafe { ::std::ptr::addr_of!((*ptr).oaep) as usize - ptr as usize },
4651        0usize,
4652        concat!(
4653            "Offset of field: ",
4654            stringify!(TPMU_ASYM_SCHEME),
4655            "::",
4656            stringify!(oaep)
4657        )
4658    );
4659    assert_eq!(
4660        unsafe { ::std::ptr::addr_of!((*ptr).anySig) as usize - ptr as usize },
4661        0usize,
4662        concat!(
4663            "Offset of field: ",
4664            stringify!(TPMU_ASYM_SCHEME),
4665            "::",
4666            stringify!(anySig)
4667        )
4668    );
4669}
4670impl Default for TPMU_ASYM_SCHEME {
4671    fn default() -> Self {
4672        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4673        unsafe {
4674            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4675            s.assume_init()
4676        }
4677    }
4678}
4679#[repr(C)]
4680#[derive(Copy, Clone)]
4681pub struct TPMT_ASYM_SCHEME {
4682    pub scheme: TPMI_ALG_ASYM_SCHEME,
4683    pub details: TPMU_ASYM_SCHEME,
4684}
4685#[test]
4686fn bindgen_test_layout_TPMT_ASYM_SCHEME() {
4687    const UNINIT: ::std::mem::MaybeUninit<TPMT_ASYM_SCHEME> = ::std::mem::MaybeUninit::uninit();
4688    let ptr = UNINIT.as_ptr();
4689    assert_eq!(
4690        ::std::mem::size_of::<TPMT_ASYM_SCHEME>(),
4691        6usize,
4692        concat!("Size of: ", stringify!(TPMT_ASYM_SCHEME))
4693    );
4694    assert_eq!(
4695        ::std::mem::align_of::<TPMT_ASYM_SCHEME>(),
4696        2usize,
4697        concat!("Alignment of ", stringify!(TPMT_ASYM_SCHEME))
4698    );
4699    assert_eq!(
4700        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
4701        0usize,
4702        concat!(
4703            "Offset of field: ",
4704            stringify!(TPMT_ASYM_SCHEME),
4705            "::",
4706            stringify!(scheme)
4707        )
4708    );
4709    assert_eq!(
4710        unsafe { ::std::ptr::addr_of!((*ptr).details) as usize - ptr as usize },
4711        2usize,
4712        concat!(
4713            "Offset of field: ",
4714            stringify!(TPMT_ASYM_SCHEME),
4715            "::",
4716            stringify!(details)
4717        )
4718    );
4719}
4720impl Default for TPMT_ASYM_SCHEME {
4721    fn default() -> Self {
4722        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4723        unsafe {
4724            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4725            s.assume_init()
4726        }
4727    }
4728}
4729pub type TPMI_ALG_RSA_SCHEME = TPM2_ALG_ID;
4730#[repr(C)]
4731#[derive(Copy, Clone)]
4732pub struct TPMT_RSA_SCHEME {
4733    pub scheme: TPMI_ALG_RSA_SCHEME,
4734    pub details: TPMU_ASYM_SCHEME,
4735}
4736#[test]
4737fn bindgen_test_layout_TPMT_RSA_SCHEME() {
4738    const UNINIT: ::std::mem::MaybeUninit<TPMT_RSA_SCHEME> = ::std::mem::MaybeUninit::uninit();
4739    let ptr = UNINIT.as_ptr();
4740    assert_eq!(
4741        ::std::mem::size_of::<TPMT_RSA_SCHEME>(),
4742        6usize,
4743        concat!("Size of: ", stringify!(TPMT_RSA_SCHEME))
4744    );
4745    assert_eq!(
4746        ::std::mem::align_of::<TPMT_RSA_SCHEME>(),
4747        2usize,
4748        concat!("Alignment of ", stringify!(TPMT_RSA_SCHEME))
4749    );
4750    assert_eq!(
4751        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
4752        0usize,
4753        concat!(
4754            "Offset of field: ",
4755            stringify!(TPMT_RSA_SCHEME),
4756            "::",
4757            stringify!(scheme)
4758        )
4759    );
4760    assert_eq!(
4761        unsafe { ::std::ptr::addr_of!((*ptr).details) as usize - ptr as usize },
4762        2usize,
4763        concat!(
4764            "Offset of field: ",
4765            stringify!(TPMT_RSA_SCHEME),
4766            "::",
4767            stringify!(details)
4768        )
4769    );
4770}
4771impl Default for TPMT_RSA_SCHEME {
4772    fn default() -> Self {
4773        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4774        unsafe {
4775            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4776            s.assume_init()
4777        }
4778    }
4779}
4780pub type TPMI_ALG_RSA_DECRYPT = TPM2_ALG_ID;
4781#[repr(C)]
4782#[derive(Copy, Clone)]
4783pub struct TPMT_RSA_DECRYPT {
4784    pub scheme: TPMI_ALG_RSA_DECRYPT,
4785    pub details: TPMU_ASYM_SCHEME,
4786}
4787#[test]
4788fn bindgen_test_layout_TPMT_RSA_DECRYPT() {
4789    const UNINIT: ::std::mem::MaybeUninit<TPMT_RSA_DECRYPT> = ::std::mem::MaybeUninit::uninit();
4790    let ptr = UNINIT.as_ptr();
4791    assert_eq!(
4792        ::std::mem::size_of::<TPMT_RSA_DECRYPT>(),
4793        6usize,
4794        concat!("Size of: ", stringify!(TPMT_RSA_DECRYPT))
4795    );
4796    assert_eq!(
4797        ::std::mem::align_of::<TPMT_RSA_DECRYPT>(),
4798        2usize,
4799        concat!("Alignment of ", stringify!(TPMT_RSA_DECRYPT))
4800    );
4801    assert_eq!(
4802        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
4803        0usize,
4804        concat!(
4805            "Offset of field: ",
4806            stringify!(TPMT_RSA_DECRYPT),
4807            "::",
4808            stringify!(scheme)
4809        )
4810    );
4811    assert_eq!(
4812        unsafe { ::std::ptr::addr_of!((*ptr).details) as usize - ptr as usize },
4813        2usize,
4814        concat!(
4815            "Offset of field: ",
4816            stringify!(TPMT_RSA_DECRYPT),
4817            "::",
4818            stringify!(details)
4819        )
4820    );
4821}
4822impl Default for TPMT_RSA_DECRYPT {
4823    fn default() -> Self {
4824        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4825        unsafe {
4826            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4827            s.assume_init()
4828        }
4829    }
4830}
4831#[repr(C)]
4832#[derive(Debug, Copy, Clone)]
4833pub struct TPM2B_PUBLIC_KEY_RSA {
4834    pub size: UINT16,
4835    pub buffer: [BYTE; 512usize],
4836}
4837#[test]
4838fn bindgen_test_layout_TPM2B_PUBLIC_KEY_RSA() {
4839    const UNINIT: ::std::mem::MaybeUninit<TPM2B_PUBLIC_KEY_RSA> = ::std::mem::MaybeUninit::uninit();
4840    let ptr = UNINIT.as_ptr();
4841    assert_eq!(
4842        ::std::mem::size_of::<TPM2B_PUBLIC_KEY_RSA>(),
4843        514usize,
4844        concat!("Size of: ", stringify!(TPM2B_PUBLIC_KEY_RSA))
4845    );
4846    assert_eq!(
4847        ::std::mem::align_of::<TPM2B_PUBLIC_KEY_RSA>(),
4848        2usize,
4849        concat!("Alignment of ", stringify!(TPM2B_PUBLIC_KEY_RSA))
4850    );
4851    assert_eq!(
4852        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
4853        0usize,
4854        concat!(
4855            "Offset of field: ",
4856            stringify!(TPM2B_PUBLIC_KEY_RSA),
4857            "::",
4858            stringify!(size)
4859        )
4860    );
4861    assert_eq!(
4862        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
4863        2usize,
4864        concat!(
4865            "Offset of field: ",
4866            stringify!(TPM2B_PUBLIC_KEY_RSA),
4867            "::",
4868            stringify!(buffer)
4869        )
4870    );
4871}
4872impl Default for TPM2B_PUBLIC_KEY_RSA {
4873    fn default() -> Self {
4874        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4875        unsafe {
4876            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4877            s.assume_init()
4878        }
4879    }
4880}
4881pub type TPMI_RSA_KEY_BITS = TPM2_KEY_BITS;
4882#[repr(C)]
4883#[derive(Debug, Copy, Clone)]
4884pub struct TPM2B_PRIVATE_KEY_RSA {
4885    pub size: UINT16,
4886    pub buffer: [BYTE; 256usize],
4887}
4888#[test]
4889fn bindgen_test_layout_TPM2B_PRIVATE_KEY_RSA() {
4890    const UNINIT: ::std::mem::MaybeUninit<TPM2B_PRIVATE_KEY_RSA> =
4891        ::std::mem::MaybeUninit::uninit();
4892    let ptr = UNINIT.as_ptr();
4893    assert_eq!(
4894        ::std::mem::size_of::<TPM2B_PRIVATE_KEY_RSA>(),
4895        258usize,
4896        concat!("Size of: ", stringify!(TPM2B_PRIVATE_KEY_RSA))
4897    );
4898    assert_eq!(
4899        ::std::mem::align_of::<TPM2B_PRIVATE_KEY_RSA>(),
4900        2usize,
4901        concat!("Alignment of ", stringify!(TPM2B_PRIVATE_KEY_RSA))
4902    );
4903    assert_eq!(
4904        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
4905        0usize,
4906        concat!(
4907            "Offset of field: ",
4908            stringify!(TPM2B_PRIVATE_KEY_RSA),
4909            "::",
4910            stringify!(size)
4911        )
4912    );
4913    assert_eq!(
4914        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
4915        2usize,
4916        concat!(
4917            "Offset of field: ",
4918            stringify!(TPM2B_PRIVATE_KEY_RSA),
4919            "::",
4920            stringify!(buffer)
4921        )
4922    );
4923}
4924impl Default for TPM2B_PRIVATE_KEY_RSA {
4925    fn default() -> Self {
4926        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4927        unsafe {
4928            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4929            s.assume_init()
4930        }
4931    }
4932}
4933#[repr(C)]
4934#[derive(Debug, Copy, Clone)]
4935pub struct TPM2B_ECC_PARAMETER {
4936    pub size: UINT16,
4937    pub buffer: [BYTE; 128usize],
4938}
4939#[test]
4940fn bindgen_test_layout_TPM2B_ECC_PARAMETER() {
4941    const UNINIT: ::std::mem::MaybeUninit<TPM2B_ECC_PARAMETER> = ::std::mem::MaybeUninit::uninit();
4942    let ptr = UNINIT.as_ptr();
4943    assert_eq!(
4944        ::std::mem::size_of::<TPM2B_ECC_PARAMETER>(),
4945        130usize,
4946        concat!("Size of: ", stringify!(TPM2B_ECC_PARAMETER))
4947    );
4948    assert_eq!(
4949        ::std::mem::align_of::<TPM2B_ECC_PARAMETER>(),
4950        2usize,
4951        concat!("Alignment of ", stringify!(TPM2B_ECC_PARAMETER))
4952    );
4953    assert_eq!(
4954        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
4955        0usize,
4956        concat!(
4957            "Offset of field: ",
4958            stringify!(TPM2B_ECC_PARAMETER),
4959            "::",
4960            stringify!(size)
4961        )
4962    );
4963    assert_eq!(
4964        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
4965        2usize,
4966        concat!(
4967            "Offset of field: ",
4968            stringify!(TPM2B_ECC_PARAMETER),
4969            "::",
4970            stringify!(buffer)
4971        )
4972    );
4973}
4974impl Default for TPM2B_ECC_PARAMETER {
4975    fn default() -> Self {
4976        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4977        unsafe {
4978            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4979            s.assume_init()
4980        }
4981    }
4982}
4983#[repr(C)]
4984#[derive(Debug, Copy, Clone)]
4985pub struct TPMS_ECC_POINT {
4986    pub x: TPM2B_ECC_PARAMETER,
4987    pub y: TPM2B_ECC_PARAMETER,
4988}
4989#[test]
4990fn bindgen_test_layout_TPMS_ECC_POINT() {
4991    const UNINIT: ::std::mem::MaybeUninit<TPMS_ECC_POINT> = ::std::mem::MaybeUninit::uninit();
4992    let ptr = UNINIT.as_ptr();
4993    assert_eq!(
4994        ::std::mem::size_of::<TPMS_ECC_POINT>(),
4995        260usize,
4996        concat!("Size of: ", stringify!(TPMS_ECC_POINT))
4997    );
4998    assert_eq!(
4999        ::std::mem::align_of::<TPMS_ECC_POINT>(),
5000        2usize,
5001        concat!("Alignment of ", stringify!(TPMS_ECC_POINT))
5002    );
5003    assert_eq!(
5004        unsafe { ::std::ptr::addr_of!((*ptr).x) as usize - ptr as usize },
5005        0usize,
5006        concat!(
5007            "Offset of field: ",
5008            stringify!(TPMS_ECC_POINT),
5009            "::",
5010            stringify!(x)
5011        )
5012    );
5013    assert_eq!(
5014        unsafe { ::std::ptr::addr_of!((*ptr).y) as usize - ptr as usize },
5015        130usize,
5016        concat!(
5017            "Offset of field: ",
5018            stringify!(TPMS_ECC_POINT),
5019            "::",
5020            stringify!(y)
5021        )
5022    );
5023}
5024impl Default for TPMS_ECC_POINT {
5025    fn default() -> Self {
5026        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5027        unsafe {
5028            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5029            s.assume_init()
5030        }
5031    }
5032}
5033#[repr(C)]
5034#[derive(Debug, Copy, Clone)]
5035pub struct TPM2B_ECC_POINT {
5036    pub size: UINT16,
5037    pub point: TPMS_ECC_POINT,
5038}
5039#[test]
5040fn bindgen_test_layout_TPM2B_ECC_POINT() {
5041    const UNINIT: ::std::mem::MaybeUninit<TPM2B_ECC_POINT> = ::std::mem::MaybeUninit::uninit();
5042    let ptr = UNINIT.as_ptr();
5043    assert_eq!(
5044        ::std::mem::size_of::<TPM2B_ECC_POINT>(),
5045        262usize,
5046        concat!("Size of: ", stringify!(TPM2B_ECC_POINT))
5047    );
5048    assert_eq!(
5049        ::std::mem::align_of::<TPM2B_ECC_POINT>(),
5050        2usize,
5051        concat!("Alignment of ", stringify!(TPM2B_ECC_POINT))
5052    );
5053    assert_eq!(
5054        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
5055        0usize,
5056        concat!(
5057            "Offset of field: ",
5058            stringify!(TPM2B_ECC_POINT),
5059            "::",
5060            stringify!(size)
5061        )
5062    );
5063    assert_eq!(
5064        unsafe { ::std::ptr::addr_of!((*ptr).point) as usize - ptr as usize },
5065        2usize,
5066        concat!(
5067            "Offset of field: ",
5068            stringify!(TPM2B_ECC_POINT),
5069            "::",
5070            stringify!(point)
5071        )
5072    );
5073}
5074impl Default for TPM2B_ECC_POINT {
5075    fn default() -> Self {
5076        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5077        unsafe {
5078            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5079            s.assume_init()
5080        }
5081    }
5082}
5083pub type TPMI_ALG_ECC_SCHEME = TPM2_ALG_ID;
5084pub type TPMI_ECC_CURVE = TPM2_ECC_CURVE;
5085#[repr(C)]
5086#[derive(Copy, Clone)]
5087pub struct TPMT_ECC_SCHEME {
5088    pub scheme: TPMI_ALG_ECC_SCHEME,
5089    pub details: TPMU_ASYM_SCHEME,
5090}
5091#[test]
5092fn bindgen_test_layout_TPMT_ECC_SCHEME() {
5093    const UNINIT: ::std::mem::MaybeUninit<TPMT_ECC_SCHEME> = ::std::mem::MaybeUninit::uninit();
5094    let ptr = UNINIT.as_ptr();
5095    assert_eq!(
5096        ::std::mem::size_of::<TPMT_ECC_SCHEME>(),
5097        6usize,
5098        concat!("Size of: ", stringify!(TPMT_ECC_SCHEME))
5099    );
5100    assert_eq!(
5101        ::std::mem::align_of::<TPMT_ECC_SCHEME>(),
5102        2usize,
5103        concat!("Alignment of ", stringify!(TPMT_ECC_SCHEME))
5104    );
5105    assert_eq!(
5106        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
5107        0usize,
5108        concat!(
5109            "Offset of field: ",
5110            stringify!(TPMT_ECC_SCHEME),
5111            "::",
5112            stringify!(scheme)
5113        )
5114    );
5115    assert_eq!(
5116        unsafe { ::std::ptr::addr_of!((*ptr).details) as usize - ptr as usize },
5117        2usize,
5118        concat!(
5119            "Offset of field: ",
5120            stringify!(TPMT_ECC_SCHEME),
5121            "::",
5122            stringify!(details)
5123        )
5124    );
5125}
5126impl Default for TPMT_ECC_SCHEME {
5127    fn default() -> Self {
5128        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5129        unsafe {
5130            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5131            s.assume_init()
5132        }
5133    }
5134}
5135#[repr(C)]
5136#[derive(Copy, Clone)]
5137pub struct TPMS_ALGORITHM_DETAIL_ECC {
5138    pub curveID: TPM2_ECC_CURVE,
5139    pub keySize: UINT16,
5140    pub kdf: TPMT_KDF_SCHEME,
5141    pub sign: TPMT_ECC_SCHEME,
5142    pub p: TPM2B_ECC_PARAMETER,
5143    pub a: TPM2B_ECC_PARAMETER,
5144    pub b: TPM2B_ECC_PARAMETER,
5145    pub gX: TPM2B_ECC_PARAMETER,
5146    pub gY: TPM2B_ECC_PARAMETER,
5147    pub n: TPM2B_ECC_PARAMETER,
5148    pub h: TPM2B_ECC_PARAMETER,
5149}
5150#[test]
5151fn bindgen_test_layout_TPMS_ALGORITHM_DETAIL_ECC() {
5152    const UNINIT: ::std::mem::MaybeUninit<TPMS_ALGORITHM_DETAIL_ECC> =
5153        ::std::mem::MaybeUninit::uninit();
5154    let ptr = UNINIT.as_ptr();
5155    assert_eq!(
5156        ::std::mem::size_of::<TPMS_ALGORITHM_DETAIL_ECC>(),
5157        924usize,
5158        concat!("Size of: ", stringify!(TPMS_ALGORITHM_DETAIL_ECC))
5159    );
5160    assert_eq!(
5161        ::std::mem::align_of::<TPMS_ALGORITHM_DETAIL_ECC>(),
5162        2usize,
5163        concat!("Alignment of ", stringify!(TPMS_ALGORITHM_DETAIL_ECC))
5164    );
5165    assert_eq!(
5166        unsafe { ::std::ptr::addr_of!((*ptr).curveID) as usize - ptr as usize },
5167        0usize,
5168        concat!(
5169            "Offset of field: ",
5170            stringify!(TPMS_ALGORITHM_DETAIL_ECC),
5171            "::",
5172            stringify!(curveID)
5173        )
5174    );
5175    assert_eq!(
5176        unsafe { ::std::ptr::addr_of!((*ptr).keySize) as usize - ptr as usize },
5177        2usize,
5178        concat!(
5179            "Offset of field: ",
5180            stringify!(TPMS_ALGORITHM_DETAIL_ECC),
5181            "::",
5182            stringify!(keySize)
5183        )
5184    );
5185    assert_eq!(
5186        unsafe { ::std::ptr::addr_of!((*ptr).kdf) as usize - ptr as usize },
5187        4usize,
5188        concat!(
5189            "Offset of field: ",
5190            stringify!(TPMS_ALGORITHM_DETAIL_ECC),
5191            "::",
5192            stringify!(kdf)
5193        )
5194    );
5195    assert_eq!(
5196        unsafe { ::std::ptr::addr_of!((*ptr).sign) as usize - ptr as usize },
5197        8usize,
5198        concat!(
5199            "Offset of field: ",
5200            stringify!(TPMS_ALGORITHM_DETAIL_ECC),
5201            "::",
5202            stringify!(sign)
5203        )
5204    );
5205    assert_eq!(
5206        unsafe { ::std::ptr::addr_of!((*ptr).p) as usize - ptr as usize },
5207        14usize,
5208        concat!(
5209            "Offset of field: ",
5210            stringify!(TPMS_ALGORITHM_DETAIL_ECC),
5211            "::",
5212            stringify!(p)
5213        )
5214    );
5215    assert_eq!(
5216        unsafe { ::std::ptr::addr_of!((*ptr).a) as usize - ptr as usize },
5217        144usize,
5218        concat!(
5219            "Offset of field: ",
5220            stringify!(TPMS_ALGORITHM_DETAIL_ECC),
5221            "::",
5222            stringify!(a)
5223        )
5224    );
5225    assert_eq!(
5226        unsafe { ::std::ptr::addr_of!((*ptr).b) as usize - ptr as usize },
5227        274usize,
5228        concat!(
5229            "Offset of field: ",
5230            stringify!(TPMS_ALGORITHM_DETAIL_ECC),
5231            "::",
5232            stringify!(b)
5233        )
5234    );
5235    assert_eq!(
5236        unsafe { ::std::ptr::addr_of!((*ptr).gX) as usize - ptr as usize },
5237        404usize,
5238        concat!(
5239            "Offset of field: ",
5240            stringify!(TPMS_ALGORITHM_DETAIL_ECC),
5241            "::",
5242            stringify!(gX)
5243        )
5244    );
5245    assert_eq!(
5246        unsafe { ::std::ptr::addr_of!((*ptr).gY) as usize - ptr as usize },
5247        534usize,
5248        concat!(
5249            "Offset of field: ",
5250            stringify!(TPMS_ALGORITHM_DETAIL_ECC),
5251            "::",
5252            stringify!(gY)
5253        )
5254    );
5255    assert_eq!(
5256        unsafe { ::std::ptr::addr_of!((*ptr).n) as usize - ptr as usize },
5257        664usize,
5258        concat!(
5259            "Offset of field: ",
5260            stringify!(TPMS_ALGORITHM_DETAIL_ECC),
5261            "::",
5262            stringify!(n)
5263        )
5264    );
5265    assert_eq!(
5266        unsafe { ::std::ptr::addr_of!((*ptr).h) as usize - ptr as usize },
5267        794usize,
5268        concat!(
5269            "Offset of field: ",
5270            stringify!(TPMS_ALGORITHM_DETAIL_ECC),
5271            "::",
5272            stringify!(h)
5273        )
5274    );
5275}
5276impl Default for TPMS_ALGORITHM_DETAIL_ECC {
5277    fn default() -> Self {
5278        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5279        unsafe {
5280            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5281            s.assume_init()
5282        }
5283    }
5284}
5285#[repr(C)]
5286#[derive(Debug, Copy, Clone)]
5287pub struct TPMS_SIGNATURE_RSA {
5288    pub hash: TPMI_ALG_HASH,
5289    pub sig: TPM2B_PUBLIC_KEY_RSA,
5290}
5291#[test]
5292fn bindgen_test_layout_TPMS_SIGNATURE_RSA() {
5293    const UNINIT: ::std::mem::MaybeUninit<TPMS_SIGNATURE_RSA> = ::std::mem::MaybeUninit::uninit();
5294    let ptr = UNINIT.as_ptr();
5295    assert_eq!(
5296        ::std::mem::size_of::<TPMS_SIGNATURE_RSA>(),
5297        516usize,
5298        concat!("Size of: ", stringify!(TPMS_SIGNATURE_RSA))
5299    );
5300    assert_eq!(
5301        ::std::mem::align_of::<TPMS_SIGNATURE_RSA>(),
5302        2usize,
5303        concat!("Alignment of ", stringify!(TPMS_SIGNATURE_RSA))
5304    );
5305    assert_eq!(
5306        unsafe { ::std::ptr::addr_of!((*ptr).hash) as usize - ptr as usize },
5307        0usize,
5308        concat!(
5309            "Offset of field: ",
5310            stringify!(TPMS_SIGNATURE_RSA),
5311            "::",
5312            stringify!(hash)
5313        )
5314    );
5315    assert_eq!(
5316        unsafe { ::std::ptr::addr_of!((*ptr).sig) as usize - ptr as usize },
5317        2usize,
5318        concat!(
5319            "Offset of field: ",
5320            stringify!(TPMS_SIGNATURE_RSA),
5321            "::",
5322            stringify!(sig)
5323        )
5324    );
5325}
5326impl Default for TPMS_SIGNATURE_RSA {
5327    fn default() -> Self {
5328        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5329        unsafe {
5330            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5331            s.assume_init()
5332        }
5333    }
5334}
5335pub type TPMS_SIGNATURE_RSASSA = TPMS_SIGNATURE_RSA;
5336pub type TPMS_SIGNATURE_RSAPSS = TPMS_SIGNATURE_RSA;
5337#[repr(C)]
5338#[derive(Debug, Copy, Clone)]
5339pub struct TPMS_SIGNATURE_ECC {
5340    pub hash: TPMI_ALG_HASH,
5341    pub signatureR: TPM2B_ECC_PARAMETER,
5342    pub signatureS: TPM2B_ECC_PARAMETER,
5343}
5344#[test]
5345fn bindgen_test_layout_TPMS_SIGNATURE_ECC() {
5346    const UNINIT: ::std::mem::MaybeUninit<TPMS_SIGNATURE_ECC> = ::std::mem::MaybeUninit::uninit();
5347    let ptr = UNINIT.as_ptr();
5348    assert_eq!(
5349        ::std::mem::size_of::<TPMS_SIGNATURE_ECC>(),
5350        262usize,
5351        concat!("Size of: ", stringify!(TPMS_SIGNATURE_ECC))
5352    );
5353    assert_eq!(
5354        ::std::mem::align_of::<TPMS_SIGNATURE_ECC>(),
5355        2usize,
5356        concat!("Alignment of ", stringify!(TPMS_SIGNATURE_ECC))
5357    );
5358    assert_eq!(
5359        unsafe { ::std::ptr::addr_of!((*ptr).hash) as usize - ptr as usize },
5360        0usize,
5361        concat!(
5362            "Offset of field: ",
5363            stringify!(TPMS_SIGNATURE_ECC),
5364            "::",
5365            stringify!(hash)
5366        )
5367    );
5368    assert_eq!(
5369        unsafe { ::std::ptr::addr_of!((*ptr).signatureR) as usize - ptr as usize },
5370        2usize,
5371        concat!(
5372            "Offset of field: ",
5373            stringify!(TPMS_SIGNATURE_ECC),
5374            "::",
5375            stringify!(signatureR)
5376        )
5377    );
5378    assert_eq!(
5379        unsafe { ::std::ptr::addr_of!((*ptr).signatureS) as usize - ptr as usize },
5380        132usize,
5381        concat!(
5382            "Offset of field: ",
5383            stringify!(TPMS_SIGNATURE_ECC),
5384            "::",
5385            stringify!(signatureS)
5386        )
5387    );
5388}
5389impl Default for TPMS_SIGNATURE_ECC {
5390    fn default() -> Self {
5391        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5392        unsafe {
5393            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5394            s.assume_init()
5395        }
5396    }
5397}
5398pub type TPMS_SIGNATURE_ECDSA = TPMS_SIGNATURE_ECC;
5399pub type TPMS_SIGNATURE_ECDAA = TPMS_SIGNATURE_ECC;
5400pub type TPMS_SIGNATURE_SM2 = TPMS_SIGNATURE_ECC;
5401pub type TPMS_SIGNATURE_ECSCHNORR = TPMS_SIGNATURE_ECC;
5402#[repr(C)]
5403#[derive(Copy, Clone)]
5404pub union TPMU_SIGNATURE {
5405    pub rsassa: TPMS_SIGNATURE_RSASSA,
5406    pub rsapss: TPMS_SIGNATURE_RSAPSS,
5407    pub ecdsa: TPMS_SIGNATURE_ECDSA,
5408    pub ecdaa: TPMS_SIGNATURE_ECDAA,
5409    pub sm2: TPMS_SIGNATURE_SM2,
5410    pub ecschnorr: TPMS_SIGNATURE_ECSCHNORR,
5411    pub hmac: TPMT_HA,
5412    pub any: TPMS_SCHEME_HASH,
5413}
5414#[test]
5415fn bindgen_test_layout_TPMU_SIGNATURE() {
5416    const UNINIT: ::std::mem::MaybeUninit<TPMU_SIGNATURE> = ::std::mem::MaybeUninit::uninit();
5417    let ptr = UNINIT.as_ptr();
5418    assert_eq!(
5419        ::std::mem::size_of::<TPMU_SIGNATURE>(),
5420        516usize,
5421        concat!("Size of: ", stringify!(TPMU_SIGNATURE))
5422    );
5423    assert_eq!(
5424        ::std::mem::align_of::<TPMU_SIGNATURE>(),
5425        2usize,
5426        concat!("Alignment of ", stringify!(TPMU_SIGNATURE))
5427    );
5428    assert_eq!(
5429        unsafe { ::std::ptr::addr_of!((*ptr).rsassa) as usize - ptr as usize },
5430        0usize,
5431        concat!(
5432            "Offset of field: ",
5433            stringify!(TPMU_SIGNATURE),
5434            "::",
5435            stringify!(rsassa)
5436        )
5437    );
5438    assert_eq!(
5439        unsafe { ::std::ptr::addr_of!((*ptr).rsapss) as usize - ptr as usize },
5440        0usize,
5441        concat!(
5442            "Offset of field: ",
5443            stringify!(TPMU_SIGNATURE),
5444            "::",
5445            stringify!(rsapss)
5446        )
5447    );
5448    assert_eq!(
5449        unsafe { ::std::ptr::addr_of!((*ptr).ecdsa) as usize - ptr as usize },
5450        0usize,
5451        concat!(
5452            "Offset of field: ",
5453            stringify!(TPMU_SIGNATURE),
5454            "::",
5455            stringify!(ecdsa)
5456        )
5457    );
5458    assert_eq!(
5459        unsafe { ::std::ptr::addr_of!((*ptr).ecdaa) as usize - ptr as usize },
5460        0usize,
5461        concat!(
5462            "Offset of field: ",
5463            stringify!(TPMU_SIGNATURE),
5464            "::",
5465            stringify!(ecdaa)
5466        )
5467    );
5468    assert_eq!(
5469        unsafe { ::std::ptr::addr_of!((*ptr).sm2) as usize - ptr as usize },
5470        0usize,
5471        concat!(
5472            "Offset of field: ",
5473            stringify!(TPMU_SIGNATURE),
5474            "::",
5475            stringify!(sm2)
5476        )
5477    );
5478    assert_eq!(
5479        unsafe { ::std::ptr::addr_of!((*ptr).ecschnorr) as usize - ptr as usize },
5480        0usize,
5481        concat!(
5482            "Offset of field: ",
5483            stringify!(TPMU_SIGNATURE),
5484            "::",
5485            stringify!(ecschnorr)
5486        )
5487    );
5488    assert_eq!(
5489        unsafe { ::std::ptr::addr_of!((*ptr).hmac) as usize - ptr as usize },
5490        0usize,
5491        concat!(
5492            "Offset of field: ",
5493            stringify!(TPMU_SIGNATURE),
5494            "::",
5495            stringify!(hmac)
5496        )
5497    );
5498    assert_eq!(
5499        unsafe { ::std::ptr::addr_of!((*ptr).any) as usize - ptr as usize },
5500        0usize,
5501        concat!(
5502            "Offset of field: ",
5503            stringify!(TPMU_SIGNATURE),
5504            "::",
5505            stringify!(any)
5506        )
5507    );
5508}
5509impl Default for TPMU_SIGNATURE {
5510    fn default() -> Self {
5511        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5512        unsafe {
5513            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5514            s.assume_init()
5515        }
5516    }
5517}
5518#[repr(C)]
5519#[derive(Copy, Clone)]
5520pub struct TPMT_SIGNATURE {
5521    pub sigAlg: TPMI_ALG_SIG_SCHEME,
5522    pub signature: TPMU_SIGNATURE,
5523}
5524#[test]
5525fn bindgen_test_layout_TPMT_SIGNATURE() {
5526    const UNINIT: ::std::mem::MaybeUninit<TPMT_SIGNATURE> = ::std::mem::MaybeUninit::uninit();
5527    let ptr = UNINIT.as_ptr();
5528    assert_eq!(
5529        ::std::mem::size_of::<TPMT_SIGNATURE>(),
5530        518usize,
5531        concat!("Size of: ", stringify!(TPMT_SIGNATURE))
5532    );
5533    assert_eq!(
5534        ::std::mem::align_of::<TPMT_SIGNATURE>(),
5535        2usize,
5536        concat!("Alignment of ", stringify!(TPMT_SIGNATURE))
5537    );
5538    assert_eq!(
5539        unsafe { ::std::ptr::addr_of!((*ptr).sigAlg) as usize - ptr as usize },
5540        0usize,
5541        concat!(
5542            "Offset of field: ",
5543            stringify!(TPMT_SIGNATURE),
5544            "::",
5545            stringify!(sigAlg)
5546        )
5547    );
5548    assert_eq!(
5549        unsafe { ::std::ptr::addr_of!((*ptr).signature) as usize - ptr as usize },
5550        2usize,
5551        concat!(
5552            "Offset of field: ",
5553            stringify!(TPMT_SIGNATURE),
5554            "::",
5555            stringify!(signature)
5556        )
5557    );
5558}
5559impl Default for TPMT_SIGNATURE {
5560    fn default() -> Self {
5561        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5562        unsafe {
5563            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5564            s.assume_init()
5565        }
5566    }
5567}
5568#[repr(C)]
5569#[derive(Copy, Clone)]
5570pub union TPMU_ENCRYPTED_SECRET {
5571    pub ecc: [BYTE; 260usize],
5572    pub rsa: [BYTE; 512usize],
5573    pub symmetric: [BYTE; 66usize],
5574    pub keyedHash: [BYTE; 66usize],
5575}
5576#[test]
5577fn bindgen_test_layout_TPMU_ENCRYPTED_SECRET() {
5578    const UNINIT: ::std::mem::MaybeUninit<TPMU_ENCRYPTED_SECRET> =
5579        ::std::mem::MaybeUninit::uninit();
5580    let ptr = UNINIT.as_ptr();
5581    assert_eq!(
5582        ::std::mem::size_of::<TPMU_ENCRYPTED_SECRET>(),
5583        512usize,
5584        concat!("Size of: ", stringify!(TPMU_ENCRYPTED_SECRET))
5585    );
5586    assert_eq!(
5587        ::std::mem::align_of::<TPMU_ENCRYPTED_SECRET>(),
5588        1usize,
5589        concat!("Alignment of ", stringify!(TPMU_ENCRYPTED_SECRET))
5590    );
5591    assert_eq!(
5592        unsafe { ::std::ptr::addr_of!((*ptr).ecc) as usize - ptr as usize },
5593        0usize,
5594        concat!(
5595            "Offset of field: ",
5596            stringify!(TPMU_ENCRYPTED_SECRET),
5597            "::",
5598            stringify!(ecc)
5599        )
5600    );
5601    assert_eq!(
5602        unsafe { ::std::ptr::addr_of!((*ptr).rsa) as usize - ptr as usize },
5603        0usize,
5604        concat!(
5605            "Offset of field: ",
5606            stringify!(TPMU_ENCRYPTED_SECRET),
5607            "::",
5608            stringify!(rsa)
5609        )
5610    );
5611    assert_eq!(
5612        unsafe { ::std::ptr::addr_of!((*ptr).symmetric) as usize - ptr as usize },
5613        0usize,
5614        concat!(
5615            "Offset of field: ",
5616            stringify!(TPMU_ENCRYPTED_SECRET),
5617            "::",
5618            stringify!(symmetric)
5619        )
5620    );
5621    assert_eq!(
5622        unsafe { ::std::ptr::addr_of!((*ptr).keyedHash) as usize - ptr as usize },
5623        0usize,
5624        concat!(
5625            "Offset of field: ",
5626            stringify!(TPMU_ENCRYPTED_SECRET),
5627            "::",
5628            stringify!(keyedHash)
5629        )
5630    );
5631}
5632impl Default for TPMU_ENCRYPTED_SECRET {
5633    fn default() -> Self {
5634        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5635        unsafe {
5636            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5637            s.assume_init()
5638        }
5639    }
5640}
5641#[repr(C)]
5642#[derive(Debug, Copy, Clone)]
5643pub struct TPM2B_ENCRYPTED_SECRET {
5644    pub size: UINT16,
5645    pub secret: [BYTE; 512usize],
5646}
5647#[test]
5648fn bindgen_test_layout_TPM2B_ENCRYPTED_SECRET() {
5649    const UNINIT: ::std::mem::MaybeUninit<TPM2B_ENCRYPTED_SECRET> =
5650        ::std::mem::MaybeUninit::uninit();
5651    let ptr = UNINIT.as_ptr();
5652    assert_eq!(
5653        ::std::mem::size_of::<TPM2B_ENCRYPTED_SECRET>(),
5654        514usize,
5655        concat!("Size of: ", stringify!(TPM2B_ENCRYPTED_SECRET))
5656    );
5657    assert_eq!(
5658        ::std::mem::align_of::<TPM2B_ENCRYPTED_SECRET>(),
5659        2usize,
5660        concat!("Alignment of ", stringify!(TPM2B_ENCRYPTED_SECRET))
5661    );
5662    assert_eq!(
5663        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
5664        0usize,
5665        concat!(
5666            "Offset of field: ",
5667            stringify!(TPM2B_ENCRYPTED_SECRET),
5668            "::",
5669            stringify!(size)
5670        )
5671    );
5672    assert_eq!(
5673        unsafe { ::std::ptr::addr_of!((*ptr).secret) as usize - ptr as usize },
5674        2usize,
5675        concat!(
5676            "Offset of field: ",
5677            stringify!(TPM2B_ENCRYPTED_SECRET),
5678            "::",
5679            stringify!(secret)
5680        )
5681    );
5682}
5683impl Default for TPM2B_ENCRYPTED_SECRET {
5684    fn default() -> Self {
5685        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5686        unsafe {
5687            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5688            s.assume_init()
5689        }
5690    }
5691}
5692pub type TPMI_ALG_PUBLIC = TPM2_ALG_ID;
5693#[repr(C)]
5694#[derive(Copy, Clone)]
5695pub union TPMU_PUBLIC_ID {
5696    pub keyedHash: TPM2B_DIGEST,
5697    pub sym: TPM2B_DIGEST,
5698    pub rsa: TPM2B_PUBLIC_KEY_RSA,
5699    pub ecc: TPMS_ECC_POINT,
5700}
5701#[test]
5702fn bindgen_test_layout_TPMU_PUBLIC_ID() {
5703    const UNINIT: ::std::mem::MaybeUninit<TPMU_PUBLIC_ID> = ::std::mem::MaybeUninit::uninit();
5704    let ptr = UNINIT.as_ptr();
5705    assert_eq!(
5706        ::std::mem::size_of::<TPMU_PUBLIC_ID>(),
5707        514usize,
5708        concat!("Size of: ", stringify!(TPMU_PUBLIC_ID))
5709    );
5710    assert_eq!(
5711        ::std::mem::align_of::<TPMU_PUBLIC_ID>(),
5712        2usize,
5713        concat!("Alignment of ", stringify!(TPMU_PUBLIC_ID))
5714    );
5715    assert_eq!(
5716        unsafe { ::std::ptr::addr_of!((*ptr).keyedHash) as usize - ptr as usize },
5717        0usize,
5718        concat!(
5719            "Offset of field: ",
5720            stringify!(TPMU_PUBLIC_ID),
5721            "::",
5722            stringify!(keyedHash)
5723        )
5724    );
5725    assert_eq!(
5726        unsafe { ::std::ptr::addr_of!((*ptr).sym) as usize - ptr as usize },
5727        0usize,
5728        concat!(
5729            "Offset of field: ",
5730            stringify!(TPMU_PUBLIC_ID),
5731            "::",
5732            stringify!(sym)
5733        )
5734    );
5735    assert_eq!(
5736        unsafe { ::std::ptr::addr_of!((*ptr).rsa) as usize - ptr as usize },
5737        0usize,
5738        concat!(
5739            "Offset of field: ",
5740            stringify!(TPMU_PUBLIC_ID),
5741            "::",
5742            stringify!(rsa)
5743        )
5744    );
5745    assert_eq!(
5746        unsafe { ::std::ptr::addr_of!((*ptr).ecc) as usize - ptr as usize },
5747        0usize,
5748        concat!(
5749            "Offset of field: ",
5750            stringify!(TPMU_PUBLIC_ID),
5751            "::",
5752            stringify!(ecc)
5753        )
5754    );
5755}
5756impl Default for TPMU_PUBLIC_ID {
5757    fn default() -> Self {
5758        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5759        unsafe {
5760            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5761            s.assume_init()
5762        }
5763    }
5764}
5765#[repr(C)]
5766#[derive(Copy, Clone)]
5767pub struct TPMS_KEYEDHASH_PARMS {
5768    pub scheme: TPMT_KEYEDHASH_SCHEME,
5769}
5770#[test]
5771fn bindgen_test_layout_TPMS_KEYEDHASH_PARMS() {
5772    const UNINIT: ::std::mem::MaybeUninit<TPMS_KEYEDHASH_PARMS> = ::std::mem::MaybeUninit::uninit();
5773    let ptr = UNINIT.as_ptr();
5774    assert_eq!(
5775        ::std::mem::size_of::<TPMS_KEYEDHASH_PARMS>(),
5776        6usize,
5777        concat!("Size of: ", stringify!(TPMS_KEYEDHASH_PARMS))
5778    );
5779    assert_eq!(
5780        ::std::mem::align_of::<TPMS_KEYEDHASH_PARMS>(),
5781        2usize,
5782        concat!("Alignment of ", stringify!(TPMS_KEYEDHASH_PARMS))
5783    );
5784    assert_eq!(
5785        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
5786        0usize,
5787        concat!(
5788            "Offset of field: ",
5789            stringify!(TPMS_KEYEDHASH_PARMS),
5790            "::",
5791            stringify!(scheme)
5792        )
5793    );
5794}
5795impl Default for TPMS_KEYEDHASH_PARMS {
5796    fn default() -> Self {
5797        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5798        unsafe {
5799            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5800            s.assume_init()
5801        }
5802    }
5803}
5804#[repr(C)]
5805#[derive(Copy, Clone)]
5806pub struct TPMS_ASYM_PARMS {
5807    pub symmetric: TPMT_SYM_DEF_OBJECT,
5808    pub scheme: TPMT_ASYM_SCHEME,
5809}
5810#[test]
5811fn bindgen_test_layout_TPMS_ASYM_PARMS() {
5812    const UNINIT: ::std::mem::MaybeUninit<TPMS_ASYM_PARMS> = ::std::mem::MaybeUninit::uninit();
5813    let ptr = UNINIT.as_ptr();
5814    assert_eq!(
5815        ::std::mem::size_of::<TPMS_ASYM_PARMS>(),
5816        12usize,
5817        concat!("Size of: ", stringify!(TPMS_ASYM_PARMS))
5818    );
5819    assert_eq!(
5820        ::std::mem::align_of::<TPMS_ASYM_PARMS>(),
5821        2usize,
5822        concat!("Alignment of ", stringify!(TPMS_ASYM_PARMS))
5823    );
5824    assert_eq!(
5825        unsafe { ::std::ptr::addr_of!((*ptr).symmetric) as usize - ptr as usize },
5826        0usize,
5827        concat!(
5828            "Offset of field: ",
5829            stringify!(TPMS_ASYM_PARMS),
5830            "::",
5831            stringify!(symmetric)
5832        )
5833    );
5834    assert_eq!(
5835        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
5836        6usize,
5837        concat!(
5838            "Offset of field: ",
5839            stringify!(TPMS_ASYM_PARMS),
5840            "::",
5841            stringify!(scheme)
5842        )
5843    );
5844}
5845impl Default for TPMS_ASYM_PARMS {
5846    fn default() -> Self {
5847        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5848        unsafe {
5849            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5850            s.assume_init()
5851        }
5852    }
5853}
5854#[repr(C)]
5855#[derive(Copy, Clone)]
5856pub struct TPMS_RSA_PARMS {
5857    pub symmetric: TPMT_SYM_DEF_OBJECT,
5858    pub scheme: TPMT_RSA_SCHEME,
5859    pub keyBits: TPMI_RSA_KEY_BITS,
5860    pub exponent: UINT32,
5861}
5862#[test]
5863fn bindgen_test_layout_TPMS_RSA_PARMS() {
5864    const UNINIT: ::std::mem::MaybeUninit<TPMS_RSA_PARMS> = ::std::mem::MaybeUninit::uninit();
5865    let ptr = UNINIT.as_ptr();
5866    assert_eq!(
5867        ::std::mem::size_of::<TPMS_RSA_PARMS>(),
5868        20usize,
5869        concat!("Size of: ", stringify!(TPMS_RSA_PARMS))
5870    );
5871    assert_eq!(
5872        ::std::mem::align_of::<TPMS_RSA_PARMS>(),
5873        4usize,
5874        concat!("Alignment of ", stringify!(TPMS_RSA_PARMS))
5875    );
5876    assert_eq!(
5877        unsafe { ::std::ptr::addr_of!((*ptr).symmetric) as usize - ptr as usize },
5878        0usize,
5879        concat!(
5880            "Offset of field: ",
5881            stringify!(TPMS_RSA_PARMS),
5882            "::",
5883            stringify!(symmetric)
5884        )
5885    );
5886    assert_eq!(
5887        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
5888        6usize,
5889        concat!(
5890            "Offset of field: ",
5891            stringify!(TPMS_RSA_PARMS),
5892            "::",
5893            stringify!(scheme)
5894        )
5895    );
5896    assert_eq!(
5897        unsafe { ::std::ptr::addr_of!((*ptr).keyBits) as usize - ptr as usize },
5898        12usize,
5899        concat!(
5900            "Offset of field: ",
5901            stringify!(TPMS_RSA_PARMS),
5902            "::",
5903            stringify!(keyBits)
5904        )
5905    );
5906    assert_eq!(
5907        unsafe { ::std::ptr::addr_of!((*ptr).exponent) as usize - ptr as usize },
5908        16usize,
5909        concat!(
5910            "Offset of field: ",
5911            stringify!(TPMS_RSA_PARMS),
5912            "::",
5913            stringify!(exponent)
5914        )
5915    );
5916}
5917impl Default for TPMS_RSA_PARMS {
5918    fn default() -> Self {
5919        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5920        unsafe {
5921            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5922            s.assume_init()
5923        }
5924    }
5925}
5926#[repr(C)]
5927#[derive(Copy, Clone)]
5928pub struct TPMS_ECC_PARMS {
5929    pub symmetric: TPMT_SYM_DEF_OBJECT,
5930    pub scheme: TPMT_ECC_SCHEME,
5931    pub curveID: TPMI_ECC_CURVE,
5932    pub kdf: TPMT_KDF_SCHEME,
5933}
5934#[test]
5935fn bindgen_test_layout_TPMS_ECC_PARMS() {
5936    const UNINIT: ::std::mem::MaybeUninit<TPMS_ECC_PARMS> = ::std::mem::MaybeUninit::uninit();
5937    let ptr = UNINIT.as_ptr();
5938    assert_eq!(
5939        ::std::mem::size_of::<TPMS_ECC_PARMS>(),
5940        18usize,
5941        concat!("Size of: ", stringify!(TPMS_ECC_PARMS))
5942    );
5943    assert_eq!(
5944        ::std::mem::align_of::<TPMS_ECC_PARMS>(),
5945        2usize,
5946        concat!("Alignment of ", stringify!(TPMS_ECC_PARMS))
5947    );
5948    assert_eq!(
5949        unsafe { ::std::ptr::addr_of!((*ptr).symmetric) as usize - ptr as usize },
5950        0usize,
5951        concat!(
5952            "Offset of field: ",
5953            stringify!(TPMS_ECC_PARMS),
5954            "::",
5955            stringify!(symmetric)
5956        )
5957    );
5958    assert_eq!(
5959        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
5960        6usize,
5961        concat!(
5962            "Offset of field: ",
5963            stringify!(TPMS_ECC_PARMS),
5964            "::",
5965            stringify!(scheme)
5966        )
5967    );
5968    assert_eq!(
5969        unsafe { ::std::ptr::addr_of!((*ptr).curveID) as usize - ptr as usize },
5970        12usize,
5971        concat!(
5972            "Offset of field: ",
5973            stringify!(TPMS_ECC_PARMS),
5974            "::",
5975            stringify!(curveID)
5976        )
5977    );
5978    assert_eq!(
5979        unsafe { ::std::ptr::addr_of!((*ptr).kdf) as usize - ptr as usize },
5980        14usize,
5981        concat!(
5982            "Offset of field: ",
5983            stringify!(TPMS_ECC_PARMS),
5984            "::",
5985            stringify!(kdf)
5986        )
5987    );
5988}
5989impl Default for TPMS_ECC_PARMS {
5990    fn default() -> Self {
5991        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5992        unsafe {
5993            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5994            s.assume_init()
5995        }
5996    }
5997}
5998#[repr(C)]
5999#[derive(Copy, Clone)]
6000pub union TPMU_PUBLIC_PARMS {
6001    pub keyedHashDetail: TPMS_KEYEDHASH_PARMS,
6002    pub symDetail: TPMS_SYMCIPHER_PARMS,
6003    pub rsaDetail: TPMS_RSA_PARMS,
6004    pub eccDetail: TPMS_ECC_PARMS,
6005    pub asymDetail: TPMS_ASYM_PARMS,
6006}
6007#[test]
6008fn bindgen_test_layout_TPMU_PUBLIC_PARMS() {
6009    const UNINIT: ::std::mem::MaybeUninit<TPMU_PUBLIC_PARMS> = ::std::mem::MaybeUninit::uninit();
6010    let ptr = UNINIT.as_ptr();
6011    assert_eq!(
6012        ::std::mem::size_of::<TPMU_PUBLIC_PARMS>(),
6013        20usize,
6014        concat!("Size of: ", stringify!(TPMU_PUBLIC_PARMS))
6015    );
6016    assert_eq!(
6017        ::std::mem::align_of::<TPMU_PUBLIC_PARMS>(),
6018        4usize,
6019        concat!("Alignment of ", stringify!(TPMU_PUBLIC_PARMS))
6020    );
6021    assert_eq!(
6022        unsafe { ::std::ptr::addr_of!((*ptr).keyedHashDetail) as usize - ptr as usize },
6023        0usize,
6024        concat!(
6025            "Offset of field: ",
6026            stringify!(TPMU_PUBLIC_PARMS),
6027            "::",
6028            stringify!(keyedHashDetail)
6029        )
6030    );
6031    assert_eq!(
6032        unsafe { ::std::ptr::addr_of!((*ptr).symDetail) as usize - ptr as usize },
6033        0usize,
6034        concat!(
6035            "Offset of field: ",
6036            stringify!(TPMU_PUBLIC_PARMS),
6037            "::",
6038            stringify!(symDetail)
6039        )
6040    );
6041    assert_eq!(
6042        unsafe { ::std::ptr::addr_of!((*ptr).rsaDetail) as usize - ptr as usize },
6043        0usize,
6044        concat!(
6045            "Offset of field: ",
6046            stringify!(TPMU_PUBLIC_PARMS),
6047            "::",
6048            stringify!(rsaDetail)
6049        )
6050    );
6051    assert_eq!(
6052        unsafe { ::std::ptr::addr_of!((*ptr).eccDetail) as usize - ptr as usize },
6053        0usize,
6054        concat!(
6055            "Offset of field: ",
6056            stringify!(TPMU_PUBLIC_PARMS),
6057            "::",
6058            stringify!(eccDetail)
6059        )
6060    );
6061    assert_eq!(
6062        unsafe { ::std::ptr::addr_of!((*ptr).asymDetail) as usize - ptr as usize },
6063        0usize,
6064        concat!(
6065            "Offset of field: ",
6066            stringify!(TPMU_PUBLIC_PARMS),
6067            "::",
6068            stringify!(asymDetail)
6069        )
6070    );
6071}
6072impl Default for TPMU_PUBLIC_PARMS {
6073    fn default() -> Self {
6074        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6075        unsafe {
6076            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6077            s.assume_init()
6078        }
6079    }
6080}
6081#[repr(C)]
6082#[derive(Copy, Clone)]
6083pub struct TPMT_PUBLIC_PARMS {
6084    pub type_: TPMI_ALG_PUBLIC,
6085    pub parameters: TPMU_PUBLIC_PARMS,
6086}
6087#[test]
6088fn bindgen_test_layout_TPMT_PUBLIC_PARMS() {
6089    const UNINIT: ::std::mem::MaybeUninit<TPMT_PUBLIC_PARMS> = ::std::mem::MaybeUninit::uninit();
6090    let ptr = UNINIT.as_ptr();
6091    assert_eq!(
6092        ::std::mem::size_of::<TPMT_PUBLIC_PARMS>(),
6093        24usize,
6094        concat!("Size of: ", stringify!(TPMT_PUBLIC_PARMS))
6095    );
6096    assert_eq!(
6097        ::std::mem::align_of::<TPMT_PUBLIC_PARMS>(),
6098        4usize,
6099        concat!("Alignment of ", stringify!(TPMT_PUBLIC_PARMS))
6100    );
6101    assert_eq!(
6102        unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize },
6103        0usize,
6104        concat!(
6105            "Offset of field: ",
6106            stringify!(TPMT_PUBLIC_PARMS),
6107            "::",
6108            stringify!(type_)
6109        )
6110    );
6111    assert_eq!(
6112        unsafe { ::std::ptr::addr_of!((*ptr).parameters) as usize - ptr as usize },
6113        4usize,
6114        concat!(
6115            "Offset of field: ",
6116            stringify!(TPMT_PUBLIC_PARMS),
6117            "::",
6118            stringify!(parameters)
6119        )
6120    );
6121}
6122impl Default for TPMT_PUBLIC_PARMS {
6123    fn default() -> Self {
6124        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6125        unsafe {
6126            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6127            s.assume_init()
6128        }
6129    }
6130}
6131#[repr(C)]
6132#[derive(Copy, Clone)]
6133pub struct TPMT_PUBLIC {
6134    pub type_: TPMI_ALG_PUBLIC,
6135    pub nameAlg: TPMI_ALG_HASH,
6136    pub objectAttributes: TPMA_OBJECT,
6137    pub authPolicy: TPM2B_DIGEST,
6138    pub parameters: TPMU_PUBLIC_PARMS,
6139    pub unique: TPMU_PUBLIC_ID,
6140}
6141#[test]
6142fn bindgen_test_layout_TPMT_PUBLIC() {
6143    const UNINIT: ::std::mem::MaybeUninit<TPMT_PUBLIC> = ::std::mem::MaybeUninit::uninit();
6144    let ptr = UNINIT.as_ptr();
6145    assert_eq!(
6146        ::std::mem::size_of::<TPMT_PUBLIC>(),
6147        612usize,
6148        concat!("Size of: ", stringify!(TPMT_PUBLIC))
6149    );
6150    assert_eq!(
6151        ::std::mem::align_of::<TPMT_PUBLIC>(),
6152        4usize,
6153        concat!("Alignment of ", stringify!(TPMT_PUBLIC))
6154    );
6155    assert_eq!(
6156        unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize },
6157        0usize,
6158        concat!(
6159            "Offset of field: ",
6160            stringify!(TPMT_PUBLIC),
6161            "::",
6162            stringify!(type_)
6163        )
6164    );
6165    assert_eq!(
6166        unsafe { ::std::ptr::addr_of!((*ptr).nameAlg) as usize - ptr as usize },
6167        2usize,
6168        concat!(
6169            "Offset of field: ",
6170            stringify!(TPMT_PUBLIC),
6171            "::",
6172            stringify!(nameAlg)
6173        )
6174    );
6175    assert_eq!(
6176        unsafe { ::std::ptr::addr_of!((*ptr).objectAttributes) as usize - ptr as usize },
6177        4usize,
6178        concat!(
6179            "Offset of field: ",
6180            stringify!(TPMT_PUBLIC),
6181            "::",
6182            stringify!(objectAttributes)
6183        )
6184    );
6185    assert_eq!(
6186        unsafe { ::std::ptr::addr_of!((*ptr).authPolicy) as usize - ptr as usize },
6187        8usize,
6188        concat!(
6189            "Offset of field: ",
6190            stringify!(TPMT_PUBLIC),
6191            "::",
6192            stringify!(authPolicy)
6193        )
6194    );
6195    assert_eq!(
6196        unsafe { ::std::ptr::addr_of!((*ptr).parameters) as usize - ptr as usize },
6197        76usize,
6198        concat!(
6199            "Offset of field: ",
6200            stringify!(TPMT_PUBLIC),
6201            "::",
6202            stringify!(parameters)
6203        )
6204    );
6205    assert_eq!(
6206        unsafe { ::std::ptr::addr_of!((*ptr).unique) as usize - ptr as usize },
6207        96usize,
6208        concat!(
6209            "Offset of field: ",
6210            stringify!(TPMT_PUBLIC),
6211            "::",
6212            stringify!(unique)
6213        )
6214    );
6215}
6216impl Default for TPMT_PUBLIC {
6217    fn default() -> Self {
6218        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6219        unsafe {
6220            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6221            s.assume_init()
6222        }
6223    }
6224}
6225#[repr(C)]
6226#[derive(Copy, Clone)]
6227pub struct TPM2B_PUBLIC {
6228    pub size: UINT16,
6229    pub publicArea: TPMT_PUBLIC,
6230}
6231#[test]
6232fn bindgen_test_layout_TPM2B_PUBLIC() {
6233    const UNINIT: ::std::mem::MaybeUninit<TPM2B_PUBLIC> = ::std::mem::MaybeUninit::uninit();
6234    let ptr = UNINIT.as_ptr();
6235    assert_eq!(
6236        ::std::mem::size_of::<TPM2B_PUBLIC>(),
6237        616usize,
6238        concat!("Size of: ", stringify!(TPM2B_PUBLIC))
6239    );
6240    assert_eq!(
6241        ::std::mem::align_of::<TPM2B_PUBLIC>(),
6242        4usize,
6243        concat!("Alignment of ", stringify!(TPM2B_PUBLIC))
6244    );
6245    assert_eq!(
6246        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
6247        0usize,
6248        concat!(
6249            "Offset of field: ",
6250            stringify!(TPM2B_PUBLIC),
6251            "::",
6252            stringify!(size)
6253        )
6254    );
6255    assert_eq!(
6256        unsafe { ::std::ptr::addr_of!((*ptr).publicArea) as usize - ptr as usize },
6257        4usize,
6258        concat!(
6259            "Offset of field: ",
6260            stringify!(TPM2B_PUBLIC),
6261            "::",
6262            stringify!(publicArea)
6263        )
6264    );
6265}
6266impl Default for TPM2B_PUBLIC {
6267    fn default() -> Self {
6268        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6269        unsafe {
6270            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6271            s.assume_init()
6272        }
6273    }
6274}
6275#[repr(C)]
6276#[derive(Debug, Copy, Clone)]
6277pub struct TPM2B_TEMPLATE {
6278    pub size: UINT16,
6279    pub buffer: [BYTE; 612usize],
6280}
6281#[test]
6282fn bindgen_test_layout_TPM2B_TEMPLATE() {
6283    const UNINIT: ::std::mem::MaybeUninit<TPM2B_TEMPLATE> = ::std::mem::MaybeUninit::uninit();
6284    let ptr = UNINIT.as_ptr();
6285    assert_eq!(
6286        ::std::mem::size_of::<TPM2B_TEMPLATE>(),
6287        614usize,
6288        concat!("Size of: ", stringify!(TPM2B_TEMPLATE))
6289    );
6290    assert_eq!(
6291        ::std::mem::align_of::<TPM2B_TEMPLATE>(),
6292        2usize,
6293        concat!("Alignment of ", stringify!(TPM2B_TEMPLATE))
6294    );
6295    assert_eq!(
6296        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
6297        0usize,
6298        concat!(
6299            "Offset of field: ",
6300            stringify!(TPM2B_TEMPLATE),
6301            "::",
6302            stringify!(size)
6303        )
6304    );
6305    assert_eq!(
6306        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
6307        2usize,
6308        concat!(
6309            "Offset of field: ",
6310            stringify!(TPM2B_TEMPLATE),
6311            "::",
6312            stringify!(buffer)
6313        )
6314    );
6315}
6316impl Default for TPM2B_TEMPLATE {
6317    fn default() -> Self {
6318        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6319        unsafe {
6320            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6321            s.assume_init()
6322        }
6323    }
6324}
6325#[repr(C)]
6326#[derive(Debug, Copy, Clone)]
6327pub struct TPM2B_PRIVATE_VENDOR_SPECIFIC {
6328    pub size: UINT16,
6329    pub buffer: [BYTE; 1280usize],
6330}
6331#[test]
6332fn bindgen_test_layout_TPM2B_PRIVATE_VENDOR_SPECIFIC() {
6333    const UNINIT: ::std::mem::MaybeUninit<TPM2B_PRIVATE_VENDOR_SPECIFIC> =
6334        ::std::mem::MaybeUninit::uninit();
6335    let ptr = UNINIT.as_ptr();
6336    assert_eq!(
6337        ::std::mem::size_of::<TPM2B_PRIVATE_VENDOR_SPECIFIC>(),
6338        1282usize,
6339        concat!("Size of: ", stringify!(TPM2B_PRIVATE_VENDOR_SPECIFIC))
6340    );
6341    assert_eq!(
6342        ::std::mem::align_of::<TPM2B_PRIVATE_VENDOR_SPECIFIC>(),
6343        2usize,
6344        concat!("Alignment of ", stringify!(TPM2B_PRIVATE_VENDOR_SPECIFIC))
6345    );
6346    assert_eq!(
6347        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
6348        0usize,
6349        concat!(
6350            "Offset of field: ",
6351            stringify!(TPM2B_PRIVATE_VENDOR_SPECIFIC),
6352            "::",
6353            stringify!(size)
6354        )
6355    );
6356    assert_eq!(
6357        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
6358        2usize,
6359        concat!(
6360            "Offset of field: ",
6361            stringify!(TPM2B_PRIVATE_VENDOR_SPECIFIC),
6362            "::",
6363            stringify!(buffer)
6364        )
6365    );
6366}
6367impl Default for TPM2B_PRIVATE_VENDOR_SPECIFIC {
6368    fn default() -> Self {
6369        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6370        unsafe {
6371            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6372            s.assume_init()
6373        }
6374    }
6375}
6376#[repr(C)]
6377#[derive(Copy, Clone)]
6378pub union TPMU_SENSITIVE_COMPOSITE {
6379    pub rsa: TPM2B_PRIVATE_KEY_RSA,
6380    pub ecc: TPM2B_ECC_PARAMETER,
6381    pub bits: TPM2B_SENSITIVE_DATA,
6382    pub sym: TPM2B_SYM_KEY,
6383    pub any: TPM2B_PRIVATE_VENDOR_SPECIFIC,
6384}
6385#[test]
6386fn bindgen_test_layout_TPMU_SENSITIVE_COMPOSITE() {
6387    const UNINIT: ::std::mem::MaybeUninit<TPMU_SENSITIVE_COMPOSITE> =
6388        ::std::mem::MaybeUninit::uninit();
6389    let ptr = UNINIT.as_ptr();
6390    assert_eq!(
6391        ::std::mem::size_of::<TPMU_SENSITIVE_COMPOSITE>(),
6392        1282usize,
6393        concat!("Size of: ", stringify!(TPMU_SENSITIVE_COMPOSITE))
6394    );
6395    assert_eq!(
6396        ::std::mem::align_of::<TPMU_SENSITIVE_COMPOSITE>(),
6397        2usize,
6398        concat!("Alignment of ", stringify!(TPMU_SENSITIVE_COMPOSITE))
6399    );
6400    assert_eq!(
6401        unsafe { ::std::ptr::addr_of!((*ptr).rsa) as usize - ptr as usize },
6402        0usize,
6403        concat!(
6404            "Offset of field: ",
6405            stringify!(TPMU_SENSITIVE_COMPOSITE),
6406            "::",
6407            stringify!(rsa)
6408        )
6409    );
6410    assert_eq!(
6411        unsafe { ::std::ptr::addr_of!((*ptr).ecc) as usize - ptr as usize },
6412        0usize,
6413        concat!(
6414            "Offset of field: ",
6415            stringify!(TPMU_SENSITIVE_COMPOSITE),
6416            "::",
6417            stringify!(ecc)
6418        )
6419    );
6420    assert_eq!(
6421        unsafe { ::std::ptr::addr_of!((*ptr).bits) as usize - ptr as usize },
6422        0usize,
6423        concat!(
6424            "Offset of field: ",
6425            stringify!(TPMU_SENSITIVE_COMPOSITE),
6426            "::",
6427            stringify!(bits)
6428        )
6429    );
6430    assert_eq!(
6431        unsafe { ::std::ptr::addr_of!((*ptr).sym) as usize - ptr as usize },
6432        0usize,
6433        concat!(
6434            "Offset of field: ",
6435            stringify!(TPMU_SENSITIVE_COMPOSITE),
6436            "::",
6437            stringify!(sym)
6438        )
6439    );
6440    assert_eq!(
6441        unsafe { ::std::ptr::addr_of!((*ptr).any) as usize - ptr as usize },
6442        0usize,
6443        concat!(
6444            "Offset of field: ",
6445            stringify!(TPMU_SENSITIVE_COMPOSITE),
6446            "::",
6447            stringify!(any)
6448        )
6449    );
6450}
6451impl Default for TPMU_SENSITIVE_COMPOSITE {
6452    fn default() -> Self {
6453        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6454        unsafe {
6455            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6456            s.assume_init()
6457        }
6458    }
6459}
6460#[repr(C)]
6461#[derive(Copy, Clone)]
6462pub struct TPMT_SENSITIVE {
6463    pub sensitiveType: TPMI_ALG_PUBLIC,
6464    pub authValue: TPM2B_AUTH,
6465    pub seedValue: TPM2B_DIGEST,
6466    pub sensitive: TPMU_SENSITIVE_COMPOSITE,
6467}
6468#[test]
6469fn bindgen_test_layout_TPMT_SENSITIVE() {
6470    const UNINIT: ::std::mem::MaybeUninit<TPMT_SENSITIVE> = ::std::mem::MaybeUninit::uninit();
6471    let ptr = UNINIT.as_ptr();
6472    assert_eq!(
6473        ::std::mem::size_of::<TPMT_SENSITIVE>(),
6474        1416usize,
6475        concat!("Size of: ", stringify!(TPMT_SENSITIVE))
6476    );
6477    assert_eq!(
6478        ::std::mem::align_of::<TPMT_SENSITIVE>(),
6479        2usize,
6480        concat!("Alignment of ", stringify!(TPMT_SENSITIVE))
6481    );
6482    assert_eq!(
6483        unsafe { ::std::ptr::addr_of!((*ptr).sensitiveType) as usize - ptr as usize },
6484        0usize,
6485        concat!(
6486            "Offset of field: ",
6487            stringify!(TPMT_SENSITIVE),
6488            "::",
6489            stringify!(sensitiveType)
6490        )
6491    );
6492    assert_eq!(
6493        unsafe { ::std::ptr::addr_of!((*ptr).authValue) as usize - ptr as usize },
6494        2usize,
6495        concat!(
6496            "Offset of field: ",
6497            stringify!(TPMT_SENSITIVE),
6498            "::",
6499            stringify!(authValue)
6500        )
6501    );
6502    assert_eq!(
6503        unsafe { ::std::ptr::addr_of!((*ptr).seedValue) as usize - ptr as usize },
6504        68usize,
6505        concat!(
6506            "Offset of field: ",
6507            stringify!(TPMT_SENSITIVE),
6508            "::",
6509            stringify!(seedValue)
6510        )
6511    );
6512    assert_eq!(
6513        unsafe { ::std::ptr::addr_of!((*ptr).sensitive) as usize - ptr as usize },
6514        134usize,
6515        concat!(
6516            "Offset of field: ",
6517            stringify!(TPMT_SENSITIVE),
6518            "::",
6519            stringify!(sensitive)
6520        )
6521    );
6522}
6523impl Default for TPMT_SENSITIVE {
6524    fn default() -> Self {
6525        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6526        unsafe {
6527            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6528            s.assume_init()
6529        }
6530    }
6531}
6532#[repr(C)]
6533#[derive(Copy, Clone)]
6534pub struct TPM2B_SENSITIVE {
6535    pub size: UINT16,
6536    pub sensitiveArea: TPMT_SENSITIVE,
6537}
6538#[test]
6539fn bindgen_test_layout_TPM2B_SENSITIVE() {
6540    const UNINIT: ::std::mem::MaybeUninit<TPM2B_SENSITIVE> = ::std::mem::MaybeUninit::uninit();
6541    let ptr = UNINIT.as_ptr();
6542    assert_eq!(
6543        ::std::mem::size_of::<TPM2B_SENSITIVE>(),
6544        1418usize,
6545        concat!("Size of: ", stringify!(TPM2B_SENSITIVE))
6546    );
6547    assert_eq!(
6548        ::std::mem::align_of::<TPM2B_SENSITIVE>(),
6549        2usize,
6550        concat!("Alignment of ", stringify!(TPM2B_SENSITIVE))
6551    );
6552    assert_eq!(
6553        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
6554        0usize,
6555        concat!(
6556            "Offset of field: ",
6557            stringify!(TPM2B_SENSITIVE),
6558            "::",
6559            stringify!(size)
6560        )
6561    );
6562    assert_eq!(
6563        unsafe { ::std::ptr::addr_of!((*ptr).sensitiveArea) as usize - ptr as usize },
6564        2usize,
6565        concat!(
6566            "Offset of field: ",
6567            stringify!(TPM2B_SENSITIVE),
6568            "::",
6569            stringify!(sensitiveArea)
6570        )
6571    );
6572}
6573impl Default for TPM2B_SENSITIVE {
6574    fn default() -> Self {
6575        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6576        unsafe {
6577            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6578            s.assume_init()
6579        }
6580    }
6581}
6582#[repr(C)]
6583#[derive(Copy, Clone)]
6584pub struct _PRIVATE {
6585    pub integrityOuter: TPM2B_DIGEST,
6586    pub integrityInner: TPM2B_DIGEST,
6587    pub sensitive: TPM2B_SENSITIVE,
6588}
6589#[test]
6590fn bindgen_test_layout__PRIVATE() {
6591    const UNINIT: ::std::mem::MaybeUninit<_PRIVATE> = ::std::mem::MaybeUninit::uninit();
6592    let ptr = UNINIT.as_ptr();
6593    assert_eq!(
6594        ::std::mem::size_of::<_PRIVATE>(),
6595        1550usize,
6596        concat!("Size of: ", stringify!(_PRIVATE))
6597    );
6598    assert_eq!(
6599        ::std::mem::align_of::<_PRIVATE>(),
6600        2usize,
6601        concat!("Alignment of ", stringify!(_PRIVATE))
6602    );
6603    assert_eq!(
6604        unsafe { ::std::ptr::addr_of!((*ptr).integrityOuter) as usize - ptr as usize },
6605        0usize,
6606        concat!(
6607            "Offset of field: ",
6608            stringify!(_PRIVATE),
6609            "::",
6610            stringify!(integrityOuter)
6611        )
6612    );
6613    assert_eq!(
6614        unsafe { ::std::ptr::addr_of!((*ptr).integrityInner) as usize - ptr as usize },
6615        66usize,
6616        concat!(
6617            "Offset of field: ",
6618            stringify!(_PRIVATE),
6619            "::",
6620            stringify!(integrityInner)
6621        )
6622    );
6623    assert_eq!(
6624        unsafe { ::std::ptr::addr_of!((*ptr).sensitive) as usize - ptr as usize },
6625        132usize,
6626        concat!(
6627            "Offset of field: ",
6628            stringify!(_PRIVATE),
6629            "::",
6630            stringify!(sensitive)
6631        )
6632    );
6633}
6634impl Default for _PRIVATE {
6635    fn default() -> Self {
6636        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6637        unsafe {
6638            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6639            s.assume_init()
6640        }
6641    }
6642}
6643#[repr(C)]
6644#[derive(Debug, Copy, Clone)]
6645pub struct TPM2B_PRIVATE {
6646    pub size: UINT16,
6647    pub buffer: [BYTE; 1550usize],
6648}
6649#[test]
6650fn bindgen_test_layout_TPM2B_PRIVATE() {
6651    const UNINIT: ::std::mem::MaybeUninit<TPM2B_PRIVATE> = ::std::mem::MaybeUninit::uninit();
6652    let ptr = UNINIT.as_ptr();
6653    assert_eq!(
6654        ::std::mem::size_of::<TPM2B_PRIVATE>(),
6655        1552usize,
6656        concat!("Size of: ", stringify!(TPM2B_PRIVATE))
6657    );
6658    assert_eq!(
6659        ::std::mem::align_of::<TPM2B_PRIVATE>(),
6660        2usize,
6661        concat!("Alignment of ", stringify!(TPM2B_PRIVATE))
6662    );
6663    assert_eq!(
6664        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
6665        0usize,
6666        concat!(
6667            "Offset of field: ",
6668            stringify!(TPM2B_PRIVATE),
6669            "::",
6670            stringify!(size)
6671        )
6672    );
6673    assert_eq!(
6674        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
6675        2usize,
6676        concat!(
6677            "Offset of field: ",
6678            stringify!(TPM2B_PRIVATE),
6679            "::",
6680            stringify!(buffer)
6681        )
6682    );
6683}
6684impl Default for TPM2B_PRIVATE {
6685    fn default() -> Self {
6686        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6687        unsafe {
6688            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6689            s.assume_init()
6690        }
6691    }
6692}
6693#[repr(C)]
6694#[derive(Debug, Copy, Clone)]
6695pub struct TPMS_ID_OBJECT {
6696    pub integrityHMAC: TPM2B_DIGEST,
6697    pub encIdentity: TPM2B_DIGEST,
6698}
6699#[test]
6700fn bindgen_test_layout_TPMS_ID_OBJECT() {
6701    const UNINIT: ::std::mem::MaybeUninit<TPMS_ID_OBJECT> = ::std::mem::MaybeUninit::uninit();
6702    let ptr = UNINIT.as_ptr();
6703    assert_eq!(
6704        ::std::mem::size_of::<TPMS_ID_OBJECT>(),
6705        132usize,
6706        concat!("Size of: ", stringify!(TPMS_ID_OBJECT))
6707    );
6708    assert_eq!(
6709        ::std::mem::align_of::<TPMS_ID_OBJECT>(),
6710        2usize,
6711        concat!("Alignment of ", stringify!(TPMS_ID_OBJECT))
6712    );
6713    assert_eq!(
6714        unsafe { ::std::ptr::addr_of!((*ptr).integrityHMAC) as usize - ptr as usize },
6715        0usize,
6716        concat!(
6717            "Offset of field: ",
6718            stringify!(TPMS_ID_OBJECT),
6719            "::",
6720            stringify!(integrityHMAC)
6721        )
6722    );
6723    assert_eq!(
6724        unsafe { ::std::ptr::addr_of!((*ptr).encIdentity) as usize - ptr as usize },
6725        66usize,
6726        concat!(
6727            "Offset of field: ",
6728            stringify!(TPMS_ID_OBJECT),
6729            "::",
6730            stringify!(encIdentity)
6731        )
6732    );
6733}
6734impl Default for TPMS_ID_OBJECT {
6735    fn default() -> Self {
6736        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6737        unsafe {
6738            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6739            s.assume_init()
6740        }
6741    }
6742}
6743#[repr(C)]
6744#[derive(Debug, Copy, Clone)]
6745pub struct TPM2B_ID_OBJECT {
6746    pub size: UINT16,
6747    pub credential: [BYTE; 132usize],
6748}
6749#[test]
6750fn bindgen_test_layout_TPM2B_ID_OBJECT() {
6751    const UNINIT: ::std::mem::MaybeUninit<TPM2B_ID_OBJECT> = ::std::mem::MaybeUninit::uninit();
6752    let ptr = UNINIT.as_ptr();
6753    assert_eq!(
6754        ::std::mem::size_of::<TPM2B_ID_OBJECT>(),
6755        134usize,
6756        concat!("Size of: ", stringify!(TPM2B_ID_OBJECT))
6757    );
6758    assert_eq!(
6759        ::std::mem::align_of::<TPM2B_ID_OBJECT>(),
6760        2usize,
6761        concat!("Alignment of ", stringify!(TPM2B_ID_OBJECT))
6762    );
6763    assert_eq!(
6764        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
6765        0usize,
6766        concat!(
6767            "Offset of field: ",
6768            stringify!(TPM2B_ID_OBJECT),
6769            "::",
6770            stringify!(size)
6771        )
6772    );
6773    assert_eq!(
6774        unsafe { ::std::ptr::addr_of!((*ptr).credential) as usize - ptr as usize },
6775        2usize,
6776        concat!(
6777            "Offset of field: ",
6778            stringify!(TPM2B_ID_OBJECT),
6779            "::",
6780            stringify!(credential)
6781        )
6782    );
6783}
6784impl Default for TPM2B_ID_OBJECT {
6785    fn default() -> Self {
6786        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6787        unsafe {
6788            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6789            s.assume_init()
6790        }
6791    }
6792}
6793pub type TPM2_NV_INDEX = u32;
6794pub type TPM2_NT = UINT8;
6795#[repr(C)]
6796#[derive(Debug, Default, Copy, Clone)]
6797pub struct TPMS_NV_PIN_COUNTER_PARAMETERS {
6798    pub pinCount: UINT32,
6799    pub pinLimit: UINT32,
6800}
6801#[test]
6802fn bindgen_test_layout_TPMS_NV_PIN_COUNTER_PARAMETERS() {
6803    const UNINIT: ::std::mem::MaybeUninit<TPMS_NV_PIN_COUNTER_PARAMETERS> =
6804        ::std::mem::MaybeUninit::uninit();
6805    let ptr = UNINIT.as_ptr();
6806    assert_eq!(
6807        ::std::mem::size_of::<TPMS_NV_PIN_COUNTER_PARAMETERS>(),
6808        8usize,
6809        concat!("Size of: ", stringify!(TPMS_NV_PIN_COUNTER_PARAMETERS))
6810    );
6811    assert_eq!(
6812        ::std::mem::align_of::<TPMS_NV_PIN_COUNTER_PARAMETERS>(),
6813        4usize,
6814        concat!("Alignment of ", stringify!(TPMS_NV_PIN_COUNTER_PARAMETERS))
6815    );
6816    assert_eq!(
6817        unsafe { ::std::ptr::addr_of!((*ptr).pinCount) as usize - ptr as usize },
6818        0usize,
6819        concat!(
6820            "Offset of field: ",
6821            stringify!(TPMS_NV_PIN_COUNTER_PARAMETERS),
6822            "::",
6823            stringify!(pinCount)
6824        )
6825    );
6826    assert_eq!(
6827        unsafe { ::std::ptr::addr_of!((*ptr).pinLimit) as usize - ptr as usize },
6828        4usize,
6829        concat!(
6830            "Offset of field: ",
6831            stringify!(TPMS_NV_PIN_COUNTER_PARAMETERS),
6832            "::",
6833            stringify!(pinLimit)
6834        )
6835    );
6836}
6837pub type TPMA_NV = u32;
6838#[repr(C)]
6839#[derive(Debug, Copy, Clone)]
6840pub struct TPMS_NV_PUBLIC {
6841    pub nvIndex: TPMI_RH_NV_INDEX,
6842    pub nameAlg: TPMI_ALG_HASH,
6843    pub attributes: TPMA_NV,
6844    pub authPolicy: TPM2B_DIGEST,
6845    pub dataSize: UINT16,
6846}
6847#[test]
6848fn bindgen_test_layout_TPMS_NV_PUBLIC() {
6849    const UNINIT: ::std::mem::MaybeUninit<TPMS_NV_PUBLIC> = ::std::mem::MaybeUninit::uninit();
6850    let ptr = UNINIT.as_ptr();
6851    assert_eq!(
6852        ::std::mem::size_of::<TPMS_NV_PUBLIC>(),
6853        80usize,
6854        concat!("Size of: ", stringify!(TPMS_NV_PUBLIC))
6855    );
6856    assert_eq!(
6857        ::std::mem::align_of::<TPMS_NV_PUBLIC>(),
6858        4usize,
6859        concat!("Alignment of ", stringify!(TPMS_NV_PUBLIC))
6860    );
6861    assert_eq!(
6862        unsafe { ::std::ptr::addr_of!((*ptr).nvIndex) as usize - ptr as usize },
6863        0usize,
6864        concat!(
6865            "Offset of field: ",
6866            stringify!(TPMS_NV_PUBLIC),
6867            "::",
6868            stringify!(nvIndex)
6869        )
6870    );
6871    assert_eq!(
6872        unsafe { ::std::ptr::addr_of!((*ptr).nameAlg) as usize - ptr as usize },
6873        4usize,
6874        concat!(
6875            "Offset of field: ",
6876            stringify!(TPMS_NV_PUBLIC),
6877            "::",
6878            stringify!(nameAlg)
6879        )
6880    );
6881    assert_eq!(
6882        unsafe { ::std::ptr::addr_of!((*ptr).attributes) as usize - ptr as usize },
6883        8usize,
6884        concat!(
6885            "Offset of field: ",
6886            stringify!(TPMS_NV_PUBLIC),
6887            "::",
6888            stringify!(attributes)
6889        )
6890    );
6891    assert_eq!(
6892        unsafe { ::std::ptr::addr_of!((*ptr).authPolicy) as usize - ptr as usize },
6893        12usize,
6894        concat!(
6895            "Offset of field: ",
6896            stringify!(TPMS_NV_PUBLIC),
6897            "::",
6898            stringify!(authPolicy)
6899        )
6900    );
6901    assert_eq!(
6902        unsafe { ::std::ptr::addr_of!((*ptr).dataSize) as usize - ptr as usize },
6903        78usize,
6904        concat!(
6905            "Offset of field: ",
6906            stringify!(TPMS_NV_PUBLIC),
6907            "::",
6908            stringify!(dataSize)
6909        )
6910    );
6911}
6912impl Default for TPMS_NV_PUBLIC {
6913    fn default() -> Self {
6914        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6915        unsafe {
6916            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6917            s.assume_init()
6918        }
6919    }
6920}
6921#[repr(C)]
6922#[derive(Debug, Copy, Clone)]
6923pub struct TPM2B_NV_PUBLIC {
6924    pub size: UINT16,
6925    pub nvPublic: TPMS_NV_PUBLIC,
6926}
6927#[test]
6928fn bindgen_test_layout_TPM2B_NV_PUBLIC() {
6929    const UNINIT: ::std::mem::MaybeUninit<TPM2B_NV_PUBLIC> = ::std::mem::MaybeUninit::uninit();
6930    let ptr = UNINIT.as_ptr();
6931    assert_eq!(
6932        ::std::mem::size_of::<TPM2B_NV_PUBLIC>(),
6933        84usize,
6934        concat!("Size of: ", stringify!(TPM2B_NV_PUBLIC))
6935    );
6936    assert_eq!(
6937        ::std::mem::align_of::<TPM2B_NV_PUBLIC>(),
6938        4usize,
6939        concat!("Alignment of ", stringify!(TPM2B_NV_PUBLIC))
6940    );
6941    assert_eq!(
6942        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
6943        0usize,
6944        concat!(
6945            "Offset of field: ",
6946            stringify!(TPM2B_NV_PUBLIC),
6947            "::",
6948            stringify!(size)
6949        )
6950    );
6951    assert_eq!(
6952        unsafe { ::std::ptr::addr_of!((*ptr).nvPublic) as usize - ptr as usize },
6953        4usize,
6954        concat!(
6955            "Offset of field: ",
6956            stringify!(TPM2B_NV_PUBLIC),
6957            "::",
6958            stringify!(nvPublic)
6959        )
6960    );
6961}
6962impl Default for TPM2B_NV_PUBLIC {
6963    fn default() -> Self {
6964        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6965        unsafe {
6966            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6967            s.assume_init()
6968        }
6969    }
6970}
6971#[repr(C)]
6972#[derive(Debug, Copy, Clone)]
6973pub struct TPM2B_CONTEXT_SENSITIVE {
6974    pub size: UINT16,
6975    pub buffer: [BYTE; 5120usize],
6976}
6977#[test]
6978fn bindgen_test_layout_TPM2B_CONTEXT_SENSITIVE() {
6979    const UNINIT: ::std::mem::MaybeUninit<TPM2B_CONTEXT_SENSITIVE> =
6980        ::std::mem::MaybeUninit::uninit();
6981    let ptr = UNINIT.as_ptr();
6982    assert_eq!(
6983        ::std::mem::size_of::<TPM2B_CONTEXT_SENSITIVE>(),
6984        5122usize,
6985        concat!("Size of: ", stringify!(TPM2B_CONTEXT_SENSITIVE))
6986    );
6987    assert_eq!(
6988        ::std::mem::align_of::<TPM2B_CONTEXT_SENSITIVE>(),
6989        2usize,
6990        concat!("Alignment of ", stringify!(TPM2B_CONTEXT_SENSITIVE))
6991    );
6992    assert_eq!(
6993        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
6994        0usize,
6995        concat!(
6996            "Offset of field: ",
6997            stringify!(TPM2B_CONTEXT_SENSITIVE),
6998            "::",
6999            stringify!(size)
7000        )
7001    );
7002    assert_eq!(
7003        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
7004        2usize,
7005        concat!(
7006            "Offset of field: ",
7007            stringify!(TPM2B_CONTEXT_SENSITIVE),
7008            "::",
7009            stringify!(buffer)
7010        )
7011    );
7012}
7013impl Default for TPM2B_CONTEXT_SENSITIVE {
7014    fn default() -> Self {
7015        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
7016        unsafe {
7017            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
7018            s.assume_init()
7019        }
7020    }
7021}
7022#[repr(C)]
7023#[derive(Debug, Copy, Clone)]
7024pub struct TPMS_CONTEXT_DATA {
7025    pub integrity: TPM2B_DIGEST,
7026    pub encrypted: TPM2B_CONTEXT_SENSITIVE,
7027}
7028#[test]
7029fn bindgen_test_layout_TPMS_CONTEXT_DATA() {
7030    const UNINIT: ::std::mem::MaybeUninit<TPMS_CONTEXT_DATA> = ::std::mem::MaybeUninit::uninit();
7031    let ptr = UNINIT.as_ptr();
7032    assert_eq!(
7033        ::std::mem::size_of::<TPMS_CONTEXT_DATA>(),
7034        5188usize,
7035        concat!("Size of: ", stringify!(TPMS_CONTEXT_DATA))
7036    );
7037    assert_eq!(
7038        ::std::mem::align_of::<TPMS_CONTEXT_DATA>(),
7039        2usize,
7040        concat!("Alignment of ", stringify!(TPMS_CONTEXT_DATA))
7041    );
7042    assert_eq!(
7043        unsafe { ::std::ptr::addr_of!((*ptr).integrity) as usize - ptr as usize },
7044        0usize,
7045        concat!(
7046            "Offset of field: ",
7047            stringify!(TPMS_CONTEXT_DATA),
7048            "::",
7049            stringify!(integrity)
7050        )
7051    );
7052    assert_eq!(
7053        unsafe { ::std::ptr::addr_of!((*ptr).encrypted) as usize - ptr as usize },
7054        66usize,
7055        concat!(
7056            "Offset of field: ",
7057            stringify!(TPMS_CONTEXT_DATA),
7058            "::",
7059            stringify!(encrypted)
7060        )
7061    );
7062}
7063impl Default for TPMS_CONTEXT_DATA {
7064    fn default() -> Self {
7065        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
7066        unsafe {
7067            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
7068            s.assume_init()
7069        }
7070    }
7071}
7072#[repr(C)]
7073#[derive(Debug, Copy, Clone)]
7074pub struct TPM2B_CONTEXT_DATA {
7075    pub size: UINT16,
7076    pub buffer: [BYTE; 5188usize],
7077}
7078#[test]
7079fn bindgen_test_layout_TPM2B_CONTEXT_DATA() {
7080    const UNINIT: ::std::mem::MaybeUninit<TPM2B_CONTEXT_DATA> = ::std::mem::MaybeUninit::uninit();
7081    let ptr = UNINIT.as_ptr();
7082    assert_eq!(
7083        ::std::mem::size_of::<TPM2B_CONTEXT_DATA>(),
7084        5190usize,
7085        concat!("Size of: ", stringify!(TPM2B_CONTEXT_DATA))
7086    );
7087    assert_eq!(
7088        ::std::mem::align_of::<TPM2B_CONTEXT_DATA>(),
7089        2usize,
7090        concat!("Alignment of ", stringify!(TPM2B_CONTEXT_DATA))
7091    );
7092    assert_eq!(
7093        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
7094        0usize,
7095        concat!(
7096            "Offset of field: ",
7097            stringify!(TPM2B_CONTEXT_DATA),
7098            "::",
7099            stringify!(size)
7100        )
7101    );
7102    assert_eq!(
7103        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
7104        2usize,
7105        concat!(
7106            "Offset of field: ",
7107            stringify!(TPM2B_CONTEXT_DATA),
7108            "::",
7109            stringify!(buffer)
7110        )
7111    );
7112}
7113impl Default for TPM2B_CONTEXT_DATA {
7114    fn default() -> Self {
7115        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
7116        unsafe {
7117            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
7118            s.assume_init()
7119        }
7120    }
7121}
7122#[repr(C)]
7123#[derive(Debug, Copy, Clone)]
7124pub struct TPMS_CONTEXT {
7125    pub sequence: UINT64,
7126    pub savedHandle: TPMI_DH_CONTEXT,
7127    pub hierarchy: TPMI_RH_HIERARCHY,
7128    pub contextBlob: TPM2B_CONTEXT_DATA,
7129}
7130#[test]
7131fn bindgen_test_layout_TPMS_CONTEXT() {
7132    const UNINIT: ::std::mem::MaybeUninit<TPMS_CONTEXT> = ::std::mem::MaybeUninit::uninit();
7133    let ptr = UNINIT.as_ptr();
7134    assert_eq!(
7135        ::std::mem::size_of::<TPMS_CONTEXT>(),
7136        5208usize,
7137        concat!("Size of: ", stringify!(TPMS_CONTEXT))
7138    );
7139    assert_eq!(
7140        ::std::mem::align_of::<TPMS_CONTEXT>(),
7141        8usize,
7142        concat!("Alignment of ", stringify!(TPMS_CONTEXT))
7143    );
7144    assert_eq!(
7145        unsafe { ::std::ptr::addr_of!((*ptr).sequence) as usize - ptr as usize },
7146        0usize,
7147        concat!(
7148            "Offset of field: ",
7149            stringify!(TPMS_CONTEXT),
7150            "::",
7151            stringify!(sequence)
7152        )
7153    );
7154    assert_eq!(
7155        unsafe { ::std::ptr::addr_of!((*ptr).savedHandle) as usize - ptr as usize },
7156        8usize,
7157        concat!(
7158            "Offset of field: ",
7159            stringify!(TPMS_CONTEXT),
7160            "::",
7161            stringify!(savedHandle)
7162        )
7163    );
7164    assert_eq!(
7165        unsafe { ::std::ptr::addr_of!((*ptr).hierarchy) as usize - ptr as usize },
7166        12usize,
7167        concat!(
7168            "Offset of field: ",
7169            stringify!(TPMS_CONTEXT),
7170            "::",
7171            stringify!(hierarchy)
7172        )
7173    );
7174    assert_eq!(
7175        unsafe { ::std::ptr::addr_of!((*ptr).contextBlob) as usize - ptr as usize },
7176        16usize,
7177        concat!(
7178            "Offset of field: ",
7179            stringify!(TPMS_CONTEXT),
7180            "::",
7181            stringify!(contextBlob)
7182        )
7183    );
7184}
7185impl Default for TPMS_CONTEXT {
7186    fn default() -> Self {
7187        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
7188        unsafe {
7189            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
7190            s.assume_init()
7191        }
7192    }
7193}
7194#[repr(C)]
7195#[derive(Debug, Copy, Clone)]
7196pub struct TPMS_CREATION_DATA {
7197    pub pcrSelect: TPML_PCR_SELECTION,
7198    pub pcrDigest: TPM2B_DIGEST,
7199    pub locality: TPMA_LOCALITY,
7200    pub parentNameAlg: TPM2_ALG_ID,
7201    pub parentName: TPM2B_NAME,
7202    pub parentQualifiedName: TPM2B_NAME,
7203    pub outsideInfo: TPM2B_DATA,
7204}
7205#[test]
7206fn bindgen_test_layout_TPMS_CREATION_DATA() {
7207    const UNINIT: ::std::mem::MaybeUninit<TPMS_CREATION_DATA> = ::std::mem::MaybeUninit::uninit();
7208    let ptr = UNINIT.as_ptr();
7209    assert_eq!(
7210        ::std::mem::size_of::<TPMS_CREATION_DATA>(),
7211        408usize,
7212        concat!("Size of: ", stringify!(TPMS_CREATION_DATA))
7213    );
7214    assert_eq!(
7215        ::std::mem::align_of::<TPMS_CREATION_DATA>(),
7216        4usize,
7217        concat!("Alignment of ", stringify!(TPMS_CREATION_DATA))
7218    );
7219    assert_eq!(
7220        unsafe { ::std::ptr::addr_of!((*ptr).pcrSelect) as usize - ptr as usize },
7221        0usize,
7222        concat!(
7223            "Offset of field: ",
7224            stringify!(TPMS_CREATION_DATA),
7225            "::",
7226            stringify!(pcrSelect)
7227        )
7228    );
7229    assert_eq!(
7230        unsafe { ::std::ptr::addr_of!((*ptr).pcrDigest) as usize - ptr as usize },
7231        132usize,
7232        concat!(
7233            "Offset of field: ",
7234            stringify!(TPMS_CREATION_DATA),
7235            "::",
7236            stringify!(pcrDigest)
7237        )
7238    );
7239    assert_eq!(
7240        unsafe { ::std::ptr::addr_of!((*ptr).locality) as usize - ptr as usize },
7241        198usize,
7242        concat!(
7243            "Offset of field: ",
7244            stringify!(TPMS_CREATION_DATA),
7245            "::",
7246            stringify!(locality)
7247        )
7248    );
7249    assert_eq!(
7250        unsafe { ::std::ptr::addr_of!((*ptr).parentNameAlg) as usize - ptr as usize },
7251        200usize,
7252        concat!(
7253            "Offset of field: ",
7254            stringify!(TPMS_CREATION_DATA),
7255            "::",
7256            stringify!(parentNameAlg)
7257        )
7258    );
7259    assert_eq!(
7260        unsafe { ::std::ptr::addr_of!((*ptr).parentName) as usize - ptr as usize },
7261        202usize,
7262        concat!(
7263            "Offset of field: ",
7264            stringify!(TPMS_CREATION_DATA),
7265            "::",
7266            stringify!(parentName)
7267        )
7268    );
7269    assert_eq!(
7270        unsafe { ::std::ptr::addr_of!((*ptr).parentQualifiedName) as usize - ptr as usize },
7271        272usize,
7272        concat!(
7273            "Offset of field: ",
7274            stringify!(TPMS_CREATION_DATA),
7275            "::",
7276            stringify!(parentQualifiedName)
7277        )
7278    );
7279    assert_eq!(
7280        unsafe { ::std::ptr::addr_of!((*ptr).outsideInfo) as usize - ptr as usize },
7281        342usize,
7282        concat!(
7283            "Offset of field: ",
7284            stringify!(TPMS_CREATION_DATA),
7285            "::",
7286            stringify!(outsideInfo)
7287        )
7288    );
7289}
7290impl Default for TPMS_CREATION_DATA {
7291    fn default() -> Self {
7292        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
7293        unsafe {
7294            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
7295            s.assume_init()
7296        }
7297    }
7298}
7299#[repr(C)]
7300#[derive(Debug, Copy, Clone)]
7301pub struct TPM2B_CREATION_DATA {
7302    pub size: UINT16,
7303    pub creationData: TPMS_CREATION_DATA,
7304}
7305#[test]
7306fn bindgen_test_layout_TPM2B_CREATION_DATA() {
7307    const UNINIT: ::std::mem::MaybeUninit<TPM2B_CREATION_DATA> = ::std::mem::MaybeUninit::uninit();
7308    let ptr = UNINIT.as_ptr();
7309    assert_eq!(
7310        ::std::mem::size_of::<TPM2B_CREATION_DATA>(),
7311        412usize,
7312        concat!("Size of: ", stringify!(TPM2B_CREATION_DATA))
7313    );
7314    assert_eq!(
7315        ::std::mem::align_of::<TPM2B_CREATION_DATA>(),
7316        4usize,
7317        concat!("Alignment of ", stringify!(TPM2B_CREATION_DATA))
7318    );
7319    assert_eq!(
7320        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
7321        0usize,
7322        concat!(
7323            "Offset of field: ",
7324            stringify!(TPM2B_CREATION_DATA),
7325            "::",
7326            stringify!(size)
7327        )
7328    );
7329    assert_eq!(
7330        unsafe { ::std::ptr::addr_of!((*ptr).creationData) as usize - ptr as usize },
7331        4usize,
7332        concat!(
7333            "Offset of field: ",
7334            stringify!(TPM2B_CREATION_DATA),
7335            "::",
7336            stringify!(creationData)
7337        )
7338    );
7339}
7340impl Default for TPM2B_CREATION_DATA {
7341    fn default() -> Self {
7342        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
7343        unsafe {
7344            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
7345            s.assume_init()
7346        }
7347    }
7348}
7349pub type TPM_AT = UINT32;
7350pub type TPM_EA = UINT32;
7351pub type TPMI_RH_AC = TPM2_HANDLE;
7352#[repr(C)]
7353#[derive(Debug, Default, Copy, Clone)]
7354pub struct TPMS_AC_OUTPUT {
7355    pub tag: TPM_AT,
7356    pub data: UINT32,
7357}
7358#[test]
7359fn bindgen_test_layout_TPMS_AC_OUTPUT() {
7360    const UNINIT: ::std::mem::MaybeUninit<TPMS_AC_OUTPUT> = ::std::mem::MaybeUninit::uninit();
7361    let ptr = UNINIT.as_ptr();
7362    assert_eq!(
7363        ::std::mem::size_of::<TPMS_AC_OUTPUT>(),
7364        8usize,
7365        concat!("Size of: ", stringify!(TPMS_AC_OUTPUT))
7366    );
7367    assert_eq!(
7368        ::std::mem::align_of::<TPMS_AC_OUTPUT>(),
7369        4usize,
7370        concat!("Alignment of ", stringify!(TPMS_AC_OUTPUT))
7371    );
7372    assert_eq!(
7373        unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize },
7374        0usize,
7375        concat!(
7376            "Offset of field: ",
7377            stringify!(TPMS_AC_OUTPUT),
7378            "::",
7379            stringify!(tag)
7380        )
7381    );
7382    assert_eq!(
7383        unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize },
7384        4usize,
7385        concat!(
7386            "Offset of field: ",
7387            stringify!(TPMS_AC_OUTPUT),
7388            "::",
7389            stringify!(data)
7390        )
7391    );
7392}
7393#[repr(C)]
7394#[derive(Debug, Copy, Clone)]
7395pub struct TPML_AC_CAPABILITIES {
7396    pub count: UINT32,
7397    pub acCapabilities: [TPMS_AC_OUTPUT; 128usize],
7398}
7399#[test]
7400fn bindgen_test_layout_TPML_AC_CAPABILITIES() {
7401    const UNINIT: ::std::mem::MaybeUninit<TPML_AC_CAPABILITIES> = ::std::mem::MaybeUninit::uninit();
7402    let ptr = UNINIT.as_ptr();
7403    assert_eq!(
7404        ::std::mem::size_of::<TPML_AC_CAPABILITIES>(),
7405        1028usize,
7406        concat!("Size of: ", stringify!(TPML_AC_CAPABILITIES))
7407    );
7408    assert_eq!(
7409        ::std::mem::align_of::<TPML_AC_CAPABILITIES>(),
7410        4usize,
7411        concat!("Alignment of ", stringify!(TPML_AC_CAPABILITIES))
7412    );
7413    assert_eq!(
7414        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
7415        0usize,
7416        concat!(
7417            "Offset of field: ",
7418            stringify!(TPML_AC_CAPABILITIES),
7419            "::",
7420            stringify!(count)
7421        )
7422    );
7423    assert_eq!(
7424        unsafe { ::std::ptr::addr_of!((*ptr).acCapabilities) as usize - ptr as usize },
7425        4usize,
7426        concat!(
7427            "Offset of field: ",
7428            stringify!(TPML_AC_CAPABILITIES),
7429            "::",
7430            stringify!(acCapabilities)
7431        )
7432    );
7433}
7434impl Default for TPML_AC_CAPABILITIES {
7435    fn default() -> Self {
7436        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
7437        unsafe {
7438            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
7439            s.assume_init()
7440        }
7441    }
7442}
7443pub type nfds_t = ::std::os::raw::c_ulong;
7444#[repr(C)]
7445#[derive(Debug, Default, Copy, Clone)]
7446pub struct pollfd {
7447    pub fd: ::std::os::raw::c_int,
7448    pub events: ::std::os::raw::c_short,
7449    pub revents: ::std::os::raw::c_short,
7450}
7451#[test]
7452fn bindgen_test_layout_pollfd() {
7453    const UNINIT: ::std::mem::MaybeUninit<pollfd> = ::std::mem::MaybeUninit::uninit();
7454    let ptr = UNINIT.as_ptr();
7455    assert_eq!(
7456        ::std::mem::size_of::<pollfd>(),
7457        8usize,
7458        concat!("Size of: ", stringify!(pollfd))
7459    );
7460    assert_eq!(
7461        ::std::mem::align_of::<pollfd>(),
7462        4usize,
7463        concat!("Alignment of ", stringify!(pollfd))
7464    );
7465    assert_eq!(
7466        unsafe { ::std::ptr::addr_of!((*ptr).fd) as usize - ptr as usize },
7467        0usize,
7468        concat!(
7469            "Offset of field: ",
7470            stringify!(pollfd),
7471            "::",
7472            stringify!(fd)
7473        )
7474    );
7475    assert_eq!(
7476        unsafe { ::std::ptr::addr_of!((*ptr).events) as usize - ptr as usize },
7477        4usize,
7478        concat!(
7479            "Offset of field: ",
7480            stringify!(pollfd),
7481            "::",
7482            stringify!(events)
7483        )
7484    );
7485    assert_eq!(
7486        unsafe { ::std::ptr::addr_of!((*ptr).revents) as usize - ptr as usize },
7487        6usize,
7488        concat!(
7489            "Offset of field: ",
7490            stringify!(pollfd),
7491            "::",
7492            stringify!(revents)
7493        )
7494    );
7495}
7496extern "C" {
7497    pub fn poll(
7498        __fds: *mut pollfd,
7499        __nfds: nfds_t,
7500        __timeout: ::std::os::raw::c_int,
7501    ) -> ::std::os::raw::c_int;
7502}
7503pub type TSS2_TCTI_POLL_HANDLE = pollfd;
7504#[repr(C)]
7505#[derive(Debug, Copy, Clone)]
7506pub struct TSS2_TCTI_OPAQUE_CONTEXT_BLOB {
7507    _unused: [u8; 0],
7508}
7509pub type TSS2_TCTI_CONTEXT = TSS2_TCTI_OPAQUE_CONTEXT_BLOB;
7510pub type TSS2_TCTI_TRANSMIT_FCN = ::std::option::Option<
7511    unsafe extern "C" fn(
7512        tctiContext: *mut TSS2_TCTI_CONTEXT,
7513        size: size_t,
7514        command: *const u8,
7515    ) -> TSS2_RC,
7516>;
7517pub type TSS2_TCTI_RECEIVE_FCN = ::std::option::Option<
7518    unsafe extern "C" fn(
7519        tctiContext: *mut TSS2_TCTI_CONTEXT,
7520        size: *mut size_t,
7521        response: *mut u8,
7522        timeout: i32,
7523    ) -> TSS2_RC,
7524>;
7525pub type TSS2_TCTI_FINALIZE_FCN =
7526    ::std::option::Option<unsafe extern "C" fn(tctiContext: *mut TSS2_TCTI_CONTEXT)>;
7527pub type TSS2_TCTI_CANCEL_FCN =
7528    ::std::option::Option<unsafe extern "C" fn(tctiContext: *mut TSS2_TCTI_CONTEXT) -> TSS2_RC>;
7529pub type TSS2_TCTI_GET_POLL_HANDLES_FCN = ::std::option::Option<
7530    unsafe extern "C" fn(
7531        tctiContext: *mut TSS2_TCTI_CONTEXT,
7532        handles: *mut TSS2_TCTI_POLL_HANDLE,
7533        num_handles: *mut size_t,
7534    ) -> TSS2_RC,
7535>;
7536pub type TSS2_TCTI_SET_LOCALITY_FCN = ::std::option::Option<
7537    unsafe extern "C" fn(tctiContext: *mut TSS2_TCTI_CONTEXT, locality: u8) -> TSS2_RC,
7538>;
7539pub type TSS2_TCTI_MAKE_STICKY_FCN = ::std::option::Option<
7540    unsafe extern "C" fn(
7541        tctiContext: *mut TSS2_TCTI_CONTEXT,
7542        handle: *mut TPM2_HANDLE,
7543        sticky: u8,
7544    ) -> TSS2_RC,
7545>;
7546pub type TSS2_TCTI_INIT_FUNC = ::std::option::Option<
7547    unsafe extern "C" fn(
7548        tctiContext: *mut TSS2_TCTI_CONTEXT,
7549        size: *mut size_t,
7550        config: *const ::std::os::raw::c_char,
7551    ) -> TSS2_RC,
7552>;
7553#[repr(C)]
7554#[derive(Debug, Default, Copy, Clone)]
7555pub struct TSS2_TCTI_CONTEXT_COMMON_V1 {
7556    pub magic: u64,
7557    pub version: u32,
7558    pub transmit: TSS2_TCTI_TRANSMIT_FCN,
7559    pub receive: TSS2_TCTI_RECEIVE_FCN,
7560    pub finalize: TSS2_TCTI_FINALIZE_FCN,
7561    pub cancel: TSS2_TCTI_CANCEL_FCN,
7562    pub getPollHandles: TSS2_TCTI_GET_POLL_HANDLES_FCN,
7563    pub setLocality: TSS2_TCTI_SET_LOCALITY_FCN,
7564}
7565#[test]
7566fn bindgen_test_layout_TSS2_TCTI_CONTEXT_COMMON_V1() {
7567    const UNINIT: ::std::mem::MaybeUninit<TSS2_TCTI_CONTEXT_COMMON_V1> =
7568        ::std::mem::MaybeUninit::uninit();
7569    let ptr = UNINIT.as_ptr();
7570    assert_eq!(
7571        ::std::mem::size_of::<TSS2_TCTI_CONTEXT_COMMON_V1>(),
7572        64usize,
7573        concat!("Size of: ", stringify!(TSS2_TCTI_CONTEXT_COMMON_V1))
7574    );
7575    assert_eq!(
7576        ::std::mem::align_of::<TSS2_TCTI_CONTEXT_COMMON_V1>(),
7577        8usize,
7578        concat!("Alignment of ", stringify!(TSS2_TCTI_CONTEXT_COMMON_V1))
7579    );
7580    assert_eq!(
7581        unsafe { ::std::ptr::addr_of!((*ptr).magic) as usize - ptr as usize },
7582        0usize,
7583        concat!(
7584            "Offset of field: ",
7585            stringify!(TSS2_TCTI_CONTEXT_COMMON_V1),
7586            "::",
7587            stringify!(magic)
7588        )
7589    );
7590    assert_eq!(
7591        unsafe { ::std::ptr::addr_of!((*ptr).version) as usize - ptr as usize },
7592        8usize,
7593        concat!(
7594            "Offset of field: ",
7595            stringify!(TSS2_TCTI_CONTEXT_COMMON_V1),
7596            "::",
7597            stringify!(version)
7598        )
7599    );
7600    assert_eq!(
7601        unsafe { ::std::ptr::addr_of!((*ptr).transmit) as usize - ptr as usize },
7602        16usize,
7603        concat!(
7604            "Offset of field: ",
7605            stringify!(TSS2_TCTI_CONTEXT_COMMON_V1),
7606            "::",
7607            stringify!(transmit)
7608        )
7609    );
7610    assert_eq!(
7611        unsafe { ::std::ptr::addr_of!((*ptr).receive) as usize - ptr as usize },
7612        24usize,
7613        concat!(
7614            "Offset of field: ",
7615            stringify!(TSS2_TCTI_CONTEXT_COMMON_V1),
7616            "::",
7617            stringify!(receive)
7618        )
7619    );
7620    assert_eq!(
7621        unsafe { ::std::ptr::addr_of!((*ptr).finalize) as usize - ptr as usize },
7622        32usize,
7623        concat!(
7624            "Offset of field: ",
7625            stringify!(TSS2_TCTI_CONTEXT_COMMON_V1),
7626            "::",
7627            stringify!(finalize)
7628        )
7629    );
7630    assert_eq!(
7631        unsafe { ::std::ptr::addr_of!((*ptr).cancel) as usize - ptr as usize },
7632        40usize,
7633        concat!(
7634            "Offset of field: ",
7635            stringify!(TSS2_TCTI_CONTEXT_COMMON_V1),
7636            "::",
7637            stringify!(cancel)
7638        )
7639    );
7640    assert_eq!(
7641        unsafe { ::std::ptr::addr_of!((*ptr).getPollHandles) as usize - ptr as usize },
7642        48usize,
7643        concat!(
7644            "Offset of field: ",
7645            stringify!(TSS2_TCTI_CONTEXT_COMMON_V1),
7646            "::",
7647            stringify!(getPollHandles)
7648        )
7649    );
7650    assert_eq!(
7651        unsafe { ::std::ptr::addr_of!((*ptr).setLocality) as usize - ptr as usize },
7652        56usize,
7653        concat!(
7654            "Offset of field: ",
7655            stringify!(TSS2_TCTI_CONTEXT_COMMON_V1),
7656            "::",
7657            stringify!(setLocality)
7658        )
7659    );
7660}
7661#[repr(C)]
7662#[derive(Debug, Default, Copy, Clone)]
7663pub struct TSS2_TCTI_CONTEXT_COMMON_V2 {
7664    pub v1: TSS2_TCTI_CONTEXT_COMMON_V1,
7665    pub makeSticky: TSS2_TCTI_MAKE_STICKY_FCN,
7666}
7667#[test]
7668fn bindgen_test_layout_TSS2_TCTI_CONTEXT_COMMON_V2() {
7669    const UNINIT: ::std::mem::MaybeUninit<TSS2_TCTI_CONTEXT_COMMON_V2> =
7670        ::std::mem::MaybeUninit::uninit();
7671    let ptr = UNINIT.as_ptr();
7672    assert_eq!(
7673        ::std::mem::size_of::<TSS2_TCTI_CONTEXT_COMMON_V2>(),
7674        72usize,
7675        concat!("Size of: ", stringify!(TSS2_TCTI_CONTEXT_COMMON_V2))
7676    );
7677    assert_eq!(
7678        ::std::mem::align_of::<TSS2_TCTI_CONTEXT_COMMON_V2>(),
7679        8usize,
7680        concat!("Alignment of ", stringify!(TSS2_TCTI_CONTEXT_COMMON_V2))
7681    );
7682    assert_eq!(
7683        unsafe { ::std::ptr::addr_of!((*ptr).v1) as usize - ptr as usize },
7684        0usize,
7685        concat!(
7686            "Offset of field: ",
7687            stringify!(TSS2_TCTI_CONTEXT_COMMON_V2),
7688            "::",
7689            stringify!(v1)
7690        )
7691    );
7692    assert_eq!(
7693        unsafe { ::std::ptr::addr_of!((*ptr).makeSticky) as usize - ptr as usize },
7694        64usize,
7695        concat!(
7696            "Offset of field: ",
7697            stringify!(TSS2_TCTI_CONTEXT_COMMON_V2),
7698            "::",
7699            stringify!(makeSticky)
7700        )
7701    );
7702}
7703pub type TSS2_TCTI_CONTEXT_COMMON_CURRENT = TSS2_TCTI_CONTEXT_COMMON_V2;
7704#[repr(C)]
7705#[derive(Debug, Copy, Clone)]
7706pub struct TSS2_TCTI_INFO {
7707    pub version: u32,
7708    pub name: *const ::std::os::raw::c_char,
7709    pub description: *const ::std::os::raw::c_char,
7710    pub config_help: *const ::std::os::raw::c_char,
7711    pub init: TSS2_TCTI_INIT_FUNC,
7712}
7713#[test]
7714fn bindgen_test_layout_TSS2_TCTI_INFO() {
7715    const UNINIT: ::std::mem::MaybeUninit<TSS2_TCTI_INFO> = ::std::mem::MaybeUninit::uninit();
7716    let ptr = UNINIT.as_ptr();
7717    assert_eq!(
7718        ::std::mem::size_of::<TSS2_TCTI_INFO>(),
7719        40usize,
7720        concat!("Size of: ", stringify!(TSS2_TCTI_INFO))
7721    );
7722    assert_eq!(
7723        ::std::mem::align_of::<TSS2_TCTI_INFO>(),
7724        8usize,
7725        concat!("Alignment of ", stringify!(TSS2_TCTI_INFO))
7726    );
7727    assert_eq!(
7728        unsafe { ::std::ptr::addr_of!((*ptr).version) as usize - ptr as usize },
7729        0usize,
7730        concat!(
7731            "Offset of field: ",
7732            stringify!(TSS2_TCTI_INFO),
7733            "::",
7734            stringify!(version)
7735        )
7736    );
7737    assert_eq!(
7738        unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize },
7739        8usize,
7740        concat!(
7741            "Offset of field: ",
7742            stringify!(TSS2_TCTI_INFO),
7743            "::",
7744            stringify!(name)
7745        )
7746    );
7747    assert_eq!(
7748        unsafe { ::std::ptr::addr_of!((*ptr).description) as usize - ptr as usize },
7749        16usize,
7750        concat!(
7751            "Offset of field: ",
7752            stringify!(TSS2_TCTI_INFO),
7753            "::",
7754            stringify!(description)
7755        )
7756    );
7757    assert_eq!(
7758        unsafe { ::std::ptr::addr_of!((*ptr).config_help) as usize - ptr as usize },
7759        24usize,
7760        concat!(
7761            "Offset of field: ",
7762            stringify!(TSS2_TCTI_INFO),
7763            "::",
7764            stringify!(config_help)
7765        )
7766    );
7767    assert_eq!(
7768        unsafe { ::std::ptr::addr_of!((*ptr).init) as usize - ptr as usize },
7769        32usize,
7770        concat!(
7771            "Offset of field: ",
7772            stringify!(TSS2_TCTI_INFO),
7773            "::",
7774            stringify!(init)
7775        )
7776    );
7777}
7778impl Default for TSS2_TCTI_INFO {
7779    fn default() -> Self {
7780        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
7781        unsafe {
7782            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
7783            s.assume_init()
7784        }
7785    }
7786}
7787pub type TSS2_TCTI_INFO_FUNC =
7788    ::std::option::Option<unsafe extern "C" fn() -> *const TSS2_TCTI_INFO>;
7789#[repr(C)]
7790#[derive(Debug, Copy, Clone)]
7791pub struct _TSS2_SYS_OPAQUE_CONTEXT_BLOB {
7792    _unused: [u8; 0],
7793}
7794pub type TSS2_SYS_CONTEXT = _TSS2_SYS_OPAQUE_CONTEXT_BLOB;
7795#[repr(C)]
7796#[derive(Debug, Copy, Clone)]
7797pub struct TSS2L_SYS_AUTH_COMMAND {
7798    pub count: u16,
7799    pub auths: [TPMS_AUTH_COMMAND; 3usize],
7800}
7801#[test]
7802fn bindgen_test_layout_TSS2L_SYS_AUTH_COMMAND() {
7803    const UNINIT: ::std::mem::MaybeUninit<TSS2L_SYS_AUTH_COMMAND> =
7804        ::std::mem::MaybeUninit::uninit();
7805    let ptr = UNINIT.as_ptr();
7806    assert_eq!(
7807        ::std::mem::size_of::<TSS2L_SYS_AUTH_COMMAND>(),
7808        424usize,
7809        concat!("Size of: ", stringify!(TSS2L_SYS_AUTH_COMMAND))
7810    );
7811    assert_eq!(
7812        ::std::mem::align_of::<TSS2L_SYS_AUTH_COMMAND>(),
7813        4usize,
7814        concat!("Alignment of ", stringify!(TSS2L_SYS_AUTH_COMMAND))
7815    );
7816    assert_eq!(
7817        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
7818        0usize,
7819        concat!(
7820            "Offset of field: ",
7821            stringify!(TSS2L_SYS_AUTH_COMMAND),
7822            "::",
7823            stringify!(count)
7824        )
7825    );
7826    assert_eq!(
7827        unsafe { ::std::ptr::addr_of!((*ptr).auths) as usize - ptr as usize },
7828        4usize,
7829        concat!(
7830            "Offset of field: ",
7831            stringify!(TSS2L_SYS_AUTH_COMMAND),
7832            "::",
7833            stringify!(auths)
7834        )
7835    );
7836}
7837impl Default for TSS2L_SYS_AUTH_COMMAND {
7838    fn default() -> Self {
7839        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
7840        unsafe {
7841            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
7842            s.assume_init()
7843        }
7844    }
7845}
7846#[repr(C)]
7847#[derive(Debug, Copy, Clone)]
7848pub struct TSS2L_SYS_AUTH_RESPONSE {
7849    pub count: u16,
7850    pub auths: [TPMS_AUTH_RESPONSE; 3usize],
7851}
7852#[test]
7853fn bindgen_test_layout_TSS2L_SYS_AUTH_RESPONSE() {
7854    const UNINIT: ::std::mem::MaybeUninit<TSS2L_SYS_AUTH_RESPONSE> =
7855        ::std::mem::MaybeUninit::uninit();
7856    let ptr = UNINIT.as_ptr();
7857    assert_eq!(
7858        ::std::mem::size_of::<TSS2L_SYS_AUTH_RESPONSE>(),
7859        404usize,
7860        concat!("Size of: ", stringify!(TSS2L_SYS_AUTH_RESPONSE))
7861    );
7862    assert_eq!(
7863        ::std::mem::align_of::<TSS2L_SYS_AUTH_RESPONSE>(),
7864        2usize,
7865        concat!("Alignment of ", stringify!(TSS2L_SYS_AUTH_RESPONSE))
7866    );
7867    assert_eq!(
7868        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
7869        0usize,
7870        concat!(
7871            "Offset of field: ",
7872            stringify!(TSS2L_SYS_AUTH_RESPONSE),
7873            "::",
7874            stringify!(count)
7875        )
7876    );
7877    assert_eq!(
7878        unsafe { ::std::ptr::addr_of!((*ptr).auths) as usize - ptr as usize },
7879        2usize,
7880        concat!(
7881            "Offset of field: ",
7882            stringify!(TSS2L_SYS_AUTH_RESPONSE),
7883            "::",
7884            stringify!(auths)
7885        )
7886    );
7887}
7888impl Default for TSS2L_SYS_AUTH_RESPONSE {
7889    fn default() -> Self {
7890        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
7891        unsafe {
7892            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
7893            s.assume_init()
7894        }
7895    }
7896}
7897extern "C" {
7898    pub fn Tss2_Sys_GetContextSize(maxCommandResponseSize: size_t) -> size_t;
7899}
7900extern "C" {
7901    pub fn Tss2_Sys_Initialize(
7902        sysContext: *mut TSS2_SYS_CONTEXT,
7903        contextSize: size_t,
7904        tctiContext: *mut TSS2_TCTI_CONTEXT,
7905        abiVersion: *mut TSS2_ABI_VERSION,
7906    ) -> TSS2_RC;
7907}
7908extern "C" {
7909    pub fn Tss2_Sys_Finalize(sysContext: *mut TSS2_SYS_CONTEXT);
7910}
7911extern "C" {
7912    pub fn Tss2_Sys_GetTctiContext(
7913        sysContext: *mut TSS2_SYS_CONTEXT,
7914        tctiContext: *mut *mut TSS2_TCTI_CONTEXT,
7915    ) -> TSS2_RC;
7916}
7917extern "C" {
7918    pub fn Tss2_Sys_GetDecryptParam(
7919        sysContext: *mut TSS2_SYS_CONTEXT,
7920        decryptParamSize: *mut size_t,
7921        decryptParamBuffer: *mut *const u8,
7922    ) -> TSS2_RC;
7923}
7924extern "C" {
7925    pub fn Tss2_Sys_SetDecryptParam(
7926        sysContext: *mut TSS2_SYS_CONTEXT,
7927        decryptParamSize: size_t,
7928        decryptParamBuffer: *const u8,
7929    ) -> TSS2_RC;
7930}
7931extern "C" {
7932    pub fn Tss2_Sys_GetCpBuffer(
7933        sysContext: *mut TSS2_SYS_CONTEXT,
7934        cpBufferUsedSize: *mut size_t,
7935        cpBuffer: *mut *const u8,
7936    ) -> TSS2_RC;
7937}
7938extern "C" {
7939    pub fn Tss2_Sys_SetCmdAuths(
7940        sysContext: *mut TSS2_SYS_CONTEXT,
7941        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7942    ) -> TSS2_RC;
7943}
7944extern "C" {
7945    pub fn Tss2_Sys_ExecuteAsync(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
7946}
7947extern "C" {
7948    pub fn Tss2_Sys_ExecuteFinish(sysContext: *mut TSS2_SYS_CONTEXT, timeout: i32) -> TSS2_RC;
7949}
7950extern "C" {
7951    pub fn Tss2_Sys_Execute(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
7952}
7953extern "C" {
7954    pub fn Tss2_Sys_GetCommandCode(
7955        sysContext: *mut TSS2_SYS_CONTEXT,
7956        commandCode: *mut UINT8,
7957    ) -> TSS2_RC;
7958}
7959extern "C" {
7960    pub fn Tss2_Sys_GetRspAuths(
7961        sysContext: *mut TSS2_SYS_CONTEXT,
7962        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7963    ) -> TSS2_RC;
7964}
7965extern "C" {
7966    pub fn Tss2_Sys_GetEncryptParam(
7967        sysContext: *mut TSS2_SYS_CONTEXT,
7968        encryptParamSize: *mut size_t,
7969        encryptParamBuffer: *mut *const u8,
7970    ) -> TSS2_RC;
7971}
7972extern "C" {
7973    pub fn Tss2_Sys_SetEncryptParam(
7974        sysContext: *mut TSS2_SYS_CONTEXT,
7975        encryptParamSize: size_t,
7976        encryptParamBuffer: *const u8,
7977    ) -> TSS2_RC;
7978}
7979extern "C" {
7980    pub fn Tss2_Sys_GetRpBuffer(
7981        sysContext: *mut TSS2_SYS_CONTEXT,
7982        rpBufferUsedSize: *mut size_t,
7983        rpBuffer: *mut *const u8,
7984    ) -> TSS2_RC;
7985}
7986extern "C" {
7987    pub fn Tss2_Sys_Startup_Prepare(
7988        sysContext: *mut TSS2_SYS_CONTEXT,
7989        startupType: TPM2_SU,
7990    ) -> TSS2_RC;
7991}
7992extern "C" {
7993    pub fn Tss2_Sys_Startup_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
7994}
7995extern "C" {
7996    pub fn Tss2_Sys_Startup(sysContext: *mut TSS2_SYS_CONTEXT, startupType: TPM2_SU) -> TSS2_RC;
7997}
7998extern "C" {
7999    pub fn Tss2_Sys_Shutdown_Prepare(
8000        sysContext: *mut TSS2_SYS_CONTEXT,
8001        shutdownType: TPM2_SU,
8002    ) -> TSS2_RC;
8003}
8004extern "C" {
8005    pub fn Tss2_Sys_Shutdown_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8006}
8007extern "C" {
8008    pub fn Tss2_Sys_Shutdown(
8009        sysContext: *mut TSS2_SYS_CONTEXT,
8010        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8011        shutdownType: TPM2_SU,
8012        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8013    ) -> TSS2_RC;
8014}
8015extern "C" {
8016    pub fn Tss2_Sys_SelfTest_Prepare(
8017        sysContext: *mut TSS2_SYS_CONTEXT,
8018        fullTest: TPMI_YES_NO,
8019    ) -> TSS2_RC;
8020}
8021extern "C" {
8022    pub fn Tss2_Sys_SelfTest_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8023}
8024extern "C" {
8025    pub fn Tss2_Sys_SelfTest(
8026        sysContext: *mut TSS2_SYS_CONTEXT,
8027        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8028        fullTest: TPMI_YES_NO,
8029        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8030    ) -> TSS2_RC;
8031}
8032extern "C" {
8033    pub fn Tss2_Sys_IncrementalSelfTest_Prepare(
8034        sysContext: *mut TSS2_SYS_CONTEXT,
8035        toTest: *const TPML_ALG,
8036    ) -> TSS2_RC;
8037}
8038extern "C" {
8039    pub fn Tss2_Sys_IncrementalSelfTest_Complete(
8040        sysContext: *mut TSS2_SYS_CONTEXT,
8041        toDoList: *mut TPML_ALG,
8042    ) -> TSS2_RC;
8043}
8044extern "C" {
8045    pub fn Tss2_Sys_IncrementalSelfTest(
8046        sysContext: *mut TSS2_SYS_CONTEXT,
8047        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8048        toTest: *const TPML_ALG,
8049        toDoList: *mut TPML_ALG,
8050        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8051    ) -> TSS2_RC;
8052}
8053extern "C" {
8054    pub fn Tss2_Sys_GetTestResult_Prepare(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8055}
8056extern "C" {
8057    pub fn Tss2_Sys_GetTestResult_Complete(
8058        sysContext: *mut TSS2_SYS_CONTEXT,
8059        outData: *mut TPM2B_MAX_BUFFER,
8060        testResult: *mut TPM2_RC,
8061    ) -> TSS2_RC;
8062}
8063extern "C" {
8064    pub fn Tss2_Sys_GetTestResult(
8065        sysContext: *mut TSS2_SYS_CONTEXT,
8066        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8067        outData: *mut TPM2B_MAX_BUFFER,
8068        testResult: *mut TPM2_RC,
8069        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8070    ) -> TSS2_RC;
8071}
8072extern "C" {
8073    pub fn Tss2_Sys_StartAuthSession_Prepare(
8074        sysContext: *mut TSS2_SYS_CONTEXT,
8075        tpmKey: TPMI_DH_OBJECT,
8076        bind: TPMI_DH_ENTITY,
8077        nonceCaller: *const TPM2B_NONCE,
8078        encryptedSalt: *const TPM2B_ENCRYPTED_SECRET,
8079        sessionType: TPM2_SE,
8080        symmetric: *const TPMT_SYM_DEF,
8081        authHash: TPMI_ALG_HASH,
8082    ) -> TSS2_RC;
8083}
8084extern "C" {
8085    pub fn Tss2_Sys_StartAuthSession_Complete(
8086        sysContext: *mut TSS2_SYS_CONTEXT,
8087        sessionHandle: *mut TPMI_SH_AUTH_SESSION,
8088        nonceTPM: *mut TPM2B_NONCE,
8089    ) -> TSS2_RC;
8090}
8091extern "C" {
8092    pub fn Tss2_Sys_StartAuthSession(
8093        sysContext: *mut TSS2_SYS_CONTEXT,
8094        tpmKey: TPMI_DH_OBJECT,
8095        bind: TPMI_DH_ENTITY,
8096        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8097        nonceCaller: *const TPM2B_NONCE,
8098        encryptedSalt: *const TPM2B_ENCRYPTED_SECRET,
8099        sessionType: TPM2_SE,
8100        symmetric: *const TPMT_SYM_DEF,
8101        authHash: TPMI_ALG_HASH,
8102        sessionHandle: *mut TPMI_SH_AUTH_SESSION,
8103        nonceTPM: *mut TPM2B_NONCE,
8104        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8105    ) -> TSS2_RC;
8106}
8107extern "C" {
8108    pub fn Tss2_Sys_PolicyRestart_Prepare(
8109        sysContext: *mut TSS2_SYS_CONTEXT,
8110        sessionHandle: TPMI_SH_POLICY,
8111    ) -> TSS2_RC;
8112}
8113extern "C" {
8114    pub fn Tss2_Sys_PolicyRestart_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8115}
8116extern "C" {
8117    pub fn Tss2_Sys_PolicyRestart(
8118        sysContext: *mut TSS2_SYS_CONTEXT,
8119        sessionHandle: TPMI_SH_POLICY,
8120        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8121        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8122    ) -> TSS2_RC;
8123}
8124extern "C" {
8125    pub fn Tss2_Sys_Create_Prepare(
8126        sysContext: *mut TSS2_SYS_CONTEXT,
8127        parentHandle: TPMI_DH_OBJECT,
8128        inSensitive: *const TPM2B_SENSITIVE_CREATE,
8129        inPublic: *const TPM2B_PUBLIC,
8130        outsideInfo: *const TPM2B_DATA,
8131        creationPCR: *const TPML_PCR_SELECTION,
8132    ) -> TSS2_RC;
8133}
8134extern "C" {
8135    pub fn Tss2_Sys_Create_Complete(
8136        sysContext: *mut TSS2_SYS_CONTEXT,
8137        outPrivate: *mut TPM2B_PRIVATE,
8138        outPublic: *mut TPM2B_PUBLIC,
8139        creationData: *mut TPM2B_CREATION_DATA,
8140        creationHash: *mut TPM2B_DIGEST,
8141        creationTicket: *mut TPMT_TK_CREATION,
8142    ) -> TSS2_RC;
8143}
8144extern "C" {
8145    pub fn Tss2_Sys_Create(
8146        sysContext: *mut TSS2_SYS_CONTEXT,
8147        parentHandle: TPMI_DH_OBJECT,
8148        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8149        inSensitive: *const TPM2B_SENSITIVE_CREATE,
8150        inPublic: *const TPM2B_PUBLIC,
8151        outsideInfo: *const TPM2B_DATA,
8152        creationPCR: *const TPML_PCR_SELECTION,
8153        outPrivate: *mut TPM2B_PRIVATE,
8154        outPublic: *mut TPM2B_PUBLIC,
8155        creationData: *mut TPM2B_CREATION_DATA,
8156        creationHash: *mut TPM2B_DIGEST,
8157        creationTicket: *mut TPMT_TK_CREATION,
8158        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8159    ) -> TSS2_RC;
8160}
8161extern "C" {
8162    pub fn Tss2_Sys_Load_Prepare(
8163        sysContext: *mut TSS2_SYS_CONTEXT,
8164        parentHandle: TPMI_DH_OBJECT,
8165        inPrivate: *const TPM2B_PRIVATE,
8166        inPublic: *const TPM2B_PUBLIC,
8167    ) -> TSS2_RC;
8168}
8169extern "C" {
8170    pub fn Tss2_Sys_Load_Complete(
8171        sysContext: *mut TSS2_SYS_CONTEXT,
8172        objectHandle: *mut TPM2_HANDLE,
8173        name: *mut TPM2B_NAME,
8174    ) -> TSS2_RC;
8175}
8176extern "C" {
8177    pub fn Tss2_Sys_Load(
8178        sysContext: *mut TSS2_SYS_CONTEXT,
8179        parentHandle: TPMI_DH_OBJECT,
8180        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8181        inPrivate: *const TPM2B_PRIVATE,
8182        inPublic: *const TPM2B_PUBLIC,
8183        objectHandle: *mut TPM2_HANDLE,
8184        name: *mut TPM2B_NAME,
8185        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8186    ) -> TSS2_RC;
8187}
8188extern "C" {
8189    pub fn Tss2_Sys_LoadExternal_Prepare(
8190        sysContext: *mut TSS2_SYS_CONTEXT,
8191        inPrivate: *const TPM2B_SENSITIVE,
8192        inPublic: *const TPM2B_PUBLIC,
8193        hierarchy: TPMI_RH_HIERARCHY,
8194    ) -> TSS2_RC;
8195}
8196extern "C" {
8197    pub fn Tss2_Sys_LoadExternal_Complete(
8198        sysContext: *mut TSS2_SYS_CONTEXT,
8199        objectHandle: *mut TPM2_HANDLE,
8200        name: *mut TPM2B_NAME,
8201    ) -> TSS2_RC;
8202}
8203extern "C" {
8204    pub fn Tss2_Sys_LoadExternal(
8205        sysContext: *mut TSS2_SYS_CONTEXT,
8206        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8207        inPrivate: *const TPM2B_SENSITIVE,
8208        inPublic: *const TPM2B_PUBLIC,
8209        hierarchy: TPMI_RH_HIERARCHY,
8210        objectHandle: *mut TPM2_HANDLE,
8211        name: *mut TPM2B_NAME,
8212        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8213    ) -> TSS2_RC;
8214}
8215extern "C" {
8216    pub fn Tss2_Sys_ReadPublic_Prepare(
8217        sysContext: *mut TSS2_SYS_CONTEXT,
8218        objectHandle: TPMI_DH_OBJECT,
8219    ) -> TSS2_RC;
8220}
8221extern "C" {
8222    pub fn Tss2_Sys_ReadPublic_Complete(
8223        sysContext: *mut TSS2_SYS_CONTEXT,
8224        outPublic: *mut TPM2B_PUBLIC,
8225        name: *mut TPM2B_NAME,
8226        qualifiedName: *mut TPM2B_NAME,
8227    ) -> TSS2_RC;
8228}
8229extern "C" {
8230    pub fn Tss2_Sys_ReadPublic(
8231        sysContext: *mut TSS2_SYS_CONTEXT,
8232        objectHandle: TPMI_DH_OBJECT,
8233        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8234        outPublic: *mut TPM2B_PUBLIC,
8235        name: *mut TPM2B_NAME,
8236        qualifiedName: *mut TPM2B_NAME,
8237        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8238    ) -> TSS2_RC;
8239}
8240extern "C" {
8241    pub fn Tss2_Sys_ActivateCredential_Prepare(
8242        sysContext: *mut TSS2_SYS_CONTEXT,
8243        activateHandle: TPMI_DH_OBJECT,
8244        keyHandle: TPMI_DH_OBJECT,
8245        credentialBlob: *const TPM2B_ID_OBJECT,
8246        secret: *const TPM2B_ENCRYPTED_SECRET,
8247    ) -> TSS2_RC;
8248}
8249extern "C" {
8250    pub fn Tss2_Sys_ActivateCredential_Complete(
8251        sysContext: *mut TSS2_SYS_CONTEXT,
8252        certInfo: *mut TPM2B_DIGEST,
8253    ) -> TSS2_RC;
8254}
8255extern "C" {
8256    pub fn Tss2_Sys_ActivateCredential(
8257        sysContext: *mut TSS2_SYS_CONTEXT,
8258        activateHandle: TPMI_DH_OBJECT,
8259        keyHandle: TPMI_DH_OBJECT,
8260        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8261        credentialBlob: *const TPM2B_ID_OBJECT,
8262        secret: *const TPM2B_ENCRYPTED_SECRET,
8263        certInfo: *mut TPM2B_DIGEST,
8264        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8265    ) -> TSS2_RC;
8266}
8267extern "C" {
8268    pub fn Tss2_Sys_MakeCredential_Prepare(
8269        sysContext: *mut TSS2_SYS_CONTEXT,
8270        handle: TPMI_DH_OBJECT,
8271        credential: *const TPM2B_DIGEST,
8272        objectName: *const TPM2B_NAME,
8273    ) -> TSS2_RC;
8274}
8275extern "C" {
8276    pub fn Tss2_Sys_MakeCredential_Complete(
8277        sysContext: *mut TSS2_SYS_CONTEXT,
8278        credentialBlob: *mut TPM2B_ID_OBJECT,
8279        secret: *mut TPM2B_ENCRYPTED_SECRET,
8280    ) -> TSS2_RC;
8281}
8282extern "C" {
8283    pub fn Tss2_Sys_MakeCredential(
8284        sysContext: *mut TSS2_SYS_CONTEXT,
8285        handle: TPMI_DH_OBJECT,
8286        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8287        credential: *const TPM2B_DIGEST,
8288        objectName: *const TPM2B_NAME,
8289        credentialBlob: *mut TPM2B_ID_OBJECT,
8290        secret: *mut TPM2B_ENCRYPTED_SECRET,
8291        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8292    ) -> TSS2_RC;
8293}
8294extern "C" {
8295    pub fn Tss2_Sys_Unseal_Prepare(
8296        sysContext: *mut TSS2_SYS_CONTEXT,
8297        itemHandle: TPMI_DH_OBJECT,
8298    ) -> TSS2_RC;
8299}
8300extern "C" {
8301    pub fn Tss2_Sys_Unseal_Complete(
8302        sysContext: *mut TSS2_SYS_CONTEXT,
8303        outData: *mut TPM2B_SENSITIVE_DATA,
8304    ) -> TSS2_RC;
8305}
8306extern "C" {
8307    pub fn Tss2_Sys_Unseal(
8308        sysContext: *mut TSS2_SYS_CONTEXT,
8309        itemHandle: TPMI_DH_OBJECT,
8310        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8311        outData: *mut TPM2B_SENSITIVE_DATA,
8312        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8313    ) -> TSS2_RC;
8314}
8315extern "C" {
8316    pub fn Tss2_Sys_ObjectChangeAuth_Prepare(
8317        sysContext: *mut TSS2_SYS_CONTEXT,
8318        objectHandle: TPMI_DH_OBJECT,
8319        parentHandle: TPMI_DH_OBJECT,
8320        newAuth: *const TPM2B_AUTH,
8321    ) -> TSS2_RC;
8322}
8323extern "C" {
8324    pub fn Tss2_Sys_ObjectChangeAuth_Complete(
8325        sysContext: *mut TSS2_SYS_CONTEXT,
8326        outPrivate: *mut TPM2B_PRIVATE,
8327    ) -> TSS2_RC;
8328}
8329extern "C" {
8330    pub fn Tss2_Sys_ObjectChangeAuth(
8331        sysContext: *mut TSS2_SYS_CONTEXT,
8332        objectHandle: TPMI_DH_OBJECT,
8333        parentHandle: TPMI_DH_OBJECT,
8334        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8335        newAuth: *const TPM2B_AUTH,
8336        outPrivate: *mut TPM2B_PRIVATE,
8337        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8338    ) -> TSS2_RC;
8339}
8340extern "C" {
8341    pub fn Tss2_Sys_Duplicate_Prepare(
8342        sysContext: *mut TSS2_SYS_CONTEXT,
8343        objectHandle: TPMI_DH_OBJECT,
8344        newParentHandle: TPMI_DH_OBJECT,
8345        encryptionKeyIn: *const TPM2B_DATA,
8346        symmetricAlg: *const TPMT_SYM_DEF_OBJECT,
8347    ) -> TSS2_RC;
8348}
8349extern "C" {
8350    pub fn Tss2_Sys_Duplicate_Complete(
8351        sysContext: *mut TSS2_SYS_CONTEXT,
8352        encryptionKeyOut: *mut TPM2B_DATA,
8353        duplicate: *mut TPM2B_PRIVATE,
8354        outSymSeed: *mut TPM2B_ENCRYPTED_SECRET,
8355    ) -> TSS2_RC;
8356}
8357extern "C" {
8358    pub fn Tss2_Sys_Duplicate(
8359        sysContext: *mut TSS2_SYS_CONTEXT,
8360        objectHandle: TPMI_DH_OBJECT,
8361        newParentHandle: TPMI_DH_OBJECT,
8362        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8363        encryptionKeyIn: *const TPM2B_DATA,
8364        symmetricAlg: *const TPMT_SYM_DEF_OBJECT,
8365        encryptionKeyOut: *mut TPM2B_DATA,
8366        duplicate: *mut TPM2B_PRIVATE,
8367        outSymSeed: *mut TPM2B_ENCRYPTED_SECRET,
8368        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8369    ) -> TSS2_RC;
8370}
8371extern "C" {
8372    pub fn Tss2_Sys_Rewrap_Prepare(
8373        sysContext: *mut TSS2_SYS_CONTEXT,
8374        oldParent: TPMI_DH_OBJECT,
8375        newParent: TPMI_DH_OBJECT,
8376        inDuplicate: *const TPM2B_PRIVATE,
8377        name: *const TPM2B_NAME,
8378        inSymSeed: *const TPM2B_ENCRYPTED_SECRET,
8379    ) -> TSS2_RC;
8380}
8381extern "C" {
8382    pub fn Tss2_Sys_Rewrap_Complete(
8383        sysContext: *mut TSS2_SYS_CONTEXT,
8384        outDuplicate: *mut TPM2B_PRIVATE,
8385        outSymSeed: *mut TPM2B_ENCRYPTED_SECRET,
8386    ) -> TSS2_RC;
8387}
8388extern "C" {
8389    pub fn Tss2_Sys_Rewrap(
8390        sysContext: *mut TSS2_SYS_CONTEXT,
8391        oldParent: TPMI_DH_OBJECT,
8392        newParent: TPMI_DH_OBJECT,
8393        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8394        inDuplicate: *const TPM2B_PRIVATE,
8395        name: *const TPM2B_NAME,
8396        inSymSeed: *const TPM2B_ENCRYPTED_SECRET,
8397        outDuplicate: *mut TPM2B_PRIVATE,
8398        outSymSeed: *mut TPM2B_ENCRYPTED_SECRET,
8399        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8400    ) -> TSS2_RC;
8401}
8402extern "C" {
8403    pub fn Tss2_Sys_Import_Prepare(
8404        sysContext: *mut TSS2_SYS_CONTEXT,
8405        parentHandle: TPMI_DH_OBJECT,
8406        encryptionKey: *const TPM2B_DATA,
8407        objectPublic: *const TPM2B_PUBLIC,
8408        duplicate: *const TPM2B_PRIVATE,
8409        inSymSeed: *const TPM2B_ENCRYPTED_SECRET,
8410        symmetricAlg: *const TPMT_SYM_DEF_OBJECT,
8411    ) -> TSS2_RC;
8412}
8413extern "C" {
8414    pub fn Tss2_Sys_Import_Complete(
8415        sysContext: *mut TSS2_SYS_CONTEXT,
8416        outPrivate: *mut TPM2B_PRIVATE,
8417    ) -> TSS2_RC;
8418}
8419extern "C" {
8420    pub fn Tss2_Sys_Import(
8421        sysContext: *mut TSS2_SYS_CONTEXT,
8422        parentHandle: TPMI_DH_OBJECT,
8423        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8424        encryptionKey: *const TPM2B_DATA,
8425        objectPublic: *const TPM2B_PUBLIC,
8426        duplicate: *const TPM2B_PRIVATE,
8427        inSymSeed: *const TPM2B_ENCRYPTED_SECRET,
8428        symmetricAlg: *const TPMT_SYM_DEF_OBJECT,
8429        outPrivate: *mut TPM2B_PRIVATE,
8430        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8431    ) -> TSS2_RC;
8432}
8433extern "C" {
8434    pub fn Tss2_Sys_RSA_Encrypt_Prepare(
8435        sysContext: *mut TSS2_SYS_CONTEXT,
8436        keyHandle: TPMI_DH_OBJECT,
8437        message: *const TPM2B_PUBLIC_KEY_RSA,
8438        inScheme: *const TPMT_RSA_DECRYPT,
8439        label: *const TPM2B_DATA,
8440    ) -> TSS2_RC;
8441}
8442extern "C" {
8443    pub fn Tss2_Sys_RSA_Encrypt_Complete(
8444        sysContext: *mut TSS2_SYS_CONTEXT,
8445        outData: *mut TPM2B_PUBLIC_KEY_RSA,
8446    ) -> TSS2_RC;
8447}
8448extern "C" {
8449    pub fn Tss2_Sys_RSA_Encrypt(
8450        sysContext: *mut TSS2_SYS_CONTEXT,
8451        keyHandle: TPMI_DH_OBJECT,
8452        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8453        message: *const TPM2B_PUBLIC_KEY_RSA,
8454        inScheme: *const TPMT_RSA_DECRYPT,
8455        label: *const TPM2B_DATA,
8456        outData: *mut TPM2B_PUBLIC_KEY_RSA,
8457        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8458    ) -> TSS2_RC;
8459}
8460extern "C" {
8461    pub fn Tss2_Sys_RSA_Decrypt_Prepare(
8462        sysContext: *mut TSS2_SYS_CONTEXT,
8463        keyHandle: TPMI_DH_OBJECT,
8464        cipherText: *const TPM2B_PUBLIC_KEY_RSA,
8465        inScheme: *const TPMT_RSA_DECRYPT,
8466        label: *const TPM2B_DATA,
8467    ) -> TSS2_RC;
8468}
8469extern "C" {
8470    pub fn Tss2_Sys_RSA_Decrypt_Complete(
8471        sysContext: *mut TSS2_SYS_CONTEXT,
8472        message: *mut TPM2B_PUBLIC_KEY_RSA,
8473    ) -> TSS2_RC;
8474}
8475extern "C" {
8476    pub fn Tss2_Sys_RSA_Decrypt(
8477        sysContext: *mut TSS2_SYS_CONTEXT,
8478        keyHandle: TPMI_DH_OBJECT,
8479        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8480        cipherText: *const TPM2B_PUBLIC_KEY_RSA,
8481        inScheme: *const TPMT_RSA_DECRYPT,
8482        label: *const TPM2B_DATA,
8483        message: *mut TPM2B_PUBLIC_KEY_RSA,
8484        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8485    ) -> TSS2_RC;
8486}
8487extern "C" {
8488    pub fn Tss2_Sys_ECDH_KeyGen_Prepare(
8489        sysContext: *mut TSS2_SYS_CONTEXT,
8490        keyHandle: TPMI_DH_OBJECT,
8491    ) -> TSS2_RC;
8492}
8493extern "C" {
8494    pub fn Tss2_Sys_ECDH_KeyGen_Complete(
8495        sysContext: *mut TSS2_SYS_CONTEXT,
8496        zPoint: *mut TPM2B_ECC_POINT,
8497        pubPoint: *mut TPM2B_ECC_POINT,
8498    ) -> TSS2_RC;
8499}
8500extern "C" {
8501    pub fn Tss2_Sys_ECDH_KeyGen(
8502        sysContext: *mut TSS2_SYS_CONTEXT,
8503        keyHandle: TPMI_DH_OBJECT,
8504        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8505        zPoint: *mut TPM2B_ECC_POINT,
8506        pubPoint: *mut TPM2B_ECC_POINT,
8507        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8508    ) -> TSS2_RC;
8509}
8510extern "C" {
8511    pub fn Tss2_Sys_ECDH_ZGen_Prepare(
8512        sysContext: *mut TSS2_SYS_CONTEXT,
8513        keyHandle: TPMI_DH_OBJECT,
8514        inPoint: *const TPM2B_ECC_POINT,
8515    ) -> TSS2_RC;
8516}
8517extern "C" {
8518    pub fn Tss2_Sys_ECDH_ZGen_Complete(
8519        sysContext: *mut TSS2_SYS_CONTEXT,
8520        outPoint: *mut TPM2B_ECC_POINT,
8521    ) -> TSS2_RC;
8522}
8523extern "C" {
8524    pub fn Tss2_Sys_ECDH_ZGen(
8525        sysContext: *mut TSS2_SYS_CONTEXT,
8526        keyHandle: TPMI_DH_OBJECT,
8527        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8528        inPoint: *const TPM2B_ECC_POINT,
8529        outPoint: *mut TPM2B_ECC_POINT,
8530        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8531    ) -> TSS2_RC;
8532}
8533extern "C" {
8534    pub fn Tss2_Sys_ECC_Parameters_Prepare(
8535        sysContext: *mut TSS2_SYS_CONTEXT,
8536        curveID: TPMI_ECC_CURVE,
8537    ) -> TSS2_RC;
8538}
8539extern "C" {
8540    pub fn Tss2_Sys_ECC_Parameters_Complete(
8541        sysContext: *mut TSS2_SYS_CONTEXT,
8542        parameters: *mut TPMS_ALGORITHM_DETAIL_ECC,
8543    ) -> TSS2_RC;
8544}
8545extern "C" {
8546    pub fn Tss2_Sys_ECC_Parameters(
8547        sysContext: *mut TSS2_SYS_CONTEXT,
8548        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8549        curveID: TPMI_ECC_CURVE,
8550        parameters: *mut TPMS_ALGORITHM_DETAIL_ECC,
8551        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8552    ) -> TSS2_RC;
8553}
8554extern "C" {
8555    pub fn Tss2_Sys_ZGen_2Phase_Prepare(
8556        sysContext: *mut TSS2_SYS_CONTEXT,
8557        keyA: TPMI_DH_OBJECT,
8558        inQsB: *const TPM2B_ECC_POINT,
8559        inQeB: *const TPM2B_ECC_POINT,
8560        inScheme: TPMI_ECC_KEY_EXCHANGE,
8561        counter: UINT16,
8562    ) -> TSS2_RC;
8563}
8564extern "C" {
8565    pub fn Tss2_Sys_ZGen_2Phase_Complete(
8566        sysContext: *mut TSS2_SYS_CONTEXT,
8567        outZ1: *mut TPM2B_ECC_POINT,
8568        outZ2: *mut TPM2B_ECC_POINT,
8569    ) -> TSS2_RC;
8570}
8571extern "C" {
8572    pub fn Tss2_Sys_ZGen_2Phase(
8573        sysContext: *mut TSS2_SYS_CONTEXT,
8574        keyA: TPMI_DH_OBJECT,
8575        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8576        inQsB: *const TPM2B_ECC_POINT,
8577        inQeB: *const TPM2B_ECC_POINT,
8578        inScheme: TPMI_ECC_KEY_EXCHANGE,
8579        counter: UINT16,
8580        outZ1: *mut TPM2B_ECC_POINT,
8581        outZ2: *mut TPM2B_ECC_POINT,
8582        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8583    ) -> TSS2_RC;
8584}
8585extern "C" {
8586    pub fn Tss2_Sys_EncryptDecrypt_Prepare(
8587        sysContext: *mut TSS2_SYS_CONTEXT,
8588        keyHandle: TPMI_DH_OBJECT,
8589        decrypt: TPMI_YES_NO,
8590        mode: TPMI_ALG_SYM_MODE,
8591        ivIn: *const TPM2B_IV,
8592        inData: *const TPM2B_MAX_BUFFER,
8593    ) -> TSS2_RC;
8594}
8595extern "C" {
8596    pub fn Tss2_Sys_EncryptDecrypt_Complete(
8597        sysContext: *mut TSS2_SYS_CONTEXT,
8598        outData: *mut TPM2B_MAX_BUFFER,
8599        ivOut: *mut TPM2B_IV,
8600    ) -> TSS2_RC;
8601}
8602extern "C" {
8603    pub fn Tss2_Sys_EncryptDecrypt(
8604        sysContext: *mut TSS2_SYS_CONTEXT,
8605        keyHandle: TPMI_DH_OBJECT,
8606        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8607        decrypt: TPMI_YES_NO,
8608        mode: TPMI_ALG_SYM_MODE,
8609        ivIn: *const TPM2B_IV,
8610        inData: *const TPM2B_MAX_BUFFER,
8611        outData: *mut TPM2B_MAX_BUFFER,
8612        ivOut: *mut TPM2B_IV,
8613        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8614    ) -> TSS2_RC;
8615}
8616extern "C" {
8617    pub fn Tss2_Sys_EncryptDecrypt2_Prepare(
8618        sysContext: *mut TSS2_SYS_CONTEXT,
8619        keyHandle: TPMI_DH_OBJECT,
8620        inData: *const TPM2B_MAX_BUFFER,
8621        decrypt: TPMI_YES_NO,
8622        mode: TPMI_ALG_SYM_MODE,
8623        ivIn: *const TPM2B_IV,
8624    ) -> TSS2_RC;
8625}
8626extern "C" {
8627    pub fn Tss2_Sys_EncryptDecrypt2_Complete(
8628        sysContext: *mut TSS2_SYS_CONTEXT,
8629        outData: *mut TPM2B_MAX_BUFFER,
8630        ivOut: *mut TPM2B_IV,
8631    ) -> TSS2_RC;
8632}
8633extern "C" {
8634    pub fn Tss2_Sys_EncryptDecrypt2(
8635        sysContext: *mut TSS2_SYS_CONTEXT,
8636        keyHandle: TPMI_DH_OBJECT,
8637        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8638        inData: *const TPM2B_MAX_BUFFER,
8639        decrypt: TPMI_YES_NO,
8640        mode: TPMI_ALG_SYM_MODE,
8641        ivIn: *const TPM2B_IV,
8642        outData: *mut TPM2B_MAX_BUFFER,
8643        ivOut: *mut TPM2B_IV,
8644        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8645    ) -> TSS2_RC;
8646}
8647extern "C" {
8648    pub fn Tss2_Sys_Hash_Prepare(
8649        sysContext: *mut TSS2_SYS_CONTEXT,
8650        data: *const TPM2B_MAX_BUFFER,
8651        hashAlg: TPMI_ALG_HASH,
8652        hierarchy: TPMI_RH_HIERARCHY,
8653    ) -> TSS2_RC;
8654}
8655extern "C" {
8656    pub fn Tss2_Sys_Hash_Complete(
8657        sysContext: *mut TSS2_SYS_CONTEXT,
8658        outHash: *mut TPM2B_DIGEST,
8659        validation: *mut TPMT_TK_HASHCHECK,
8660    ) -> TSS2_RC;
8661}
8662extern "C" {
8663    pub fn Tss2_Sys_Hash(
8664        sysContext: *mut TSS2_SYS_CONTEXT,
8665        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8666        data: *const TPM2B_MAX_BUFFER,
8667        hashAlg: TPMI_ALG_HASH,
8668        hierarchy: TPMI_RH_HIERARCHY,
8669        outHash: *mut TPM2B_DIGEST,
8670        validation: *mut TPMT_TK_HASHCHECK,
8671        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8672    ) -> TSS2_RC;
8673}
8674extern "C" {
8675    pub fn Tss2_Sys_HMAC_Prepare(
8676        sysContext: *mut TSS2_SYS_CONTEXT,
8677        handle: TPMI_DH_OBJECT,
8678        buffer: *const TPM2B_MAX_BUFFER,
8679        hashAlg: TPMI_ALG_HASH,
8680    ) -> TSS2_RC;
8681}
8682extern "C" {
8683    pub fn Tss2_Sys_HMAC_Complete(
8684        sysContext: *mut TSS2_SYS_CONTEXT,
8685        outHMAC: *mut TPM2B_DIGEST,
8686    ) -> TSS2_RC;
8687}
8688extern "C" {
8689    pub fn Tss2_Sys_HMAC(
8690        sysContext: *mut TSS2_SYS_CONTEXT,
8691        handle: TPMI_DH_OBJECT,
8692        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8693        buffer: *const TPM2B_MAX_BUFFER,
8694        hashAlg: TPMI_ALG_HASH,
8695        outHMAC: *mut TPM2B_DIGEST,
8696        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8697    ) -> TSS2_RC;
8698}
8699extern "C" {
8700    pub fn Tss2_Sys_GetRandom_Prepare(
8701        sysContext: *mut TSS2_SYS_CONTEXT,
8702        bytesRequested: UINT16,
8703    ) -> TSS2_RC;
8704}
8705extern "C" {
8706    pub fn Tss2_Sys_GetRandom_Complete(
8707        sysContext: *mut TSS2_SYS_CONTEXT,
8708        randomBytes: *mut TPM2B_DIGEST,
8709    ) -> TSS2_RC;
8710}
8711extern "C" {
8712    pub fn Tss2_Sys_GetRandom(
8713        sysContext: *mut TSS2_SYS_CONTEXT,
8714        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8715        bytesRequested: UINT16,
8716        randomBytes: *mut TPM2B_DIGEST,
8717        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8718    ) -> TSS2_RC;
8719}
8720extern "C" {
8721    pub fn Tss2_Sys_StirRandom_Prepare(
8722        sysContext: *mut TSS2_SYS_CONTEXT,
8723        inData: *const TPM2B_SENSITIVE_DATA,
8724    ) -> TSS2_RC;
8725}
8726extern "C" {
8727    pub fn Tss2_Sys_StirRandom_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8728}
8729extern "C" {
8730    pub fn Tss2_Sys_StirRandom(
8731        sysContext: *mut TSS2_SYS_CONTEXT,
8732        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8733        inData: *const TPM2B_SENSITIVE_DATA,
8734        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8735    ) -> TSS2_RC;
8736}
8737extern "C" {
8738    pub fn Tss2_Sys_HMAC_Start_Prepare(
8739        sysContext: *mut TSS2_SYS_CONTEXT,
8740        handle: TPMI_DH_OBJECT,
8741        auth: *const TPM2B_AUTH,
8742        hashAlg: TPMI_ALG_HASH,
8743    ) -> TSS2_RC;
8744}
8745extern "C" {
8746    pub fn Tss2_Sys_HMAC_Start_Complete(
8747        sysContext: *mut TSS2_SYS_CONTEXT,
8748        sequenceHandle: *mut TPMI_DH_OBJECT,
8749    ) -> TSS2_RC;
8750}
8751extern "C" {
8752    pub fn Tss2_Sys_HMAC_Start(
8753        sysContext: *mut TSS2_SYS_CONTEXT,
8754        handle: TPMI_DH_OBJECT,
8755        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8756        auth: *const TPM2B_AUTH,
8757        hashAlg: TPMI_ALG_HASH,
8758        sequenceHandle: *mut TPMI_DH_OBJECT,
8759        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8760    ) -> TSS2_RC;
8761}
8762extern "C" {
8763    pub fn Tss2_Sys_HashSequenceStart_Prepare(
8764        sysContext: *mut TSS2_SYS_CONTEXT,
8765        auth: *const TPM2B_AUTH,
8766        hashAlg: TPMI_ALG_HASH,
8767    ) -> TSS2_RC;
8768}
8769extern "C" {
8770    pub fn Tss2_Sys_HashSequenceStart_Complete(
8771        sysContext: *mut TSS2_SYS_CONTEXT,
8772        sequenceHandle: *mut TPMI_DH_OBJECT,
8773    ) -> TSS2_RC;
8774}
8775extern "C" {
8776    pub fn Tss2_Sys_HashSequenceStart(
8777        sysContext: *mut TSS2_SYS_CONTEXT,
8778        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8779        auth: *const TPM2B_AUTH,
8780        hashAlg: TPMI_ALG_HASH,
8781        sequenceHandle: *mut TPMI_DH_OBJECT,
8782        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8783    ) -> TSS2_RC;
8784}
8785extern "C" {
8786    pub fn Tss2_Sys_SequenceUpdate_Prepare(
8787        sysContext: *mut TSS2_SYS_CONTEXT,
8788        sequenceHandle: TPMI_DH_OBJECT,
8789        buffer: *const TPM2B_MAX_BUFFER,
8790    ) -> TSS2_RC;
8791}
8792extern "C" {
8793    pub fn Tss2_Sys_SequenceUpdate_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8794}
8795extern "C" {
8796    pub fn Tss2_Sys_SequenceUpdate(
8797        sysContext: *mut TSS2_SYS_CONTEXT,
8798        sequenceHandle: TPMI_DH_OBJECT,
8799        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8800        buffer: *const TPM2B_MAX_BUFFER,
8801        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8802    ) -> TSS2_RC;
8803}
8804extern "C" {
8805    pub fn Tss2_Sys_SequenceComplete_Prepare(
8806        sysContext: *mut TSS2_SYS_CONTEXT,
8807        sequenceHandle: TPMI_DH_OBJECT,
8808        buffer: *const TPM2B_MAX_BUFFER,
8809        hierarchy: TPMI_RH_HIERARCHY,
8810    ) -> TSS2_RC;
8811}
8812extern "C" {
8813    pub fn Tss2_Sys_SequenceComplete_Complete(
8814        sysContext: *mut TSS2_SYS_CONTEXT,
8815        result: *mut TPM2B_DIGEST,
8816        validation: *mut TPMT_TK_HASHCHECK,
8817    ) -> TSS2_RC;
8818}
8819extern "C" {
8820    pub fn Tss2_Sys_SequenceComplete(
8821        sysContext: *mut TSS2_SYS_CONTEXT,
8822        sequenceHandle: TPMI_DH_OBJECT,
8823        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8824        buffer: *const TPM2B_MAX_BUFFER,
8825        hierarchy: TPMI_RH_HIERARCHY,
8826        result: *mut TPM2B_DIGEST,
8827        validation: *mut TPMT_TK_HASHCHECK,
8828        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8829    ) -> TSS2_RC;
8830}
8831extern "C" {
8832    pub fn Tss2_Sys_EventSequenceComplete_Prepare(
8833        sysContext: *mut TSS2_SYS_CONTEXT,
8834        pcrHandle: TPMI_DH_PCR,
8835        sequenceHandle: TPMI_DH_OBJECT,
8836        buffer: *const TPM2B_MAX_BUFFER,
8837    ) -> TSS2_RC;
8838}
8839extern "C" {
8840    pub fn Tss2_Sys_EventSequenceComplete_Complete(
8841        sysContext: *mut TSS2_SYS_CONTEXT,
8842        results: *mut TPML_DIGEST_VALUES,
8843    ) -> TSS2_RC;
8844}
8845extern "C" {
8846    pub fn Tss2_Sys_EventSequenceComplete(
8847        sysContext: *mut TSS2_SYS_CONTEXT,
8848        pcrHandle: TPMI_DH_PCR,
8849        sequenceHandle: TPMI_DH_OBJECT,
8850        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8851        buffer: *const TPM2B_MAX_BUFFER,
8852        results: *mut TPML_DIGEST_VALUES,
8853        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8854    ) -> TSS2_RC;
8855}
8856extern "C" {
8857    pub fn Tss2_Sys_Certify_Prepare(
8858        sysContext: *mut TSS2_SYS_CONTEXT,
8859        objectHandle: TPMI_DH_OBJECT,
8860        signHandle: TPMI_DH_OBJECT,
8861        qualifyingData: *const TPM2B_DATA,
8862        inScheme: *const TPMT_SIG_SCHEME,
8863    ) -> TSS2_RC;
8864}
8865extern "C" {
8866    pub fn Tss2_Sys_Certify_Complete(
8867        sysContext: *mut TSS2_SYS_CONTEXT,
8868        certifyInfo: *mut TPM2B_ATTEST,
8869        signature: *mut TPMT_SIGNATURE,
8870    ) -> TSS2_RC;
8871}
8872extern "C" {
8873    pub fn Tss2_Sys_Certify(
8874        sysContext: *mut TSS2_SYS_CONTEXT,
8875        objectHandle: TPMI_DH_OBJECT,
8876        signHandle: TPMI_DH_OBJECT,
8877        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8878        qualifyingData: *const TPM2B_DATA,
8879        inScheme: *const TPMT_SIG_SCHEME,
8880        certifyInfo: *mut TPM2B_ATTEST,
8881        signature: *mut TPMT_SIGNATURE,
8882        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8883    ) -> TSS2_RC;
8884}
8885extern "C" {
8886    pub fn Tss2_Sys_CertifyCreation_Prepare(
8887        sysContext: *mut TSS2_SYS_CONTEXT,
8888        signHandle: TPMI_DH_OBJECT,
8889        objectHandle: TPMI_DH_OBJECT,
8890        qualifyingData: *const TPM2B_DATA,
8891        creationHash: *const TPM2B_DIGEST,
8892        inScheme: *const TPMT_SIG_SCHEME,
8893        creationTicket: *const TPMT_TK_CREATION,
8894    ) -> TSS2_RC;
8895}
8896extern "C" {
8897    pub fn Tss2_Sys_CertifyCreation_Complete(
8898        sysContext: *mut TSS2_SYS_CONTEXT,
8899        certifyInfo: *mut TPM2B_ATTEST,
8900        signature: *mut TPMT_SIGNATURE,
8901    ) -> TSS2_RC;
8902}
8903extern "C" {
8904    pub fn Tss2_Sys_CertifyCreation(
8905        sysContext: *mut TSS2_SYS_CONTEXT,
8906        signHandle: TPMI_DH_OBJECT,
8907        objectHandle: TPMI_DH_OBJECT,
8908        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8909        qualifyingData: *const TPM2B_DATA,
8910        creationHash: *const TPM2B_DIGEST,
8911        inScheme: *const TPMT_SIG_SCHEME,
8912        creationTicket: *const TPMT_TK_CREATION,
8913        certifyInfo: *mut TPM2B_ATTEST,
8914        signature: *mut TPMT_SIGNATURE,
8915        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8916    ) -> TSS2_RC;
8917}
8918extern "C" {
8919    pub fn Tss2_Sys_Quote_Prepare(
8920        sysContext: *mut TSS2_SYS_CONTEXT,
8921        signHandle: TPMI_DH_OBJECT,
8922        qualifyingData: *const TPM2B_DATA,
8923        inScheme: *const TPMT_SIG_SCHEME,
8924        PCRselect: *const TPML_PCR_SELECTION,
8925    ) -> TSS2_RC;
8926}
8927extern "C" {
8928    pub fn Tss2_Sys_Quote_Complete(
8929        sysContext: *mut TSS2_SYS_CONTEXT,
8930        quoted: *mut TPM2B_ATTEST,
8931        signature: *mut TPMT_SIGNATURE,
8932    ) -> TSS2_RC;
8933}
8934extern "C" {
8935    pub fn Tss2_Sys_Quote(
8936        sysContext: *mut TSS2_SYS_CONTEXT,
8937        signHandle: TPMI_DH_OBJECT,
8938        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8939        qualifyingData: *const TPM2B_DATA,
8940        inScheme: *const TPMT_SIG_SCHEME,
8941        PCRselect: *const TPML_PCR_SELECTION,
8942        quoted: *mut TPM2B_ATTEST,
8943        signature: *mut TPMT_SIGNATURE,
8944        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8945    ) -> TSS2_RC;
8946}
8947extern "C" {
8948    pub fn Tss2_Sys_GetSessionAuditDigest_Prepare(
8949        sysContext: *mut TSS2_SYS_CONTEXT,
8950        privacyAdminHandle: TPMI_RH_ENDORSEMENT,
8951        signHandle: TPMI_DH_OBJECT,
8952        sessionHandle: TPMI_SH_HMAC,
8953        qualifyingData: *const TPM2B_DATA,
8954        inScheme: *const TPMT_SIG_SCHEME,
8955    ) -> TSS2_RC;
8956}
8957extern "C" {
8958    pub fn Tss2_Sys_GetSessionAuditDigest_Complete(
8959        sysContext: *mut TSS2_SYS_CONTEXT,
8960        auditInfo: *mut TPM2B_ATTEST,
8961        signature: *mut TPMT_SIGNATURE,
8962    ) -> TSS2_RC;
8963}
8964extern "C" {
8965    pub fn Tss2_Sys_GetSessionAuditDigest(
8966        sysContext: *mut TSS2_SYS_CONTEXT,
8967        privacyAdminHandle: TPMI_RH_ENDORSEMENT,
8968        signHandle: TPMI_DH_OBJECT,
8969        sessionHandle: TPMI_SH_HMAC,
8970        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8971        qualifyingData: *const TPM2B_DATA,
8972        inScheme: *const TPMT_SIG_SCHEME,
8973        auditInfo: *mut TPM2B_ATTEST,
8974        signature: *mut TPMT_SIGNATURE,
8975        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8976    ) -> TSS2_RC;
8977}
8978extern "C" {
8979    pub fn Tss2_Sys_GetCommandAuditDigest_Prepare(
8980        sysContext: *mut TSS2_SYS_CONTEXT,
8981        privacyHandle: TPMI_RH_ENDORSEMENT,
8982        signHandle: TPMI_DH_OBJECT,
8983        qualifyingData: *const TPM2B_DATA,
8984        inScheme: *const TPMT_SIG_SCHEME,
8985    ) -> TSS2_RC;
8986}
8987extern "C" {
8988    pub fn Tss2_Sys_GetCommandAuditDigest_Complete(
8989        sysContext: *mut TSS2_SYS_CONTEXT,
8990        auditInfo: *mut TPM2B_ATTEST,
8991        signature: *mut TPMT_SIGNATURE,
8992    ) -> TSS2_RC;
8993}
8994extern "C" {
8995    pub fn Tss2_Sys_GetCommandAuditDigest(
8996        sysContext: *mut TSS2_SYS_CONTEXT,
8997        privacyHandle: TPMI_RH_ENDORSEMENT,
8998        signHandle: TPMI_DH_OBJECT,
8999        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9000        qualifyingData: *const TPM2B_DATA,
9001        inScheme: *const TPMT_SIG_SCHEME,
9002        auditInfo: *mut TPM2B_ATTEST,
9003        signature: *mut TPMT_SIGNATURE,
9004        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9005    ) -> TSS2_RC;
9006}
9007extern "C" {
9008    pub fn Tss2_Sys_GetTime_Prepare(
9009        sysContext: *mut TSS2_SYS_CONTEXT,
9010        privacyAdminHandle: TPMI_RH_ENDORSEMENT,
9011        signHandle: TPMI_DH_OBJECT,
9012        qualifyingData: *const TPM2B_DATA,
9013        inScheme: *const TPMT_SIG_SCHEME,
9014    ) -> TSS2_RC;
9015}
9016extern "C" {
9017    pub fn Tss2_Sys_GetTime_Complete(
9018        sysContext: *mut TSS2_SYS_CONTEXT,
9019        timeInfo: *mut TPM2B_ATTEST,
9020        signature: *mut TPMT_SIGNATURE,
9021    ) -> TSS2_RC;
9022}
9023extern "C" {
9024    pub fn Tss2_Sys_GetTime(
9025        sysContext: *mut TSS2_SYS_CONTEXT,
9026        privacyAdminHandle: TPMI_RH_ENDORSEMENT,
9027        signHandle: TPMI_DH_OBJECT,
9028        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9029        qualifyingData: *const TPM2B_DATA,
9030        inScheme: *const TPMT_SIG_SCHEME,
9031        timeInfo: *mut TPM2B_ATTEST,
9032        signature: *mut TPMT_SIGNATURE,
9033        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9034    ) -> TSS2_RC;
9035}
9036extern "C" {
9037    pub fn Tss2_Sys_Commit_Prepare(
9038        sysContext: *mut TSS2_SYS_CONTEXT,
9039        signHandle: TPMI_DH_OBJECT,
9040        P1: *const TPM2B_ECC_POINT,
9041        s2: *const TPM2B_SENSITIVE_DATA,
9042        y2: *const TPM2B_ECC_PARAMETER,
9043    ) -> TSS2_RC;
9044}
9045extern "C" {
9046    pub fn Tss2_Sys_Commit_Complete(
9047        sysContext: *mut TSS2_SYS_CONTEXT,
9048        K: *mut TPM2B_ECC_POINT,
9049        L: *mut TPM2B_ECC_POINT,
9050        E: *mut TPM2B_ECC_POINT,
9051        counter: *mut UINT16,
9052    ) -> TSS2_RC;
9053}
9054extern "C" {
9055    pub fn Tss2_Sys_Commit(
9056        sysContext: *mut TSS2_SYS_CONTEXT,
9057        signHandle: TPMI_DH_OBJECT,
9058        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9059        P1: *const TPM2B_ECC_POINT,
9060        s2: *const TPM2B_SENSITIVE_DATA,
9061        y2: *const TPM2B_ECC_PARAMETER,
9062        K: *mut TPM2B_ECC_POINT,
9063        L: *mut TPM2B_ECC_POINT,
9064        E: *mut TPM2B_ECC_POINT,
9065        counter: *mut UINT16,
9066        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9067    ) -> TSS2_RC;
9068}
9069extern "C" {
9070    pub fn Tss2_Sys_EC_Ephemeral_Prepare(
9071        sysContext: *mut TSS2_SYS_CONTEXT,
9072        curveID: TPMI_ECC_CURVE,
9073    ) -> TSS2_RC;
9074}
9075extern "C" {
9076    pub fn Tss2_Sys_EC_Ephemeral_Complete(
9077        sysContext: *mut TSS2_SYS_CONTEXT,
9078        Q: *mut TPM2B_ECC_POINT,
9079        counter: *mut UINT16,
9080    ) -> TSS2_RC;
9081}
9082extern "C" {
9083    pub fn Tss2_Sys_EC_Ephemeral(
9084        sysContext: *mut TSS2_SYS_CONTEXT,
9085        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9086        curveID: TPMI_ECC_CURVE,
9087        Q: *mut TPM2B_ECC_POINT,
9088        counter: *mut UINT16,
9089        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9090    ) -> TSS2_RC;
9091}
9092extern "C" {
9093    pub fn Tss2_Sys_VerifySignature_Prepare(
9094        sysContext: *mut TSS2_SYS_CONTEXT,
9095        keyHandle: TPMI_DH_OBJECT,
9096        digest: *const TPM2B_DIGEST,
9097        signature: *const TPMT_SIGNATURE,
9098    ) -> TSS2_RC;
9099}
9100extern "C" {
9101    pub fn Tss2_Sys_VerifySignature_Complete(
9102        sysContext: *mut TSS2_SYS_CONTEXT,
9103        validation: *mut TPMT_TK_VERIFIED,
9104    ) -> TSS2_RC;
9105}
9106extern "C" {
9107    pub fn Tss2_Sys_VerifySignature(
9108        sysContext: *mut TSS2_SYS_CONTEXT,
9109        keyHandle: TPMI_DH_OBJECT,
9110        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9111        digest: *const TPM2B_DIGEST,
9112        signature: *const TPMT_SIGNATURE,
9113        validation: *mut TPMT_TK_VERIFIED,
9114        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9115    ) -> TSS2_RC;
9116}
9117extern "C" {
9118    pub fn Tss2_Sys_Sign_Prepare(
9119        sysContext: *mut TSS2_SYS_CONTEXT,
9120        keyHandle: TPMI_DH_OBJECT,
9121        digest: *const TPM2B_DIGEST,
9122        inScheme: *const TPMT_SIG_SCHEME,
9123        validation: *const TPMT_TK_HASHCHECK,
9124    ) -> TSS2_RC;
9125}
9126extern "C" {
9127    pub fn Tss2_Sys_Sign_Complete(
9128        sysContext: *mut TSS2_SYS_CONTEXT,
9129        signature: *mut TPMT_SIGNATURE,
9130    ) -> TSS2_RC;
9131}
9132extern "C" {
9133    pub fn Tss2_Sys_Sign(
9134        sysContext: *mut TSS2_SYS_CONTEXT,
9135        keyHandle: TPMI_DH_OBJECT,
9136        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9137        digest: *const TPM2B_DIGEST,
9138        inScheme: *const TPMT_SIG_SCHEME,
9139        validation: *const TPMT_TK_HASHCHECK,
9140        signature: *mut TPMT_SIGNATURE,
9141        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9142    ) -> TSS2_RC;
9143}
9144extern "C" {
9145    pub fn Tss2_Sys_SetCommandCodeAuditStatus_Prepare(
9146        sysContext: *mut TSS2_SYS_CONTEXT,
9147        auth: TPMI_RH_PROVISION,
9148        auditAlg: TPMI_ALG_HASH,
9149        setList: *const TPML_CC,
9150        clearList: *const TPML_CC,
9151    ) -> TSS2_RC;
9152}
9153extern "C" {
9154    pub fn Tss2_Sys_SetCommandCodeAuditStatus_Complete(
9155        sysContext: *mut TSS2_SYS_CONTEXT,
9156    ) -> TSS2_RC;
9157}
9158extern "C" {
9159    pub fn Tss2_Sys_SetCommandCodeAuditStatus(
9160        sysContext: *mut TSS2_SYS_CONTEXT,
9161        auth: TPMI_RH_PROVISION,
9162        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9163        auditAlg: TPMI_ALG_HASH,
9164        setList: *const TPML_CC,
9165        clearList: *const TPML_CC,
9166        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9167    ) -> TSS2_RC;
9168}
9169extern "C" {
9170    pub fn Tss2_Sys_PCR_Extend_Prepare(
9171        sysContext: *mut TSS2_SYS_CONTEXT,
9172        pcrHandle: TPMI_DH_PCR,
9173        digests: *const TPML_DIGEST_VALUES,
9174    ) -> TSS2_RC;
9175}
9176extern "C" {
9177    pub fn Tss2_Sys_PCR_Extend_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9178}
9179extern "C" {
9180    pub fn Tss2_Sys_PCR_Extend(
9181        sysContext: *mut TSS2_SYS_CONTEXT,
9182        pcrHandle: TPMI_DH_PCR,
9183        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9184        digests: *const TPML_DIGEST_VALUES,
9185        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9186    ) -> TSS2_RC;
9187}
9188extern "C" {
9189    pub fn Tss2_Sys_PCR_Event_Prepare(
9190        sysContext: *mut TSS2_SYS_CONTEXT,
9191        pcrHandle: TPMI_DH_PCR,
9192        eventData: *const TPM2B_EVENT,
9193    ) -> TSS2_RC;
9194}
9195extern "C" {
9196    pub fn Tss2_Sys_PCR_Event_Complete(
9197        sysContext: *mut TSS2_SYS_CONTEXT,
9198        digests: *mut TPML_DIGEST_VALUES,
9199    ) -> TSS2_RC;
9200}
9201extern "C" {
9202    pub fn Tss2_Sys_PCR_Event(
9203        sysContext: *mut TSS2_SYS_CONTEXT,
9204        pcrHandle: TPMI_DH_PCR,
9205        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9206        eventData: *const TPM2B_EVENT,
9207        digests: *mut TPML_DIGEST_VALUES,
9208        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9209    ) -> TSS2_RC;
9210}
9211extern "C" {
9212    pub fn Tss2_Sys_PCR_Read_Prepare(
9213        sysContext: *mut TSS2_SYS_CONTEXT,
9214        pcrSelectionIn: *const TPML_PCR_SELECTION,
9215    ) -> TSS2_RC;
9216}
9217extern "C" {
9218    pub fn Tss2_Sys_PCR_Read_Complete(
9219        sysContext: *mut TSS2_SYS_CONTEXT,
9220        pcrUpdateCounter: *mut UINT32,
9221        pcrSelectionOut: *mut TPML_PCR_SELECTION,
9222        pcrValues: *mut TPML_DIGEST,
9223    ) -> TSS2_RC;
9224}
9225extern "C" {
9226    pub fn Tss2_Sys_PCR_Read(
9227        sysContext: *mut TSS2_SYS_CONTEXT,
9228        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9229        pcrSelectionIn: *const TPML_PCR_SELECTION,
9230        pcrUpdateCounter: *mut UINT32,
9231        pcrSelectionOut: *mut TPML_PCR_SELECTION,
9232        pcrValues: *mut TPML_DIGEST,
9233        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9234    ) -> TSS2_RC;
9235}
9236extern "C" {
9237    pub fn Tss2_Sys_PCR_Allocate_Prepare(
9238        sysContext: *mut TSS2_SYS_CONTEXT,
9239        authHandle: TPMI_RH_PLATFORM,
9240        pcrAllocation: *const TPML_PCR_SELECTION,
9241    ) -> TSS2_RC;
9242}
9243extern "C" {
9244    pub fn Tss2_Sys_PCR_Allocate_Complete(
9245        sysContext: *mut TSS2_SYS_CONTEXT,
9246        allocationSuccess: *mut TPMI_YES_NO,
9247        maxPCR: *mut UINT32,
9248        sizeNeeded: *mut UINT32,
9249        sizeAvailable: *mut UINT32,
9250    ) -> TSS2_RC;
9251}
9252extern "C" {
9253    pub fn Tss2_Sys_PCR_Allocate(
9254        sysContext: *mut TSS2_SYS_CONTEXT,
9255        authHandle: TPMI_RH_PLATFORM,
9256        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9257        pcrAllocation: *const TPML_PCR_SELECTION,
9258        allocationSuccess: *mut TPMI_YES_NO,
9259        maxPCR: *mut UINT32,
9260        sizeNeeded: *mut UINT32,
9261        sizeAvailable: *mut UINT32,
9262        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9263    ) -> TSS2_RC;
9264}
9265extern "C" {
9266    pub fn Tss2_Sys_PCR_SetAuthPolicy_Prepare(
9267        sysContext: *mut TSS2_SYS_CONTEXT,
9268        authHandle: TPMI_RH_PLATFORM,
9269        authPolicy: *const TPM2B_DIGEST,
9270        hashAlg: TPMI_ALG_HASH,
9271        pcrNum: TPMI_DH_PCR,
9272    ) -> TSS2_RC;
9273}
9274extern "C" {
9275    pub fn Tss2_Sys_PCR_SetAuthPolicy_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9276}
9277extern "C" {
9278    pub fn Tss2_Sys_PCR_SetAuthPolicy(
9279        sysContext: *mut TSS2_SYS_CONTEXT,
9280        authHandle: TPMI_RH_PLATFORM,
9281        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9282        authPolicy: *const TPM2B_DIGEST,
9283        hashAlg: TPMI_ALG_HASH,
9284        pcrNum: TPMI_DH_PCR,
9285        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9286    ) -> TSS2_RC;
9287}
9288extern "C" {
9289    pub fn Tss2_Sys_PCR_SetAuthValue_Prepare(
9290        sysContext: *mut TSS2_SYS_CONTEXT,
9291        pcrHandle: TPMI_DH_PCR,
9292        auth: *const TPM2B_DIGEST,
9293    ) -> TSS2_RC;
9294}
9295extern "C" {
9296    pub fn Tss2_Sys_PCR_SetAuthValue_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9297}
9298extern "C" {
9299    pub fn Tss2_Sys_PCR_SetAuthValue(
9300        sysContext: *mut TSS2_SYS_CONTEXT,
9301        pcrHandle: TPMI_DH_PCR,
9302        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9303        auth: *const TPM2B_DIGEST,
9304        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9305    ) -> TSS2_RC;
9306}
9307extern "C" {
9308    pub fn Tss2_Sys_PCR_Reset_Prepare(
9309        sysContext: *mut TSS2_SYS_CONTEXT,
9310        pcrHandle: TPMI_DH_PCR,
9311    ) -> TSS2_RC;
9312}
9313extern "C" {
9314    pub fn Tss2_Sys_PCR_Reset_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9315}
9316extern "C" {
9317    pub fn Tss2_Sys_PCR_Reset(
9318        sysContext: *mut TSS2_SYS_CONTEXT,
9319        pcrHandle: TPMI_DH_PCR,
9320        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9321        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9322    ) -> TSS2_RC;
9323}
9324extern "C" {
9325    pub fn Tss2_Sys_PolicySigned_Prepare(
9326        sysContext: *mut TSS2_SYS_CONTEXT,
9327        authObject: TPMI_DH_OBJECT,
9328        policySession: TPMI_SH_POLICY,
9329        nonceTPM: *const TPM2B_NONCE,
9330        cpHashA: *const TPM2B_DIGEST,
9331        policyRef: *const TPM2B_NONCE,
9332        expiration: INT32,
9333        auth: *const TPMT_SIGNATURE,
9334    ) -> TSS2_RC;
9335}
9336extern "C" {
9337    pub fn Tss2_Sys_PolicySigned_Complete(
9338        sysContext: *mut TSS2_SYS_CONTEXT,
9339        timeout: *mut TPM2B_TIMEOUT,
9340        policyTicket: *mut TPMT_TK_AUTH,
9341    ) -> TSS2_RC;
9342}
9343extern "C" {
9344    pub fn Tss2_Sys_PolicySigned(
9345        sysContext: *mut TSS2_SYS_CONTEXT,
9346        authObject: TPMI_DH_OBJECT,
9347        policySession: TPMI_SH_POLICY,
9348        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9349        nonceTPM: *const TPM2B_NONCE,
9350        cpHashA: *const TPM2B_DIGEST,
9351        policyRef: *const TPM2B_NONCE,
9352        expiration: INT32,
9353        auth: *const TPMT_SIGNATURE,
9354        timeout: *mut TPM2B_TIMEOUT,
9355        policyTicket: *mut TPMT_TK_AUTH,
9356        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9357    ) -> TSS2_RC;
9358}
9359extern "C" {
9360    pub fn Tss2_Sys_PolicySecret_Prepare(
9361        sysContext: *mut TSS2_SYS_CONTEXT,
9362        authHandle: TPMI_DH_ENTITY,
9363        policySession: TPMI_SH_POLICY,
9364        nonceTPM: *const TPM2B_NONCE,
9365        cpHashA: *const TPM2B_DIGEST,
9366        policyRef: *const TPM2B_NONCE,
9367        expiration: INT32,
9368    ) -> TSS2_RC;
9369}
9370extern "C" {
9371    pub fn Tss2_Sys_PolicySecret_Complete(
9372        sysContext: *mut TSS2_SYS_CONTEXT,
9373        timeout: *mut TPM2B_TIMEOUT,
9374        policyTicket: *mut TPMT_TK_AUTH,
9375    ) -> TSS2_RC;
9376}
9377extern "C" {
9378    pub fn Tss2_Sys_PolicySecret(
9379        sysContext: *mut TSS2_SYS_CONTEXT,
9380        authHandle: TPMI_DH_ENTITY,
9381        policySession: TPMI_SH_POLICY,
9382        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9383        nonceTPM: *const TPM2B_NONCE,
9384        cpHashA: *const TPM2B_DIGEST,
9385        policyRef: *const TPM2B_NONCE,
9386        expiration: INT32,
9387        timeout: *mut TPM2B_TIMEOUT,
9388        policyTicket: *mut TPMT_TK_AUTH,
9389        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9390    ) -> TSS2_RC;
9391}
9392extern "C" {
9393    pub fn Tss2_Sys_PolicyTicket_Prepare(
9394        sysContext: *mut TSS2_SYS_CONTEXT,
9395        policySession: TPMI_SH_POLICY,
9396        timeout: *const TPM2B_TIMEOUT,
9397        cpHashA: *const TPM2B_DIGEST,
9398        policyRef: *const TPM2B_NONCE,
9399        authName: *const TPM2B_NAME,
9400        ticket: *const TPMT_TK_AUTH,
9401    ) -> TSS2_RC;
9402}
9403extern "C" {
9404    pub fn Tss2_Sys_PolicyTicket_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9405}
9406extern "C" {
9407    pub fn Tss2_Sys_PolicyTicket(
9408        sysContext: *mut TSS2_SYS_CONTEXT,
9409        policySession: TPMI_SH_POLICY,
9410        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9411        timeout: *const TPM2B_TIMEOUT,
9412        cpHashA: *const TPM2B_DIGEST,
9413        policyRef: *const TPM2B_NONCE,
9414        authName: *const TPM2B_NAME,
9415        ticket: *const TPMT_TK_AUTH,
9416        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9417    ) -> TSS2_RC;
9418}
9419extern "C" {
9420    pub fn Tss2_Sys_PolicyOR_Prepare(
9421        sysContext: *mut TSS2_SYS_CONTEXT,
9422        policySession: TPMI_SH_POLICY,
9423        pHashList: *const TPML_DIGEST,
9424    ) -> TSS2_RC;
9425}
9426extern "C" {
9427    pub fn Tss2_Sys_PolicyOR_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9428}
9429extern "C" {
9430    pub fn Tss2_Sys_PolicyOR(
9431        sysContext: *mut TSS2_SYS_CONTEXT,
9432        policySession: TPMI_SH_POLICY,
9433        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9434        pHashList: *const TPML_DIGEST,
9435        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9436    ) -> TSS2_RC;
9437}
9438extern "C" {
9439    pub fn Tss2_Sys_PolicyPCR_Prepare(
9440        sysContext: *mut TSS2_SYS_CONTEXT,
9441        policySession: TPMI_SH_POLICY,
9442        pcrDigest: *const TPM2B_DIGEST,
9443        pcrs: *const TPML_PCR_SELECTION,
9444    ) -> TSS2_RC;
9445}
9446extern "C" {
9447    pub fn Tss2_Sys_PolicyPCR_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9448}
9449extern "C" {
9450    pub fn Tss2_Sys_PolicyPCR(
9451        sysContext: *mut TSS2_SYS_CONTEXT,
9452        policySession: TPMI_SH_POLICY,
9453        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9454        pcrDigest: *const TPM2B_DIGEST,
9455        pcrs: *const TPML_PCR_SELECTION,
9456        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9457    ) -> TSS2_RC;
9458}
9459extern "C" {
9460    pub fn Tss2_Sys_PolicyLocality_Prepare(
9461        sysContext: *mut TSS2_SYS_CONTEXT,
9462        policySession: TPMI_SH_POLICY,
9463        locality: TPMA_LOCALITY,
9464    ) -> TSS2_RC;
9465}
9466extern "C" {
9467    pub fn Tss2_Sys_PolicyLocality_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9468}
9469extern "C" {
9470    pub fn Tss2_Sys_PolicyLocality(
9471        sysContext: *mut TSS2_SYS_CONTEXT,
9472        policySession: TPMI_SH_POLICY,
9473        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9474        locality: TPMA_LOCALITY,
9475        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9476    ) -> TSS2_RC;
9477}
9478extern "C" {
9479    pub fn Tss2_Sys_PolicyNV_Prepare(
9480        sysContext: *mut TSS2_SYS_CONTEXT,
9481        authHandle: TPMI_RH_NV_AUTH,
9482        nvIndex: TPMI_RH_NV_INDEX,
9483        policySession: TPMI_SH_POLICY,
9484        operandB: *const TPM2B_OPERAND,
9485        offset: UINT16,
9486        operation: TPM2_EO,
9487    ) -> TSS2_RC;
9488}
9489extern "C" {
9490    pub fn Tss2_Sys_PolicyNV_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9491}
9492extern "C" {
9493    pub fn Tss2_Sys_PolicyNV(
9494        sysContext: *mut TSS2_SYS_CONTEXT,
9495        authHandle: TPMI_RH_NV_AUTH,
9496        nvIndex: TPMI_RH_NV_INDEX,
9497        policySession: TPMI_SH_POLICY,
9498        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9499        operandB: *const TPM2B_OPERAND,
9500        offset: UINT16,
9501        operation: TPM2_EO,
9502        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9503    ) -> TSS2_RC;
9504}
9505extern "C" {
9506    pub fn Tss2_Sys_PolicyCounterTimer_Prepare(
9507        sysContext: *mut TSS2_SYS_CONTEXT,
9508        policySession: TPMI_SH_POLICY,
9509        operandB: *const TPM2B_OPERAND,
9510        offset: UINT16,
9511        operation: TPM2_EO,
9512    ) -> TSS2_RC;
9513}
9514extern "C" {
9515    pub fn Tss2_Sys_PolicyCounterTimer_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9516}
9517extern "C" {
9518    pub fn Tss2_Sys_PolicyCounterTimer(
9519        sysContext: *mut TSS2_SYS_CONTEXT,
9520        policySession: TPMI_SH_POLICY,
9521        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9522        operandB: *const TPM2B_OPERAND,
9523        offset: UINT16,
9524        operation: TPM2_EO,
9525        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9526    ) -> TSS2_RC;
9527}
9528extern "C" {
9529    pub fn Tss2_Sys_PolicyCommandCode_Prepare(
9530        sysContext: *mut TSS2_SYS_CONTEXT,
9531        policySession: TPMI_SH_POLICY,
9532        code: TPM2_CC,
9533    ) -> TSS2_RC;
9534}
9535extern "C" {
9536    pub fn Tss2_Sys_PolicyCommandCode_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9537}
9538extern "C" {
9539    pub fn Tss2_Sys_PolicyCommandCode(
9540        sysContext: *mut TSS2_SYS_CONTEXT,
9541        policySession: TPMI_SH_POLICY,
9542        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9543        code: TPM2_CC,
9544        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9545    ) -> TSS2_RC;
9546}
9547extern "C" {
9548    pub fn Tss2_Sys_PolicyPhysicalPresence_Prepare(
9549        sysContext: *mut TSS2_SYS_CONTEXT,
9550        policySession: TPMI_SH_POLICY,
9551    ) -> TSS2_RC;
9552}
9553extern "C" {
9554    pub fn Tss2_Sys_PolicyPhysicalPresence_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9555}
9556extern "C" {
9557    pub fn Tss2_Sys_PolicyPhysicalPresence(
9558        sysContext: *mut TSS2_SYS_CONTEXT,
9559        policySession: TPMI_SH_POLICY,
9560        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9561        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9562    ) -> TSS2_RC;
9563}
9564extern "C" {
9565    pub fn Tss2_Sys_PolicyCpHash_Prepare(
9566        sysContext: *mut TSS2_SYS_CONTEXT,
9567        policySession: TPMI_SH_POLICY,
9568        cpHashA: *const TPM2B_DIGEST,
9569    ) -> TSS2_RC;
9570}
9571extern "C" {
9572    pub fn Tss2_Sys_PolicyCpHash_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9573}
9574extern "C" {
9575    pub fn Tss2_Sys_PolicyCpHash(
9576        sysContext: *mut TSS2_SYS_CONTEXT,
9577        policySession: TPMI_SH_POLICY,
9578        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9579        cpHashA: *const TPM2B_DIGEST,
9580        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9581    ) -> TSS2_RC;
9582}
9583extern "C" {
9584    pub fn Tss2_Sys_PolicyNameHash_Prepare(
9585        sysContext: *mut TSS2_SYS_CONTEXT,
9586        policySession: TPMI_SH_POLICY,
9587        nameHash: *const TPM2B_DIGEST,
9588    ) -> TSS2_RC;
9589}
9590extern "C" {
9591    pub fn Tss2_Sys_PolicyNameHash_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9592}
9593extern "C" {
9594    pub fn Tss2_Sys_PolicyNameHash(
9595        sysContext: *mut TSS2_SYS_CONTEXT,
9596        policySession: TPMI_SH_POLICY,
9597        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9598        nameHash: *const TPM2B_DIGEST,
9599        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9600    ) -> TSS2_RC;
9601}
9602extern "C" {
9603    pub fn Tss2_Sys_PolicyDuplicationSelect_Prepare(
9604        sysContext: *mut TSS2_SYS_CONTEXT,
9605        policySession: TPMI_SH_POLICY,
9606        objectName: *const TPM2B_NAME,
9607        newParentName: *const TPM2B_NAME,
9608        includeObject: TPMI_YES_NO,
9609    ) -> TSS2_RC;
9610}
9611extern "C" {
9612    pub fn Tss2_Sys_PolicyDuplicationSelect_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9613}
9614extern "C" {
9615    pub fn Tss2_Sys_PolicyDuplicationSelect(
9616        sysContext: *mut TSS2_SYS_CONTEXT,
9617        policySession: TPMI_SH_POLICY,
9618        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9619        objectName: *const TPM2B_NAME,
9620        newParentName: *const TPM2B_NAME,
9621        includeObject: TPMI_YES_NO,
9622        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9623    ) -> TSS2_RC;
9624}
9625extern "C" {
9626    pub fn Tss2_Sys_PolicyAuthorize_Prepare(
9627        sysContext: *mut TSS2_SYS_CONTEXT,
9628        policySession: TPMI_SH_POLICY,
9629        approvedPolicy: *const TPM2B_DIGEST,
9630        policyRef: *const TPM2B_NONCE,
9631        keySign: *const TPM2B_NAME,
9632        checkTicket: *const TPMT_TK_VERIFIED,
9633    ) -> TSS2_RC;
9634}
9635extern "C" {
9636    pub fn Tss2_Sys_PolicyAuthorize_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9637}
9638extern "C" {
9639    pub fn Tss2_Sys_PolicyAuthorize(
9640        sysContext: *mut TSS2_SYS_CONTEXT,
9641        policySession: TPMI_SH_POLICY,
9642        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9643        approvedPolicy: *const TPM2B_DIGEST,
9644        policyRef: *const TPM2B_NONCE,
9645        keySign: *const TPM2B_NAME,
9646        checkTicket: *const TPMT_TK_VERIFIED,
9647        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9648    ) -> TSS2_RC;
9649}
9650extern "C" {
9651    pub fn Tss2_Sys_PolicyAuthValue_Prepare(
9652        sysContext: *mut TSS2_SYS_CONTEXT,
9653        policySession: TPMI_SH_POLICY,
9654    ) -> TSS2_RC;
9655}
9656extern "C" {
9657    pub fn Tss2_Sys_PolicyAuthValue_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9658}
9659extern "C" {
9660    pub fn Tss2_Sys_PolicyAuthValue(
9661        sysContext: *mut TSS2_SYS_CONTEXT,
9662        policySession: TPMI_SH_POLICY,
9663        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9664        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9665    ) -> TSS2_RC;
9666}
9667extern "C" {
9668    pub fn Tss2_Sys_PolicyPassword_Prepare(
9669        sysContext: *mut TSS2_SYS_CONTEXT,
9670        policySession: TPMI_SH_POLICY,
9671    ) -> TSS2_RC;
9672}
9673extern "C" {
9674    pub fn Tss2_Sys_PolicyPassword_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9675}
9676extern "C" {
9677    pub fn Tss2_Sys_PolicyPassword(
9678        sysContext: *mut TSS2_SYS_CONTEXT,
9679        policySession: TPMI_SH_POLICY,
9680        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9681        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9682    ) -> TSS2_RC;
9683}
9684extern "C" {
9685    pub fn Tss2_Sys_PolicyGetDigest_Prepare(
9686        sysContext: *mut TSS2_SYS_CONTEXT,
9687        policySession: TPMI_SH_POLICY,
9688    ) -> TSS2_RC;
9689}
9690extern "C" {
9691    pub fn Tss2_Sys_PolicyGetDigest_Complete(
9692        sysContext: *mut TSS2_SYS_CONTEXT,
9693        policyDigest: *mut TPM2B_DIGEST,
9694    ) -> TSS2_RC;
9695}
9696extern "C" {
9697    pub fn Tss2_Sys_PolicyGetDigest(
9698        sysContext: *mut TSS2_SYS_CONTEXT,
9699        policySession: TPMI_SH_POLICY,
9700        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9701        policyDigest: *mut TPM2B_DIGEST,
9702        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9703    ) -> TSS2_RC;
9704}
9705extern "C" {
9706    pub fn Tss2_Sys_PolicyNvWritten_Prepare(
9707        sysContext: *mut TSS2_SYS_CONTEXT,
9708        policySession: TPMI_SH_POLICY,
9709        writtenSet: TPMI_YES_NO,
9710    ) -> TSS2_RC;
9711}
9712extern "C" {
9713    pub fn Tss2_Sys_PolicyNvWritten_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9714}
9715extern "C" {
9716    pub fn Tss2_Sys_PolicyNvWritten(
9717        sysContext: *mut TSS2_SYS_CONTEXT,
9718        policySession: TPMI_SH_POLICY,
9719        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9720        writtenSet: TPMI_YES_NO,
9721        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9722    ) -> TSS2_RC;
9723}
9724extern "C" {
9725    pub fn Tss2_Sys_CreatePrimary_Prepare(
9726        sysContext: *mut TSS2_SYS_CONTEXT,
9727        primaryHandle: TPMI_RH_HIERARCHY,
9728        inSensitive: *const TPM2B_SENSITIVE_CREATE,
9729        inPublic: *const TPM2B_PUBLIC,
9730        outsideInfo: *const TPM2B_DATA,
9731        creationPCR: *const TPML_PCR_SELECTION,
9732    ) -> TSS2_RC;
9733}
9734extern "C" {
9735    pub fn Tss2_Sys_CreatePrimary_Complete(
9736        sysContext: *mut TSS2_SYS_CONTEXT,
9737        objectHandle: *mut TPM2_HANDLE,
9738        outPublic: *mut TPM2B_PUBLIC,
9739        creationData: *mut TPM2B_CREATION_DATA,
9740        creationHash: *mut TPM2B_DIGEST,
9741        creationTicket: *mut TPMT_TK_CREATION,
9742        name: *mut TPM2B_NAME,
9743    ) -> TSS2_RC;
9744}
9745extern "C" {
9746    pub fn Tss2_Sys_CreatePrimary(
9747        sysContext: *mut TSS2_SYS_CONTEXT,
9748        primaryHandle: TPMI_RH_HIERARCHY,
9749        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9750        inSensitive: *const TPM2B_SENSITIVE_CREATE,
9751        inPublic: *const TPM2B_PUBLIC,
9752        outsideInfo: *const TPM2B_DATA,
9753        creationPCR: *const TPML_PCR_SELECTION,
9754        objectHandle: *mut TPM2_HANDLE,
9755        outPublic: *mut TPM2B_PUBLIC,
9756        creationData: *mut TPM2B_CREATION_DATA,
9757        creationHash: *mut TPM2B_DIGEST,
9758        creationTicket: *mut TPMT_TK_CREATION,
9759        name: *mut TPM2B_NAME,
9760        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9761    ) -> TSS2_RC;
9762}
9763extern "C" {
9764    pub fn Tss2_Sys_HierarchyControl_Prepare(
9765        sysContext: *mut TSS2_SYS_CONTEXT,
9766        authHandle: TPMI_RH_HIERARCHY,
9767        enable: TPMI_RH_ENABLES,
9768        state: TPMI_YES_NO,
9769    ) -> TSS2_RC;
9770}
9771extern "C" {
9772    pub fn Tss2_Sys_HierarchyControl_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9773}
9774extern "C" {
9775    pub fn Tss2_Sys_HierarchyControl(
9776        sysContext: *mut TSS2_SYS_CONTEXT,
9777        authHandle: TPMI_RH_HIERARCHY,
9778        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9779        enable: TPMI_RH_ENABLES,
9780        state: TPMI_YES_NO,
9781        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9782    ) -> TSS2_RC;
9783}
9784extern "C" {
9785    pub fn Tss2_Sys_SetPrimaryPolicy_Prepare(
9786        sysContext: *mut TSS2_SYS_CONTEXT,
9787        authHandle: TPMI_RH_HIERARCHY_AUTH,
9788        authPolicy: *const TPM2B_DIGEST,
9789        hashAlg: TPMI_ALG_HASH,
9790    ) -> TSS2_RC;
9791}
9792extern "C" {
9793    pub fn Tss2_Sys_SetPrimaryPolicy_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9794}
9795extern "C" {
9796    pub fn Tss2_Sys_SetPrimaryPolicy(
9797        sysContext: *mut TSS2_SYS_CONTEXT,
9798        authHandle: TPMI_RH_HIERARCHY_AUTH,
9799        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9800        authPolicy: *const TPM2B_DIGEST,
9801        hashAlg: TPMI_ALG_HASH,
9802        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9803    ) -> TSS2_RC;
9804}
9805extern "C" {
9806    pub fn Tss2_Sys_ChangePPS_Prepare(
9807        sysContext: *mut TSS2_SYS_CONTEXT,
9808        authHandle: TPMI_RH_PLATFORM,
9809    ) -> TSS2_RC;
9810}
9811extern "C" {
9812    pub fn Tss2_Sys_ChangePPS_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9813}
9814extern "C" {
9815    pub fn Tss2_Sys_ChangePPS(
9816        sysContext: *mut TSS2_SYS_CONTEXT,
9817        authHandle: TPMI_RH_PLATFORM,
9818        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9819        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9820    ) -> TSS2_RC;
9821}
9822extern "C" {
9823    pub fn Tss2_Sys_ChangeEPS_Prepare(
9824        sysContext: *mut TSS2_SYS_CONTEXT,
9825        authHandle: TPMI_RH_PLATFORM,
9826    ) -> TSS2_RC;
9827}
9828extern "C" {
9829    pub fn Tss2_Sys_ChangeEPS_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9830}
9831extern "C" {
9832    pub fn Tss2_Sys_ChangeEPS(
9833        sysContext: *mut TSS2_SYS_CONTEXT,
9834        authHandle: TPMI_RH_PLATFORM,
9835        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9836        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9837    ) -> TSS2_RC;
9838}
9839extern "C" {
9840    pub fn Tss2_Sys_Clear_Prepare(
9841        sysContext: *mut TSS2_SYS_CONTEXT,
9842        authHandle: TPMI_RH_CLEAR,
9843    ) -> TSS2_RC;
9844}
9845extern "C" {
9846    pub fn Tss2_Sys_Clear_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9847}
9848extern "C" {
9849    pub fn Tss2_Sys_Clear(
9850        sysContext: *mut TSS2_SYS_CONTEXT,
9851        authHandle: TPMI_RH_CLEAR,
9852        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9853        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9854    ) -> TSS2_RC;
9855}
9856extern "C" {
9857    pub fn Tss2_Sys_ClearControl_Prepare(
9858        sysContext: *mut TSS2_SYS_CONTEXT,
9859        auth: TPMI_RH_CLEAR,
9860        disable: TPMI_YES_NO,
9861    ) -> TSS2_RC;
9862}
9863extern "C" {
9864    pub fn Tss2_Sys_ClearControl_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9865}
9866extern "C" {
9867    pub fn Tss2_Sys_ClearControl(
9868        sysContext: *mut TSS2_SYS_CONTEXT,
9869        auth: TPMI_RH_CLEAR,
9870        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9871        disable: TPMI_YES_NO,
9872        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9873    ) -> TSS2_RC;
9874}
9875extern "C" {
9876    pub fn Tss2_Sys_HierarchyChangeAuth_Prepare(
9877        sysContext: *mut TSS2_SYS_CONTEXT,
9878        authHandle: TPMI_RH_HIERARCHY_AUTH,
9879        newAuth: *const TPM2B_AUTH,
9880    ) -> TSS2_RC;
9881}
9882extern "C" {
9883    pub fn Tss2_Sys_HierarchyChangeAuth_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9884}
9885extern "C" {
9886    pub fn Tss2_Sys_HierarchyChangeAuth(
9887        sysContext: *mut TSS2_SYS_CONTEXT,
9888        authHandle: TPMI_RH_HIERARCHY_AUTH,
9889        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9890        newAuth: *const TPM2B_AUTH,
9891        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9892    ) -> TSS2_RC;
9893}
9894extern "C" {
9895    pub fn Tss2_Sys_DictionaryAttackLockReset_Prepare(
9896        sysContext: *mut TSS2_SYS_CONTEXT,
9897        lockHandle: TPMI_RH_LOCKOUT,
9898    ) -> TSS2_RC;
9899}
9900extern "C" {
9901    pub fn Tss2_Sys_DictionaryAttackLockReset_Complete(
9902        sysContext: *mut TSS2_SYS_CONTEXT,
9903    ) -> TSS2_RC;
9904}
9905extern "C" {
9906    pub fn Tss2_Sys_DictionaryAttackLockReset(
9907        sysContext: *mut TSS2_SYS_CONTEXT,
9908        lockHandle: TPMI_RH_LOCKOUT,
9909        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9910        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9911    ) -> TSS2_RC;
9912}
9913extern "C" {
9914    pub fn Tss2_Sys_DictionaryAttackParameters_Prepare(
9915        sysContext: *mut TSS2_SYS_CONTEXT,
9916        lockHandle: TPMI_RH_LOCKOUT,
9917        newMaxTries: UINT32,
9918        newRecoveryTime: UINT32,
9919        lockoutRecovery: UINT32,
9920    ) -> TSS2_RC;
9921}
9922extern "C" {
9923    pub fn Tss2_Sys_DictionaryAttackParameters_Complete(
9924        sysContext: *mut TSS2_SYS_CONTEXT,
9925    ) -> TSS2_RC;
9926}
9927extern "C" {
9928    pub fn Tss2_Sys_DictionaryAttackParameters(
9929        sysContext: *mut TSS2_SYS_CONTEXT,
9930        lockHandle: TPMI_RH_LOCKOUT,
9931        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9932        newMaxTries: UINT32,
9933        newRecoveryTime: UINT32,
9934        lockoutRecovery: UINT32,
9935        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9936    ) -> TSS2_RC;
9937}
9938extern "C" {
9939    pub fn Tss2_Sys_PP_Commands_Prepare(
9940        sysContext: *mut TSS2_SYS_CONTEXT,
9941        auth: TPMI_RH_PLATFORM,
9942        setList: *const TPML_CC,
9943        clearList: *const TPML_CC,
9944    ) -> TSS2_RC;
9945}
9946extern "C" {
9947    pub fn Tss2_Sys_PP_Commands_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9948}
9949extern "C" {
9950    pub fn Tss2_Sys_PP_Commands(
9951        sysContext: *mut TSS2_SYS_CONTEXT,
9952        auth: TPMI_RH_PLATFORM,
9953        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9954        setList: *const TPML_CC,
9955        clearList: *const TPML_CC,
9956        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9957    ) -> TSS2_RC;
9958}
9959extern "C" {
9960    pub fn Tss2_Sys_SetAlgorithmSet_Prepare(
9961        sysContext: *mut TSS2_SYS_CONTEXT,
9962        authHandle: TPMI_RH_PLATFORM,
9963        algorithmSet: UINT32,
9964    ) -> TSS2_RC;
9965}
9966extern "C" {
9967    pub fn Tss2_Sys_SetAlgorithmSet_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9968}
9969extern "C" {
9970    pub fn Tss2_Sys_SetAlgorithmSet(
9971        sysContext: *mut TSS2_SYS_CONTEXT,
9972        authHandle: TPMI_RH_PLATFORM,
9973        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9974        algorithmSet: UINT32,
9975        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9976    ) -> TSS2_RC;
9977}
9978extern "C" {
9979    pub fn Tss2_Sys_FieldUpgradeStart_Prepare(
9980        sysContext: *mut TSS2_SYS_CONTEXT,
9981        authorization: TPMI_RH_PLATFORM,
9982        keyHandle: TPMI_DH_OBJECT,
9983        fuDigest: *const TPM2B_DIGEST,
9984        manifestSignature: *const TPMT_SIGNATURE,
9985    ) -> TSS2_RC;
9986}
9987extern "C" {
9988    pub fn Tss2_Sys_FieldUpgradeStart_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9989}
9990extern "C" {
9991    pub fn Tss2_Sys_FieldUpgradeStart(
9992        sysContext: *mut TSS2_SYS_CONTEXT,
9993        authorization: TPMI_RH_PLATFORM,
9994        keyHandle: TPMI_DH_OBJECT,
9995        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9996        fuDigest: *const TPM2B_DIGEST,
9997        manifestSignature: *const TPMT_SIGNATURE,
9998        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9999    ) -> TSS2_RC;
10000}
10001extern "C" {
10002    pub fn Tss2_Sys_FieldUpgradeData_Prepare(
10003        sysContext: *mut TSS2_SYS_CONTEXT,
10004        fuData: *const TPM2B_MAX_BUFFER,
10005    ) -> TSS2_RC;
10006}
10007extern "C" {
10008    pub fn Tss2_Sys_FieldUpgradeData_Complete(
10009        sysContext: *mut TSS2_SYS_CONTEXT,
10010        nextDigest: *mut TPMT_HA,
10011        firstDigest: *mut TPMT_HA,
10012    ) -> TSS2_RC;
10013}
10014extern "C" {
10015    pub fn Tss2_Sys_FieldUpgradeData(
10016        sysContext: *mut TSS2_SYS_CONTEXT,
10017        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10018        fuData: *const TPM2B_MAX_BUFFER,
10019        nextDigest: *mut TPMT_HA,
10020        firstDigest: *mut TPMT_HA,
10021        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10022    ) -> TSS2_RC;
10023}
10024extern "C" {
10025    pub fn Tss2_Sys_FirmwareRead_Prepare(
10026        sysContext: *mut TSS2_SYS_CONTEXT,
10027        sequenceNumber: UINT32,
10028    ) -> TSS2_RC;
10029}
10030extern "C" {
10031    pub fn Tss2_Sys_FirmwareRead_Complete(
10032        sysContext: *mut TSS2_SYS_CONTEXT,
10033        fuData: *mut TPM2B_MAX_BUFFER,
10034    ) -> TSS2_RC;
10035}
10036extern "C" {
10037    pub fn Tss2_Sys_FirmwareRead(
10038        sysContext: *mut TSS2_SYS_CONTEXT,
10039        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10040        sequenceNumber: UINT32,
10041        fuData: *mut TPM2B_MAX_BUFFER,
10042        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10043    ) -> TSS2_RC;
10044}
10045extern "C" {
10046    pub fn Tss2_Sys_ContextSave_Prepare(
10047        sysContext: *mut TSS2_SYS_CONTEXT,
10048        saveHandle: TPMI_DH_CONTEXT,
10049    ) -> TSS2_RC;
10050}
10051extern "C" {
10052    pub fn Tss2_Sys_ContextSave_Complete(
10053        sysContext: *mut TSS2_SYS_CONTEXT,
10054        context: *mut TPMS_CONTEXT,
10055    ) -> TSS2_RC;
10056}
10057extern "C" {
10058    pub fn Tss2_Sys_ContextSave(
10059        sysContext: *mut TSS2_SYS_CONTEXT,
10060        saveHandle: TPMI_DH_CONTEXT,
10061        context: *mut TPMS_CONTEXT,
10062    ) -> TSS2_RC;
10063}
10064extern "C" {
10065    pub fn Tss2_Sys_ContextLoad_Prepare(
10066        sysContext: *mut TSS2_SYS_CONTEXT,
10067        context: *const TPMS_CONTEXT,
10068    ) -> TSS2_RC;
10069}
10070extern "C" {
10071    pub fn Tss2_Sys_ContextLoad_Complete(
10072        sysContext: *mut TSS2_SYS_CONTEXT,
10073        loadedHandle: *mut TPMI_DH_CONTEXT,
10074    ) -> TSS2_RC;
10075}
10076extern "C" {
10077    pub fn Tss2_Sys_ContextLoad(
10078        sysContext: *mut TSS2_SYS_CONTEXT,
10079        context: *const TPMS_CONTEXT,
10080        loadedHandle: *mut TPMI_DH_CONTEXT,
10081    ) -> TSS2_RC;
10082}
10083extern "C" {
10084    pub fn Tss2_Sys_FlushContext_Prepare(
10085        sysContext: *mut TSS2_SYS_CONTEXT,
10086        flushHandle: TPMI_DH_CONTEXT,
10087    ) -> TSS2_RC;
10088}
10089extern "C" {
10090    pub fn Tss2_Sys_FlushContext_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10091}
10092extern "C" {
10093    pub fn Tss2_Sys_FlushContext(
10094        sysContext: *mut TSS2_SYS_CONTEXT,
10095        flushHandle: TPMI_DH_CONTEXT,
10096    ) -> TSS2_RC;
10097}
10098extern "C" {
10099    pub fn Tss2_Sys_EvictControl_Prepare(
10100        sysContext: *mut TSS2_SYS_CONTEXT,
10101        auth: TPMI_RH_PROVISION,
10102        objectHandle: TPMI_DH_OBJECT,
10103        persistentHandle: TPMI_DH_PERSISTENT,
10104    ) -> TSS2_RC;
10105}
10106extern "C" {
10107    pub fn Tss2_Sys_EvictControl_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10108}
10109extern "C" {
10110    pub fn Tss2_Sys_EvictControl(
10111        sysContext: *mut TSS2_SYS_CONTEXT,
10112        auth: TPMI_RH_PROVISION,
10113        objectHandle: TPMI_DH_OBJECT,
10114        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10115        persistentHandle: TPMI_DH_PERSISTENT,
10116        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10117    ) -> TSS2_RC;
10118}
10119extern "C" {
10120    pub fn Tss2_Sys_ReadClock_Prepare(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10121}
10122extern "C" {
10123    pub fn Tss2_Sys_ReadClock_Complete(
10124        sysContext: *mut TSS2_SYS_CONTEXT,
10125        currentTime: *mut TPMS_TIME_INFO,
10126    ) -> TSS2_RC;
10127}
10128extern "C" {
10129    pub fn Tss2_Sys_ReadClock(
10130        sysContext: *mut TSS2_SYS_CONTEXT,
10131        currentTime: *mut TPMS_TIME_INFO,
10132    ) -> TSS2_RC;
10133}
10134extern "C" {
10135    pub fn Tss2_Sys_ClockSet_Prepare(
10136        sysContext: *mut TSS2_SYS_CONTEXT,
10137        auth: TPMI_RH_PROVISION,
10138        newTime: UINT64,
10139    ) -> TSS2_RC;
10140}
10141extern "C" {
10142    pub fn Tss2_Sys_ClockSet_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10143}
10144extern "C" {
10145    pub fn Tss2_Sys_ClockSet(
10146        sysContext: *mut TSS2_SYS_CONTEXT,
10147        auth: TPMI_RH_PROVISION,
10148        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10149        newTime: UINT64,
10150        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10151    ) -> TSS2_RC;
10152}
10153extern "C" {
10154    pub fn Tss2_Sys_ClockRateAdjust_Prepare(
10155        sysContext: *mut TSS2_SYS_CONTEXT,
10156        auth: TPMI_RH_PROVISION,
10157        rateAdjust: TPM2_CLOCK_ADJUST,
10158    ) -> TSS2_RC;
10159}
10160extern "C" {
10161    pub fn Tss2_Sys_ClockRateAdjust_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10162}
10163extern "C" {
10164    pub fn Tss2_Sys_ClockRateAdjust(
10165        sysContext: *mut TSS2_SYS_CONTEXT,
10166        auth: TPMI_RH_PROVISION,
10167        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10168        rateAdjust: TPM2_CLOCK_ADJUST,
10169        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10170    ) -> TSS2_RC;
10171}
10172extern "C" {
10173    pub fn Tss2_Sys_GetCapability_Prepare(
10174        sysContext: *mut TSS2_SYS_CONTEXT,
10175        capability: TPM2_CAP,
10176        property: UINT32,
10177        propertyCount: UINT32,
10178    ) -> TSS2_RC;
10179}
10180extern "C" {
10181    pub fn Tss2_Sys_GetCapability_Complete(
10182        sysContext: *mut TSS2_SYS_CONTEXT,
10183        moreData: *mut TPMI_YES_NO,
10184        capabilityData: *mut TPMS_CAPABILITY_DATA,
10185    ) -> TSS2_RC;
10186}
10187extern "C" {
10188    pub fn Tss2_Sys_GetCapability(
10189        sysContext: *mut TSS2_SYS_CONTEXT,
10190        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10191        capability: TPM2_CAP,
10192        property: UINT32,
10193        propertyCount: UINT32,
10194        moreData: *mut TPMI_YES_NO,
10195        capabilityData: *mut TPMS_CAPABILITY_DATA,
10196        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10197    ) -> TSS2_RC;
10198}
10199extern "C" {
10200    pub fn Tss2_Sys_TestParms_Prepare(
10201        sysContext: *mut TSS2_SYS_CONTEXT,
10202        parameters: *const TPMT_PUBLIC_PARMS,
10203    ) -> TSS2_RC;
10204}
10205extern "C" {
10206    pub fn Tss2_Sys_TestParms_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10207}
10208extern "C" {
10209    pub fn Tss2_Sys_TestParms(
10210        sysContext: *mut TSS2_SYS_CONTEXT,
10211        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10212        parameters: *const TPMT_PUBLIC_PARMS,
10213        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10214    ) -> TSS2_RC;
10215}
10216extern "C" {
10217    pub fn Tss2_Sys_NV_DefineSpace_Prepare(
10218        sysContext: *mut TSS2_SYS_CONTEXT,
10219        authHandle: TPMI_RH_PROVISION,
10220        auth: *const TPM2B_AUTH,
10221        publicInfo: *const TPM2B_NV_PUBLIC,
10222    ) -> TSS2_RC;
10223}
10224extern "C" {
10225    pub fn Tss2_Sys_NV_DefineSpace_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10226}
10227extern "C" {
10228    pub fn Tss2_Sys_NV_DefineSpace(
10229        sysContext: *mut TSS2_SYS_CONTEXT,
10230        authHandle: TPMI_RH_PROVISION,
10231        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10232        auth: *const TPM2B_AUTH,
10233        publicInfo: *const TPM2B_NV_PUBLIC,
10234        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10235    ) -> TSS2_RC;
10236}
10237extern "C" {
10238    pub fn Tss2_Sys_NV_UndefineSpace_Prepare(
10239        sysContext: *mut TSS2_SYS_CONTEXT,
10240        authHandle: TPMI_RH_PROVISION,
10241        nvIndex: TPMI_RH_NV_INDEX,
10242    ) -> TSS2_RC;
10243}
10244extern "C" {
10245    pub fn Tss2_Sys_NV_UndefineSpace_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10246}
10247extern "C" {
10248    pub fn Tss2_Sys_NV_UndefineSpace(
10249        sysContext: *mut TSS2_SYS_CONTEXT,
10250        authHandle: TPMI_RH_PROVISION,
10251        nvIndex: TPMI_RH_NV_INDEX,
10252        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10253        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10254    ) -> TSS2_RC;
10255}
10256extern "C" {
10257    pub fn Tss2_Sys_NV_UndefineSpaceSpecial_Prepare(
10258        sysContext: *mut TSS2_SYS_CONTEXT,
10259        nvIndex: TPMI_RH_NV_INDEX,
10260        platform: TPMI_RH_PLATFORM,
10261    ) -> TSS2_RC;
10262}
10263extern "C" {
10264    pub fn Tss2_Sys_NV_UndefineSpaceSpecial_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10265}
10266extern "C" {
10267    pub fn Tss2_Sys_NV_UndefineSpaceSpecial(
10268        sysContext: *mut TSS2_SYS_CONTEXT,
10269        nvIndex: TPMI_RH_NV_INDEX,
10270        platform: TPMI_RH_PLATFORM,
10271        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10272        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10273    ) -> TSS2_RC;
10274}
10275extern "C" {
10276    pub fn Tss2_Sys_NV_ReadPublic_Prepare(
10277        sysContext: *mut TSS2_SYS_CONTEXT,
10278        nvIndex: TPMI_RH_NV_INDEX,
10279    ) -> TSS2_RC;
10280}
10281extern "C" {
10282    pub fn Tss2_Sys_NV_ReadPublic_Complete(
10283        sysContext: *mut TSS2_SYS_CONTEXT,
10284        nvPublic: *mut TPM2B_NV_PUBLIC,
10285        nvName: *mut TPM2B_NAME,
10286    ) -> TSS2_RC;
10287}
10288extern "C" {
10289    pub fn Tss2_Sys_NV_ReadPublic(
10290        sysContext: *mut TSS2_SYS_CONTEXT,
10291        nvIndex: TPMI_RH_NV_INDEX,
10292        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10293        nvPublic: *mut TPM2B_NV_PUBLIC,
10294        nvName: *mut TPM2B_NAME,
10295        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10296    ) -> TSS2_RC;
10297}
10298extern "C" {
10299    pub fn Tss2_Sys_NV_Write_Prepare(
10300        sysContext: *mut TSS2_SYS_CONTEXT,
10301        authHandle: TPMI_RH_NV_AUTH,
10302        nvIndex: TPMI_RH_NV_INDEX,
10303        data: *const TPM2B_MAX_NV_BUFFER,
10304        offset: UINT16,
10305    ) -> TSS2_RC;
10306}
10307extern "C" {
10308    pub fn Tss2_Sys_NV_Write_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10309}
10310extern "C" {
10311    pub fn Tss2_Sys_NV_Write(
10312        sysContext: *mut TSS2_SYS_CONTEXT,
10313        authHandle: TPMI_RH_NV_AUTH,
10314        nvIndex: TPMI_RH_NV_INDEX,
10315        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10316        data: *const TPM2B_MAX_NV_BUFFER,
10317        offset: UINT16,
10318        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10319    ) -> TSS2_RC;
10320}
10321extern "C" {
10322    pub fn Tss2_Sys_NV_Increment_Prepare(
10323        sysContext: *mut TSS2_SYS_CONTEXT,
10324        authHandle: TPMI_RH_NV_AUTH,
10325        nvIndex: TPMI_RH_NV_INDEX,
10326    ) -> TSS2_RC;
10327}
10328extern "C" {
10329    pub fn Tss2_Sys_NV_Increment_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10330}
10331extern "C" {
10332    pub fn Tss2_Sys_NV_Increment(
10333        sysContext: *mut TSS2_SYS_CONTEXT,
10334        authHandle: TPMI_RH_NV_AUTH,
10335        nvIndex: TPMI_RH_NV_INDEX,
10336        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10337        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10338    ) -> TSS2_RC;
10339}
10340extern "C" {
10341    pub fn Tss2_Sys_NV_Extend_Prepare(
10342        sysContext: *mut TSS2_SYS_CONTEXT,
10343        authHandle: TPMI_RH_NV_AUTH,
10344        nvIndex: TPMI_RH_NV_INDEX,
10345        data: *const TPM2B_MAX_NV_BUFFER,
10346    ) -> TSS2_RC;
10347}
10348extern "C" {
10349    pub fn Tss2_Sys_NV_Extend_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10350}
10351extern "C" {
10352    pub fn Tss2_Sys_NV_Extend(
10353        sysContext: *mut TSS2_SYS_CONTEXT,
10354        authHandle: TPMI_RH_NV_AUTH,
10355        nvIndex: TPMI_RH_NV_INDEX,
10356        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10357        data: *const TPM2B_MAX_NV_BUFFER,
10358        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10359    ) -> TSS2_RC;
10360}
10361extern "C" {
10362    pub fn Tss2_Sys_NV_SetBits_Prepare(
10363        sysContext: *mut TSS2_SYS_CONTEXT,
10364        authHandle: TPMI_RH_NV_AUTH,
10365        nvIndex: TPMI_RH_NV_INDEX,
10366        bits: UINT64,
10367    ) -> TSS2_RC;
10368}
10369extern "C" {
10370    pub fn Tss2_Sys_NV_SetBits_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10371}
10372extern "C" {
10373    pub fn Tss2_Sys_NV_SetBits(
10374        sysContext: *mut TSS2_SYS_CONTEXT,
10375        authHandle: TPMI_RH_NV_AUTH,
10376        nvIndex: TPMI_RH_NV_INDEX,
10377        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10378        bits: UINT64,
10379        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10380    ) -> TSS2_RC;
10381}
10382extern "C" {
10383    pub fn Tss2_Sys_NV_WriteLock_Prepare(
10384        sysContext: *mut TSS2_SYS_CONTEXT,
10385        authHandle: TPMI_RH_NV_AUTH,
10386        nvIndex: TPMI_RH_NV_INDEX,
10387    ) -> TSS2_RC;
10388}
10389extern "C" {
10390    pub fn Tss2_Sys_NV_WriteLock_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10391}
10392extern "C" {
10393    pub fn Tss2_Sys_NV_WriteLock(
10394        sysContext: *mut TSS2_SYS_CONTEXT,
10395        authHandle: TPMI_RH_NV_AUTH,
10396        nvIndex: TPMI_RH_NV_INDEX,
10397        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10398        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10399    ) -> TSS2_RC;
10400}
10401extern "C" {
10402    pub fn Tss2_Sys_NV_GlobalWriteLock_Prepare(
10403        sysContext: *mut TSS2_SYS_CONTEXT,
10404        authHandle: TPMI_RH_PROVISION,
10405    ) -> TSS2_RC;
10406}
10407extern "C" {
10408    pub fn Tss2_Sys_NV_GlobalWriteLock_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10409}
10410extern "C" {
10411    pub fn Tss2_Sys_NV_GlobalWriteLock(
10412        sysContext: *mut TSS2_SYS_CONTEXT,
10413        authHandle: TPMI_RH_PROVISION,
10414        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10415        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10416    ) -> TSS2_RC;
10417}
10418extern "C" {
10419    pub fn Tss2_Sys_NV_Read_Prepare(
10420        sysContext: *mut TSS2_SYS_CONTEXT,
10421        authHandle: TPMI_RH_NV_AUTH,
10422        nvIndex: TPMI_RH_NV_INDEX,
10423        size: UINT16,
10424        offset: UINT16,
10425    ) -> TSS2_RC;
10426}
10427extern "C" {
10428    pub fn Tss2_Sys_NV_Read_Complete(
10429        sysContext: *mut TSS2_SYS_CONTEXT,
10430        data: *mut TPM2B_MAX_NV_BUFFER,
10431    ) -> TSS2_RC;
10432}
10433extern "C" {
10434    pub fn Tss2_Sys_NV_Read(
10435        sysContext: *mut TSS2_SYS_CONTEXT,
10436        authHandle: TPMI_RH_NV_AUTH,
10437        nvIndex: TPMI_RH_NV_INDEX,
10438        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10439        size: UINT16,
10440        offset: UINT16,
10441        data: *mut TPM2B_MAX_NV_BUFFER,
10442        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10443    ) -> TSS2_RC;
10444}
10445extern "C" {
10446    pub fn Tss2_Sys_NV_ReadLock_Prepare(
10447        sysContext: *mut TSS2_SYS_CONTEXT,
10448        authHandle: TPMI_RH_NV_AUTH,
10449        nvIndex: TPMI_RH_NV_INDEX,
10450    ) -> TSS2_RC;
10451}
10452extern "C" {
10453    pub fn Tss2_Sys_NV_ReadLock_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10454}
10455extern "C" {
10456    pub fn Tss2_Sys_NV_ReadLock(
10457        sysContext: *mut TSS2_SYS_CONTEXT,
10458        authHandle: TPMI_RH_NV_AUTH,
10459        nvIndex: TPMI_RH_NV_INDEX,
10460        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10461        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10462    ) -> TSS2_RC;
10463}
10464extern "C" {
10465    pub fn Tss2_Sys_NV_ChangeAuth_Prepare(
10466        sysContext: *mut TSS2_SYS_CONTEXT,
10467        nvIndex: TPMI_RH_NV_INDEX,
10468        newAuth: *const TPM2B_AUTH,
10469    ) -> TSS2_RC;
10470}
10471extern "C" {
10472    pub fn Tss2_Sys_NV_ChangeAuth_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10473}
10474extern "C" {
10475    pub fn Tss2_Sys_NV_ChangeAuth(
10476        sysContext: *mut TSS2_SYS_CONTEXT,
10477        nvIndex: TPMI_RH_NV_INDEX,
10478        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10479        newAuth: *const TPM2B_AUTH,
10480        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10481    ) -> TSS2_RC;
10482}
10483extern "C" {
10484    pub fn Tss2_Sys_NV_Certify_Prepare(
10485        sysContext: *mut TSS2_SYS_CONTEXT,
10486        signHandle: TPMI_DH_OBJECT,
10487        authHandle: TPMI_RH_NV_AUTH,
10488        nvIndex: TPMI_RH_NV_INDEX,
10489        qualifyingData: *const TPM2B_DATA,
10490        inScheme: *const TPMT_SIG_SCHEME,
10491        size: UINT16,
10492        offset: UINT16,
10493    ) -> TSS2_RC;
10494}
10495extern "C" {
10496    pub fn Tss2_Sys_NV_Certify_Complete(
10497        sysContext: *mut TSS2_SYS_CONTEXT,
10498        certifyInfo: *mut TPM2B_ATTEST,
10499        signature: *mut TPMT_SIGNATURE,
10500    ) -> TSS2_RC;
10501}
10502extern "C" {
10503    pub fn Tss2_Sys_NV_Certify(
10504        sysContext: *mut TSS2_SYS_CONTEXT,
10505        signHandle: TPMI_DH_OBJECT,
10506        authHandle: TPMI_RH_NV_AUTH,
10507        nvIndex: TPMI_RH_NV_INDEX,
10508        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10509        qualifyingData: *const TPM2B_DATA,
10510        inScheme: *const TPMT_SIG_SCHEME,
10511        size: UINT16,
10512        offset: UINT16,
10513        certifyInfo: *mut TPM2B_ATTEST,
10514        signature: *mut TPMT_SIGNATURE,
10515        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10516    ) -> TSS2_RC;
10517}
10518extern "C" {
10519    pub fn Tss2_Sys_Vendor_TCG_Test_Prepare(
10520        sysContext: *mut TSS2_SYS_CONTEXT,
10521        inputData: *const TPM2B_DATA,
10522    ) -> TSS2_RC;
10523}
10524extern "C" {
10525    pub fn Tss2_Sys_Vendor_TCG_Test_Complete(
10526        sysContext: *mut TSS2_SYS_CONTEXT,
10527        outputData: *mut TPM2B_DATA,
10528    ) -> TSS2_RC;
10529}
10530extern "C" {
10531    pub fn Tss2_Sys_Vendor_TCG_Test(
10532        sysContext: *mut TSS2_SYS_CONTEXT,
10533        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10534        inputData: *const TPM2B_DATA,
10535        outputData: *mut TPM2B_DATA,
10536        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10537    ) -> TSS2_RC;
10538}
10539extern "C" {
10540    pub fn Tss2_Sys_AC_GetCapability_Prepare(
10541        sysContext: *mut TSS2_SYS_CONTEXT,
10542        ac: TPMI_RH_AC,
10543        capability: TPM_AT,
10544        count: UINT32,
10545    ) -> TSS2_RC;
10546}
10547extern "C" {
10548    pub fn Tss2_Sys_AC_GetCapability_Complete(
10549        sysContext: *mut TSS2_SYS_CONTEXT,
10550        moreData: *mut TPMI_YES_NO,
10551        capabilityData: *mut TPML_AC_CAPABILITIES,
10552    ) -> TSS2_RC;
10553}
10554extern "C" {
10555    pub fn Tss2_Sys_AC_GetCapability(
10556        sysContext: *mut TSS2_SYS_CONTEXT,
10557        ac: TPMI_RH_AC,
10558        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10559        capability: TPM_AT,
10560        count: UINT32,
10561        moreData: *mut TPMI_YES_NO,
10562        capabilityData: *mut TPML_AC_CAPABILITIES,
10563        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10564    ) -> TSS2_RC;
10565}
10566extern "C" {
10567    pub fn Tss2_Sys_AC_Send_Prepare(
10568        sysContext: *mut TSS2_SYS_CONTEXT,
10569        sendObject: TPMI_DH_OBJECT,
10570        authHandle: TPMI_RH_NV_AUTH,
10571        ac: TPMI_RH_AC,
10572        acDataIn: *mut TPM2B_MAX_BUFFER,
10573    ) -> TSS2_RC;
10574}
10575extern "C" {
10576    pub fn Tss2_Sys_AC_Send_Complete(
10577        sysContext: *mut TSS2_SYS_CONTEXT,
10578        acDataOut: *mut TPMS_AC_OUTPUT,
10579    ) -> TSS2_RC;
10580}
10581extern "C" {
10582    pub fn Tss2_Sys_AC_Send(
10583        sysContext: *mut TSS2_SYS_CONTEXT,
10584        sendObject: TPMI_DH_OBJECT,
10585        authHandle: TPMI_RH_NV_AUTH,
10586        ac: TPMI_RH_AC,
10587        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10588        acDataIn: *mut TPM2B_MAX_BUFFER,
10589        acDataOut: *mut TPMS_AC_OUTPUT,
10590        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10591    ) -> TSS2_RC;
10592}
10593extern "C" {
10594    pub fn Tss2_Sys_Policy_AC_SendSelect_Prepare(
10595        sysContext: *mut TSS2_SYS_CONTEXT,
10596        policySession: TPMI_SH_POLICY,
10597        objectName: *mut TPM2B_NAME,
10598        authHandleName: *mut TPM2B_NAME,
10599        acName: *mut TPM2B_NAME,
10600        includeObject: TPMI_YES_NO,
10601    ) -> TSS2_RC;
10602}
10603extern "C" {
10604    pub fn Tss2_Sys_Policy_AC_SendSelect_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10605}
10606extern "C" {
10607    pub fn Tss2_Sys_Policy_AC_SendSelect(
10608        sysContext: *mut TSS2_SYS_CONTEXT,
10609        policySession: TPMI_SH_POLICY,
10610        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10611        objectName: *mut TPM2B_NAME,
10612        authHandleName: *mut TPM2B_NAME,
10613        acName: *mut TPM2B_NAME,
10614        includeObject: TPMI_YES_NO,
10615        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10616    ) -> TSS2_RC;
10617}
10618extern "C" {
10619    pub fn Tss2_Sys_PolicyTemplate_Prepare(
10620        sysContext: *mut TSS2_SYS_CONTEXT,
10621        policySession: TPMI_SH_POLICY,
10622        templateHash: *const TPM2B_DIGEST,
10623    ) -> TSS2_RC;
10624}
10625extern "C" {
10626    pub fn Tss2_Sys_PolicyTemplate_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10627}
10628extern "C" {
10629    pub fn Tss2_Sys_PolicyTemplate(
10630        sysContext: *mut TSS2_SYS_CONTEXT,
10631        policySession: TPMI_SH_POLICY,
10632        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10633        templateHash: *const TPM2B_DIGEST,
10634        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10635    ) -> TSS2_RC;
10636}
10637extern "C" {
10638    pub fn Tss2_Sys_CreateLoaded_Prepare(
10639        sysContext: *mut TSS2_SYS_CONTEXT,
10640        parentHandle: TPMI_RH_HIERARCHY,
10641        inSensitive: *const TPM2B_SENSITIVE_CREATE,
10642        inPublic: *const TPM2B_TEMPLATE,
10643    ) -> TSS2_RC;
10644}
10645extern "C" {
10646    pub fn Tss2_Sys_CreateLoaded_Complete(
10647        sysContext: *mut TSS2_SYS_CONTEXT,
10648        objectHandle: *mut TPM2_HANDLE,
10649        outPrivate: *mut TPM2B_PRIVATE,
10650        outPublic: *mut TPM2B_PUBLIC,
10651        name: *mut TPM2B_NAME,
10652    ) -> TSS2_RC;
10653}
10654extern "C" {
10655    pub fn Tss2_Sys_CreateLoaded(
10656        sysContext: *mut TSS2_SYS_CONTEXT,
10657        parentHandle: TPMI_RH_HIERARCHY,
10658        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10659        inSensitive: *const TPM2B_SENSITIVE_CREATE,
10660        inPublic: *const TPM2B_TEMPLATE,
10661        objectHandle: *mut TPM2_HANDLE,
10662        outPrivate: *mut TPM2B_PRIVATE,
10663        outPublic: *mut TPM2B_PUBLIC,
10664        name: *mut TPM2B_NAME,
10665        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10666    ) -> TSS2_RC;
10667}
10668extern "C" {
10669    pub fn Tss2_Sys_PolicyAuthorizeNV_Prepare(
10670        sysContext: *mut TSS2_SYS_CONTEXT,
10671        authHandle: TPMI_RH_NV_AUTH,
10672        nvIndex: TPMI_RH_NV_INDEX,
10673        policySession: TPMI_SH_POLICY,
10674    ) -> TSS2_RC;
10675}
10676extern "C" {
10677    pub fn Tss2_Sys_PolicyAuthorizeNV_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
10678}
10679extern "C" {
10680    pub fn Tss2_Sys_PolicyAuthorizeNV(
10681        sysContext: *mut TSS2_SYS_CONTEXT,
10682        authHandle: TPMI_RH_NV_AUTH,
10683        nvIndex: TPMI_RH_NV_INDEX,
10684        policySession: TPMI_SH_POLICY,
10685        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
10686        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
10687    ) -> TSS2_RC;
10688}
10689pub type ESYS_TR = u32;
10690#[repr(C)]
10691#[derive(Debug, Copy, Clone)]
10692pub struct ESYS_CONTEXT {
10693    _unused: [u8; 0],
10694}
10695extern "C" {
10696    pub fn Esys_Initialize(
10697        esys_context: *mut *mut ESYS_CONTEXT,
10698        tcti: *mut TSS2_TCTI_CONTEXT,
10699        abiVersion: *mut TSS2_ABI_VERSION,
10700    ) -> TSS2_RC;
10701}
10702extern "C" {
10703    pub fn Esys_Finalize(context: *mut *mut ESYS_CONTEXT);
10704}
10705extern "C" {
10706    pub fn Esys_GetTcti(
10707        esys_context: *mut ESYS_CONTEXT,
10708        tcti: *mut *mut TSS2_TCTI_CONTEXT,
10709    ) -> TSS2_RC;
10710}
10711extern "C" {
10712    pub fn Esys_GetPollHandles(
10713        esys_context: *mut ESYS_CONTEXT,
10714        handles: *mut *mut TSS2_TCTI_POLL_HANDLE,
10715        count: *mut size_t,
10716    ) -> TSS2_RC;
10717}
10718extern "C" {
10719    pub fn Esys_SetTimeout(esys_context: *mut ESYS_CONTEXT, timeout: i32) -> TSS2_RC;
10720}
10721extern "C" {
10722    pub fn Esys_TR_Serialize(
10723        esys_context: *mut ESYS_CONTEXT,
10724        object: ESYS_TR,
10725        buffer: *mut *mut u8,
10726        buffer_size: *mut size_t,
10727    ) -> TSS2_RC;
10728}
10729extern "C" {
10730    pub fn Esys_TR_Deserialize(
10731        esys_context: *mut ESYS_CONTEXT,
10732        buffer: *const u8,
10733        buffer_size: size_t,
10734        esys_handle: *mut ESYS_TR,
10735    ) -> TSS2_RC;
10736}
10737extern "C" {
10738    pub fn Esys_TR_FromTPMPublic_Async(
10739        esysContext: *mut ESYS_CONTEXT,
10740        tpm_handle: TPM2_HANDLE,
10741        optionalSession1: ESYS_TR,
10742        optionalSession2: ESYS_TR,
10743        optionalSession3: ESYS_TR,
10744    ) -> TSS2_RC;
10745}
10746extern "C" {
10747    pub fn Esys_TR_FromTPMPublic_Finish(
10748        esysContext: *mut ESYS_CONTEXT,
10749        object: *mut ESYS_TR,
10750    ) -> TSS2_RC;
10751}
10752extern "C" {
10753    pub fn Esys_TR_FromTPMPublic(
10754        esysContext: *mut ESYS_CONTEXT,
10755        tpm_handle: TPM2_HANDLE,
10756        optionalSession1: ESYS_TR,
10757        optionalSession2: ESYS_TR,
10758        optionalSession3: ESYS_TR,
10759        object: *mut ESYS_TR,
10760    ) -> TSS2_RC;
10761}
10762extern "C" {
10763    pub fn Esys_TR_Close(esys_context: *mut ESYS_CONTEXT, rsrc_handle: *mut ESYS_TR) -> TSS2_RC;
10764}
10765extern "C" {
10766    pub fn Esys_TR_SetAuth(
10767        esysContext: *mut ESYS_CONTEXT,
10768        handle: ESYS_TR,
10769        authValue: *const TPM2B_AUTH,
10770    ) -> TSS2_RC;
10771}
10772extern "C" {
10773    pub fn Esys_TR_GetName(
10774        esysContext: *mut ESYS_CONTEXT,
10775        handle: ESYS_TR,
10776        name: *mut *mut TPM2B_NAME,
10777    ) -> TSS2_RC;
10778}
10779extern "C" {
10780    pub fn Esys_TRSess_GetAttributes(
10781        esysContext: *mut ESYS_CONTEXT,
10782        session: ESYS_TR,
10783        flags: *mut TPMA_SESSION,
10784    ) -> TSS2_RC;
10785}
10786extern "C" {
10787    pub fn Esys_TRSess_SetAttributes(
10788        esysContext: *mut ESYS_CONTEXT,
10789        session: ESYS_TR,
10790        flags: TPMA_SESSION,
10791        mask: TPMA_SESSION,
10792    ) -> TSS2_RC;
10793}
10794extern "C" {
10795    pub fn Esys_TRSess_GetNonceTPM(
10796        esysContext: *mut ESYS_CONTEXT,
10797        session: ESYS_TR,
10798        nonceTPM: *mut *mut TPM2B_NONCE,
10799    ) -> TSS2_RC;
10800}
10801extern "C" {
10802    pub fn Esys_TR_GetTpmHandle(
10803        esys_context: *mut ESYS_CONTEXT,
10804        esys_handle: ESYS_TR,
10805        tpm_handle: *mut TPM2_HANDLE,
10806    ) -> TSS2_RC;
10807}
10808extern "C" {
10809    pub fn Esys_TRSess_GetAuthRequired(
10810        esys_context: *mut ESYS_CONTEXT,
10811        esys_handle: ESYS_TR,
10812        auth_needed: *mut TPMI_YES_NO,
10813    ) -> TSS2_RC;
10814}
10815extern "C" {
10816    pub fn Esys_Startup(esysContext: *mut ESYS_CONTEXT, startupType: TPM2_SU) -> TSS2_RC;
10817}
10818extern "C" {
10819    pub fn Esys_Startup_Async(esysContext: *mut ESYS_CONTEXT, startupType: TPM2_SU) -> TSS2_RC;
10820}
10821extern "C" {
10822    pub fn Esys_Startup_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
10823}
10824extern "C" {
10825    pub fn Esys_Shutdown(
10826        esysContext: *mut ESYS_CONTEXT,
10827        shandle1: ESYS_TR,
10828        shandle2: ESYS_TR,
10829        shandle3: ESYS_TR,
10830        shutdownType: TPM2_SU,
10831    ) -> TSS2_RC;
10832}
10833extern "C" {
10834    pub fn Esys_Shutdown_Async(
10835        esysContext: *mut ESYS_CONTEXT,
10836        shandle1: ESYS_TR,
10837        shandle2: ESYS_TR,
10838        shandle3: ESYS_TR,
10839        shutdownType: TPM2_SU,
10840    ) -> TSS2_RC;
10841}
10842extern "C" {
10843    pub fn Esys_Shutdown_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
10844}
10845extern "C" {
10846    pub fn Esys_SelfTest(
10847        esysContext: *mut ESYS_CONTEXT,
10848        shandle1: ESYS_TR,
10849        shandle2: ESYS_TR,
10850        shandle3: ESYS_TR,
10851        fullTest: TPMI_YES_NO,
10852    ) -> TSS2_RC;
10853}
10854extern "C" {
10855    pub fn Esys_SelfTest_Async(
10856        esysContext: *mut ESYS_CONTEXT,
10857        shandle1: ESYS_TR,
10858        shandle2: ESYS_TR,
10859        shandle3: ESYS_TR,
10860        fullTest: TPMI_YES_NO,
10861    ) -> TSS2_RC;
10862}
10863extern "C" {
10864    pub fn Esys_SelfTest_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
10865}
10866extern "C" {
10867    pub fn Esys_IncrementalSelfTest(
10868        esysContext: *mut ESYS_CONTEXT,
10869        shandle1: ESYS_TR,
10870        shandle2: ESYS_TR,
10871        shandle3: ESYS_TR,
10872        toTest: *const TPML_ALG,
10873        toDoList: *mut *mut TPML_ALG,
10874    ) -> TSS2_RC;
10875}
10876extern "C" {
10877    pub fn Esys_IncrementalSelfTest_Async(
10878        esysContext: *mut ESYS_CONTEXT,
10879        shandle1: ESYS_TR,
10880        shandle2: ESYS_TR,
10881        shandle3: ESYS_TR,
10882        toTest: *const TPML_ALG,
10883    ) -> TSS2_RC;
10884}
10885extern "C" {
10886    pub fn Esys_IncrementalSelfTest_Finish(
10887        esysContext: *mut ESYS_CONTEXT,
10888        toDoList: *mut *mut TPML_ALG,
10889    ) -> TSS2_RC;
10890}
10891extern "C" {
10892    pub fn Esys_GetTestResult(
10893        esysContext: *mut ESYS_CONTEXT,
10894        shandle1: ESYS_TR,
10895        shandle2: ESYS_TR,
10896        shandle3: ESYS_TR,
10897        outData: *mut *mut TPM2B_MAX_BUFFER,
10898        testResult: *mut TPM2_RC,
10899    ) -> TSS2_RC;
10900}
10901extern "C" {
10902    pub fn Esys_GetTestResult_Async(
10903        esysContext: *mut ESYS_CONTEXT,
10904        shandle1: ESYS_TR,
10905        shandle2: ESYS_TR,
10906        shandle3: ESYS_TR,
10907    ) -> TSS2_RC;
10908}
10909extern "C" {
10910    pub fn Esys_GetTestResult_Finish(
10911        esysContext: *mut ESYS_CONTEXT,
10912        outData: *mut *mut TPM2B_MAX_BUFFER,
10913        testResult: *mut TPM2_RC,
10914    ) -> TSS2_RC;
10915}
10916extern "C" {
10917    pub fn Esys_StartAuthSession(
10918        esysContext: *mut ESYS_CONTEXT,
10919        tpmKey: ESYS_TR,
10920        bind: ESYS_TR,
10921        shandle1: ESYS_TR,
10922        shandle2: ESYS_TR,
10923        shandle3: ESYS_TR,
10924        nonceCaller: *const TPM2B_NONCE,
10925        sessionType: TPM2_SE,
10926        symmetric: *const TPMT_SYM_DEF,
10927        authHash: TPMI_ALG_HASH,
10928        sessionHandle: *mut ESYS_TR,
10929    ) -> TSS2_RC;
10930}
10931extern "C" {
10932    pub fn Esys_StartAuthSession_Async(
10933        esysContext: *mut ESYS_CONTEXT,
10934        tpmKey: ESYS_TR,
10935        bind: ESYS_TR,
10936        shandle1: ESYS_TR,
10937        shandle2: ESYS_TR,
10938        shandle3: ESYS_TR,
10939        nonceCaller: *const TPM2B_NONCE,
10940        sessionType: TPM2_SE,
10941        symmetric: *const TPMT_SYM_DEF,
10942        authHash: TPMI_ALG_HASH,
10943    ) -> TSS2_RC;
10944}
10945extern "C" {
10946    pub fn Esys_StartAuthSession_Finish(
10947        esysContext: *mut ESYS_CONTEXT,
10948        sessionHandle: *mut ESYS_TR,
10949    ) -> TSS2_RC;
10950}
10951extern "C" {
10952    pub fn Esys_PolicyRestart(
10953        esysContext: *mut ESYS_CONTEXT,
10954        sessionHandle: ESYS_TR,
10955        shandle1: ESYS_TR,
10956        shandle2: ESYS_TR,
10957        shandle3: ESYS_TR,
10958    ) -> TSS2_RC;
10959}
10960extern "C" {
10961    pub fn Esys_PolicyRestart_Async(
10962        esysContext: *mut ESYS_CONTEXT,
10963        sessionHandle: ESYS_TR,
10964        shandle1: ESYS_TR,
10965        shandle2: ESYS_TR,
10966        shandle3: ESYS_TR,
10967    ) -> TSS2_RC;
10968}
10969extern "C" {
10970    pub fn Esys_PolicyRestart_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
10971}
10972extern "C" {
10973    pub fn Esys_Create(
10974        esysContext: *mut ESYS_CONTEXT,
10975        parentHandle: ESYS_TR,
10976        shandle1: ESYS_TR,
10977        shandle2: ESYS_TR,
10978        shandle3: ESYS_TR,
10979        inSensitive: *const TPM2B_SENSITIVE_CREATE,
10980        inPublic: *const TPM2B_PUBLIC,
10981        outsideInfo: *const TPM2B_DATA,
10982        creationPCR: *const TPML_PCR_SELECTION,
10983        outPrivate: *mut *mut TPM2B_PRIVATE,
10984        outPublic: *mut *mut TPM2B_PUBLIC,
10985        creationData: *mut *mut TPM2B_CREATION_DATA,
10986        creationHash: *mut *mut TPM2B_DIGEST,
10987        creationTicket: *mut *mut TPMT_TK_CREATION,
10988    ) -> TSS2_RC;
10989}
10990extern "C" {
10991    pub fn Esys_Create_Async(
10992        esysContext: *mut ESYS_CONTEXT,
10993        parentHandle: ESYS_TR,
10994        shandle1: ESYS_TR,
10995        shandle2: ESYS_TR,
10996        shandle3: ESYS_TR,
10997        inSensitive: *const TPM2B_SENSITIVE_CREATE,
10998        inPublic: *const TPM2B_PUBLIC,
10999        outsideInfo: *const TPM2B_DATA,
11000        creationPCR: *const TPML_PCR_SELECTION,
11001    ) -> TSS2_RC;
11002}
11003extern "C" {
11004    pub fn Esys_Create_Finish(
11005        esysContext: *mut ESYS_CONTEXT,
11006        outPrivate: *mut *mut TPM2B_PRIVATE,
11007        outPublic: *mut *mut TPM2B_PUBLIC,
11008        creationData: *mut *mut TPM2B_CREATION_DATA,
11009        creationHash: *mut *mut TPM2B_DIGEST,
11010        creationTicket: *mut *mut TPMT_TK_CREATION,
11011    ) -> TSS2_RC;
11012}
11013extern "C" {
11014    pub fn Esys_Load(
11015        esysContext: *mut ESYS_CONTEXT,
11016        parentHandle: ESYS_TR,
11017        shandle1: ESYS_TR,
11018        shandle2: ESYS_TR,
11019        shandle3: ESYS_TR,
11020        inPrivate: *const TPM2B_PRIVATE,
11021        inPublic: *const TPM2B_PUBLIC,
11022        objectHandle: *mut ESYS_TR,
11023    ) -> TSS2_RC;
11024}
11025extern "C" {
11026    pub fn Esys_Load_Async(
11027        esysContext: *mut ESYS_CONTEXT,
11028        parentHandle: ESYS_TR,
11029        shandle1: ESYS_TR,
11030        shandle2: ESYS_TR,
11031        shandle3: ESYS_TR,
11032        inPrivate: *const TPM2B_PRIVATE,
11033        inPublic: *const TPM2B_PUBLIC,
11034    ) -> TSS2_RC;
11035}
11036extern "C" {
11037    pub fn Esys_Load_Finish(esysContext: *mut ESYS_CONTEXT, objectHandle: *mut ESYS_TR) -> TSS2_RC;
11038}
11039extern "C" {
11040    pub fn Esys_LoadExternal(
11041        esysContext: *mut ESYS_CONTEXT,
11042        shandle1: ESYS_TR,
11043        shandle2: ESYS_TR,
11044        shandle3: ESYS_TR,
11045        inPrivate: *const TPM2B_SENSITIVE,
11046        inPublic: *const TPM2B_PUBLIC,
11047        hierarchy: TPMI_RH_HIERARCHY,
11048        objectHandle: *mut ESYS_TR,
11049    ) -> TSS2_RC;
11050}
11051extern "C" {
11052    pub fn Esys_LoadExternal_Async(
11053        esysContext: *mut ESYS_CONTEXT,
11054        shandle1: ESYS_TR,
11055        shandle2: ESYS_TR,
11056        shandle3: ESYS_TR,
11057        inPrivate: *const TPM2B_SENSITIVE,
11058        inPublic: *const TPM2B_PUBLIC,
11059        hierarchy: TPMI_RH_HIERARCHY,
11060    ) -> TSS2_RC;
11061}
11062extern "C" {
11063    pub fn Esys_LoadExternal_Finish(
11064        esysContext: *mut ESYS_CONTEXT,
11065        objectHandle: *mut ESYS_TR,
11066    ) -> TSS2_RC;
11067}
11068extern "C" {
11069    pub fn Esys_ReadPublic(
11070        esysContext: *mut ESYS_CONTEXT,
11071        objectHandle: ESYS_TR,
11072        shandle1: ESYS_TR,
11073        shandle2: ESYS_TR,
11074        shandle3: ESYS_TR,
11075        outPublic: *mut *mut TPM2B_PUBLIC,
11076        name: *mut *mut TPM2B_NAME,
11077        qualifiedName: *mut *mut TPM2B_NAME,
11078    ) -> TSS2_RC;
11079}
11080extern "C" {
11081    pub fn Esys_ReadPublic_Async(
11082        esysContext: *mut ESYS_CONTEXT,
11083        objectHandle: ESYS_TR,
11084        shandle1: ESYS_TR,
11085        shandle2: ESYS_TR,
11086        shandle3: ESYS_TR,
11087    ) -> TSS2_RC;
11088}
11089extern "C" {
11090    pub fn Esys_ReadPublic_Finish(
11091        esysContext: *mut ESYS_CONTEXT,
11092        outPublic: *mut *mut TPM2B_PUBLIC,
11093        name: *mut *mut TPM2B_NAME,
11094        qualifiedName: *mut *mut TPM2B_NAME,
11095    ) -> TSS2_RC;
11096}
11097extern "C" {
11098    pub fn Esys_ActivateCredential(
11099        esysContext: *mut ESYS_CONTEXT,
11100        activateHandle: ESYS_TR,
11101        keyHandle: ESYS_TR,
11102        shandle1: ESYS_TR,
11103        shandle2: ESYS_TR,
11104        shandle3: ESYS_TR,
11105        credentialBlob: *const TPM2B_ID_OBJECT,
11106        secret: *const TPM2B_ENCRYPTED_SECRET,
11107        certInfo: *mut *mut TPM2B_DIGEST,
11108    ) -> TSS2_RC;
11109}
11110extern "C" {
11111    pub fn Esys_ActivateCredential_Async(
11112        esysContext: *mut ESYS_CONTEXT,
11113        activateHandle: ESYS_TR,
11114        keyHandle: ESYS_TR,
11115        shandle1: ESYS_TR,
11116        shandle2: ESYS_TR,
11117        shandle3: ESYS_TR,
11118        credentialBlob: *const TPM2B_ID_OBJECT,
11119        secret: *const TPM2B_ENCRYPTED_SECRET,
11120    ) -> TSS2_RC;
11121}
11122extern "C" {
11123    pub fn Esys_ActivateCredential_Finish(
11124        esysContext: *mut ESYS_CONTEXT,
11125        certInfo: *mut *mut TPM2B_DIGEST,
11126    ) -> TSS2_RC;
11127}
11128extern "C" {
11129    pub fn Esys_MakeCredential(
11130        esysContext: *mut ESYS_CONTEXT,
11131        handle: ESYS_TR,
11132        shandle1: ESYS_TR,
11133        shandle2: ESYS_TR,
11134        shandle3: ESYS_TR,
11135        credential: *const TPM2B_DIGEST,
11136        objectName: *const TPM2B_NAME,
11137        credentialBlob: *mut *mut TPM2B_ID_OBJECT,
11138        secret: *mut *mut TPM2B_ENCRYPTED_SECRET,
11139    ) -> TSS2_RC;
11140}
11141extern "C" {
11142    pub fn Esys_MakeCredential_Async(
11143        esysContext: *mut ESYS_CONTEXT,
11144        handle: ESYS_TR,
11145        shandle1: ESYS_TR,
11146        shandle2: ESYS_TR,
11147        shandle3: ESYS_TR,
11148        credential: *const TPM2B_DIGEST,
11149        objectName: *const TPM2B_NAME,
11150    ) -> TSS2_RC;
11151}
11152extern "C" {
11153    pub fn Esys_MakeCredential_Finish(
11154        esysContext: *mut ESYS_CONTEXT,
11155        credentialBlob: *mut *mut TPM2B_ID_OBJECT,
11156        secret: *mut *mut TPM2B_ENCRYPTED_SECRET,
11157    ) -> TSS2_RC;
11158}
11159extern "C" {
11160    pub fn Esys_Unseal(
11161        esysContext: *mut ESYS_CONTEXT,
11162        itemHandle: ESYS_TR,
11163        shandle1: ESYS_TR,
11164        shandle2: ESYS_TR,
11165        shandle3: ESYS_TR,
11166        outData: *mut *mut TPM2B_SENSITIVE_DATA,
11167    ) -> TSS2_RC;
11168}
11169extern "C" {
11170    pub fn Esys_Unseal_Async(
11171        esysContext: *mut ESYS_CONTEXT,
11172        itemHandle: ESYS_TR,
11173        shandle1: ESYS_TR,
11174        shandle2: ESYS_TR,
11175        shandle3: ESYS_TR,
11176    ) -> TSS2_RC;
11177}
11178extern "C" {
11179    pub fn Esys_Unseal_Finish(
11180        esysContext: *mut ESYS_CONTEXT,
11181        outData: *mut *mut TPM2B_SENSITIVE_DATA,
11182    ) -> TSS2_RC;
11183}
11184extern "C" {
11185    pub fn Esys_ObjectChangeAuth(
11186        esysContext: *mut ESYS_CONTEXT,
11187        objectHandle: ESYS_TR,
11188        parentHandle: ESYS_TR,
11189        shandle1: ESYS_TR,
11190        shandle2: ESYS_TR,
11191        shandle3: ESYS_TR,
11192        newAuth: *const TPM2B_AUTH,
11193        outPrivate: *mut *mut TPM2B_PRIVATE,
11194    ) -> TSS2_RC;
11195}
11196extern "C" {
11197    pub fn Esys_ObjectChangeAuth_Async(
11198        esysContext: *mut ESYS_CONTEXT,
11199        objectHandle: ESYS_TR,
11200        parentHandle: ESYS_TR,
11201        shandle1: ESYS_TR,
11202        shandle2: ESYS_TR,
11203        shandle3: ESYS_TR,
11204        newAuth: *const TPM2B_AUTH,
11205    ) -> TSS2_RC;
11206}
11207extern "C" {
11208    pub fn Esys_ObjectChangeAuth_Finish(
11209        esysContext: *mut ESYS_CONTEXT,
11210        outPrivate: *mut *mut TPM2B_PRIVATE,
11211    ) -> TSS2_RC;
11212}
11213extern "C" {
11214    pub fn Esys_CreateLoaded(
11215        esysContext: *mut ESYS_CONTEXT,
11216        parentHandle: ESYS_TR,
11217        shandle1: ESYS_TR,
11218        shandle2: ESYS_TR,
11219        shandle3: ESYS_TR,
11220        inSensitive: *const TPM2B_SENSITIVE_CREATE,
11221        inPublic: *const TPM2B_TEMPLATE,
11222        objectHandle: *mut ESYS_TR,
11223        outPrivate: *mut *mut TPM2B_PRIVATE,
11224        outPublic: *mut *mut TPM2B_PUBLIC,
11225    ) -> TSS2_RC;
11226}
11227extern "C" {
11228    pub fn Esys_CreateLoaded_Async(
11229        esysContext: *mut ESYS_CONTEXT,
11230        parentHandle: ESYS_TR,
11231        shandle1: ESYS_TR,
11232        shandle2: ESYS_TR,
11233        shandle3: ESYS_TR,
11234        inSensitive: *const TPM2B_SENSITIVE_CREATE,
11235        inPublic: *const TPM2B_TEMPLATE,
11236    ) -> TSS2_RC;
11237}
11238extern "C" {
11239    pub fn Esys_CreateLoaded_Finish(
11240        esysContext: *mut ESYS_CONTEXT,
11241        objectHandle: *mut ESYS_TR,
11242        outPrivate: *mut *mut TPM2B_PRIVATE,
11243        outPublic: *mut *mut TPM2B_PUBLIC,
11244    ) -> TSS2_RC;
11245}
11246extern "C" {
11247    pub fn Esys_Duplicate(
11248        esysContext: *mut ESYS_CONTEXT,
11249        objectHandle: ESYS_TR,
11250        newParentHandle: ESYS_TR,
11251        shandle1: ESYS_TR,
11252        shandle2: ESYS_TR,
11253        shandle3: ESYS_TR,
11254        encryptionKeyIn: *const TPM2B_DATA,
11255        symmetricAlg: *const TPMT_SYM_DEF_OBJECT,
11256        encryptionKeyOut: *mut *mut TPM2B_DATA,
11257        duplicate: *mut *mut TPM2B_PRIVATE,
11258        outSymSeed: *mut *mut TPM2B_ENCRYPTED_SECRET,
11259    ) -> TSS2_RC;
11260}
11261extern "C" {
11262    pub fn Esys_Duplicate_Async(
11263        esysContext: *mut ESYS_CONTEXT,
11264        objectHandle: ESYS_TR,
11265        newParentHandle: ESYS_TR,
11266        shandle1: ESYS_TR,
11267        shandle2: ESYS_TR,
11268        shandle3: ESYS_TR,
11269        encryptionKeyIn: *const TPM2B_DATA,
11270        symmetricAlg: *const TPMT_SYM_DEF_OBJECT,
11271    ) -> TSS2_RC;
11272}
11273extern "C" {
11274    pub fn Esys_Duplicate_Finish(
11275        esysContext: *mut ESYS_CONTEXT,
11276        encryptionKeyOut: *mut *mut TPM2B_DATA,
11277        duplicate: *mut *mut TPM2B_PRIVATE,
11278        outSymSeed: *mut *mut TPM2B_ENCRYPTED_SECRET,
11279    ) -> TSS2_RC;
11280}
11281extern "C" {
11282    pub fn Esys_Rewrap(
11283        esysContext: *mut ESYS_CONTEXT,
11284        oldParent: ESYS_TR,
11285        newParent: ESYS_TR,
11286        shandle1: ESYS_TR,
11287        shandle2: ESYS_TR,
11288        shandle3: ESYS_TR,
11289        inDuplicate: *const TPM2B_PRIVATE,
11290        name: *const TPM2B_NAME,
11291        inSymSeed: *const TPM2B_ENCRYPTED_SECRET,
11292        outDuplicate: *mut *mut TPM2B_PRIVATE,
11293        outSymSeed: *mut *mut TPM2B_ENCRYPTED_SECRET,
11294    ) -> TSS2_RC;
11295}
11296extern "C" {
11297    pub fn Esys_Rewrap_Async(
11298        esysContext: *mut ESYS_CONTEXT,
11299        oldParent: ESYS_TR,
11300        newParent: ESYS_TR,
11301        shandle1: ESYS_TR,
11302        shandle2: ESYS_TR,
11303        shandle3: ESYS_TR,
11304        inDuplicate: *const TPM2B_PRIVATE,
11305        name: *const TPM2B_NAME,
11306        inSymSeed: *const TPM2B_ENCRYPTED_SECRET,
11307    ) -> TSS2_RC;
11308}
11309extern "C" {
11310    pub fn Esys_Rewrap_Finish(
11311        esysContext: *mut ESYS_CONTEXT,
11312        outDuplicate: *mut *mut TPM2B_PRIVATE,
11313        outSymSeed: *mut *mut TPM2B_ENCRYPTED_SECRET,
11314    ) -> TSS2_RC;
11315}
11316extern "C" {
11317    pub fn Esys_Import(
11318        esysContext: *mut ESYS_CONTEXT,
11319        parentHandle: ESYS_TR,
11320        shandle1: ESYS_TR,
11321        shandle2: ESYS_TR,
11322        shandle3: ESYS_TR,
11323        encryptionKey: *const TPM2B_DATA,
11324        objectPublic: *const TPM2B_PUBLIC,
11325        duplicate: *const TPM2B_PRIVATE,
11326        inSymSeed: *const TPM2B_ENCRYPTED_SECRET,
11327        symmetricAlg: *const TPMT_SYM_DEF_OBJECT,
11328        outPrivate: *mut *mut TPM2B_PRIVATE,
11329    ) -> TSS2_RC;
11330}
11331extern "C" {
11332    pub fn Esys_Import_Async(
11333        esysContext: *mut ESYS_CONTEXT,
11334        parentHandle: ESYS_TR,
11335        shandle1: ESYS_TR,
11336        shandle2: ESYS_TR,
11337        shandle3: ESYS_TR,
11338        encryptionKey: *const TPM2B_DATA,
11339        objectPublic: *const TPM2B_PUBLIC,
11340        duplicate: *const TPM2B_PRIVATE,
11341        inSymSeed: *const TPM2B_ENCRYPTED_SECRET,
11342        symmetricAlg: *const TPMT_SYM_DEF_OBJECT,
11343    ) -> TSS2_RC;
11344}
11345extern "C" {
11346    pub fn Esys_Import_Finish(
11347        esysContext: *mut ESYS_CONTEXT,
11348        outPrivate: *mut *mut TPM2B_PRIVATE,
11349    ) -> TSS2_RC;
11350}
11351extern "C" {
11352    pub fn Esys_RSA_Encrypt(
11353        esysContext: *mut ESYS_CONTEXT,
11354        keyHandle: ESYS_TR,
11355        shandle1: ESYS_TR,
11356        shandle2: ESYS_TR,
11357        shandle3: ESYS_TR,
11358        message: *const TPM2B_PUBLIC_KEY_RSA,
11359        inScheme: *const TPMT_RSA_DECRYPT,
11360        label: *const TPM2B_DATA,
11361        outData: *mut *mut TPM2B_PUBLIC_KEY_RSA,
11362    ) -> TSS2_RC;
11363}
11364extern "C" {
11365    pub fn Esys_RSA_Encrypt_Async(
11366        esysContext: *mut ESYS_CONTEXT,
11367        keyHandle: ESYS_TR,
11368        shandle1: ESYS_TR,
11369        shandle2: ESYS_TR,
11370        shandle3: ESYS_TR,
11371        message: *const TPM2B_PUBLIC_KEY_RSA,
11372        inScheme: *const TPMT_RSA_DECRYPT,
11373        label: *const TPM2B_DATA,
11374    ) -> TSS2_RC;
11375}
11376extern "C" {
11377    pub fn Esys_RSA_Encrypt_Finish(
11378        esysContext: *mut ESYS_CONTEXT,
11379        outData: *mut *mut TPM2B_PUBLIC_KEY_RSA,
11380    ) -> TSS2_RC;
11381}
11382extern "C" {
11383    pub fn Esys_RSA_Decrypt(
11384        esysContext: *mut ESYS_CONTEXT,
11385        keyHandle: ESYS_TR,
11386        shandle1: ESYS_TR,
11387        shandle2: ESYS_TR,
11388        shandle3: ESYS_TR,
11389        cipherText: *const TPM2B_PUBLIC_KEY_RSA,
11390        inScheme: *const TPMT_RSA_DECRYPT,
11391        label: *const TPM2B_DATA,
11392        message: *mut *mut TPM2B_PUBLIC_KEY_RSA,
11393    ) -> TSS2_RC;
11394}
11395extern "C" {
11396    pub fn Esys_RSA_Decrypt_Async(
11397        esysContext: *mut ESYS_CONTEXT,
11398        keyHandle: ESYS_TR,
11399        shandle1: ESYS_TR,
11400        shandle2: ESYS_TR,
11401        shandle3: ESYS_TR,
11402        cipherText: *const TPM2B_PUBLIC_KEY_RSA,
11403        inScheme: *const TPMT_RSA_DECRYPT,
11404        label: *const TPM2B_DATA,
11405    ) -> TSS2_RC;
11406}
11407extern "C" {
11408    pub fn Esys_RSA_Decrypt_Finish(
11409        esysContext: *mut ESYS_CONTEXT,
11410        message: *mut *mut TPM2B_PUBLIC_KEY_RSA,
11411    ) -> TSS2_RC;
11412}
11413extern "C" {
11414    pub fn Esys_ECDH_KeyGen(
11415        esysContext: *mut ESYS_CONTEXT,
11416        keyHandle: ESYS_TR,
11417        shandle1: ESYS_TR,
11418        shandle2: ESYS_TR,
11419        shandle3: ESYS_TR,
11420        zPoint: *mut *mut TPM2B_ECC_POINT,
11421        pubPoint: *mut *mut TPM2B_ECC_POINT,
11422    ) -> TSS2_RC;
11423}
11424extern "C" {
11425    pub fn Esys_ECDH_KeyGen_Async(
11426        esysContext: *mut ESYS_CONTEXT,
11427        keyHandle: ESYS_TR,
11428        shandle1: ESYS_TR,
11429        shandle2: ESYS_TR,
11430        shandle3: ESYS_TR,
11431    ) -> TSS2_RC;
11432}
11433extern "C" {
11434    pub fn Esys_ECDH_KeyGen_Finish(
11435        esysContext: *mut ESYS_CONTEXT,
11436        zPoint: *mut *mut TPM2B_ECC_POINT,
11437        pubPoint: *mut *mut TPM2B_ECC_POINT,
11438    ) -> TSS2_RC;
11439}
11440extern "C" {
11441    pub fn Esys_ECDH_ZGen(
11442        esysContext: *mut ESYS_CONTEXT,
11443        keyHandle: ESYS_TR,
11444        shandle1: ESYS_TR,
11445        shandle2: ESYS_TR,
11446        shandle3: ESYS_TR,
11447        inPoint: *const TPM2B_ECC_POINT,
11448        outPoint: *mut *mut TPM2B_ECC_POINT,
11449    ) -> TSS2_RC;
11450}
11451extern "C" {
11452    pub fn Esys_ECDH_ZGen_Async(
11453        esysContext: *mut ESYS_CONTEXT,
11454        keyHandle: ESYS_TR,
11455        shandle1: ESYS_TR,
11456        shandle2: ESYS_TR,
11457        shandle3: ESYS_TR,
11458        inPoint: *const TPM2B_ECC_POINT,
11459    ) -> TSS2_RC;
11460}
11461extern "C" {
11462    pub fn Esys_ECDH_ZGen_Finish(
11463        esysContext: *mut ESYS_CONTEXT,
11464        outPoint: *mut *mut TPM2B_ECC_POINT,
11465    ) -> TSS2_RC;
11466}
11467extern "C" {
11468    pub fn Esys_ECC_Parameters(
11469        esysContext: *mut ESYS_CONTEXT,
11470        shandle1: ESYS_TR,
11471        shandle2: ESYS_TR,
11472        shandle3: ESYS_TR,
11473        curveID: TPMI_ECC_CURVE,
11474        parameters: *mut *mut TPMS_ALGORITHM_DETAIL_ECC,
11475    ) -> TSS2_RC;
11476}
11477extern "C" {
11478    pub fn Esys_ECC_Parameters_Async(
11479        esysContext: *mut ESYS_CONTEXT,
11480        shandle1: ESYS_TR,
11481        shandle2: ESYS_TR,
11482        shandle3: ESYS_TR,
11483        curveID: TPMI_ECC_CURVE,
11484    ) -> TSS2_RC;
11485}
11486extern "C" {
11487    pub fn Esys_ECC_Parameters_Finish(
11488        esysContext: *mut ESYS_CONTEXT,
11489        parameters: *mut *mut TPMS_ALGORITHM_DETAIL_ECC,
11490    ) -> TSS2_RC;
11491}
11492extern "C" {
11493    pub fn Esys_ZGen_2Phase(
11494        esysContext: *mut ESYS_CONTEXT,
11495        keyA: ESYS_TR,
11496        shandle1: ESYS_TR,
11497        shandle2: ESYS_TR,
11498        shandle3: ESYS_TR,
11499        inQsB: *const TPM2B_ECC_POINT,
11500        inQeB: *const TPM2B_ECC_POINT,
11501        inScheme: TPMI_ECC_KEY_EXCHANGE,
11502        counter: UINT16,
11503        outZ1: *mut *mut TPM2B_ECC_POINT,
11504        outZ2: *mut *mut TPM2B_ECC_POINT,
11505    ) -> TSS2_RC;
11506}
11507extern "C" {
11508    pub fn Esys_ZGen_2Phase_Async(
11509        esysContext: *mut ESYS_CONTEXT,
11510        keyA: ESYS_TR,
11511        shandle1: ESYS_TR,
11512        shandle2: ESYS_TR,
11513        shandle3: ESYS_TR,
11514        inQsB: *const TPM2B_ECC_POINT,
11515        inQeB: *const TPM2B_ECC_POINT,
11516        inScheme: TPMI_ECC_KEY_EXCHANGE,
11517        counter: UINT16,
11518    ) -> TSS2_RC;
11519}
11520extern "C" {
11521    pub fn Esys_ZGen_2Phase_Finish(
11522        esysContext: *mut ESYS_CONTEXT,
11523        outZ1: *mut *mut TPM2B_ECC_POINT,
11524        outZ2: *mut *mut TPM2B_ECC_POINT,
11525    ) -> TSS2_RC;
11526}
11527extern "C" {
11528    pub fn Esys_EncryptDecrypt(
11529        esysContext: *mut ESYS_CONTEXT,
11530        keyHandle: ESYS_TR,
11531        shandle1: ESYS_TR,
11532        shandle2: ESYS_TR,
11533        shandle3: ESYS_TR,
11534        decrypt: TPMI_YES_NO,
11535        mode: TPMI_ALG_SYM_MODE,
11536        ivIn: *const TPM2B_IV,
11537        inData: *const TPM2B_MAX_BUFFER,
11538        outData: *mut *mut TPM2B_MAX_BUFFER,
11539        ivOut: *mut *mut TPM2B_IV,
11540    ) -> TSS2_RC;
11541}
11542extern "C" {
11543    pub fn Esys_EncryptDecrypt_Async(
11544        esysContext: *mut ESYS_CONTEXT,
11545        keyHandle: ESYS_TR,
11546        shandle1: ESYS_TR,
11547        shandle2: ESYS_TR,
11548        shandle3: ESYS_TR,
11549        decrypt: TPMI_YES_NO,
11550        mode: TPMI_ALG_SYM_MODE,
11551        ivIn: *const TPM2B_IV,
11552        inData: *const TPM2B_MAX_BUFFER,
11553    ) -> TSS2_RC;
11554}
11555extern "C" {
11556    pub fn Esys_EncryptDecrypt_Finish(
11557        esysContext: *mut ESYS_CONTEXT,
11558        outData: *mut *mut TPM2B_MAX_BUFFER,
11559        ivOut: *mut *mut TPM2B_IV,
11560    ) -> TSS2_RC;
11561}
11562extern "C" {
11563    pub fn Esys_EncryptDecrypt2(
11564        esysContext: *mut ESYS_CONTEXT,
11565        keyHandle: ESYS_TR,
11566        shandle1: ESYS_TR,
11567        shandle2: ESYS_TR,
11568        shandle3: ESYS_TR,
11569        inData: *const TPM2B_MAX_BUFFER,
11570        decrypt: TPMI_YES_NO,
11571        mode: TPMI_ALG_SYM_MODE,
11572        ivIn: *const TPM2B_IV,
11573        outData: *mut *mut TPM2B_MAX_BUFFER,
11574        ivOut: *mut *mut TPM2B_IV,
11575    ) -> TSS2_RC;
11576}
11577extern "C" {
11578    pub fn Esys_EncryptDecrypt2_Async(
11579        esysContext: *mut ESYS_CONTEXT,
11580        keyHandle: ESYS_TR,
11581        shandle1: ESYS_TR,
11582        shandle2: ESYS_TR,
11583        shandle3: ESYS_TR,
11584        inData: *const TPM2B_MAX_BUFFER,
11585        decrypt: TPMI_YES_NO,
11586        mode: TPMI_ALG_SYM_MODE,
11587        ivIn: *const TPM2B_IV,
11588    ) -> TSS2_RC;
11589}
11590extern "C" {
11591    pub fn Esys_EncryptDecrypt2_Finish(
11592        esysContext: *mut ESYS_CONTEXT,
11593        outData: *mut *mut TPM2B_MAX_BUFFER,
11594        ivOut: *mut *mut TPM2B_IV,
11595    ) -> TSS2_RC;
11596}
11597extern "C" {
11598    pub fn Esys_Hash(
11599        esysContext: *mut ESYS_CONTEXT,
11600        shandle1: ESYS_TR,
11601        shandle2: ESYS_TR,
11602        shandle3: ESYS_TR,
11603        data: *const TPM2B_MAX_BUFFER,
11604        hashAlg: TPMI_ALG_HASH,
11605        hierarchy: TPMI_RH_HIERARCHY,
11606        outHash: *mut *mut TPM2B_DIGEST,
11607        validation: *mut *mut TPMT_TK_HASHCHECK,
11608    ) -> TSS2_RC;
11609}
11610extern "C" {
11611    pub fn Esys_Hash_Async(
11612        esysContext: *mut ESYS_CONTEXT,
11613        shandle1: ESYS_TR,
11614        shandle2: ESYS_TR,
11615        shandle3: ESYS_TR,
11616        data: *const TPM2B_MAX_BUFFER,
11617        hashAlg: TPMI_ALG_HASH,
11618        hierarchy: TPMI_RH_HIERARCHY,
11619    ) -> TSS2_RC;
11620}
11621extern "C" {
11622    pub fn Esys_Hash_Finish(
11623        esysContext: *mut ESYS_CONTEXT,
11624        outHash: *mut *mut TPM2B_DIGEST,
11625        validation: *mut *mut TPMT_TK_HASHCHECK,
11626    ) -> TSS2_RC;
11627}
11628extern "C" {
11629    pub fn Esys_HMAC(
11630        esysContext: *mut ESYS_CONTEXT,
11631        handle: ESYS_TR,
11632        shandle1: ESYS_TR,
11633        shandle2: ESYS_TR,
11634        shandle3: ESYS_TR,
11635        buffer: *const TPM2B_MAX_BUFFER,
11636        hashAlg: TPMI_ALG_HASH,
11637        outHMAC: *mut *mut TPM2B_DIGEST,
11638    ) -> TSS2_RC;
11639}
11640extern "C" {
11641    pub fn Esys_HMAC_Async(
11642        esysContext: *mut ESYS_CONTEXT,
11643        handle: ESYS_TR,
11644        shandle1: ESYS_TR,
11645        shandle2: ESYS_TR,
11646        shandle3: ESYS_TR,
11647        buffer: *const TPM2B_MAX_BUFFER,
11648        hashAlg: TPMI_ALG_HASH,
11649    ) -> TSS2_RC;
11650}
11651extern "C" {
11652    pub fn Esys_HMAC_Finish(
11653        esysContext: *mut ESYS_CONTEXT,
11654        outHMAC: *mut *mut TPM2B_DIGEST,
11655    ) -> TSS2_RC;
11656}
11657extern "C" {
11658    pub fn Esys_GetRandom(
11659        esysContext: *mut ESYS_CONTEXT,
11660        shandle1: ESYS_TR,
11661        shandle2: ESYS_TR,
11662        shandle3: ESYS_TR,
11663        bytesRequested: UINT16,
11664        randomBytes: *mut *mut TPM2B_DIGEST,
11665    ) -> TSS2_RC;
11666}
11667extern "C" {
11668    pub fn Esys_GetRandom_Async(
11669        esysContext: *mut ESYS_CONTEXT,
11670        shandle1: ESYS_TR,
11671        shandle2: ESYS_TR,
11672        shandle3: ESYS_TR,
11673        bytesRequested: UINT16,
11674    ) -> TSS2_RC;
11675}
11676extern "C" {
11677    pub fn Esys_GetRandom_Finish(
11678        esysContext: *mut ESYS_CONTEXT,
11679        randomBytes: *mut *mut TPM2B_DIGEST,
11680    ) -> TSS2_RC;
11681}
11682extern "C" {
11683    pub fn Esys_StirRandom(
11684        esysContext: *mut ESYS_CONTEXT,
11685        shandle1: ESYS_TR,
11686        shandle2: ESYS_TR,
11687        shandle3: ESYS_TR,
11688        inData: *const TPM2B_SENSITIVE_DATA,
11689    ) -> TSS2_RC;
11690}
11691extern "C" {
11692    pub fn Esys_StirRandom_Async(
11693        esysContext: *mut ESYS_CONTEXT,
11694        shandle1: ESYS_TR,
11695        shandle2: ESYS_TR,
11696        shandle3: ESYS_TR,
11697        inData: *const TPM2B_SENSITIVE_DATA,
11698    ) -> TSS2_RC;
11699}
11700extern "C" {
11701    pub fn Esys_StirRandom_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11702}
11703extern "C" {
11704    pub fn Esys_HMAC_Start(
11705        esysContext: *mut ESYS_CONTEXT,
11706        handle: ESYS_TR,
11707        shandle1: ESYS_TR,
11708        shandle2: ESYS_TR,
11709        shandle3: ESYS_TR,
11710        auth: *const TPM2B_AUTH,
11711        hashAlg: TPMI_ALG_HASH,
11712        sequenceHandle: *mut ESYS_TR,
11713    ) -> TSS2_RC;
11714}
11715extern "C" {
11716    pub fn Esys_HMAC_Start_Async(
11717        esysContext: *mut ESYS_CONTEXT,
11718        handle: ESYS_TR,
11719        shandle1: ESYS_TR,
11720        shandle2: ESYS_TR,
11721        shandle3: ESYS_TR,
11722        auth: *const TPM2B_AUTH,
11723        hashAlg: TPMI_ALG_HASH,
11724    ) -> TSS2_RC;
11725}
11726extern "C" {
11727    pub fn Esys_HMAC_Start_Finish(
11728        esysContext: *mut ESYS_CONTEXT,
11729        sequenceHandle: *mut ESYS_TR,
11730    ) -> TSS2_RC;
11731}
11732extern "C" {
11733    pub fn Esys_HashSequenceStart(
11734        esysContext: *mut ESYS_CONTEXT,
11735        shandle1: ESYS_TR,
11736        shandle2: ESYS_TR,
11737        shandle3: ESYS_TR,
11738        auth: *const TPM2B_AUTH,
11739        hashAlg: TPMI_ALG_HASH,
11740        sequenceHandle: *mut ESYS_TR,
11741    ) -> TSS2_RC;
11742}
11743extern "C" {
11744    pub fn Esys_HashSequenceStart_Async(
11745        esysContext: *mut ESYS_CONTEXT,
11746        shandle1: ESYS_TR,
11747        shandle2: ESYS_TR,
11748        shandle3: ESYS_TR,
11749        auth: *const TPM2B_AUTH,
11750        hashAlg: TPMI_ALG_HASH,
11751    ) -> TSS2_RC;
11752}
11753extern "C" {
11754    pub fn Esys_HashSequenceStart_Finish(
11755        esysContext: *mut ESYS_CONTEXT,
11756        sequenceHandle: *mut ESYS_TR,
11757    ) -> TSS2_RC;
11758}
11759extern "C" {
11760    pub fn Esys_SequenceUpdate(
11761        esysContext: *mut ESYS_CONTEXT,
11762        sequenceHandle: ESYS_TR,
11763        shandle1: ESYS_TR,
11764        shandle2: ESYS_TR,
11765        shandle3: ESYS_TR,
11766        buffer: *const TPM2B_MAX_BUFFER,
11767    ) -> TSS2_RC;
11768}
11769extern "C" {
11770    pub fn Esys_SequenceUpdate_Async(
11771        esysContext: *mut ESYS_CONTEXT,
11772        sequenceHandle: ESYS_TR,
11773        shandle1: ESYS_TR,
11774        shandle2: ESYS_TR,
11775        shandle3: ESYS_TR,
11776        buffer: *const TPM2B_MAX_BUFFER,
11777    ) -> TSS2_RC;
11778}
11779extern "C" {
11780    pub fn Esys_SequenceUpdate_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11781}
11782extern "C" {
11783    pub fn Esys_SequenceComplete(
11784        esysContext: *mut ESYS_CONTEXT,
11785        sequenceHandle: ESYS_TR,
11786        shandle1: ESYS_TR,
11787        shandle2: ESYS_TR,
11788        shandle3: ESYS_TR,
11789        buffer: *const TPM2B_MAX_BUFFER,
11790        hierarchy: TPMI_RH_HIERARCHY,
11791        result: *mut *mut TPM2B_DIGEST,
11792        validation: *mut *mut TPMT_TK_HASHCHECK,
11793    ) -> TSS2_RC;
11794}
11795extern "C" {
11796    pub fn Esys_SequenceComplete_Async(
11797        esysContext: *mut ESYS_CONTEXT,
11798        sequenceHandle: ESYS_TR,
11799        shandle1: ESYS_TR,
11800        shandle2: ESYS_TR,
11801        shandle3: ESYS_TR,
11802        buffer: *const TPM2B_MAX_BUFFER,
11803        hierarchy: TPMI_RH_HIERARCHY,
11804    ) -> TSS2_RC;
11805}
11806extern "C" {
11807    pub fn Esys_SequenceComplete_Finish(
11808        esysContext: *mut ESYS_CONTEXT,
11809        result: *mut *mut TPM2B_DIGEST,
11810        validation: *mut *mut TPMT_TK_HASHCHECK,
11811    ) -> TSS2_RC;
11812}
11813extern "C" {
11814    pub fn Esys_EventSequenceComplete(
11815        esysContext: *mut ESYS_CONTEXT,
11816        pcrHandle: ESYS_TR,
11817        sequenceHandle: ESYS_TR,
11818        shandle1: ESYS_TR,
11819        shandle2: ESYS_TR,
11820        shandle3: ESYS_TR,
11821        buffer: *const TPM2B_MAX_BUFFER,
11822        results: *mut *mut TPML_DIGEST_VALUES,
11823    ) -> TSS2_RC;
11824}
11825extern "C" {
11826    pub fn Esys_EventSequenceComplete_Async(
11827        esysContext: *mut ESYS_CONTEXT,
11828        pcrHandle: ESYS_TR,
11829        sequenceHandle: ESYS_TR,
11830        shandle1: ESYS_TR,
11831        shandle2: ESYS_TR,
11832        shandle3: ESYS_TR,
11833        buffer: *const TPM2B_MAX_BUFFER,
11834    ) -> TSS2_RC;
11835}
11836extern "C" {
11837    pub fn Esys_EventSequenceComplete_Finish(
11838        esysContext: *mut ESYS_CONTEXT,
11839        results: *mut *mut TPML_DIGEST_VALUES,
11840    ) -> TSS2_RC;
11841}
11842extern "C" {
11843    pub fn Esys_Certify(
11844        esysContext: *mut ESYS_CONTEXT,
11845        objectHandle: ESYS_TR,
11846        signHandle: ESYS_TR,
11847        shandle1: ESYS_TR,
11848        shandle2: ESYS_TR,
11849        shandle3: ESYS_TR,
11850        qualifyingData: *const TPM2B_DATA,
11851        inScheme: *const TPMT_SIG_SCHEME,
11852        certifyInfo: *mut *mut TPM2B_ATTEST,
11853        signature: *mut *mut TPMT_SIGNATURE,
11854    ) -> TSS2_RC;
11855}
11856extern "C" {
11857    pub fn Esys_Certify_Async(
11858        esysContext: *mut ESYS_CONTEXT,
11859        objectHandle: ESYS_TR,
11860        signHandle: ESYS_TR,
11861        shandle1: ESYS_TR,
11862        shandle2: ESYS_TR,
11863        shandle3: ESYS_TR,
11864        qualifyingData: *const TPM2B_DATA,
11865        inScheme: *const TPMT_SIG_SCHEME,
11866    ) -> TSS2_RC;
11867}
11868extern "C" {
11869    pub fn Esys_Certify_Finish(
11870        esysContext: *mut ESYS_CONTEXT,
11871        certifyInfo: *mut *mut TPM2B_ATTEST,
11872        signature: *mut *mut TPMT_SIGNATURE,
11873    ) -> TSS2_RC;
11874}
11875extern "C" {
11876    pub fn Esys_CertifyCreation(
11877        esysContext: *mut ESYS_CONTEXT,
11878        signHandle: ESYS_TR,
11879        objectHandle: ESYS_TR,
11880        shandle1: ESYS_TR,
11881        shandle2: ESYS_TR,
11882        shandle3: ESYS_TR,
11883        qualifyingData: *const TPM2B_DATA,
11884        creationHash: *const TPM2B_DIGEST,
11885        inScheme: *const TPMT_SIG_SCHEME,
11886        creationTicket: *const TPMT_TK_CREATION,
11887        certifyInfo: *mut *mut TPM2B_ATTEST,
11888        signature: *mut *mut TPMT_SIGNATURE,
11889    ) -> TSS2_RC;
11890}
11891extern "C" {
11892    pub fn Esys_CertifyCreation_Async(
11893        esysContext: *mut ESYS_CONTEXT,
11894        signHandle: ESYS_TR,
11895        objectHandle: ESYS_TR,
11896        shandle1: ESYS_TR,
11897        shandle2: ESYS_TR,
11898        shandle3: ESYS_TR,
11899        qualifyingData: *const TPM2B_DATA,
11900        creationHash: *const TPM2B_DIGEST,
11901        inScheme: *const TPMT_SIG_SCHEME,
11902        creationTicket: *const TPMT_TK_CREATION,
11903    ) -> TSS2_RC;
11904}
11905extern "C" {
11906    pub fn Esys_CertifyCreation_Finish(
11907        esysContext: *mut ESYS_CONTEXT,
11908        certifyInfo: *mut *mut TPM2B_ATTEST,
11909        signature: *mut *mut TPMT_SIGNATURE,
11910    ) -> TSS2_RC;
11911}
11912extern "C" {
11913    pub fn Esys_Quote(
11914        esysContext: *mut ESYS_CONTEXT,
11915        signHandle: ESYS_TR,
11916        shandle1: ESYS_TR,
11917        shandle2: ESYS_TR,
11918        shandle3: ESYS_TR,
11919        qualifyingData: *const TPM2B_DATA,
11920        inScheme: *const TPMT_SIG_SCHEME,
11921        PCRselect: *const TPML_PCR_SELECTION,
11922        quoted: *mut *mut TPM2B_ATTEST,
11923        signature: *mut *mut TPMT_SIGNATURE,
11924    ) -> TSS2_RC;
11925}
11926extern "C" {
11927    pub fn Esys_Quote_Async(
11928        esysContext: *mut ESYS_CONTEXT,
11929        signHandle: ESYS_TR,
11930        shandle1: ESYS_TR,
11931        shandle2: ESYS_TR,
11932        shandle3: ESYS_TR,
11933        qualifyingData: *const TPM2B_DATA,
11934        inScheme: *const TPMT_SIG_SCHEME,
11935        PCRselect: *const TPML_PCR_SELECTION,
11936    ) -> TSS2_RC;
11937}
11938extern "C" {
11939    pub fn Esys_Quote_Finish(
11940        esysContext: *mut ESYS_CONTEXT,
11941        quoted: *mut *mut TPM2B_ATTEST,
11942        signature: *mut *mut TPMT_SIGNATURE,
11943    ) -> TSS2_RC;
11944}
11945extern "C" {
11946    pub fn Esys_GetSessionAuditDigest(
11947        esysContext: *mut ESYS_CONTEXT,
11948        privacyAdminHandle: ESYS_TR,
11949        signHandle: ESYS_TR,
11950        sessionHandle: ESYS_TR,
11951        shandle1: ESYS_TR,
11952        shandle2: ESYS_TR,
11953        shandle3: ESYS_TR,
11954        qualifyingData: *const TPM2B_DATA,
11955        inScheme: *const TPMT_SIG_SCHEME,
11956        auditInfo: *mut *mut TPM2B_ATTEST,
11957        signature: *mut *mut TPMT_SIGNATURE,
11958    ) -> TSS2_RC;
11959}
11960extern "C" {
11961    pub fn Esys_GetSessionAuditDigest_Async(
11962        esysContext: *mut ESYS_CONTEXT,
11963        privacyAdminHandle: ESYS_TR,
11964        signHandle: ESYS_TR,
11965        sessionHandle: ESYS_TR,
11966        shandle1: ESYS_TR,
11967        shandle2: ESYS_TR,
11968        shandle3: ESYS_TR,
11969        qualifyingData: *const TPM2B_DATA,
11970        inScheme: *const TPMT_SIG_SCHEME,
11971    ) -> TSS2_RC;
11972}
11973extern "C" {
11974    pub fn Esys_GetSessionAuditDigest_Finish(
11975        esysContext: *mut ESYS_CONTEXT,
11976        auditInfo: *mut *mut TPM2B_ATTEST,
11977        signature: *mut *mut TPMT_SIGNATURE,
11978    ) -> TSS2_RC;
11979}
11980extern "C" {
11981    pub fn Esys_GetCommandAuditDigest(
11982        esysContext: *mut ESYS_CONTEXT,
11983        privacyHandle: ESYS_TR,
11984        signHandle: ESYS_TR,
11985        shandle1: ESYS_TR,
11986        shandle2: ESYS_TR,
11987        shandle3: ESYS_TR,
11988        qualifyingData: *const TPM2B_DATA,
11989        inScheme: *const TPMT_SIG_SCHEME,
11990        auditInfo: *mut *mut TPM2B_ATTEST,
11991        signature: *mut *mut TPMT_SIGNATURE,
11992    ) -> TSS2_RC;
11993}
11994extern "C" {
11995    pub fn Esys_GetCommandAuditDigest_Async(
11996        esysContext: *mut ESYS_CONTEXT,
11997        privacyHandle: ESYS_TR,
11998        signHandle: ESYS_TR,
11999        shandle1: ESYS_TR,
12000        shandle2: ESYS_TR,
12001        shandle3: ESYS_TR,
12002        qualifyingData: *const TPM2B_DATA,
12003        inScheme: *const TPMT_SIG_SCHEME,
12004    ) -> TSS2_RC;
12005}
12006extern "C" {
12007    pub fn Esys_GetCommandAuditDigest_Finish(
12008        esysContext: *mut ESYS_CONTEXT,
12009        auditInfo: *mut *mut TPM2B_ATTEST,
12010        signature: *mut *mut TPMT_SIGNATURE,
12011    ) -> TSS2_RC;
12012}
12013extern "C" {
12014    pub fn Esys_GetTime(
12015        esysContext: *mut ESYS_CONTEXT,
12016        privacyAdminHandle: ESYS_TR,
12017        signHandle: ESYS_TR,
12018        shandle1: ESYS_TR,
12019        shandle2: ESYS_TR,
12020        shandle3: ESYS_TR,
12021        qualifyingData: *const TPM2B_DATA,
12022        inScheme: *const TPMT_SIG_SCHEME,
12023        timeInfo: *mut *mut TPM2B_ATTEST,
12024        signature: *mut *mut TPMT_SIGNATURE,
12025    ) -> TSS2_RC;
12026}
12027extern "C" {
12028    pub fn Esys_GetTime_Async(
12029        esysContext: *mut ESYS_CONTEXT,
12030        privacyAdminHandle: ESYS_TR,
12031        signHandle: ESYS_TR,
12032        shandle1: ESYS_TR,
12033        shandle2: ESYS_TR,
12034        shandle3: ESYS_TR,
12035        qualifyingData: *const TPM2B_DATA,
12036        inScheme: *const TPMT_SIG_SCHEME,
12037    ) -> TSS2_RC;
12038}
12039extern "C" {
12040    pub fn Esys_GetTime_Finish(
12041        esysContext: *mut ESYS_CONTEXT,
12042        timeInfo: *mut *mut TPM2B_ATTEST,
12043        signature: *mut *mut TPMT_SIGNATURE,
12044    ) -> TSS2_RC;
12045}
12046extern "C" {
12047    pub fn Esys_Commit(
12048        esysContext: *mut ESYS_CONTEXT,
12049        signHandle: ESYS_TR,
12050        shandle1: ESYS_TR,
12051        shandle2: ESYS_TR,
12052        shandle3: ESYS_TR,
12053        P1: *const TPM2B_ECC_POINT,
12054        s2: *const TPM2B_SENSITIVE_DATA,
12055        y2: *const TPM2B_ECC_PARAMETER,
12056        K: *mut *mut TPM2B_ECC_POINT,
12057        L: *mut *mut TPM2B_ECC_POINT,
12058        E: *mut *mut TPM2B_ECC_POINT,
12059        counter: *mut UINT16,
12060    ) -> TSS2_RC;
12061}
12062extern "C" {
12063    pub fn Esys_Commit_Async(
12064        esysContext: *mut ESYS_CONTEXT,
12065        signHandle: ESYS_TR,
12066        shandle1: ESYS_TR,
12067        shandle2: ESYS_TR,
12068        shandle3: ESYS_TR,
12069        P1: *const TPM2B_ECC_POINT,
12070        s2: *const TPM2B_SENSITIVE_DATA,
12071        y2: *const TPM2B_ECC_PARAMETER,
12072    ) -> TSS2_RC;
12073}
12074extern "C" {
12075    pub fn Esys_Commit_Finish(
12076        esysContext: *mut ESYS_CONTEXT,
12077        K: *mut *mut TPM2B_ECC_POINT,
12078        L: *mut *mut TPM2B_ECC_POINT,
12079        E: *mut *mut TPM2B_ECC_POINT,
12080        counter: *mut UINT16,
12081    ) -> TSS2_RC;
12082}
12083extern "C" {
12084    pub fn Esys_EC_Ephemeral(
12085        esysContext: *mut ESYS_CONTEXT,
12086        shandle1: ESYS_TR,
12087        shandle2: ESYS_TR,
12088        shandle3: ESYS_TR,
12089        curveID: TPMI_ECC_CURVE,
12090        Q: *mut *mut TPM2B_ECC_POINT,
12091        counter: *mut UINT16,
12092    ) -> TSS2_RC;
12093}
12094extern "C" {
12095    pub fn Esys_EC_Ephemeral_Async(
12096        esysContext: *mut ESYS_CONTEXT,
12097        shandle1: ESYS_TR,
12098        shandle2: ESYS_TR,
12099        shandle3: ESYS_TR,
12100        curveID: TPMI_ECC_CURVE,
12101    ) -> TSS2_RC;
12102}
12103extern "C" {
12104    pub fn Esys_EC_Ephemeral_Finish(
12105        esysContext: *mut ESYS_CONTEXT,
12106        Q: *mut *mut TPM2B_ECC_POINT,
12107        counter: *mut UINT16,
12108    ) -> TSS2_RC;
12109}
12110extern "C" {
12111    pub fn Esys_VerifySignature(
12112        esysContext: *mut ESYS_CONTEXT,
12113        keyHandle: ESYS_TR,
12114        shandle1: ESYS_TR,
12115        shandle2: ESYS_TR,
12116        shandle3: ESYS_TR,
12117        digest: *const TPM2B_DIGEST,
12118        signature: *const TPMT_SIGNATURE,
12119        validation: *mut *mut TPMT_TK_VERIFIED,
12120    ) -> TSS2_RC;
12121}
12122extern "C" {
12123    pub fn Esys_VerifySignature_Async(
12124        esysContext: *mut ESYS_CONTEXT,
12125        keyHandle: ESYS_TR,
12126        shandle1: ESYS_TR,
12127        shandle2: ESYS_TR,
12128        shandle3: ESYS_TR,
12129        digest: *const TPM2B_DIGEST,
12130        signature: *const TPMT_SIGNATURE,
12131    ) -> TSS2_RC;
12132}
12133extern "C" {
12134    pub fn Esys_VerifySignature_Finish(
12135        esysContext: *mut ESYS_CONTEXT,
12136        validation: *mut *mut TPMT_TK_VERIFIED,
12137    ) -> TSS2_RC;
12138}
12139extern "C" {
12140    pub fn Esys_Sign(
12141        esysContext: *mut ESYS_CONTEXT,
12142        keyHandle: ESYS_TR,
12143        shandle1: ESYS_TR,
12144        shandle2: ESYS_TR,
12145        shandle3: ESYS_TR,
12146        digest: *const TPM2B_DIGEST,
12147        inScheme: *const TPMT_SIG_SCHEME,
12148        validation: *const TPMT_TK_HASHCHECK,
12149        signature: *mut *mut TPMT_SIGNATURE,
12150    ) -> TSS2_RC;
12151}
12152extern "C" {
12153    pub fn Esys_Sign_Async(
12154        esysContext: *mut ESYS_CONTEXT,
12155        keyHandle: ESYS_TR,
12156        shandle1: ESYS_TR,
12157        shandle2: ESYS_TR,
12158        shandle3: ESYS_TR,
12159        digest: *const TPM2B_DIGEST,
12160        inScheme: *const TPMT_SIG_SCHEME,
12161        validation: *const TPMT_TK_HASHCHECK,
12162    ) -> TSS2_RC;
12163}
12164extern "C" {
12165    pub fn Esys_Sign_Finish(
12166        esysContext: *mut ESYS_CONTEXT,
12167        signature: *mut *mut TPMT_SIGNATURE,
12168    ) -> TSS2_RC;
12169}
12170extern "C" {
12171    pub fn Esys_SetCommandCodeAuditStatus(
12172        esysContext: *mut ESYS_CONTEXT,
12173        auth: ESYS_TR,
12174        shandle1: ESYS_TR,
12175        shandle2: ESYS_TR,
12176        shandle3: ESYS_TR,
12177        auditAlg: TPMI_ALG_HASH,
12178        setList: *const TPML_CC,
12179        clearList: *const TPML_CC,
12180    ) -> TSS2_RC;
12181}
12182extern "C" {
12183    pub fn Esys_SetCommandCodeAuditStatus_Async(
12184        esysContext: *mut ESYS_CONTEXT,
12185        auth: ESYS_TR,
12186        shandle1: ESYS_TR,
12187        shandle2: ESYS_TR,
12188        shandle3: ESYS_TR,
12189        auditAlg: TPMI_ALG_HASH,
12190        setList: *const TPML_CC,
12191        clearList: *const TPML_CC,
12192    ) -> TSS2_RC;
12193}
12194extern "C" {
12195    pub fn Esys_SetCommandCodeAuditStatus_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12196}
12197extern "C" {
12198    pub fn Esys_PCR_Extend(
12199        esysContext: *mut ESYS_CONTEXT,
12200        pcrHandle: ESYS_TR,
12201        shandle1: ESYS_TR,
12202        shandle2: ESYS_TR,
12203        shandle3: ESYS_TR,
12204        digests: *const TPML_DIGEST_VALUES,
12205    ) -> TSS2_RC;
12206}
12207extern "C" {
12208    pub fn Esys_PCR_Extend_Async(
12209        esysContext: *mut ESYS_CONTEXT,
12210        pcrHandle: ESYS_TR,
12211        shandle1: ESYS_TR,
12212        shandle2: ESYS_TR,
12213        shandle3: ESYS_TR,
12214        digests: *const TPML_DIGEST_VALUES,
12215    ) -> TSS2_RC;
12216}
12217extern "C" {
12218    pub fn Esys_PCR_Extend_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12219}
12220extern "C" {
12221    pub fn Esys_PCR_Event(
12222        esysContext: *mut ESYS_CONTEXT,
12223        pcrHandle: ESYS_TR,
12224        shandle1: ESYS_TR,
12225        shandle2: ESYS_TR,
12226        shandle3: ESYS_TR,
12227        eventData: *const TPM2B_EVENT,
12228        digests: *mut *mut TPML_DIGEST_VALUES,
12229    ) -> TSS2_RC;
12230}
12231extern "C" {
12232    pub fn Esys_PCR_Event_Async(
12233        esysContext: *mut ESYS_CONTEXT,
12234        pcrHandle: ESYS_TR,
12235        shandle1: ESYS_TR,
12236        shandle2: ESYS_TR,
12237        shandle3: ESYS_TR,
12238        eventData: *const TPM2B_EVENT,
12239    ) -> TSS2_RC;
12240}
12241extern "C" {
12242    pub fn Esys_PCR_Event_Finish(
12243        esysContext: *mut ESYS_CONTEXT,
12244        digests: *mut *mut TPML_DIGEST_VALUES,
12245    ) -> TSS2_RC;
12246}
12247extern "C" {
12248    pub fn Esys_PCR_Read(
12249        esysContext: *mut ESYS_CONTEXT,
12250        shandle1: ESYS_TR,
12251        shandle2: ESYS_TR,
12252        shandle3: ESYS_TR,
12253        pcrSelectionIn: *const TPML_PCR_SELECTION,
12254        pcrUpdateCounter: *mut UINT32,
12255        pcrSelectionOut: *mut *mut TPML_PCR_SELECTION,
12256        pcrValues: *mut *mut TPML_DIGEST,
12257    ) -> TSS2_RC;
12258}
12259extern "C" {
12260    pub fn Esys_PCR_Read_Async(
12261        esysContext: *mut ESYS_CONTEXT,
12262        shandle1: ESYS_TR,
12263        shandle2: ESYS_TR,
12264        shandle3: ESYS_TR,
12265        pcrSelectionIn: *const TPML_PCR_SELECTION,
12266    ) -> TSS2_RC;
12267}
12268extern "C" {
12269    pub fn Esys_PCR_Read_Finish(
12270        esysContext: *mut ESYS_CONTEXT,
12271        pcrUpdateCounter: *mut UINT32,
12272        pcrSelectionOut: *mut *mut TPML_PCR_SELECTION,
12273        pcrValues: *mut *mut TPML_DIGEST,
12274    ) -> TSS2_RC;
12275}
12276extern "C" {
12277    pub fn Esys_PCR_Allocate(
12278        esysContext: *mut ESYS_CONTEXT,
12279        authHandle: ESYS_TR,
12280        shandle1: ESYS_TR,
12281        shandle2: ESYS_TR,
12282        shandle3: ESYS_TR,
12283        pcrAllocation: *const TPML_PCR_SELECTION,
12284        allocationSuccess: *mut TPMI_YES_NO,
12285        maxPCR: *mut UINT32,
12286        sizeNeeded: *mut UINT32,
12287        sizeAvailable: *mut UINT32,
12288    ) -> TSS2_RC;
12289}
12290extern "C" {
12291    pub fn Esys_PCR_Allocate_Async(
12292        esysContext: *mut ESYS_CONTEXT,
12293        authHandle: ESYS_TR,
12294        shandle1: ESYS_TR,
12295        shandle2: ESYS_TR,
12296        shandle3: ESYS_TR,
12297        pcrAllocation: *const TPML_PCR_SELECTION,
12298    ) -> TSS2_RC;
12299}
12300extern "C" {
12301    pub fn Esys_PCR_Allocate_Finish(
12302        esysContext: *mut ESYS_CONTEXT,
12303        allocationSuccess: *mut TPMI_YES_NO,
12304        maxPCR: *mut UINT32,
12305        sizeNeeded: *mut UINT32,
12306        sizeAvailable: *mut UINT32,
12307    ) -> TSS2_RC;
12308}
12309extern "C" {
12310    pub fn Esys_PCR_SetAuthPolicy(
12311        esysContext: *mut ESYS_CONTEXT,
12312        authHandle: ESYS_TR,
12313        shandle1: ESYS_TR,
12314        shandle2: ESYS_TR,
12315        shandle3: ESYS_TR,
12316        authPolicy: *const TPM2B_DIGEST,
12317        hashAlg: TPMI_ALG_HASH,
12318        pcrNum: TPMI_DH_PCR,
12319    ) -> TSS2_RC;
12320}
12321extern "C" {
12322    pub fn Esys_PCR_SetAuthPolicy_Async(
12323        esysContext: *mut ESYS_CONTEXT,
12324        authHandle: ESYS_TR,
12325        shandle1: ESYS_TR,
12326        shandle2: ESYS_TR,
12327        shandle3: ESYS_TR,
12328        authPolicy: *const TPM2B_DIGEST,
12329        hashAlg: TPMI_ALG_HASH,
12330        pcrNum: TPMI_DH_PCR,
12331    ) -> TSS2_RC;
12332}
12333extern "C" {
12334    pub fn Esys_PCR_SetAuthPolicy_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12335}
12336extern "C" {
12337    pub fn Esys_PCR_SetAuthValue(
12338        esysContext: *mut ESYS_CONTEXT,
12339        pcrHandle: ESYS_TR,
12340        shandle1: ESYS_TR,
12341        shandle2: ESYS_TR,
12342        shandle3: ESYS_TR,
12343        auth: *const TPM2B_DIGEST,
12344    ) -> TSS2_RC;
12345}
12346extern "C" {
12347    pub fn Esys_PCR_SetAuthValue_Async(
12348        esysContext: *mut ESYS_CONTEXT,
12349        pcrHandle: ESYS_TR,
12350        shandle1: ESYS_TR,
12351        shandle2: ESYS_TR,
12352        shandle3: ESYS_TR,
12353        auth: *const TPM2B_DIGEST,
12354    ) -> TSS2_RC;
12355}
12356extern "C" {
12357    pub fn Esys_PCR_SetAuthValue_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12358}
12359extern "C" {
12360    pub fn Esys_PCR_Reset(
12361        esysContext: *mut ESYS_CONTEXT,
12362        pcrHandle: ESYS_TR,
12363        shandle1: ESYS_TR,
12364        shandle2: ESYS_TR,
12365        shandle3: ESYS_TR,
12366    ) -> TSS2_RC;
12367}
12368extern "C" {
12369    pub fn Esys_PCR_Reset_Async(
12370        esysContext: *mut ESYS_CONTEXT,
12371        pcrHandle: ESYS_TR,
12372        shandle1: ESYS_TR,
12373        shandle2: ESYS_TR,
12374        shandle3: ESYS_TR,
12375    ) -> TSS2_RC;
12376}
12377extern "C" {
12378    pub fn Esys_PCR_Reset_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12379}
12380extern "C" {
12381    pub fn Esys_PolicySigned(
12382        esysContext: *mut ESYS_CONTEXT,
12383        authObject: ESYS_TR,
12384        policySession: ESYS_TR,
12385        shandle1: ESYS_TR,
12386        shandle2: ESYS_TR,
12387        shandle3: ESYS_TR,
12388        nonceTPM: *const TPM2B_NONCE,
12389        cpHashA: *const TPM2B_DIGEST,
12390        policyRef: *const TPM2B_NONCE,
12391        expiration: INT32,
12392        auth: *const TPMT_SIGNATURE,
12393        timeout: *mut *mut TPM2B_TIMEOUT,
12394        policyTicket: *mut *mut TPMT_TK_AUTH,
12395    ) -> TSS2_RC;
12396}
12397extern "C" {
12398    pub fn Esys_PolicySigned_Async(
12399        esysContext: *mut ESYS_CONTEXT,
12400        authObject: ESYS_TR,
12401        policySession: ESYS_TR,
12402        shandle1: ESYS_TR,
12403        shandle2: ESYS_TR,
12404        shandle3: ESYS_TR,
12405        nonceTPM: *const TPM2B_NONCE,
12406        cpHashA: *const TPM2B_DIGEST,
12407        policyRef: *const TPM2B_NONCE,
12408        expiration: INT32,
12409        auth: *const TPMT_SIGNATURE,
12410    ) -> TSS2_RC;
12411}
12412extern "C" {
12413    pub fn Esys_PolicySigned_Finish(
12414        esysContext: *mut ESYS_CONTEXT,
12415        timeout: *mut *mut TPM2B_TIMEOUT,
12416        policyTicket: *mut *mut TPMT_TK_AUTH,
12417    ) -> TSS2_RC;
12418}
12419extern "C" {
12420    pub fn Esys_PolicySecret(
12421        esysContext: *mut ESYS_CONTEXT,
12422        authHandle: ESYS_TR,
12423        policySession: ESYS_TR,
12424        shandle1: ESYS_TR,
12425        shandle2: ESYS_TR,
12426        shandle3: ESYS_TR,
12427        nonceTPM: *const TPM2B_NONCE,
12428        cpHashA: *const TPM2B_DIGEST,
12429        policyRef: *const TPM2B_NONCE,
12430        expiration: INT32,
12431        timeout: *mut *mut TPM2B_TIMEOUT,
12432        policyTicket: *mut *mut TPMT_TK_AUTH,
12433    ) -> TSS2_RC;
12434}
12435extern "C" {
12436    pub fn Esys_PolicySecret_Async(
12437        esysContext: *mut ESYS_CONTEXT,
12438        authHandle: ESYS_TR,
12439        policySession: ESYS_TR,
12440        shandle1: ESYS_TR,
12441        shandle2: ESYS_TR,
12442        shandle3: ESYS_TR,
12443        nonceTPM: *const TPM2B_NONCE,
12444        cpHashA: *const TPM2B_DIGEST,
12445        policyRef: *const TPM2B_NONCE,
12446        expiration: INT32,
12447    ) -> TSS2_RC;
12448}
12449extern "C" {
12450    pub fn Esys_PolicySecret_Finish(
12451        esysContext: *mut ESYS_CONTEXT,
12452        timeout: *mut *mut TPM2B_TIMEOUT,
12453        policyTicket: *mut *mut TPMT_TK_AUTH,
12454    ) -> TSS2_RC;
12455}
12456extern "C" {
12457    pub fn Esys_PolicyTicket(
12458        esysContext: *mut ESYS_CONTEXT,
12459        policySession: ESYS_TR,
12460        shandle1: ESYS_TR,
12461        shandle2: ESYS_TR,
12462        shandle3: ESYS_TR,
12463        timeout: *const TPM2B_TIMEOUT,
12464        cpHashA: *const TPM2B_DIGEST,
12465        policyRef: *const TPM2B_NONCE,
12466        authName: *const TPM2B_NAME,
12467        ticket: *const TPMT_TK_AUTH,
12468    ) -> TSS2_RC;
12469}
12470extern "C" {
12471    pub fn Esys_PolicyTicket_Async(
12472        esysContext: *mut ESYS_CONTEXT,
12473        policySession: ESYS_TR,
12474        shandle1: ESYS_TR,
12475        shandle2: ESYS_TR,
12476        shandle3: ESYS_TR,
12477        timeout: *const TPM2B_TIMEOUT,
12478        cpHashA: *const TPM2B_DIGEST,
12479        policyRef: *const TPM2B_NONCE,
12480        authName: *const TPM2B_NAME,
12481        ticket: *const TPMT_TK_AUTH,
12482    ) -> TSS2_RC;
12483}
12484extern "C" {
12485    pub fn Esys_PolicyTicket_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12486}
12487extern "C" {
12488    pub fn Esys_PolicyOR(
12489        esysContext: *mut ESYS_CONTEXT,
12490        policySession: ESYS_TR,
12491        shandle1: ESYS_TR,
12492        shandle2: ESYS_TR,
12493        shandle3: ESYS_TR,
12494        pHashList: *const TPML_DIGEST,
12495    ) -> TSS2_RC;
12496}
12497extern "C" {
12498    pub fn Esys_PolicyOR_Async(
12499        esysContext: *mut ESYS_CONTEXT,
12500        policySession: ESYS_TR,
12501        shandle1: ESYS_TR,
12502        shandle2: ESYS_TR,
12503        shandle3: ESYS_TR,
12504        pHashList: *const TPML_DIGEST,
12505    ) -> TSS2_RC;
12506}
12507extern "C" {
12508    pub fn Esys_PolicyOR_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12509}
12510extern "C" {
12511    pub fn Esys_PolicyPCR(
12512        esysContext: *mut ESYS_CONTEXT,
12513        policySession: ESYS_TR,
12514        shandle1: ESYS_TR,
12515        shandle2: ESYS_TR,
12516        shandle3: ESYS_TR,
12517        pcrDigest: *const TPM2B_DIGEST,
12518        pcrs: *const TPML_PCR_SELECTION,
12519    ) -> TSS2_RC;
12520}
12521extern "C" {
12522    pub fn Esys_PolicyPCR_Async(
12523        esysContext: *mut ESYS_CONTEXT,
12524        policySession: ESYS_TR,
12525        shandle1: ESYS_TR,
12526        shandle2: ESYS_TR,
12527        shandle3: ESYS_TR,
12528        pcrDigest: *const TPM2B_DIGEST,
12529        pcrs: *const TPML_PCR_SELECTION,
12530    ) -> TSS2_RC;
12531}
12532extern "C" {
12533    pub fn Esys_PolicyPCR_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12534}
12535extern "C" {
12536    pub fn Esys_PolicyLocality(
12537        esysContext: *mut ESYS_CONTEXT,
12538        policySession: ESYS_TR,
12539        shandle1: ESYS_TR,
12540        shandle2: ESYS_TR,
12541        shandle3: ESYS_TR,
12542        locality: TPMA_LOCALITY,
12543    ) -> TSS2_RC;
12544}
12545extern "C" {
12546    pub fn Esys_PolicyLocality_Async(
12547        esysContext: *mut ESYS_CONTEXT,
12548        policySession: ESYS_TR,
12549        shandle1: ESYS_TR,
12550        shandle2: ESYS_TR,
12551        shandle3: ESYS_TR,
12552        locality: TPMA_LOCALITY,
12553    ) -> TSS2_RC;
12554}
12555extern "C" {
12556    pub fn Esys_PolicyLocality_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12557}
12558extern "C" {
12559    pub fn Esys_PolicyNV(
12560        esysContext: *mut ESYS_CONTEXT,
12561        authHandle: ESYS_TR,
12562        nvIndex: ESYS_TR,
12563        policySession: ESYS_TR,
12564        shandle1: ESYS_TR,
12565        shandle2: ESYS_TR,
12566        shandle3: ESYS_TR,
12567        operandB: *const TPM2B_OPERAND,
12568        offset: UINT16,
12569        operation: TPM2_EO,
12570    ) -> TSS2_RC;
12571}
12572extern "C" {
12573    pub fn Esys_PolicyNV_Async(
12574        esysContext: *mut ESYS_CONTEXT,
12575        authHandle: ESYS_TR,
12576        nvIndex: ESYS_TR,
12577        policySession: ESYS_TR,
12578        shandle1: ESYS_TR,
12579        shandle2: ESYS_TR,
12580        shandle3: ESYS_TR,
12581        operandB: *const TPM2B_OPERAND,
12582        offset: UINT16,
12583        operation: TPM2_EO,
12584    ) -> TSS2_RC;
12585}
12586extern "C" {
12587    pub fn Esys_PolicyNV_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12588}
12589extern "C" {
12590    pub fn Esys_PolicyCounterTimer(
12591        esysContext: *mut ESYS_CONTEXT,
12592        policySession: ESYS_TR,
12593        shandle1: ESYS_TR,
12594        shandle2: ESYS_TR,
12595        shandle3: ESYS_TR,
12596        operandB: *const TPM2B_OPERAND,
12597        offset: UINT16,
12598        operation: TPM2_EO,
12599    ) -> TSS2_RC;
12600}
12601extern "C" {
12602    pub fn Esys_PolicyCounterTimer_Async(
12603        esysContext: *mut ESYS_CONTEXT,
12604        policySession: ESYS_TR,
12605        shandle1: ESYS_TR,
12606        shandle2: ESYS_TR,
12607        shandle3: ESYS_TR,
12608        operandB: *const TPM2B_OPERAND,
12609        offset: UINT16,
12610        operation: TPM2_EO,
12611    ) -> TSS2_RC;
12612}
12613extern "C" {
12614    pub fn Esys_PolicyCounterTimer_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12615}
12616extern "C" {
12617    pub fn Esys_PolicyCommandCode(
12618        esysContext: *mut ESYS_CONTEXT,
12619        policySession: ESYS_TR,
12620        shandle1: ESYS_TR,
12621        shandle2: ESYS_TR,
12622        shandle3: ESYS_TR,
12623        code: TPM2_CC,
12624    ) -> TSS2_RC;
12625}
12626extern "C" {
12627    pub fn Esys_PolicyCommandCode_Async(
12628        esysContext: *mut ESYS_CONTEXT,
12629        policySession: ESYS_TR,
12630        shandle1: ESYS_TR,
12631        shandle2: ESYS_TR,
12632        shandle3: ESYS_TR,
12633        code: TPM2_CC,
12634    ) -> TSS2_RC;
12635}
12636extern "C" {
12637    pub fn Esys_PolicyCommandCode_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12638}
12639extern "C" {
12640    pub fn Esys_PolicyPhysicalPresence(
12641        esysContext: *mut ESYS_CONTEXT,
12642        policySession: ESYS_TR,
12643        shandle1: ESYS_TR,
12644        shandle2: ESYS_TR,
12645        shandle3: ESYS_TR,
12646    ) -> TSS2_RC;
12647}
12648extern "C" {
12649    pub fn Esys_PolicyPhysicalPresence_Async(
12650        esysContext: *mut ESYS_CONTEXT,
12651        policySession: ESYS_TR,
12652        shandle1: ESYS_TR,
12653        shandle2: ESYS_TR,
12654        shandle3: ESYS_TR,
12655    ) -> TSS2_RC;
12656}
12657extern "C" {
12658    pub fn Esys_PolicyPhysicalPresence_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12659}
12660extern "C" {
12661    pub fn Esys_PolicyCpHash(
12662        esysContext: *mut ESYS_CONTEXT,
12663        policySession: ESYS_TR,
12664        shandle1: ESYS_TR,
12665        shandle2: ESYS_TR,
12666        shandle3: ESYS_TR,
12667        cpHashA: *const TPM2B_DIGEST,
12668    ) -> TSS2_RC;
12669}
12670extern "C" {
12671    pub fn Esys_PolicyCpHash_Async(
12672        esysContext: *mut ESYS_CONTEXT,
12673        policySession: ESYS_TR,
12674        shandle1: ESYS_TR,
12675        shandle2: ESYS_TR,
12676        shandle3: ESYS_TR,
12677        cpHashA: *const TPM2B_DIGEST,
12678    ) -> TSS2_RC;
12679}
12680extern "C" {
12681    pub fn Esys_PolicyCpHash_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12682}
12683extern "C" {
12684    pub fn Esys_PolicyNameHash(
12685        esysContext: *mut ESYS_CONTEXT,
12686        policySession: ESYS_TR,
12687        shandle1: ESYS_TR,
12688        shandle2: ESYS_TR,
12689        shandle3: ESYS_TR,
12690        nameHash: *const TPM2B_DIGEST,
12691    ) -> TSS2_RC;
12692}
12693extern "C" {
12694    pub fn Esys_PolicyNameHash_Async(
12695        esysContext: *mut ESYS_CONTEXT,
12696        policySession: ESYS_TR,
12697        shandle1: ESYS_TR,
12698        shandle2: ESYS_TR,
12699        shandle3: ESYS_TR,
12700        nameHash: *const TPM2B_DIGEST,
12701    ) -> TSS2_RC;
12702}
12703extern "C" {
12704    pub fn Esys_PolicyNameHash_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12705}
12706extern "C" {
12707    pub fn Esys_PolicyDuplicationSelect(
12708        esysContext: *mut ESYS_CONTEXT,
12709        policySession: ESYS_TR,
12710        shandle1: ESYS_TR,
12711        shandle2: ESYS_TR,
12712        shandle3: ESYS_TR,
12713        objectName: *const TPM2B_NAME,
12714        newParentName: *const TPM2B_NAME,
12715        includeObject: TPMI_YES_NO,
12716    ) -> TSS2_RC;
12717}
12718extern "C" {
12719    pub fn Esys_PolicyDuplicationSelect_Async(
12720        esysContext: *mut ESYS_CONTEXT,
12721        policySession: ESYS_TR,
12722        shandle1: ESYS_TR,
12723        shandle2: ESYS_TR,
12724        shandle3: ESYS_TR,
12725        objectName: *const TPM2B_NAME,
12726        newParentName: *const TPM2B_NAME,
12727        includeObject: TPMI_YES_NO,
12728    ) -> TSS2_RC;
12729}
12730extern "C" {
12731    pub fn Esys_PolicyDuplicationSelect_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12732}
12733extern "C" {
12734    pub fn Esys_PolicyAuthorize(
12735        esysContext: *mut ESYS_CONTEXT,
12736        policySession: ESYS_TR,
12737        shandle1: ESYS_TR,
12738        shandle2: ESYS_TR,
12739        shandle3: ESYS_TR,
12740        approvedPolicy: *const TPM2B_DIGEST,
12741        policyRef: *const TPM2B_NONCE,
12742        keySign: *const TPM2B_NAME,
12743        checkTicket: *const TPMT_TK_VERIFIED,
12744    ) -> TSS2_RC;
12745}
12746extern "C" {
12747    pub fn Esys_PolicyAuthorize_Async(
12748        esysContext: *mut ESYS_CONTEXT,
12749        policySession: ESYS_TR,
12750        shandle1: ESYS_TR,
12751        shandle2: ESYS_TR,
12752        shandle3: ESYS_TR,
12753        approvedPolicy: *const TPM2B_DIGEST,
12754        policyRef: *const TPM2B_NONCE,
12755        keySign: *const TPM2B_NAME,
12756        checkTicket: *const TPMT_TK_VERIFIED,
12757    ) -> TSS2_RC;
12758}
12759extern "C" {
12760    pub fn Esys_PolicyAuthorize_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12761}
12762extern "C" {
12763    pub fn Esys_PolicyAuthValue(
12764        esysContext: *mut ESYS_CONTEXT,
12765        policySession: ESYS_TR,
12766        shandle1: ESYS_TR,
12767        shandle2: ESYS_TR,
12768        shandle3: ESYS_TR,
12769    ) -> TSS2_RC;
12770}
12771extern "C" {
12772    pub fn Esys_PolicyAuthValue_Async(
12773        esysContext: *mut ESYS_CONTEXT,
12774        policySession: ESYS_TR,
12775        shandle1: ESYS_TR,
12776        shandle2: ESYS_TR,
12777        shandle3: ESYS_TR,
12778    ) -> TSS2_RC;
12779}
12780extern "C" {
12781    pub fn Esys_PolicyAuthValue_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12782}
12783extern "C" {
12784    pub fn Esys_PolicyPassword(
12785        esysContext: *mut ESYS_CONTEXT,
12786        policySession: ESYS_TR,
12787        shandle1: ESYS_TR,
12788        shandle2: ESYS_TR,
12789        shandle3: ESYS_TR,
12790    ) -> TSS2_RC;
12791}
12792extern "C" {
12793    pub fn Esys_PolicyPassword_Async(
12794        esysContext: *mut ESYS_CONTEXT,
12795        policySession: ESYS_TR,
12796        shandle1: ESYS_TR,
12797        shandle2: ESYS_TR,
12798        shandle3: ESYS_TR,
12799    ) -> TSS2_RC;
12800}
12801extern "C" {
12802    pub fn Esys_PolicyPassword_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12803}
12804extern "C" {
12805    pub fn Esys_PolicyGetDigest(
12806        esysContext: *mut ESYS_CONTEXT,
12807        policySession: ESYS_TR,
12808        shandle1: ESYS_TR,
12809        shandle2: ESYS_TR,
12810        shandle3: ESYS_TR,
12811        policyDigest: *mut *mut TPM2B_DIGEST,
12812    ) -> TSS2_RC;
12813}
12814extern "C" {
12815    pub fn Esys_PolicyGetDigest_Async(
12816        esysContext: *mut ESYS_CONTEXT,
12817        policySession: ESYS_TR,
12818        shandle1: ESYS_TR,
12819        shandle2: ESYS_TR,
12820        shandle3: ESYS_TR,
12821    ) -> TSS2_RC;
12822}
12823extern "C" {
12824    pub fn Esys_PolicyGetDigest_Finish(
12825        esysContext: *mut ESYS_CONTEXT,
12826        policyDigest: *mut *mut TPM2B_DIGEST,
12827    ) -> TSS2_RC;
12828}
12829extern "C" {
12830    pub fn Esys_PolicyNvWritten(
12831        esysContext: *mut ESYS_CONTEXT,
12832        policySession: ESYS_TR,
12833        shandle1: ESYS_TR,
12834        shandle2: ESYS_TR,
12835        shandle3: ESYS_TR,
12836        writtenSet: TPMI_YES_NO,
12837    ) -> TSS2_RC;
12838}
12839extern "C" {
12840    pub fn Esys_PolicyNvWritten_Async(
12841        esysContext: *mut ESYS_CONTEXT,
12842        policySession: ESYS_TR,
12843        shandle1: ESYS_TR,
12844        shandle2: ESYS_TR,
12845        shandle3: ESYS_TR,
12846        writtenSet: TPMI_YES_NO,
12847    ) -> TSS2_RC;
12848}
12849extern "C" {
12850    pub fn Esys_PolicyNvWritten_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12851}
12852extern "C" {
12853    pub fn Esys_PolicyTemplate(
12854        esysContext: *mut ESYS_CONTEXT,
12855        policySession: ESYS_TR,
12856        shandle1: ESYS_TR,
12857        shandle2: ESYS_TR,
12858        shandle3: ESYS_TR,
12859        templateHash: *const TPM2B_DIGEST,
12860    ) -> TSS2_RC;
12861}
12862extern "C" {
12863    pub fn Esys_PolicyTemplate_Async(
12864        esysContext: *mut ESYS_CONTEXT,
12865        policySession: ESYS_TR,
12866        shandle1: ESYS_TR,
12867        shandle2: ESYS_TR,
12868        shandle3: ESYS_TR,
12869        templateHash: *const TPM2B_DIGEST,
12870    ) -> TSS2_RC;
12871}
12872extern "C" {
12873    pub fn Esys_PolicyTemplate_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12874}
12875extern "C" {
12876    pub fn Esys_PolicyAuthorizeNV(
12877        esysContext: *mut ESYS_CONTEXT,
12878        authHandle: ESYS_TR,
12879        nvIndex: ESYS_TR,
12880        policySession: ESYS_TR,
12881        shandle1: ESYS_TR,
12882        shandle2: ESYS_TR,
12883        shandle3: ESYS_TR,
12884    ) -> TSS2_RC;
12885}
12886extern "C" {
12887    pub fn Esys_PolicyAuthorizeNV_Async(
12888        esysContext: *mut ESYS_CONTEXT,
12889        authHandle: ESYS_TR,
12890        nvIndex: ESYS_TR,
12891        policySession: ESYS_TR,
12892        shandle1: ESYS_TR,
12893        shandle2: ESYS_TR,
12894        shandle3: ESYS_TR,
12895    ) -> TSS2_RC;
12896}
12897extern "C" {
12898    pub fn Esys_PolicyAuthorizeNV_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12899}
12900extern "C" {
12901    pub fn Esys_CreatePrimary(
12902        esysContext: *mut ESYS_CONTEXT,
12903        primaryHandle: ESYS_TR,
12904        shandle1: ESYS_TR,
12905        shandle2: ESYS_TR,
12906        shandle3: ESYS_TR,
12907        inSensitive: *const TPM2B_SENSITIVE_CREATE,
12908        inPublic: *const TPM2B_PUBLIC,
12909        outsideInfo: *const TPM2B_DATA,
12910        creationPCR: *const TPML_PCR_SELECTION,
12911        objectHandle: *mut ESYS_TR,
12912        outPublic: *mut *mut TPM2B_PUBLIC,
12913        creationData: *mut *mut TPM2B_CREATION_DATA,
12914        creationHash: *mut *mut TPM2B_DIGEST,
12915        creationTicket: *mut *mut TPMT_TK_CREATION,
12916    ) -> TSS2_RC;
12917}
12918extern "C" {
12919    pub fn Esys_CreatePrimary_Async(
12920        esysContext: *mut ESYS_CONTEXT,
12921        primaryHandle: ESYS_TR,
12922        shandle1: ESYS_TR,
12923        shandle2: ESYS_TR,
12924        shandle3: ESYS_TR,
12925        inSensitive: *const TPM2B_SENSITIVE_CREATE,
12926        inPublic: *const TPM2B_PUBLIC,
12927        outsideInfo: *const TPM2B_DATA,
12928        creationPCR: *const TPML_PCR_SELECTION,
12929    ) -> TSS2_RC;
12930}
12931extern "C" {
12932    pub fn Esys_CreatePrimary_Finish(
12933        esysContext: *mut ESYS_CONTEXT,
12934        objectHandle: *mut ESYS_TR,
12935        outPublic: *mut *mut TPM2B_PUBLIC,
12936        creationData: *mut *mut TPM2B_CREATION_DATA,
12937        creationHash: *mut *mut TPM2B_DIGEST,
12938        creationTicket: *mut *mut TPMT_TK_CREATION,
12939    ) -> TSS2_RC;
12940}
12941extern "C" {
12942    pub fn Esys_HierarchyControl(
12943        esysContext: *mut ESYS_CONTEXT,
12944        authHandle: ESYS_TR,
12945        shandle1: ESYS_TR,
12946        shandle2: ESYS_TR,
12947        shandle3: ESYS_TR,
12948        enable: TPMI_RH_ENABLES,
12949        state: TPMI_YES_NO,
12950    ) -> TSS2_RC;
12951}
12952extern "C" {
12953    pub fn Esys_HierarchyControl_Async(
12954        esysContext: *mut ESYS_CONTEXT,
12955        authHandle: ESYS_TR,
12956        shandle1: ESYS_TR,
12957        shandle2: ESYS_TR,
12958        shandle3: ESYS_TR,
12959        enable: TPMI_RH_ENABLES,
12960        state: TPMI_YES_NO,
12961    ) -> TSS2_RC;
12962}
12963extern "C" {
12964    pub fn Esys_HierarchyControl_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12965}
12966extern "C" {
12967    pub fn Esys_SetPrimaryPolicy(
12968        esysContext: *mut ESYS_CONTEXT,
12969        authHandle: ESYS_TR,
12970        shandle1: ESYS_TR,
12971        shandle2: ESYS_TR,
12972        shandle3: ESYS_TR,
12973        authPolicy: *const TPM2B_DIGEST,
12974        hashAlg: TPMI_ALG_HASH,
12975    ) -> TSS2_RC;
12976}
12977extern "C" {
12978    pub fn Esys_SetPrimaryPolicy_Async(
12979        esysContext: *mut ESYS_CONTEXT,
12980        authHandle: ESYS_TR,
12981        shandle1: ESYS_TR,
12982        shandle2: ESYS_TR,
12983        shandle3: ESYS_TR,
12984        authPolicy: *const TPM2B_DIGEST,
12985        hashAlg: TPMI_ALG_HASH,
12986    ) -> TSS2_RC;
12987}
12988extern "C" {
12989    pub fn Esys_SetPrimaryPolicy_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12990}
12991extern "C" {
12992    pub fn Esys_ChangePPS(
12993        esysContext: *mut ESYS_CONTEXT,
12994        authHandle: ESYS_TR,
12995        shandle1: ESYS_TR,
12996        shandle2: ESYS_TR,
12997        shandle3: ESYS_TR,
12998    ) -> TSS2_RC;
12999}
13000extern "C" {
13001    pub fn Esys_ChangePPS_Async(
13002        esysContext: *mut ESYS_CONTEXT,
13003        authHandle: ESYS_TR,
13004        shandle1: ESYS_TR,
13005        shandle2: ESYS_TR,
13006        shandle3: ESYS_TR,
13007    ) -> TSS2_RC;
13008}
13009extern "C" {
13010    pub fn Esys_ChangePPS_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13011}
13012extern "C" {
13013    pub fn Esys_ChangeEPS(
13014        esysContext: *mut ESYS_CONTEXT,
13015        authHandle: ESYS_TR,
13016        shandle1: ESYS_TR,
13017        shandle2: ESYS_TR,
13018        shandle3: ESYS_TR,
13019    ) -> TSS2_RC;
13020}
13021extern "C" {
13022    pub fn Esys_ChangeEPS_Async(
13023        esysContext: *mut ESYS_CONTEXT,
13024        authHandle: ESYS_TR,
13025        shandle1: ESYS_TR,
13026        shandle2: ESYS_TR,
13027        shandle3: ESYS_TR,
13028    ) -> TSS2_RC;
13029}
13030extern "C" {
13031    pub fn Esys_ChangeEPS_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13032}
13033extern "C" {
13034    pub fn Esys_Clear(
13035        esysContext: *mut ESYS_CONTEXT,
13036        authHandle: ESYS_TR,
13037        shandle1: ESYS_TR,
13038        shandle2: ESYS_TR,
13039        shandle3: ESYS_TR,
13040    ) -> TSS2_RC;
13041}
13042extern "C" {
13043    pub fn Esys_Clear_Async(
13044        esysContext: *mut ESYS_CONTEXT,
13045        authHandle: ESYS_TR,
13046        shandle1: ESYS_TR,
13047        shandle2: ESYS_TR,
13048        shandle3: ESYS_TR,
13049    ) -> TSS2_RC;
13050}
13051extern "C" {
13052    pub fn Esys_Clear_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13053}
13054extern "C" {
13055    pub fn Esys_ClearControl(
13056        esysContext: *mut ESYS_CONTEXT,
13057        auth: ESYS_TR,
13058        shandle1: ESYS_TR,
13059        shandle2: ESYS_TR,
13060        shandle3: ESYS_TR,
13061        disable: TPMI_YES_NO,
13062    ) -> TSS2_RC;
13063}
13064extern "C" {
13065    pub fn Esys_ClearControl_Async(
13066        esysContext: *mut ESYS_CONTEXT,
13067        auth: ESYS_TR,
13068        shandle1: ESYS_TR,
13069        shandle2: ESYS_TR,
13070        shandle3: ESYS_TR,
13071        disable: TPMI_YES_NO,
13072    ) -> TSS2_RC;
13073}
13074extern "C" {
13075    pub fn Esys_ClearControl_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13076}
13077extern "C" {
13078    pub fn Esys_HierarchyChangeAuth(
13079        esysContext: *mut ESYS_CONTEXT,
13080        authHandle: ESYS_TR,
13081        shandle1: ESYS_TR,
13082        shandle2: ESYS_TR,
13083        shandle3: ESYS_TR,
13084        newAuth: *const TPM2B_AUTH,
13085    ) -> TSS2_RC;
13086}
13087extern "C" {
13088    pub fn Esys_HierarchyChangeAuth_Async(
13089        esysContext: *mut ESYS_CONTEXT,
13090        authHandle: ESYS_TR,
13091        shandle1: ESYS_TR,
13092        shandle2: ESYS_TR,
13093        shandle3: ESYS_TR,
13094        newAuth: *const TPM2B_AUTH,
13095    ) -> TSS2_RC;
13096}
13097extern "C" {
13098    pub fn Esys_HierarchyChangeAuth_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13099}
13100extern "C" {
13101    pub fn Esys_DictionaryAttackLockReset(
13102        esysContext: *mut ESYS_CONTEXT,
13103        lockHandle: ESYS_TR,
13104        shandle1: ESYS_TR,
13105        shandle2: ESYS_TR,
13106        shandle3: ESYS_TR,
13107    ) -> TSS2_RC;
13108}
13109extern "C" {
13110    pub fn Esys_DictionaryAttackLockReset_Async(
13111        esysContext: *mut ESYS_CONTEXT,
13112        lockHandle: ESYS_TR,
13113        shandle1: ESYS_TR,
13114        shandle2: ESYS_TR,
13115        shandle3: ESYS_TR,
13116    ) -> TSS2_RC;
13117}
13118extern "C" {
13119    pub fn Esys_DictionaryAttackLockReset_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13120}
13121extern "C" {
13122    pub fn Esys_DictionaryAttackParameters(
13123        esysContext: *mut ESYS_CONTEXT,
13124        lockHandle: ESYS_TR,
13125        shandle1: ESYS_TR,
13126        shandle2: ESYS_TR,
13127        shandle3: ESYS_TR,
13128        newMaxTries: UINT32,
13129        newRecoveryTime: UINT32,
13130        lockoutRecovery: UINT32,
13131    ) -> TSS2_RC;
13132}
13133extern "C" {
13134    pub fn Esys_DictionaryAttackParameters_Async(
13135        esysContext: *mut ESYS_CONTEXT,
13136        lockHandle: ESYS_TR,
13137        shandle1: ESYS_TR,
13138        shandle2: ESYS_TR,
13139        shandle3: ESYS_TR,
13140        newMaxTries: UINT32,
13141        newRecoveryTime: UINT32,
13142        lockoutRecovery: UINT32,
13143    ) -> TSS2_RC;
13144}
13145extern "C" {
13146    pub fn Esys_DictionaryAttackParameters_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13147}
13148extern "C" {
13149    pub fn Esys_PP_Commands(
13150        esysContext: *mut ESYS_CONTEXT,
13151        auth: ESYS_TR,
13152        shandle1: ESYS_TR,
13153        shandle2: ESYS_TR,
13154        shandle3: ESYS_TR,
13155        setList: *const TPML_CC,
13156        clearList: *const TPML_CC,
13157    ) -> TSS2_RC;
13158}
13159extern "C" {
13160    pub fn Esys_PP_Commands_Async(
13161        esysContext: *mut ESYS_CONTEXT,
13162        auth: ESYS_TR,
13163        shandle1: ESYS_TR,
13164        shandle2: ESYS_TR,
13165        shandle3: ESYS_TR,
13166        setList: *const TPML_CC,
13167        clearList: *const TPML_CC,
13168    ) -> TSS2_RC;
13169}
13170extern "C" {
13171    pub fn Esys_PP_Commands_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13172}
13173extern "C" {
13174    pub fn Esys_SetAlgorithmSet(
13175        esysContext: *mut ESYS_CONTEXT,
13176        authHandle: ESYS_TR,
13177        shandle1: ESYS_TR,
13178        shandle2: ESYS_TR,
13179        shandle3: ESYS_TR,
13180        algorithmSet: UINT32,
13181    ) -> TSS2_RC;
13182}
13183extern "C" {
13184    pub fn Esys_SetAlgorithmSet_Async(
13185        esysContext: *mut ESYS_CONTEXT,
13186        authHandle: ESYS_TR,
13187        shandle1: ESYS_TR,
13188        shandle2: ESYS_TR,
13189        shandle3: ESYS_TR,
13190        algorithmSet: UINT32,
13191    ) -> TSS2_RC;
13192}
13193extern "C" {
13194    pub fn Esys_SetAlgorithmSet_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13195}
13196extern "C" {
13197    pub fn Esys_FieldUpgradeStart(
13198        esysContext: *mut ESYS_CONTEXT,
13199        authorization: ESYS_TR,
13200        keyHandle: ESYS_TR,
13201        shandle1: ESYS_TR,
13202        shandle2: ESYS_TR,
13203        shandle3: ESYS_TR,
13204        fuDigest: *const TPM2B_DIGEST,
13205        manifestSignature: *const TPMT_SIGNATURE,
13206    ) -> TSS2_RC;
13207}
13208extern "C" {
13209    pub fn Esys_FieldUpgradeStart_Async(
13210        esysContext: *mut ESYS_CONTEXT,
13211        authorization: ESYS_TR,
13212        keyHandle: ESYS_TR,
13213        shandle1: ESYS_TR,
13214        shandle2: ESYS_TR,
13215        shandle3: ESYS_TR,
13216        fuDigest: *const TPM2B_DIGEST,
13217        manifestSignature: *const TPMT_SIGNATURE,
13218    ) -> TSS2_RC;
13219}
13220extern "C" {
13221    pub fn Esys_FieldUpgradeStart_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13222}
13223extern "C" {
13224    pub fn Esys_FieldUpgradeData(
13225        esysContext: *mut ESYS_CONTEXT,
13226        shandle1: ESYS_TR,
13227        shandle2: ESYS_TR,
13228        shandle3: ESYS_TR,
13229        fuData: *const TPM2B_MAX_BUFFER,
13230        nextDigest: *mut *mut TPMT_HA,
13231        firstDigest: *mut *mut TPMT_HA,
13232    ) -> TSS2_RC;
13233}
13234extern "C" {
13235    pub fn Esys_FieldUpgradeData_Async(
13236        esysContext: *mut ESYS_CONTEXT,
13237        shandle1: ESYS_TR,
13238        shandle2: ESYS_TR,
13239        shandle3: ESYS_TR,
13240        fuData: *const TPM2B_MAX_BUFFER,
13241    ) -> TSS2_RC;
13242}
13243extern "C" {
13244    pub fn Esys_FieldUpgradeData_Finish(
13245        esysContext: *mut ESYS_CONTEXT,
13246        nextDigest: *mut *mut TPMT_HA,
13247        firstDigest: *mut *mut TPMT_HA,
13248    ) -> TSS2_RC;
13249}
13250extern "C" {
13251    pub fn Esys_FirmwareRead(
13252        esysContext: *mut ESYS_CONTEXT,
13253        shandle1: ESYS_TR,
13254        shandle2: ESYS_TR,
13255        shandle3: ESYS_TR,
13256        sequenceNumber: UINT32,
13257        fuData: *mut *mut TPM2B_MAX_BUFFER,
13258    ) -> TSS2_RC;
13259}
13260extern "C" {
13261    pub fn Esys_FirmwareRead_Async(
13262        esysContext: *mut ESYS_CONTEXT,
13263        shandle1: ESYS_TR,
13264        shandle2: ESYS_TR,
13265        shandle3: ESYS_TR,
13266        sequenceNumber: UINT32,
13267    ) -> TSS2_RC;
13268}
13269extern "C" {
13270    pub fn Esys_FirmwareRead_Finish(
13271        esysContext: *mut ESYS_CONTEXT,
13272        fuData: *mut *mut TPM2B_MAX_BUFFER,
13273    ) -> TSS2_RC;
13274}
13275extern "C" {
13276    pub fn Esys_ContextSave(
13277        esysContext: *mut ESYS_CONTEXT,
13278        saveHandle: ESYS_TR,
13279        context: *mut *mut TPMS_CONTEXT,
13280    ) -> TSS2_RC;
13281}
13282extern "C" {
13283    pub fn Esys_ContextSave_Async(esysContext: *mut ESYS_CONTEXT, saveHandle: ESYS_TR) -> TSS2_RC;
13284}
13285extern "C" {
13286    pub fn Esys_ContextSave_Finish(
13287        esysContext: *mut ESYS_CONTEXT,
13288        context: *mut *mut TPMS_CONTEXT,
13289    ) -> TSS2_RC;
13290}
13291extern "C" {
13292    pub fn Esys_ContextLoad(
13293        esysContext: *mut ESYS_CONTEXT,
13294        context: *const TPMS_CONTEXT,
13295        loadedHandle: *mut ESYS_TR,
13296    ) -> TSS2_RC;
13297}
13298extern "C" {
13299    pub fn Esys_ContextLoad_Async(
13300        esysContext: *mut ESYS_CONTEXT,
13301        context: *const TPMS_CONTEXT,
13302    ) -> TSS2_RC;
13303}
13304extern "C" {
13305    pub fn Esys_ContextLoad_Finish(
13306        esysContext: *mut ESYS_CONTEXT,
13307        loadedHandle: *mut ESYS_TR,
13308    ) -> TSS2_RC;
13309}
13310extern "C" {
13311    pub fn Esys_FlushContext(esysContext: *mut ESYS_CONTEXT, flushHandle: ESYS_TR) -> TSS2_RC;
13312}
13313extern "C" {
13314    pub fn Esys_FlushContext_Async(esysContext: *mut ESYS_CONTEXT, flushHandle: ESYS_TR)
13315        -> TSS2_RC;
13316}
13317extern "C" {
13318    pub fn Esys_FlushContext_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13319}
13320extern "C" {
13321    pub fn Esys_EvictControl(
13322        esysContext: *mut ESYS_CONTEXT,
13323        auth: ESYS_TR,
13324        objectHandle: ESYS_TR,
13325        shandle1: ESYS_TR,
13326        shandle2: ESYS_TR,
13327        shandle3: ESYS_TR,
13328        persistentHandle: TPMI_DH_PERSISTENT,
13329        newObjectHandle: *mut ESYS_TR,
13330    ) -> TSS2_RC;
13331}
13332extern "C" {
13333    pub fn Esys_EvictControl_Async(
13334        esysContext: *mut ESYS_CONTEXT,
13335        auth: ESYS_TR,
13336        objectHandle: ESYS_TR,
13337        shandle1: ESYS_TR,
13338        shandle2: ESYS_TR,
13339        shandle3: ESYS_TR,
13340        persistentHandle: TPMI_DH_PERSISTENT,
13341    ) -> TSS2_RC;
13342}
13343extern "C" {
13344    pub fn Esys_EvictControl_Finish(
13345        esysContext: *mut ESYS_CONTEXT,
13346        newObjectHandle: *mut ESYS_TR,
13347    ) -> TSS2_RC;
13348}
13349extern "C" {
13350    pub fn Esys_ReadClock(
13351        esysContext: *mut ESYS_CONTEXT,
13352        shandle1: ESYS_TR,
13353        shandle2: ESYS_TR,
13354        shandle3: ESYS_TR,
13355        currentTime: *mut *mut TPMS_TIME_INFO,
13356    ) -> TSS2_RC;
13357}
13358extern "C" {
13359    pub fn Esys_ReadClock_Async(
13360        esysContext: *mut ESYS_CONTEXT,
13361        shandle1: ESYS_TR,
13362        shandle2: ESYS_TR,
13363        shandle3: ESYS_TR,
13364    ) -> TSS2_RC;
13365}
13366extern "C" {
13367    pub fn Esys_ReadClock_Finish(
13368        esysContext: *mut ESYS_CONTEXT,
13369        currentTime: *mut *mut TPMS_TIME_INFO,
13370    ) -> TSS2_RC;
13371}
13372extern "C" {
13373    pub fn Esys_ClockSet(
13374        esysContext: *mut ESYS_CONTEXT,
13375        auth: ESYS_TR,
13376        shandle1: ESYS_TR,
13377        shandle2: ESYS_TR,
13378        shandle3: ESYS_TR,
13379        newTime: UINT64,
13380    ) -> TSS2_RC;
13381}
13382extern "C" {
13383    pub fn Esys_ClockSet_Async(
13384        esysContext: *mut ESYS_CONTEXT,
13385        auth: ESYS_TR,
13386        shandle1: ESYS_TR,
13387        shandle2: ESYS_TR,
13388        shandle3: ESYS_TR,
13389        newTime: UINT64,
13390    ) -> TSS2_RC;
13391}
13392extern "C" {
13393    pub fn Esys_ClockSet_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13394}
13395extern "C" {
13396    pub fn Esys_ClockRateAdjust(
13397        esysContext: *mut ESYS_CONTEXT,
13398        auth: ESYS_TR,
13399        shandle1: ESYS_TR,
13400        shandle2: ESYS_TR,
13401        shandle3: ESYS_TR,
13402        rateAdjust: TPM2_CLOCK_ADJUST,
13403    ) -> TSS2_RC;
13404}
13405extern "C" {
13406    pub fn Esys_ClockRateAdjust_Async(
13407        esysContext: *mut ESYS_CONTEXT,
13408        auth: ESYS_TR,
13409        shandle1: ESYS_TR,
13410        shandle2: ESYS_TR,
13411        shandle3: ESYS_TR,
13412        rateAdjust: TPM2_CLOCK_ADJUST,
13413    ) -> TSS2_RC;
13414}
13415extern "C" {
13416    pub fn Esys_ClockRateAdjust_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13417}
13418extern "C" {
13419    pub fn Esys_GetCapability(
13420        esysContext: *mut ESYS_CONTEXT,
13421        shandle1: ESYS_TR,
13422        shandle2: ESYS_TR,
13423        shandle3: ESYS_TR,
13424        capability: TPM2_CAP,
13425        property: UINT32,
13426        propertyCount: UINT32,
13427        moreData: *mut TPMI_YES_NO,
13428        capabilityData: *mut *mut TPMS_CAPABILITY_DATA,
13429    ) -> TSS2_RC;
13430}
13431extern "C" {
13432    pub fn Esys_GetCapability_Async(
13433        esysContext: *mut ESYS_CONTEXT,
13434        shandle1: ESYS_TR,
13435        shandle2: ESYS_TR,
13436        shandle3: ESYS_TR,
13437        capability: TPM2_CAP,
13438        property: UINT32,
13439        propertyCount: UINT32,
13440    ) -> TSS2_RC;
13441}
13442extern "C" {
13443    pub fn Esys_GetCapability_Finish(
13444        esysContext: *mut ESYS_CONTEXT,
13445        moreData: *mut TPMI_YES_NO,
13446        capabilityData: *mut *mut TPMS_CAPABILITY_DATA,
13447    ) -> TSS2_RC;
13448}
13449extern "C" {
13450    pub fn Esys_TestParms(
13451        esysContext: *mut ESYS_CONTEXT,
13452        shandle1: ESYS_TR,
13453        shandle2: ESYS_TR,
13454        shandle3: ESYS_TR,
13455        parameters: *const TPMT_PUBLIC_PARMS,
13456    ) -> TSS2_RC;
13457}
13458extern "C" {
13459    pub fn Esys_TestParms_Async(
13460        esysContext: *mut ESYS_CONTEXT,
13461        shandle1: ESYS_TR,
13462        shandle2: ESYS_TR,
13463        shandle3: ESYS_TR,
13464        parameters: *const TPMT_PUBLIC_PARMS,
13465    ) -> TSS2_RC;
13466}
13467extern "C" {
13468    pub fn Esys_TestParms_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13469}
13470extern "C" {
13471    pub fn Esys_NV_DefineSpace(
13472        esysContext: *mut ESYS_CONTEXT,
13473        authHandle: ESYS_TR,
13474        shandle1: ESYS_TR,
13475        shandle2: ESYS_TR,
13476        shandle3: ESYS_TR,
13477        auth: *const TPM2B_AUTH,
13478        publicInfo: *const TPM2B_NV_PUBLIC,
13479        nvHandle: *mut ESYS_TR,
13480    ) -> TSS2_RC;
13481}
13482extern "C" {
13483    pub fn Esys_NV_DefineSpace_Async(
13484        esysContext: *mut ESYS_CONTEXT,
13485        authHandle: ESYS_TR,
13486        shandle1: ESYS_TR,
13487        shandle2: ESYS_TR,
13488        shandle3: ESYS_TR,
13489        auth: *const TPM2B_AUTH,
13490        publicInfo: *const TPM2B_NV_PUBLIC,
13491    ) -> TSS2_RC;
13492}
13493extern "C" {
13494    pub fn Esys_NV_DefineSpace_Finish(
13495        esysContext: *mut ESYS_CONTEXT,
13496        nvHandle: *mut ESYS_TR,
13497    ) -> TSS2_RC;
13498}
13499extern "C" {
13500    pub fn Esys_NV_UndefineSpace(
13501        esysContext: *mut ESYS_CONTEXT,
13502        authHandle: ESYS_TR,
13503        nvIndex: ESYS_TR,
13504        shandle1: ESYS_TR,
13505        shandle2: ESYS_TR,
13506        shandle3: ESYS_TR,
13507    ) -> TSS2_RC;
13508}
13509extern "C" {
13510    pub fn Esys_NV_UndefineSpace_Async(
13511        esysContext: *mut ESYS_CONTEXT,
13512        authHandle: ESYS_TR,
13513        nvIndex: ESYS_TR,
13514        shandle1: ESYS_TR,
13515        shandle2: ESYS_TR,
13516        shandle3: ESYS_TR,
13517    ) -> TSS2_RC;
13518}
13519extern "C" {
13520    pub fn Esys_NV_UndefineSpace_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13521}
13522extern "C" {
13523    pub fn Esys_NV_UndefineSpaceSpecial(
13524        esysContext: *mut ESYS_CONTEXT,
13525        nvIndex: ESYS_TR,
13526        platform: ESYS_TR,
13527        shandle1: ESYS_TR,
13528        shandle2: ESYS_TR,
13529        shandle3: ESYS_TR,
13530    ) -> TSS2_RC;
13531}
13532extern "C" {
13533    pub fn Esys_NV_UndefineSpaceSpecial_Async(
13534        esysContext: *mut ESYS_CONTEXT,
13535        nvIndex: ESYS_TR,
13536        platform: ESYS_TR,
13537        shandle1: ESYS_TR,
13538        shandle2: ESYS_TR,
13539        shandle3: ESYS_TR,
13540    ) -> TSS2_RC;
13541}
13542extern "C" {
13543    pub fn Esys_NV_UndefineSpaceSpecial_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13544}
13545extern "C" {
13546    pub fn Esys_NV_ReadPublic(
13547        esysContext: *mut ESYS_CONTEXT,
13548        nvIndex: ESYS_TR,
13549        shandle1: ESYS_TR,
13550        shandle2: ESYS_TR,
13551        shandle3: ESYS_TR,
13552        nvPublic: *mut *mut TPM2B_NV_PUBLIC,
13553        nvName: *mut *mut TPM2B_NAME,
13554    ) -> TSS2_RC;
13555}
13556extern "C" {
13557    pub fn Esys_NV_ReadPublic_Async(
13558        esysContext: *mut ESYS_CONTEXT,
13559        nvIndex: ESYS_TR,
13560        shandle1: ESYS_TR,
13561        shandle2: ESYS_TR,
13562        shandle3: ESYS_TR,
13563    ) -> TSS2_RC;
13564}
13565extern "C" {
13566    pub fn Esys_NV_ReadPublic_Finish(
13567        esysContext: *mut ESYS_CONTEXT,
13568        nvPublic: *mut *mut TPM2B_NV_PUBLIC,
13569        nvName: *mut *mut TPM2B_NAME,
13570    ) -> TSS2_RC;
13571}
13572extern "C" {
13573    pub fn Esys_NV_Write(
13574        esysContext: *mut ESYS_CONTEXT,
13575        authHandle: ESYS_TR,
13576        nvIndex: ESYS_TR,
13577        shandle1: ESYS_TR,
13578        shandle2: ESYS_TR,
13579        shandle3: ESYS_TR,
13580        data: *const TPM2B_MAX_NV_BUFFER,
13581        offset: UINT16,
13582    ) -> TSS2_RC;
13583}
13584extern "C" {
13585    pub fn Esys_NV_Write_Async(
13586        esysContext: *mut ESYS_CONTEXT,
13587        authHandle: ESYS_TR,
13588        nvIndex: ESYS_TR,
13589        shandle1: ESYS_TR,
13590        shandle2: ESYS_TR,
13591        shandle3: ESYS_TR,
13592        data: *const TPM2B_MAX_NV_BUFFER,
13593        offset: UINT16,
13594    ) -> TSS2_RC;
13595}
13596extern "C" {
13597    pub fn Esys_NV_Write_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13598}
13599extern "C" {
13600    pub fn Esys_NV_Increment(
13601        esysContext: *mut ESYS_CONTEXT,
13602        authHandle: ESYS_TR,
13603        nvIndex: ESYS_TR,
13604        shandle1: ESYS_TR,
13605        shandle2: ESYS_TR,
13606        shandle3: ESYS_TR,
13607    ) -> TSS2_RC;
13608}
13609extern "C" {
13610    pub fn Esys_NV_Increment_Async(
13611        esysContext: *mut ESYS_CONTEXT,
13612        authHandle: ESYS_TR,
13613        nvIndex: ESYS_TR,
13614        shandle1: ESYS_TR,
13615        shandle2: ESYS_TR,
13616        shandle3: ESYS_TR,
13617    ) -> TSS2_RC;
13618}
13619extern "C" {
13620    pub fn Esys_NV_Increment_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13621}
13622extern "C" {
13623    pub fn Esys_NV_Extend(
13624        esysContext: *mut ESYS_CONTEXT,
13625        authHandle: ESYS_TR,
13626        nvIndex: ESYS_TR,
13627        shandle1: ESYS_TR,
13628        shandle2: ESYS_TR,
13629        shandle3: ESYS_TR,
13630        data: *const TPM2B_MAX_NV_BUFFER,
13631    ) -> TSS2_RC;
13632}
13633extern "C" {
13634    pub fn Esys_NV_Extend_Async(
13635        esysContext: *mut ESYS_CONTEXT,
13636        authHandle: ESYS_TR,
13637        nvIndex: ESYS_TR,
13638        shandle1: ESYS_TR,
13639        shandle2: ESYS_TR,
13640        shandle3: ESYS_TR,
13641        data: *const TPM2B_MAX_NV_BUFFER,
13642    ) -> TSS2_RC;
13643}
13644extern "C" {
13645    pub fn Esys_NV_Extend_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13646}
13647extern "C" {
13648    pub fn Esys_NV_SetBits(
13649        esysContext: *mut ESYS_CONTEXT,
13650        authHandle: ESYS_TR,
13651        nvIndex: ESYS_TR,
13652        shandle1: ESYS_TR,
13653        shandle2: ESYS_TR,
13654        shandle3: ESYS_TR,
13655        bits: UINT64,
13656    ) -> TSS2_RC;
13657}
13658extern "C" {
13659    pub fn Esys_NV_SetBits_Async(
13660        esysContext: *mut ESYS_CONTEXT,
13661        authHandle: ESYS_TR,
13662        nvIndex: ESYS_TR,
13663        shandle1: ESYS_TR,
13664        shandle2: ESYS_TR,
13665        shandle3: ESYS_TR,
13666        bits: UINT64,
13667    ) -> TSS2_RC;
13668}
13669extern "C" {
13670    pub fn Esys_NV_SetBits_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13671}
13672extern "C" {
13673    pub fn Esys_NV_WriteLock(
13674        esysContext: *mut ESYS_CONTEXT,
13675        authHandle: ESYS_TR,
13676        nvIndex: ESYS_TR,
13677        shandle1: ESYS_TR,
13678        shandle2: ESYS_TR,
13679        shandle3: ESYS_TR,
13680    ) -> TSS2_RC;
13681}
13682extern "C" {
13683    pub fn Esys_NV_WriteLock_Async(
13684        esysContext: *mut ESYS_CONTEXT,
13685        authHandle: ESYS_TR,
13686        nvIndex: ESYS_TR,
13687        shandle1: ESYS_TR,
13688        shandle2: ESYS_TR,
13689        shandle3: ESYS_TR,
13690    ) -> TSS2_RC;
13691}
13692extern "C" {
13693    pub fn Esys_NV_WriteLock_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13694}
13695extern "C" {
13696    pub fn Esys_NV_GlobalWriteLock(
13697        esysContext: *mut ESYS_CONTEXT,
13698        authHandle: ESYS_TR,
13699        shandle1: ESYS_TR,
13700        shandle2: ESYS_TR,
13701        shandle3: ESYS_TR,
13702    ) -> TSS2_RC;
13703}
13704extern "C" {
13705    pub fn Esys_NV_GlobalWriteLock_Async(
13706        esysContext: *mut ESYS_CONTEXT,
13707        authHandle: ESYS_TR,
13708        shandle1: ESYS_TR,
13709        shandle2: ESYS_TR,
13710        shandle3: ESYS_TR,
13711    ) -> TSS2_RC;
13712}
13713extern "C" {
13714    pub fn Esys_NV_GlobalWriteLock_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13715}
13716extern "C" {
13717    pub fn Esys_NV_Read(
13718        esysContext: *mut ESYS_CONTEXT,
13719        authHandle: ESYS_TR,
13720        nvIndex: ESYS_TR,
13721        shandle1: ESYS_TR,
13722        shandle2: ESYS_TR,
13723        shandle3: ESYS_TR,
13724        size: UINT16,
13725        offset: UINT16,
13726        data: *mut *mut TPM2B_MAX_NV_BUFFER,
13727    ) -> TSS2_RC;
13728}
13729extern "C" {
13730    pub fn Esys_NV_Read_Async(
13731        esysContext: *mut ESYS_CONTEXT,
13732        authHandle: ESYS_TR,
13733        nvIndex: ESYS_TR,
13734        shandle1: ESYS_TR,
13735        shandle2: ESYS_TR,
13736        shandle3: ESYS_TR,
13737        size: UINT16,
13738        offset: UINT16,
13739    ) -> TSS2_RC;
13740}
13741extern "C" {
13742    pub fn Esys_NV_Read_Finish(
13743        esysContext: *mut ESYS_CONTEXT,
13744        data: *mut *mut TPM2B_MAX_NV_BUFFER,
13745    ) -> TSS2_RC;
13746}
13747extern "C" {
13748    pub fn Esys_NV_ReadLock(
13749        esysContext: *mut ESYS_CONTEXT,
13750        authHandle: ESYS_TR,
13751        nvIndex: ESYS_TR,
13752        shandle1: ESYS_TR,
13753        shandle2: ESYS_TR,
13754        shandle3: ESYS_TR,
13755    ) -> TSS2_RC;
13756}
13757extern "C" {
13758    pub fn Esys_NV_ReadLock_Async(
13759        esysContext: *mut ESYS_CONTEXT,
13760        authHandle: ESYS_TR,
13761        nvIndex: ESYS_TR,
13762        shandle1: ESYS_TR,
13763        shandle2: ESYS_TR,
13764        shandle3: ESYS_TR,
13765    ) -> TSS2_RC;
13766}
13767extern "C" {
13768    pub fn Esys_NV_ReadLock_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13769}
13770extern "C" {
13771    pub fn Esys_NV_ChangeAuth(
13772        esysContext: *mut ESYS_CONTEXT,
13773        nvIndex: ESYS_TR,
13774        shandle1: ESYS_TR,
13775        shandle2: ESYS_TR,
13776        shandle3: ESYS_TR,
13777        newAuth: *const TPM2B_AUTH,
13778    ) -> TSS2_RC;
13779}
13780extern "C" {
13781    pub fn Esys_NV_ChangeAuth_Async(
13782        esysContext: *mut ESYS_CONTEXT,
13783        nvIndex: ESYS_TR,
13784        shandle1: ESYS_TR,
13785        shandle2: ESYS_TR,
13786        shandle3: ESYS_TR,
13787        newAuth: *const TPM2B_AUTH,
13788    ) -> TSS2_RC;
13789}
13790extern "C" {
13791    pub fn Esys_NV_ChangeAuth_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13792}
13793extern "C" {
13794    pub fn Esys_NV_Certify(
13795        esysContext: *mut ESYS_CONTEXT,
13796        signHandle: ESYS_TR,
13797        authHandle: ESYS_TR,
13798        nvIndex: ESYS_TR,
13799        shandle1: ESYS_TR,
13800        shandle2: ESYS_TR,
13801        shandle3: ESYS_TR,
13802        qualifyingData: *const TPM2B_DATA,
13803        inScheme: *const TPMT_SIG_SCHEME,
13804        size: UINT16,
13805        offset: UINT16,
13806        certifyInfo: *mut *mut TPM2B_ATTEST,
13807        signature: *mut *mut TPMT_SIGNATURE,
13808    ) -> TSS2_RC;
13809}
13810extern "C" {
13811    pub fn Esys_NV_Certify_Async(
13812        esysContext: *mut ESYS_CONTEXT,
13813        signHandle: ESYS_TR,
13814        authHandle: ESYS_TR,
13815        nvIndex: ESYS_TR,
13816        shandle1: ESYS_TR,
13817        shandle2: ESYS_TR,
13818        shandle3: ESYS_TR,
13819        qualifyingData: *const TPM2B_DATA,
13820        inScheme: *const TPMT_SIG_SCHEME,
13821        size: UINT16,
13822        offset: UINT16,
13823    ) -> TSS2_RC;
13824}
13825extern "C" {
13826    pub fn Esys_NV_Certify_Finish(
13827        esysContext: *mut ESYS_CONTEXT,
13828        certifyInfo: *mut *mut TPM2B_ATTEST,
13829        signature: *mut *mut TPMT_SIGNATURE,
13830    ) -> TSS2_RC;
13831}
13832extern "C" {
13833    pub fn Esys_Vendor_TCG_Test(
13834        esysContext: *mut ESYS_CONTEXT,
13835        shandle1: ESYS_TR,
13836        shandle2: ESYS_TR,
13837        shandle3: ESYS_TR,
13838        inputData: *const TPM2B_DATA,
13839        outputData: *mut *mut TPM2B_DATA,
13840    ) -> TSS2_RC;
13841}
13842extern "C" {
13843    pub fn Esys_Vendor_TCG_Test_Async(
13844        esysContext: *mut ESYS_CONTEXT,
13845        shandle1: ESYS_TR,
13846        shandle2: ESYS_TR,
13847        shandle3: ESYS_TR,
13848        inputData: *const TPM2B_DATA,
13849    ) -> TSS2_RC;
13850}
13851extern "C" {
13852    pub fn Esys_Vendor_TCG_Test_Finish(
13853        esysContext: *mut ESYS_CONTEXT,
13854        outputData: *mut *mut TPM2B_DATA,
13855    ) -> TSS2_RC;
13856}
13857extern "C" {
13858    pub fn Esys_Free(__ptr: *mut ::std::os::raw::c_void);
13859}
13860extern "C" {
13861    pub fn Esys_GetSysContext(
13862        esys_context: *mut ESYS_CONTEXT,
13863        sys_context: *mut *mut TSS2_SYS_CONTEXT,
13864    ) -> TSS2_RC;
13865}
13866pub type __gwchar_t = ::std::os::raw::c_int;
13867#[repr(C)]
13868#[derive(Debug, Default, Copy, Clone)]
13869pub struct imaxdiv_t {
13870    pub quot: ::std::os::raw::c_long,
13871    pub rem: ::std::os::raw::c_long,
13872}
13873#[test]
13874fn bindgen_test_layout_imaxdiv_t() {
13875    const UNINIT: ::std::mem::MaybeUninit<imaxdiv_t> = ::std::mem::MaybeUninit::uninit();
13876    let ptr = UNINIT.as_ptr();
13877    assert_eq!(
13878        ::std::mem::size_of::<imaxdiv_t>(),
13879        16usize,
13880        concat!("Size of: ", stringify!(imaxdiv_t))
13881    );
13882    assert_eq!(
13883        ::std::mem::align_of::<imaxdiv_t>(),
13884        8usize,
13885        concat!("Alignment of ", stringify!(imaxdiv_t))
13886    );
13887    assert_eq!(
13888        unsafe { ::std::ptr::addr_of!((*ptr).quot) as usize - ptr as usize },
13889        0usize,
13890        concat!(
13891            "Offset of field: ",
13892            stringify!(imaxdiv_t),
13893            "::",
13894            stringify!(quot)
13895        )
13896    );
13897    assert_eq!(
13898        unsafe { ::std::ptr::addr_of!((*ptr).rem) as usize - ptr as usize },
13899        8usize,
13900        concat!(
13901            "Offset of field: ",
13902            stringify!(imaxdiv_t),
13903            "::",
13904            stringify!(rem)
13905        )
13906    );
13907}
13908extern "C" {
13909    pub fn imaxabs(__n: intmax_t) -> intmax_t;
13910}
13911extern "C" {
13912    pub fn imaxdiv(__numer: intmax_t, __denom: intmax_t) -> imaxdiv_t;
13913}
13914extern "C" {
13915    pub fn strtoimax(
13916        __nptr: *const ::std::os::raw::c_char,
13917        __endptr: *mut *mut ::std::os::raw::c_char,
13918        __base: ::std::os::raw::c_int,
13919    ) -> intmax_t;
13920}
13921extern "C" {
13922    pub fn strtoumax(
13923        __nptr: *const ::std::os::raw::c_char,
13924        __endptr: *mut *mut ::std::os::raw::c_char,
13925        __base: ::std::os::raw::c_int,
13926    ) -> uintmax_t;
13927}
13928extern "C" {
13929    pub fn wcstoimax(
13930        __nptr: *const __gwchar_t,
13931        __endptr: *mut *mut __gwchar_t,
13932        __base: ::std::os::raw::c_int,
13933    ) -> intmax_t;
13934}
13935extern "C" {
13936    pub fn wcstoumax(
13937        __nptr: *const __gwchar_t,
13938        __endptr: *mut *mut __gwchar_t,
13939        __base: ::std::os::raw::c_int,
13940    ) -> uintmax_t;
13941}
13942pub const idtype_t_P_ALL: idtype_t = 0;
13943pub const idtype_t_P_PID: idtype_t = 1;
13944pub const idtype_t_P_PGID: idtype_t = 2;
13945pub type idtype_t = ::std::os::raw::c_uint;
13946pub type _Float32 = f32;
13947pub type _Float64 = f64;
13948pub type _Float32x = f64;
13949pub type _Float64x = u128;
13950#[repr(C)]
13951#[derive(Debug, Default, Copy, Clone)]
13952pub struct div_t {
13953    pub quot: ::std::os::raw::c_int,
13954    pub rem: ::std::os::raw::c_int,
13955}
13956#[test]
13957fn bindgen_test_layout_div_t() {
13958    const UNINIT: ::std::mem::MaybeUninit<div_t> = ::std::mem::MaybeUninit::uninit();
13959    let ptr = UNINIT.as_ptr();
13960    assert_eq!(
13961        ::std::mem::size_of::<div_t>(),
13962        8usize,
13963        concat!("Size of: ", stringify!(div_t))
13964    );
13965    assert_eq!(
13966        ::std::mem::align_of::<div_t>(),
13967        4usize,
13968        concat!("Alignment of ", stringify!(div_t))
13969    );
13970    assert_eq!(
13971        unsafe { ::std::ptr::addr_of!((*ptr).quot) as usize - ptr as usize },
13972        0usize,
13973        concat!(
13974            "Offset of field: ",
13975            stringify!(div_t),
13976            "::",
13977            stringify!(quot)
13978        )
13979    );
13980    assert_eq!(
13981        unsafe { ::std::ptr::addr_of!((*ptr).rem) as usize - ptr as usize },
13982        4usize,
13983        concat!(
13984            "Offset of field: ",
13985            stringify!(div_t),
13986            "::",
13987            stringify!(rem)
13988        )
13989    );
13990}
13991#[repr(C)]
13992#[derive(Debug, Default, Copy, Clone)]
13993pub struct ldiv_t {
13994    pub quot: ::std::os::raw::c_long,
13995    pub rem: ::std::os::raw::c_long,
13996}
13997#[test]
13998fn bindgen_test_layout_ldiv_t() {
13999    const UNINIT: ::std::mem::MaybeUninit<ldiv_t> = ::std::mem::MaybeUninit::uninit();
14000    let ptr = UNINIT.as_ptr();
14001    assert_eq!(
14002        ::std::mem::size_of::<ldiv_t>(),
14003        16usize,
14004        concat!("Size of: ", stringify!(ldiv_t))
14005    );
14006    assert_eq!(
14007        ::std::mem::align_of::<ldiv_t>(),
14008        8usize,
14009        concat!("Alignment of ", stringify!(ldiv_t))
14010    );
14011    assert_eq!(
14012        unsafe { ::std::ptr::addr_of!((*ptr).quot) as usize - ptr as usize },
14013        0usize,
14014        concat!(
14015            "Offset of field: ",
14016            stringify!(ldiv_t),
14017            "::",
14018            stringify!(quot)
14019        )
14020    );
14021    assert_eq!(
14022        unsafe { ::std::ptr::addr_of!((*ptr).rem) as usize - ptr as usize },
14023        8usize,
14024        concat!(
14025            "Offset of field: ",
14026            stringify!(ldiv_t),
14027            "::",
14028            stringify!(rem)
14029        )
14030    );
14031}
14032#[repr(C)]
14033#[derive(Debug, Default, Copy, Clone)]
14034pub struct lldiv_t {
14035    pub quot: ::std::os::raw::c_longlong,
14036    pub rem: ::std::os::raw::c_longlong,
14037}
14038#[test]
14039fn bindgen_test_layout_lldiv_t() {
14040    const UNINIT: ::std::mem::MaybeUninit<lldiv_t> = ::std::mem::MaybeUninit::uninit();
14041    let ptr = UNINIT.as_ptr();
14042    assert_eq!(
14043        ::std::mem::size_of::<lldiv_t>(),
14044        16usize,
14045        concat!("Size of: ", stringify!(lldiv_t))
14046    );
14047    assert_eq!(
14048        ::std::mem::align_of::<lldiv_t>(),
14049        8usize,
14050        concat!("Alignment of ", stringify!(lldiv_t))
14051    );
14052    assert_eq!(
14053        unsafe { ::std::ptr::addr_of!((*ptr).quot) as usize - ptr as usize },
14054        0usize,
14055        concat!(
14056            "Offset of field: ",
14057            stringify!(lldiv_t),
14058            "::",
14059            stringify!(quot)
14060        )
14061    );
14062    assert_eq!(
14063        unsafe { ::std::ptr::addr_of!((*ptr).rem) as usize - ptr as usize },
14064        8usize,
14065        concat!(
14066            "Offset of field: ",
14067            stringify!(lldiv_t),
14068            "::",
14069            stringify!(rem)
14070        )
14071    );
14072}
14073extern "C" {
14074    pub fn __ctype_get_mb_cur_max() -> size_t;
14075}
14076extern "C" {
14077    pub fn atof(__nptr: *const ::std::os::raw::c_char) -> f64;
14078}
14079extern "C" {
14080    pub fn atoi(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
14081}
14082extern "C" {
14083    pub fn atol(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long;
14084}
14085extern "C" {
14086    pub fn atoll(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_longlong;
14087}
14088extern "C" {
14089    pub fn strtod(
14090        __nptr: *const ::std::os::raw::c_char,
14091        __endptr: *mut *mut ::std::os::raw::c_char,
14092    ) -> f64;
14093}
14094extern "C" {
14095    pub fn strtof(
14096        __nptr: *const ::std::os::raw::c_char,
14097        __endptr: *mut *mut ::std::os::raw::c_char,
14098    ) -> f32;
14099}
14100extern "C" {
14101    pub fn strtold(
14102        __nptr: *const ::std::os::raw::c_char,
14103        __endptr: *mut *mut ::std::os::raw::c_char,
14104    ) -> u128;
14105}
14106extern "C" {
14107    pub fn strtol(
14108        __nptr: *const ::std::os::raw::c_char,
14109        __endptr: *mut *mut ::std::os::raw::c_char,
14110        __base: ::std::os::raw::c_int,
14111    ) -> ::std::os::raw::c_long;
14112}
14113extern "C" {
14114    pub fn strtoul(
14115        __nptr: *const ::std::os::raw::c_char,
14116        __endptr: *mut *mut ::std::os::raw::c_char,
14117        __base: ::std::os::raw::c_int,
14118    ) -> ::std::os::raw::c_ulong;
14119}
14120extern "C" {
14121    pub fn strtoq(
14122        __nptr: *const ::std::os::raw::c_char,
14123        __endptr: *mut *mut ::std::os::raw::c_char,
14124        __base: ::std::os::raw::c_int,
14125    ) -> ::std::os::raw::c_longlong;
14126}
14127extern "C" {
14128    pub fn strtouq(
14129        __nptr: *const ::std::os::raw::c_char,
14130        __endptr: *mut *mut ::std::os::raw::c_char,
14131        __base: ::std::os::raw::c_int,
14132    ) -> ::std::os::raw::c_ulonglong;
14133}
14134extern "C" {
14135    pub fn strtoll(
14136        __nptr: *const ::std::os::raw::c_char,
14137        __endptr: *mut *mut ::std::os::raw::c_char,
14138        __base: ::std::os::raw::c_int,
14139    ) -> ::std::os::raw::c_longlong;
14140}
14141extern "C" {
14142    pub fn strtoull(
14143        __nptr: *const ::std::os::raw::c_char,
14144        __endptr: *mut *mut ::std::os::raw::c_char,
14145        __base: ::std::os::raw::c_int,
14146    ) -> ::std::os::raw::c_ulonglong;
14147}
14148extern "C" {
14149    pub fn l64a(__n: ::std::os::raw::c_long) -> *mut ::std::os::raw::c_char;
14150}
14151extern "C" {
14152    pub fn a64l(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long;
14153}
14154pub type u_char = __u_char;
14155pub type u_short = __u_short;
14156pub type u_int = __u_int;
14157pub type u_long = __u_long;
14158pub type quad_t = __quad_t;
14159pub type u_quad_t = __u_quad_t;
14160pub type fsid_t = __fsid_t;
14161pub type loff_t = __loff_t;
14162pub type ino_t = __ino_t;
14163pub type dev_t = __dev_t;
14164pub type gid_t = __gid_t;
14165pub type mode_t = __mode_t;
14166pub type nlink_t = __nlink_t;
14167pub type uid_t = __uid_t;
14168pub type off_t = __off_t;
14169pub type pid_t = __pid_t;
14170pub type id_t = __id_t;
14171pub type ssize_t = __ssize_t;
14172pub type daddr_t = __daddr_t;
14173pub type caddr_t = __caddr_t;
14174pub type key_t = __key_t;
14175pub type clock_t = __clock_t;
14176pub type clockid_t = __clockid_t;
14177pub type time_t = __time_t;
14178pub type timer_t = __timer_t;
14179pub type ulong = ::std::os::raw::c_ulong;
14180pub type ushort = ::std::os::raw::c_ushort;
14181pub type uint = ::std::os::raw::c_uint;
14182pub type u_int8_t = __uint8_t;
14183pub type u_int16_t = __uint16_t;
14184pub type u_int32_t = __uint32_t;
14185pub type u_int64_t = __uint64_t;
14186pub type register_t = ::std::os::raw::c_long;
14187#[repr(C)]
14188#[derive(Debug, Default, Copy, Clone)]
14189pub struct __sigset_t {
14190    pub __val: [::std::os::raw::c_ulong; 16usize],
14191}
14192#[test]
14193fn bindgen_test_layout___sigset_t() {
14194    const UNINIT: ::std::mem::MaybeUninit<__sigset_t> = ::std::mem::MaybeUninit::uninit();
14195    let ptr = UNINIT.as_ptr();
14196    assert_eq!(
14197        ::std::mem::size_of::<__sigset_t>(),
14198        128usize,
14199        concat!("Size of: ", stringify!(__sigset_t))
14200    );
14201    assert_eq!(
14202        ::std::mem::align_of::<__sigset_t>(),
14203        8usize,
14204        concat!("Alignment of ", stringify!(__sigset_t))
14205    );
14206    assert_eq!(
14207        unsafe { ::std::ptr::addr_of!((*ptr).__val) as usize - ptr as usize },
14208        0usize,
14209        concat!(
14210            "Offset of field: ",
14211            stringify!(__sigset_t),
14212            "::",
14213            stringify!(__val)
14214        )
14215    );
14216}
14217pub type sigset_t = __sigset_t;
14218#[repr(C)]
14219#[derive(Debug, Default, Copy, Clone)]
14220pub struct timeval {
14221    pub tv_sec: __time_t,
14222    pub tv_usec: __suseconds_t,
14223}
14224#[test]
14225fn bindgen_test_layout_timeval() {
14226    const UNINIT: ::std::mem::MaybeUninit<timeval> = ::std::mem::MaybeUninit::uninit();
14227    let ptr = UNINIT.as_ptr();
14228    assert_eq!(
14229        ::std::mem::size_of::<timeval>(),
14230        16usize,
14231        concat!("Size of: ", stringify!(timeval))
14232    );
14233    assert_eq!(
14234        ::std::mem::align_of::<timeval>(),
14235        8usize,
14236        concat!("Alignment of ", stringify!(timeval))
14237    );
14238    assert_eq!(
14239        unsafe { ::std::ptr::addr_of!((*ptr).tv_sec) as usize - ptr as usize },
14240        0usize,
14241        concat!(
14242            "Offset of field: ",
14243            stringify!(timeval),
14244            "::",
14245            stringify!(tv_sec)
14246        )
14247    );
14248    assert_eq!(
14249        unsafe { ::std::ptr::addr_of!((*ptr).tv_usec) as usize - ptr as usize },
14250        8usize,
14251        concat!(
14252            "Offset of field: ",
14253            stringify!(timeval),
14254            "::",
14255            stringify!(tv_usec)
14256        )
14257    );
14258}
14259#[repr(C)]
14260#[derive(Debug, Default, Copy, Clone)]
14261pub struct timespec {
14262    pub tv_sec: __time_t,
14263    pub tv_nsec: __syscall_slong_t,
14264}
14265#[test]
14266fn bindgen_test_layout_timespec() {
14267    const UNINIT: ::std::mem::MaybeUninit<timespec> = ::std::mem::MaybeUninit::uninit();
14268    let ptr = UNINIT.as_ptr();
14269    assert_eq!(
14270        ::std::mem::size_of::<timespec>(),
14271        16usize,
14272        concat!("Size of: ", stringify!(timespec))
14273    );
14274    assert_eq!(
14275        ::std::mem::align_of::<timespec>(),
14276        8usize,
14277        concat!("Alignment of ", stringify!(timespec))
14278    );
14279    assert_eq!(
14280        unsafe { ::std::ptr::addr_of!((*ptr).tv_sec) as usize - ptr as usize },
14281        0usize,
14282        concat!(
14283            "Offset of field: ",
14284            stringify!(timespec),
14285            "::",
14286            stringify!(tv_sec)
14287        )
14288    );
14289    assert_eq!(
14290        unsafe { ::std::ptr::addr_of!((*ptr).tv_nsec) as usize - ptr as usize },
14291        8usize,
14292        concat!(
14293            "Offset of field: ",
14294            stringify!(timespec),
14295            "::",
14296            stringify!(tv_nsec)
14297        )
14298    );
14299}
14300pub type suseconds_t = __suseconds_t;
14301pub type __fd_mask = ::std::os::raw::c_long;
14302#[repr(C)]
14303#[derive(Debug, Default, Copy, Clone)]
14304pub struct fd_set {
14305    pub __fds_bits: [__fd_mask; 16usize],
14306}
14307#[test]
14308fn bindgen_test_layout_fd_set() {
14309    const UNINIT: ::std::mem::MaybeUninit<fd_set> = ::std::mem::MaybeUninit::uninit();
14310    let ptr = UNINIT.as_ptr();
14311    assert_eq!(
14312        ::std::mem::size_of::<fd_set>(),
14313        128usize,
14314        concat!("Size of: ", stringify!(fd_set))
14315    );
14316    assert_eq!(
14317        ::std::mem::align_of::<fd_set>(),
14318        8usize,
14319        concat!("Alignment of ", stringify!(fd_set))
14320    );
14321    assert_eq!(
14322        unsafe { ::std::ptr::addr_of!((*ptr).__fds_bits) as usize - ptr as usize },
14323        0usize,
14324        concat!(
14325            "Offset of field: ",
14326            stringify!(fd_set),
14327            "::",
14328            stringify!(__fds_bits)
14329        )
14330    );
14331}
14332pub type fd_mask = __fd_mask;
14333extern "C" {
14334    pub fn select(
14335        __nfds: ::std::os::raw::c_int,
14336        __readfds: *mut fd_set,
14337        __writefds: *mut fd_set,
14338        __exceptfds: *mut fd_set,
14339        __timeout: *mut timeval,
14340    ) -> ::std::os::raw::c_int;
14341}
14342extern "C" {
14343    pub fn pselect(
14344        __nfds: ::std::os::raw::c_int,
14345        __readfds: *mut fd_set,
14346        __writefds: *mut fd_set,
14347        __exceptfds: *mut fd_set,
14348        __timeout: *const timespec,
14349        __sigmask: *const __sigset_t,
14350    ) -> ::std::os::raw::c_int;
14351}
14352pub type blksize_t = __blksize_t;
14353pub type blkcnt_t = __blkcnt_t;
14354pub type fsblkcnt_t = __fsblkcnt_t;
14355pub type fsfilcnt_t = __fsfilcnt_t;
14356#[repr(C)]
14357#[derive(Debug, Copy, Clone)]
14358pub struct __pthread_internal_list {
14359    pub __prev: *mut __pthread_internal_list,
14360    pub __next: *mut __pthread_internal_list,
14361}
14362#[test]
14363fn bindgen_test_layout___pthread_internal_list() {
14364    const UNINIT: ::std::mem::MaybeUninit<__pthread_internal_list> =
14365        ::std::mem::MaybeUninit::uninit();
14366    let ptr = UNINIT.as_ptr();
14367    assert_eq!(
14368        ::std::mem::size_of::<__pthread_internal_list>(),
14369        16usize,
14370        concat!("Size of: ", stringify!(__pthread_internal_list))
14371    );
14372    assert_eq!(
14373        ::std::mem::align_of::<__pthread_internal_list>(),
14374        8usize,
14375        concat!("Alignment of ", stringify!(__pthread_internal_list))
14376    );
14377    assert_eq!(
14378        unsafe { ::std::ptr::addr_of!((*ptr).__prev) as usize - ptr as usize },
14379        0usize,
14380        concat!(
14381            "Offset of field: ",
14382            stringify!(__pthread_internal_list),
14383            "::",
14384            stringify!(__prev)
14385        )
14386    );
14387    assert_eq!(
14388        unsafe { ::std::ptr::addr_of!((*ptr).__next) as usize - ptr as usize },
14389        8usize,
14390        concat!(
14391            "Offset of field: ",
14392            stringify!(__pthread_internal_list),
14393            "::",
14394            stringify!(__next)
14395        )
14396    );
14397}
14398impl Default for __pthread_internal_list {
14399    fn default() -> Self {
14400        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
14401        unsafe {
14402            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
14403            s.assume_init()
14404        }
14405    }
14406}
14407pub type __pthread_list_t = __pthread_internal_list;
14408#[repr(C)]
14409#[derive(Debug, Copy, Clone)]
14410pub struct __pthread_internal_slist {
14411    pub __next: *mut __pthread_internal_slist,
14412}
14413#[test]
14414fn bindgen_test_layout___pthread_internal_slist() {
14415    const UNINIT: ::std::mem::MaybeUninit<__pthread_internal_slist> =
14416        ::std::mem::MaybeUninit::uninit();
14417    let ptr = UNINIT.as_ptr();
14418    assert_eq!(
14419        ::std::mem::size_of::<__pthread_internal_slist>(),
14420        8usize,
14421        concat!("Size of: ", stringify!(__pthread_internal_slist))
14422    );
14423    assert_eq!(
14424        ::std::mem::align_of::<__pthread_internal_slist>(),
14425        8usize,
14426        concat!("Alignment of ", stringify!(__pthread_internal_slist))
14427    );
14428    assert_eq!(
14429        unsafe { ::std::ptr::addr_of!((*ptr).__next) as usize - ptr as usize },
14430        0usize,
14431        concat!(
14432            "Offset of field: ",
14433            stringify!(__pthread_internal_slist),
14434            "::",
14435            stringify!(__next)
14436        )
14437    );
14438}
14439impl Default for __pthread_internal_slist {
14440    fn default() -> Self {
14441        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
14442        unsafe {
14443            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
14444            s.assume_init()
14445        }
14446    }
14447}
14448pub type __pthread_slist_t = __pthread_internal_slist;
14449#[repr(C)]
14450#[derive(Debug, Copy, Clone)]
14451pub struct __pthread_mutex_s {
14452    pub __lock: ::std::os::raw::c_int,
14453    pub __count: ::std::os::raw::c_uint,
14454    pub __owner: ::std::os::raw::c_int,
14455    pub __nusers: ::std::os::raw::c_uint,
14456    pub __kind: ::std::os::raw::c_int,
14457    pub __spins: ::std::os::raw::c_short,
14458    pub __elision: ::std::os::raw::c_short,
14459    pub __list: __pthread_list_t,
14460}
14461#[test]
14462fn bindgen_test_layout___pthread_mutex_s() {
14463    const UNINIT: ::std::mem::MaybeUninit<__pthread_mutex_s> = ::std::mem::MaybeUninit::uninit();
14464    let ptr = UNINIT.as_ptr();
14465    assert_eq!(
14466        ::std::mem::size_of::<__pthread_mutex_s>(),
14467        40usize,
14468        concat!("Size of: ", stringify!(__pthread_mutex_s))
14469    );
14470    assert_eq!(
14471        ::std::mem::align_of::<__pthread_mutex_s>(),
14472        8usize,
14473        concat!("Alignment of ", stringify!(__pthread_mutex_s))
14474    );
14475    assert_eq!(
14476        unsafe { ::std::ptr::addr_of!((*ptr).__lock) as usize - ptr as usize },
14477        0usize,
14478        concat!(
14479            "Offset of field: ",
14480            stringify!(__pthread_mutex_s),
14481            "::",
14482            stringify!(__lock)
14483        )
14484    );
14485    assert_eq!(
14486        unsafe { ::std::ptr::addr_of!((*ptr).__count) as usize - ptr as usize },
14487        4usize,
14488        concat!(
14489            "Offset of field: ",
14490            stringify!(__pthread_mutex_s),
14491            "::",
14492            stringify!(__count)
14493        )
14494    );
14495    assert_eq!(
14496        unsafe { ::std::ptr::addr_of!((*ptr).__owner) as usize - ptr as usize },
14497        8usize,
14498        concat!(
14499            "Offset of field: ",
14500            stringify!(__pthread_mutex_s),
14501            "::",
14502            stringify!(__owner)
14503        )
14504    );
14505    assert_eq!(
14506        unsafe { ::std::ptr::addr_of!((*ptr).__nusers) as usize - ptr as usize },
14507        12usize,
14508        concat!(
14509            "Offset of field: ",
14510            stringify!(__pthread_mutex_s),
14511            "::",
14512            stringify!(__nusers)
14513        )
14514    );
14515    assert_eq!(
14516        unsafe { ::std::ptr::addr_of!((*ptr).__kind) as usize - ptr as usize },
14517        16usize,
14518        concat!(
14519            "Offset of field: ",
14520            stringify!(__pthread_mutex_s),
14521            "::",
14522            stringify!(__kind)
14523        )
14524    );
14525    assert_eq!(
14526        unsafe { ::std::ptr::addr_of!((*ptr).__spins) as usize - ptr as usize },
14527        20usize,
14528        concat!(
14529            "Offset of field: ",
14530            stringify!(__pthread_mutex_s),
14531            "::",
14532            stringify!(__spins)
14533        )
14534    );
14535    assert_eq!(
14536        unsafe { ::std::ptr::addr_of!((*ptr).__elision) as usize - ptr as usize },
14537        22usize,
14538        concat!(
14539            "Offset of field: ",
14540            stringify!(__pthread_mutex_s),
14541            "::",
14542            stringify!(__elision)
14543        )
14544    );
14545    assert_eq!(
14546        unsafe { ::std::ptr::addr_of!((*ptr).__list) as usize - ptr as usize },
14547        24usize,
14548        concat!(
14549            "Offset of field: ",
14550            stringify!(__pthread_mutex_s),
14551            "::",
14552            stringify!(__list)
14553        )
14554    );
14555}
14556impl Default for __pthread_mutex_s {
14557    fn default() -> Self {
14558        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
14559        unsafe {
14560            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
14561            s.assume_init()
14562        }
14563    }
14564}
14565#[repr(C)]
14566#[derive(Debug, Default, Copy, Clone)]
14567pub struct __pthread_rwlock_arch_t {
14568    pub __readers: ::std::os::raw::c_uint,
14569    pub __writers: ::std::os::raw::c_uint,
14570    pub __wrphase_futex: ::std::os::raw::c_uint,
14571    pub __writers_futex: ::std::os::raw::c_uint,
14572    pub __pad3: ::std::os::raw::c_uint,
14573    pub __pad4: ::std::os::raw::c_uint,
14574    pub __cur_writer: ::std::os::raw::c_int,
14575    pub __shared: ::std::os::raw::c_int,
14576    pub __rwelision: ::std::os::raw::c_schar,
14577    pub __pad1: [::std::os::raw::c_uchar; 7usize],
14578    pub __pad2: ::std::os::raw::c_ulong,
14579    pub __flags: ::std::os::raw::c_uint,
14580}
14581#[test]
14582fn bindgen_test_layout___pthread_rwlock_arch_t() {
14583    const UNINIT: ::std::mem::MaybeUninit<__pthread_rwlock_arch_t> =
14584        ::std::mem::MaybeUninit::uninit();
14585    let ptr = UNINIT.as_ptr();
14586    assert_eq!(
14587        ::std::mem::size_of::<__pthread_rwlock_arch_t>(),
14588        56usize,
14589        concat!("Size of: ", stringify!(__pthread_rwlock_arch_t))
14590    );
14591    assert_eq!(
14592        ::std::mem::align_of::<__pthread_rwlock_arch_t>(),
14593        8usize,
14594        concat!("Alignment of ", stringify!(__pthread_rwlock_arch_t))
14595    );
14596    assert_eq!(
14597        unsafe { ::std::ptr::addr_of!((*ptr).__readers) as usize - ptr as usize },
14598        0usize,
14599        concat!(
14600            "Offset of field: ",
14601            stringify!(__pthread_rwlock_arch_t),
14602            "::",
14603            stringify!(__readers)
14604        )
14605    );
14606    assert_eq!(
14607        unsafe { ::std::ptr::addr_of!((*ptr).__writers) as usize - ptr as usize },
14608        4usize,
14609        concat!(
14610            "Offset of field: ",
14611            stringify!(__pthread_rwlock_arch_t),
14612            "::",
14613            stringify!(__writers)
14614        )
14615    );
14616    assert_eq!(
14617        unsafe { ::std::ptr::addr_of!((*ptr).__wrphase_futex) as usize - ptr as usize },
14618        8usize,
14619        concat!(
14620            "Offset of field: ",
14621            stringify!(__pthread_rwlock_arch_t),
14622            "::",
14623            stringify!(__wrphase_futex)
14624        )
14625    );
14626    assert_eq!(
14627        unsafe { ::std::ptr::addr_of!((*ptr).__writers_futex) as usize - ptr as usize },
14628        12usize,
14629        concat!(
14630            "Offset of field: ",
14631            stringify!(__pthread_rwlock_arch_t),
14632            "::",
14633            stringify!(__writers_futex)
14634        )
14635    );
14636    assert_eq!(
14637        unsafe { ::std::ptr::addr_of!((*ptr).__pad3) as usize - ptr as usize },
14638        16usize,
14639        concat!(
14640            "Offset of field: ",
14641            stringify!(__pthread_rwlock_arch_t),
14642            "::",
14643            stringify!(__pad3)
14644        )
14645    );
14646    assert_eq!(
14647        unsafe { ::std::ptr::addr_of!((*ptr).__pad4) as usize - ptr as usize },
14648        20usize,
14649        concat!(
14650            "Offset of field: ",
14651            stringify!(__pthread_rwlock_arch_t),
14652            "::",
14653            stringify!(__pad4)
14654        )
14655    );
14656    assert_eq!(
14657        unsafe { ::std::ptr::addr_of!((*ptr).__cur_writer) as usize - ptr as usize },
14658        24usize,
14659        concat!(
14660            "Offset of field: ",
14661            stringify!(__pthread_rwlock_arch_t),
14662            "::",
14663            stringify!(__cur_writer)
14664        )
14665    );
14666    assert_eq!(
14667        unsafe { ::std::ptr::addr_of!((*ptr).__shared) as usize - ptr as usize },
14668        28usize,
14669        concat!(
14670            "Offset of field: ",
14671            stringify!(__pthread_rwlock_arch_t),
14672            "::",
14673            stringify!(__shared)
14674        )
14675    );
14676    assert_eq!(
14677        unsafe { ::std::ptr::addr_of!((*ptr).__rwelision) as usize - ptr as usize },
14678        32usize,
14679        concat!(
14680            "Offset of field: ",
14681            stringify!(__pthread_rwlock_arch_t),
14682            "::",
14683            stringify!(__rwelision)
14684        )
14685    );
14686    assert_eq!(
14687        unsafe { ::std::ptr::addr_of!((*ptr).__pad1) as usize - ptr as usize },
14688        33usize,
14689        concat!(
14690            "Offset of field: ",
14691            stringify!(__pthread_rwlock_arch_t),
14692            "::",
14693            stringify!(__pad1)
14694        )
14695    );
14696    assert_eq!(
14697        unsafe { ::std::ptr::addr_of!((*ptr).__pad2) as usize - ptr as usize },
14698        40usize,
14699        concat!(
14700            "Offset of field: ",
14701            stringify!(__pthread_rwlock_arch_t),
14702            "::",
14703            stringify!(__pad2)
14704        )
14705    );
14706    assert_eq!(
14707        unsafe { ::std::ptr::addr_of!((*ptr).__flags) as usize - ptr as usize },
14708        48usize,
14709        concat!(
14710            "Offset of field: ",
14711            stringify!(__pthread_rwlock_arch_t),
14712            "::",
14713            stringify!(__flags)
14714        )
14715    );
14716}
14717#[repr(C)]
14718#[derive(Copy, Clone)]
14719pub struct __pthread_cond_s {
14720    pub __bindgen_anon_1: __pthread_cond_s__bindgen_ty_1,
14721    pub __bindgen_anon_2: __pthread_cond_s__bindgen_ty_2,
14722    pub __g_refs: [::std::os::raw::c_uint; 2usize],
14723    pub __g_size: [::std::os::raw::c_uint; 2usize],
14724    pub __g1_orig_size: ::std::os::raw::c_uint,
14725    pub __wrefs: ::std::os::raw::c_uint,
14726    pub __g_signals: [::std::os::raw::c_uint; 2usize],
14727}
14728#[repr(C)]
14729#[derive(Copy, Clone)]
14730pub union __pthread_cond_s__bindgen_ty_1 {
14731    pub __wseq: ::std::os::raw::c_ulonglong,
14732    pub __wseq32: __pthread_cond_s__bindgen_ty_1__bindgen_ty_1,
14733}
14734#[repr(C)]
14735#[derive(Debug, Default, Copy, Clone)]
14736pub struct __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 {
14737    pub __low: ::std::os::raw::c_uint,
14738    pub __high: ::std::os::raw::c_uint,
14739}
14740#[test]
14741fn bindgen_test_layout___pthread_cond_s__bindgen_ty_1__bindgen_ty_1() {
14742    const UNINIT: ::std::mem::MaybeUninit<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1> =
14743        ::std::mem::MaybeUninit::uninit();
14744    let ptr = UNINIT.as_ptr();
14745    assert_eq!(
14746        ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>(),
14747        8usize,
14748        concat!(
14749            "Size of: ",
14750            stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1)
14751        )
14752    );
14753    assert_eq!(
14754        ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>(),
14755        4usize,
14756        concat!(
14757            "Alignment of ",
14758            stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1)
14759        )
14760    );
14761    assert_eq!(
14762        unsafe { ::std::ptr::addr_of!((*ptr).__low) as usize - ptr as usize },
14763        0usize,
14764        concat!(
14765            "Offset of field: ",
14766            stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1),
14767            "::",
14768            stringify!(__low)
14769        )
14770    );
14771    assert_eq!(
14772        unsafe { ::std::ptr::addr_of!((*ptr).__high) as usize - ptr as usize },
14773        4usize,
14774        concat!(
14775            "Offset of field: ",
14776            stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1),
14777            "::",
14778            stringify!(__high)
14779        )
14780    );
14781}
14782#[test]
14783fn bindgen_test_layout___pthread_cond_s__bindgen_ty_1() {
14784    const UNINIT: ::std::mem::MaybeUninit<__pthread_cond_s__bindgen_ty_1> =
14785        ::std::mem::MaybeUninit::uninit();
14786    let ptr = UNINIT.as_ptr();
14787    assert_eq!(
14788        ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_1>(),
14789        8usize,
14790        concat!("Size of: ", stringify!(__pthread_cond_s__bindgen_ty_1))
14791    );
14792    assert_eq!(
14793        ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_1>(),
14794        8usize,
14795        concat!("Alignment of ", stringify!(__pthread_cond_s__bindgen_ty_1))
14796    );
14797    assert_eq!(
14798        unsafe { ::std::ptr::addr_of!((*ptr).__wseq) as usize - ptr as usize },
14799        0usize,
14800        concat!(
14801            "Offset of field: ",
14802            stringify!(__pthread_cond_s__bindgen_ty_1),
14803            "::",
14804            stringify!(__wseq)
14805        )
14806    );
14807    assert_eq!(
14808        unsafe { ::std::ptr::addr_of!((*ptr).__wseq32) as usize - ptr as usize },
14809        0usize,
14810        concat!(
14811            "Offset of field: ",
14812            stringify!(__pthread_cond_s__bindgen_ty_1),
14813            "::",
14814            stringify!(__wseq32)
14815        )
14816    );
14817}
14818impl Default for __pthread_cond_s__bindgen_ty_1 {
14819    fn default() -> Self {
14820        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
14821        unsafe {
14822            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
14823            s.assume_init()
14824        }
14825    }
14826}
14827#[repr(C)]
14828#[derive(Copy, Clone)]
14829pub union __pthread_cond_s__bindgen_ty_2 {
14830    pub __g1_start: ::std::os::raw::c_ulonglong,
14831    pub __g1_start32: __pthread_cond_s__bindgen_ty_2__bindgen_ty_1,
14832}
14833#[repr(C)]
14834#[derive(Debug, Default, Copy, Clone)]
14835pub struct __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 {
14836    pub __low: ::std::os::raw::c_uint,
14837    pub __high: ::std::os::raw::c_uint,
14838}
14839#[test]
14840fn bindgen_test_layout___pthread_cond_s__bindgen_ty_2__bindgen_ty_1() {
14841    const UNINIT: ::std::mem::MaybeUninit<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1> =
14842        ::std::mem::MaybeUninit::uninit();
14843    let ptr = UNINIT.as_ptr();
14844    assert_eq!(
14845        ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>(),
14846        8usize,
14847        concat!(
14848            "Size of: ",
14849            stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1)
14850        )
14851    );
14852    assert_eq!(
14853        ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>(),
14854        4usize,
14855        concat!(
14856            "Alignment of ",
14857            stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1)
14858        )
14859    );
14860    assert_eq!(
14861        unsafe { ::std::ptr::addr_of!((*ptr).__low) as usize - ptr as usize },
14862        0usize,
14863        concat!(
14864            "Offset of field: ",
14865            stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1),
14866            "::",
14867            stringify!(__low)
14868        )
14869    );
14870    assert_eq!(
14871        unsafe { ::std::ptr::addr_of!((*ptr).__high) as usize - ptr as usize },
14872        4usize,
14873        concat!(
14874            "Offset of field: ",
14875            stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1),
14876            "::",
14877            stringify!(__high)
14878        )
14879    );
14880}
14881#[test]
14882fn bindgen_test_layout___pthread_cond_s__bindgen_ty_2() {
14883    const UNINIT: ::std::mem::MaybeUninit<__pthread_cond_s__bindgen_ty_2> =
14884        ::std::mem::MaybeUninit::uninit();
14885    let ptr = UNINIT.as_ptr();
14886    assert_eq!(
14887        ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_2>(),
14888        8usize,
14889        concat!("Size of: ", stringify!(__pthread_cond_s__bindgen_ty_2))
14890    );
14891    assert_eq!(
14892        ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_2>(),
14893        8usize,
14894        concat!("Alignment of ", stringify!(__pthread_cond_s__bindgen_ty_2))
14895    );
14896    assert_eq!(
14897        unsafe { ::std::ptr::addr_of!((*ptr).__g1_start) as usize - ptr as usize },
14898        0usize,
14899        concat!(
14900            "Offset of field: ",
14901            stringify!(__pthread_cond_s__bindgen_ty_2),
14902            "::",
14903            stringify!(__g1_start)
14904        )
14905    );
14906    assert_eq!(
14907        unsafe { ::std::ptr::addr_of!((*ptr).__g1_start32) as usize - ptr as usize },
14908        0usize,
14909        concat!(
14910            "Offset of field: ",
14911            stringify!(__pthread_cond_s__bindgen_ty_2),
14912            "::",
14913            stringify!(__g1_start32)
14914        )
14915    );
14916}
14917impl Default for __pthread_cond_s__bindgen_ty_2 {
14918    fn default() -> Self {
14919        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
14920        unsafe {
14921            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
14922            s.assume_init()
14923        }
14924    }
14925}
14926#[test]
14927fn bindgen_test_layout___pthread_cond_s() {
14928    const UNINIT: ::std::mem::MaybeUninit<__pthread_cond_s> = ::std::mem::MaybeUninit::uninit();
14929    let ptr = UNINIT.as_ptr();
14930    assert_eq!(
14931        ::std::mem::size_of::<__pthread_cond_s>(),
14932        48usize,
14933        concat!("Size of: ", stringify!(__pthread_cond_s))
14934    );
14935    assert_eq!(
14936        ::std::mem::align_of::<__pthread_cond_s>(),
14937        8usize,
14938        concat!("Alignment of ", stringify!(__pthread_cond_s))
14939    );
14940    assert_eq!(
14941        unsafe { ::std::ptr::addr_of!((*ptr).__g_refs) as usize - ptr as usize },
14942        16usize,
14943        concat!(
14944            "Offset of field: ",
14945            stringify!(__pthread_cond_s),
14946            "::",
14947            stringify!(__g_refs)
14948        )
14949    );
14950    assert_eq!(
14951        unsafe { ::std::ptr::addr_of!((*ptr).__g_size) as usize - ptr as usize },
14952        24usize,
14953        concat!(
14954            "Offset of field: ",
14955            stringify!(__pthread_cond_s),
14956            "::",
14957            stringify!(__g_size)
14958        )
14959    );
14960    assert_eq!(
14961        unsafe { ::std::ptr::addr_of!((*ptr).__g1_orig_size) as usize - ptr as usize },
14962        32usize,
14963        concat!(
14964            "Offset of field: ",
14965            stringify!(__pthread_cond_s),
14966            "::",
14967            stringify!(__g1_orig_size)
14968        )
14969    );
14970    assert_eq!(
14971        unsafe { ::std::ptr::addr_of!((*ptr).__wrefs) as usize - ptr as usize },
14972        36usize,
14973        concat!(
14974            "Offset of field: ",
14975            stringify!(__pthread_cond_s),
14976            "::",
14977            stringify!(__wrefs)
14978        )
14979    );
14980    assert_eq!(
14981        unsafe { ::std::ptr::addr_of!((*ptr).__g_signals) as usize - ptr as usize },
14982        40usize,
14983        concat!(
14984            "Offset of field: ",
14985            stringify!(__pthread_cond_s),
14986            "::",
14987            stringify!(__g_signals)
14988        )
14989    );
14990}
14991impl Default for __pthread_cond_s {
14992    fn default() -> Self {
14993        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
14994        unsafe {
14995            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
14996            s.assume_init()
14997        }
14998    }
14999}
15000pub type pthread_t = ::std::os::raw::c_ulong;
15001#[repr(C)]
15002#[derive(Copy, Clone)]
15003pub union pthread_mutexattr_t {
15004    pub __size: [::std::os::raw::c_char; 4usize],
15005    pub __align: ::std::os::raw::c_int,
15006}
15007#[test]
15008fn bindgen_test_layout_pthread_mutexattr_t() {
15009    const UNINIT: ::std::mem::MaybeUninit<pthread_mutexattr_t> = ::std::mem::MaybeUninit::uninit();
15010    let ptr = UNINIT.as_ptr();
15011    assert_eq!(
15012        ::std::mem::size_of::<pthread_mutexattr_t>(),
15013        4usize,
15014        concat!("Size of: ", stringify!(pthread_mutexattr_t))
15015    );
15016    assert_eq!(
15017        ::std::mem::align_of::<pthread_mutexattr_t>(),
15018        4usize,
15019        concat!("Alignment of ", stringify!(pthread_mutexattr_t))
15020    );
15021    assert_eq!(
15022        unsafe { ::std::ptr::addr_of!((*ptr).__size) as usize - ptr as usize },
15023        0usize,
15024        concat!(
15025            "Offset of field: ",
15026            stringify!(pthread_mutexattr_t),
15027            "::",
15028            stringify!(__size)
15029        )
15030    );
15031    assert_eq!(
15032        unsafe { ::std::ptr::addr_of!((*ptr).__align) as usize - ptr as usize },
15033        0usize,
15034        concat!(
15035            "Offset of field: ",
15036            stringify!(pthread_mutexattr_t),
15037            "::",
15038            stringify!(__align)
15039        )
15040    );
15041}
15042impl Default for pthread_mutexattr_t {
15043    fn default() -> Self {
15044        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
15045        unsafe {
15046            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
15047            s.assume_init()
15048        }
15049    }
15050}
15051#[repr(C)]
15052#[derive(Copy, Clone)]
15053pub union pthread_condattr_t {
15054    pub __size: [::std::os::raw::c_char; 4usize],
15055    pub __align: ::std::os::raw::c_int,
15056}
15057#[test]
15058fn bindgen_test_layout_pthread_condattr_t() {
15059    const UNINIT: ::std::mem::MaybeUninit<pthread_condattr_t> = ::std::mem::MaybeUninit::uninit();
15060    let ptr = UNINIT.as_ptr();
15061    assert_eq!(
15062        ::std::mem::size_of::<pthread_condattr_t>(),
15063        4usize,
15064        concat!("Size of: ", stringify!(pthread_condattr_t))
15065    );
15066    assert_eq!(
15067        ::std::mem::align_of::<pthread_condattr_t>(),
15068        4usize,
15069        concat!("Alignment of ", stringify!(pthread_condattr_t))
15070    );
15071    assert_eq!(
15072        unsafe { ::std::ptr::addr_of!((*ptr).__size) as usize - ptr as usize },
15073        0usize,
15074        concat!(
15075            "Offset of field: ",
15076            stringify!(pthread_condattr_t),
15077            "::",
15078            stringify!(__size)
15079        )
15080    );
15081    assert_eq!(
15082        unsafe { ::std::ptr::addr_of!((*ptr).__align) as usize - ptr as usize },
15083        0usize,
15084        concat!(
15085            "Offset of field: ",
15086            stringify!(pthread_condattr_t),
15087            "::",
15088            stringify!(__align)
15089        )
15090    );
15091}
15092impl Default for pthread_condattr_t {
15093    fn default() -> Self {
15094        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
15095        unsafe {
15096            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
15097            s.assume_init()
15098        }
15099    }
15100}
15101pub type pthread_key_t = ::std::os::raw::c_uint;
15102pub type pthread_once_t = ::std::os::raw::c_int;
15103#[repr(C)]
15104#[derive(Copy, Clone)]
15105pub union pthread_attr_t {
15106    pub __size: [::std::os::raw::c_char; 56usize],
15107    pub __align: ::std::os::raw::c_long,
15108}
15109#[test]
15110fn bindgen_test_layout_pthread_attr_t() {
15111    const UNINIT: ::std::mem::MaybeUninit<pthread_attr_t> = ::std::mem::MaybeUninit::uninit();
15112    let ptr = UNINIT.as_ptr();
15113    assert_eq!(
15114        ::std::mem::size_of::<pthread_attr_t>(),
15115        56usize,
15116        concat!("Size of: ", stringify!(pthread_attr_t))
15117    );
15118    assert_eq!(
15119        ::std::mem::align_of::<pthread_attr_t>(),
15120        8usize,
15121        concat!("Alignment of ", stringify!(pthread_attr_t))
15122    );
15123    assert_eq!(
15124        unsafe { ::std::ptr::addr_of!((*ptr).__size) as usize - ptr as usize },
15125        0usize,
15126        concat!(
15127            "Offset of field: ",
15128            stringify!(pthread_attr_t),
15129            "::",
15130            stringify!(__size)
15131        )
15132    );
15133    assert_eq!(
15134        unsafe { ::std::ptr::addr_of!((*ptr).__align) as usize - ptr as usize },
15135        0usize,
15136        concat!(
15137            "Offset of field: ",
15138            stringify!(pthread_attr_t),
15139            "::",
15140            stringify!(__align)
15141        )
15142    );
15143}
15144impl Default for pthread_attr_t {
15145    fn default() -> Self {
15146        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
15147        unsafe {
15148            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
15149            s.assume_init()
15150        }
15151    }
15152}
15153#[repr(C)]
15154#[derive(Copy, Clone)]
15155pub union pthread_mutex_t {
15156    pub __data: __pthread_mutex_s,
15157    pub __size: [::std::os::raw::c_char; 40usize],
15158    pub __align: ::std::os::raw::c_long,
15159}
15160#[test]
15161fn bindgen_test_layout_pthread_mutex_t() {
15162    const UNINIT: ::std::mem::MaybeUninit<pthread_mutex_t> = ::std::mem::MaybeUninit::uninit();
15163    let ptr = UNINIT.as_ptr();
15164    assert_eq!(
15165        ::std::mem::size_of::<pthread_mutex_t>(),
15166        40usize,
15167        concat!("Size of: ", stringify!(pthread_mutex_t))
15168    );
15169    assert_eq!(
15170        ::std::mem::align_of::<pthread_mutex_t>(),
15171        8usize,
15172        concat!("Alignment of ", stringify!(pthread_mutex_t))
15173    );
15174    assert_eq!(
15175        unsafe { ::std::ptr::addr_of!((*ptr).__data) as usize - ptr as usize },
15176        0usize,
15177        concat!(
15178            "Offset of field: ",
15179            stringify!(pthread_mutex_t),
15180            "::",
15181            stringify!(__data)
15182        )
15183    );
15184    assert_eq!(
15185        unsafe { ::std::ptr::addr_of!((*ptr).__size) as usize - ptr as usize },
15186        0usize,
15187        concat!(
15188            "Offset of field: ",
15189            stringify!(pthread_mutex_t),
15190            "::",
15191            stringify!(__size)
15192        )
15193    );
15194    assert_eq!(
15195        unsafe { ::std::ptr::addr_of!((*ptr).__align) as usize - ptr as usize },
15196        0usize,
15197        concat!(
15198            "Offset of field: ",
15199            stringify!(pthread_mutex_t),
15200            "::",
15201            stringify!(__align)
15202        )
15203    );
15204}
15205impl Default for pthread_mutex_t {
15206    fn default() -> Self {
15207        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
15208        unsafe {
15209            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
15210            s.assume_init()
15211        }
15212    }
15213}
15214#[repr(C)]
15215#[derive(Copy, Clone)]
15216pub union pthread_cond_t {
15217    pub __data: __pthread_cond_s,
15218    pub __size: [::std::os::raw::c_char; 48usize],
15219    pub __align: ::std::os::raw::c_longlong,
15220}
15221#[test]
15222fn bindgen_test_layout_pthread_cond_t() {
15223    const UNINIT: ::std::mem::MaybeUninit<pthread_cond_t> = ::std::mem::MaybeUninit::uninit();
15224    let ptr = UNINIT.as_ptr();
15225    assert_eq!(
15226        ::std::mem::size_of::<pthread_cond_t>(),
15227        48usize,
15228        concat!("Size of: ", stringify!(pthread_cond_t))
15229    );
15230    assert_eq!(
15231        ::std::mem::align_of::<pthread_cond_t>(),
15232        8usize,
15233        concat!("Alignment of ", stringify!(pthread_cond_t))
15234    );
15235    assert_eq!(
15236        unsafe { ::std::ptr::addr_of!((*ptr).__data) as usize - ptr as usize },
15237        0usize,
15238        concat!(
15239            "Offset of field: ",
15240            stringify!(pthread_cond_t),
15241            "::",
15242            stringify!(__data)
15243        )
15244    );
15245    assert_eq!(
15246        unsafe { ::std::ptr::addr_of!((*ptr).__size) as usize - ptr as usize },
15247        0usize,
15248        concat!(
15249            "Offset of field: ",
15250            stringify!(pthread_cond_t),
15251            "::",
15252            stringify!(__size)
15253        )
15254    );
15255    assert_eq!(
15256        unsafe { ::std::ptr::addr_of!((*ptr).__align) as usize - ptr as usize },
15257        0usize,
15258        concat!(
15259            "Offset of field: ",
15260            stringify!(pthread_cond_t),
15261            "::",
15262            stringify!(__align)
15263        )
15264    );
15265}
15266impl Default for pthread_cond_t {
15267    fn default() -> Self {
15268        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
15269        unsafe {
15270            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
15271            s.assume_init()
15272        }
15273    }
15274}
15275#[repr(C)]
15276#[derive(Copy, Clone)]
15277pub union pthread_rwlock_t {
15278    pub __data: __pthread_rwlock_arch_t,
15279    pub __size: [::std::os::raw::c_char; 56usize],
15280    pub __align: ::std::os::raw::c_long,
15281}
15282#[test]
15283fn bindgen_test_layout_pthread_rwlock_t() {
15284    const UNINIT: ::std::mem::MaybeUninit<pthread_rwlock_t> = ::std::mem::MaybeUninit::uninit();
15285    let ptr = UNINIT.as_ptr();
15286    assert_eq!(
15287        ::std::mem::size_of::<pthread_rwlock_t>(),
15288        56usize,
15289        concat!("Size of: ", stringify!(pthread_rwlock_t))
15290    );
15291    assert_eq!(
15292        ::std::mem::align_of::<pthread_rwlock_t>(),
15293        8usize,
15294        concat!("Alignment of ", stringify!(pthread_rwlock_t))
15295    );
15296    assert_eq!(
15297        unsafe { ::std::ptr::addr_of!((*ptr).__data) as usize - ptr as usize },
15298        0usize,
15299        concat!(
15300            "Offset of field: ",
15301            stringify!(pthread_rwlock_t),
15302            "::",
15303            stringify!(__data)
15304        )
15305    );
15306    assert_eq!(
15307        unsafe { ::std::ptr::addr_of!((*ptr).__size) as usize - ptr as usize },
15308        0usize,
15309        concat!(
15310            "Offset of field: ",
15311            stringify!(pthread_rwlock_t),
15312            "::",
15313            stringify!(__size)
15314        )
15315    );
15316    assert_eq!(
15317        unsafe { ::std::ptr::addr_of!((*ptr).__align) as usize - ptr as usize },
15318        0usize,
15319        concat!(
15320            "Offset of field: ",
15321            stringify!(pthread_rwlock_t),
15322            "::",
15323            stringify!(__align)
15324        )
15325    );
15326}
15327impl Default for pthread_rwlock_t {
15328    fn default() -> Self {
15329        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
15330        unsafe {
15331            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
15332            s.assume_init()
15333        }
15334    }
15335}
15336#[repr(C)]
15337#[derive(Copy, Clone)]
15338pub union pthread_rwlockattr_t {
15339    pub __size: [::std::os::raw::c_char; 8usize],
15340    pub __align: ::std::os::raw::c_long,
15341}
15342#[test]
15343fn bindgen_test_layout_pthread_rwlockattr_t() {
15344    const UNINIT: ::std::mem::MaybeUninit<pthread_rwlockattr_t> = ::std::mem::MaybeUninit::uninit();
15345    let ptr = UNINIT.as_ptr();
15346    assert_eq!(
15347        ::std::mem::size_of::<pthread_rwlockattr_t>(),
15348        8usize,
15349        concat!("Size of: ", stringify!(pthread_rwlockattr_t))
15350    );
15351    assert_eq!(
15352        ::std::mem::align_of::<pthread_rwlockattr_t>(),
15353        8usize,
15354        concat!("Alignment of ", stringify!(pthread_rwlockattr_t))
15355    );
15356    assert_eq!(
15357        unsafe { ::std::ptr::addr_of!((*ptr).__size) as usize - ptr as usize },
15358        0usize,
15359        concat!(
15360            "Offset of field: ",
15361            stringify!(pthread_rwlockattr_t),
15362            "::",
15363            stringify!(__size)
15364        )
15365    );
15366    assert_eq!(
15367        unsafe { ::std::ptr::addr_of!((*ptr).__align) as usize - ptr as usize },
15368        0usize,
15369        concat!(
15370            "Offset of field: ",
15371            stringify!(pthread_rwlockattr_t),
15372            "::",
15373            stringify!(__align)
15374        )
15375    );
15376}
15377impl Default for pthread_rwlockattr_t {
15378    fn default() -> Self {
15379        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
15380        unsafe {
15381            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
15382            s.assume_init()
15383        }
15384    }
15385}
15386pub type pthread_spinlock_t = ::std::os::raw::c_int;
15387#[repr(C)]
15388#[derive(Copy, Clone)]
15389pub union pthread_barrier_t {
15390    pub __size: [::std::os::raw::c_char; 32usize],
15391    pub __align: ::std::os::raw::c_long,
15392}
15393#[test]
15394fn bindgen_test_layout_pthread_barrier_t() {
15395    const UNINIT: ::std::mem::MaybeUninit<pthread_barrier_t> = ::std::mem::MaybeUninit::uninit();
15396    let ptr = UNINIT.as_ptr();
15397    assert_eq!(
15398        ::std::mem::size_of::<pthread_barrier_t>(),
15399        32usize,
15400        concat!("Size of: ", stringify!(pthread_barrier_t))
15401    );
15402    assert_eq!(
15403        ::std::mem::align_of::<pthread_barrier_t>(),
15404        8usize,
15405        concat!("Alignment of ", stringify!(pthread_barrier_t))
15406    );
15407    assert_eq!(
15408        unsafe { ::std::ptr::addr_of!((*ptr).__size) as usize - ptr as usize },
15409        0usize,
15410        concat!(
15411            "Offset of field: ",
15412            stringify!(pthread_barrier_t),
15413            "::",
15414            stringify!(__size)
15415        )
15416    );
15417    assert_eq!(
15418        unsafe { ::std::ptr::addr_of!((*ptr).__align) as usize - ptr as usize },
15419        0usize,
15420        concat!(
15421            "Offset of field: ",
15422            stringify!(pthread_barrier_t),
15423            "::",
15424            stringify!(__align)
15425        )
15426    );
15427}
15428impl Default for pthread_barrier_t {
15429    fn default() -> Self {
15430        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
15431        unsafe {
15432            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
15433            s.assume_init()
15434        }
15435    }
15436}
15437#[repr(C)]
15438#[derive(Copy, Clone)]
15439pub union pthread_barrierattr_t {
15440    pub __size: [::std::os::raw::c_char; 4usize],
15441    pub __align: ::std::os::raw::c_int,
15442}
15443#[test]
15444fn bindgen_test_layout_pthread_barrierattr_t() {
15445    const UNINIT: ::std::mem::MaybeUninit<pthread_barrierattr_t> =
15446        ::std::mem::MaybeUninit::uninit();
15447    let ptr = UNINIT.as_ptr();
15448    assert_eq!(
15449        ::std::mem::size_of::<pthread_barrierattr_t>(),
15450        4usize,
15451        concat!("Size of: ", stringify!(pthread_barrierattr_t))
15452    );
15453    assert_eq!(
15454        ::std::mem::align_of::<pthread_barrierattr_t>(),
15455        4usize,
15456        concat!("Alignment of ", stringify!(pthread_barrierattr_t))
15457    );
15458    assert_eq!(
15459        unsafe { ::std::ptr::addr_of!((*ptr).__size) as usize - ptr as usize },
15460        0usize,
15461        concat!(
15462            "Offset of field: ",
15463            stringify!(pthread_barrierattr_t),
15464            "::",
15465            stringify!(__size)
15466        )
15467    );
15468    assert_eq!(
15469        unsafe { ::std::ptr::addr_of!((*ptr).__align) as usize - ptr as usize },
15470        0usize,
15471        concat!(
15472            "Offset of field: ",
15473            stringify!(pthread_barrierattr_t),
15474            "::",
15475            stringify!(__align)
15476        )
15477    );
15478}
15479impl Default for pthread_barrierattr_t {
15480    fn default() -> Self {
15481        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
15482        unsafe {
15483            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
15484            s.assume_init()
15485        }
15486    }
15487}
15488extern "C" {
15489    pub fn random() -> ::std::os::raw::c_long;
15490}
15491extern "C" {
15492    pub fn srandom(__seed: ::std::os::raw::c_uint);
15493}
15494extern "C" {
15495    pub fn initstate(
15496        __seed: ::std::os::raw::c_uint,
15497        __statebuf: *mut ::std::os::raw::c_char,
15498        __statelen: size_t,
15499    ) -> *mut ::std::os::raw::c_char;
15500}
15501extern "C" {
15502    pub fn setstate(__statebuf: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
15503}
15504#[repr(C)]
15505#[derive(Debug, Copy, Clone)]
15506pub struct random_data {
15507    pub fptr: *mut i32,
15508    pub rptr: *mut i32,
15509    pub state: *mut i32,
15510    pub rand_type: ::std::os::raw::c_int,
15511    pub rand_deg: ::std::os::raw::c_int,
15512    pub rand_sep: ::std::os::raw::c_int,
15513    pub end_ptr: *mut i32,
15514}
15515#[test]
15516fn bindgen_test_layout_random_data() {
15517    const UNINIT: ::std::mem::MaybeUninit<random_data> = ::std::mem::MaybeUninit::uninit();
15518    let ptr = UNINIT.as_ptr();
15519    assert_eq!(
15520        ::std::mem::size_of::<random_data>(),
15521        48usize,
15522        concat!("Size of: ", stringify!(random_data))
15523    );
15524    assert_eq!(
15525        ::std::mem::align_of::<random_data>(),
15526        8usize,
15527        concat!("Alignment of ", stringify!(random_data))
15528    );
15529    assert_eq!(
15530        unsafe { ::std::ptr::addr_of!((*ptr).fptr) as usize - ptr as usize },
15531        0usize,
15532        concat!(
15533            "Offset of field: ",
15534            stringify!(random_data),
15535            "::",
15536            stringify!(fptr)
15537        )
15538    );
15539    assert_eq!(
15540        unsafe { ::std::ptr::addr_of!((*ptr).rptr) as usize - ptr as usize },
15541        8usize,
15542        concat!(
15543            "Offset of field: ",
15544            stringify!(random_data),
15545            "::",
15546            stringify!(rptr)
15547        )
15548    );
15549    assert_eq!(
15550        unsafe { ::std::ptr::addr_of!((*ptr).state) as usize - ptr as usize },
15551        16usize,
15552        concat!(
15553            "Offset of field: ",
15554            stringify!(random_data),
15555            "::",
15556            stringify!(state)
15557        )
15558    );
15559    assert_eq!(
15560        unsafe { ::std::ptr::addr_of!((*ptr).rand_type) as usize - ptr as usize },
15561        24usize,
15562        concat!(
15563            "Offset of field: ",
15564            stringify!(random_data),
15565            "::",
15566            stringify!(rand_type)
15567        )
15568    );
15569    assert_eq!(
15570        unsafe { ::std::ptr::addr_of!((*ptr).rand_deg) as usize - ptr as usize },
15571        28usize,
15572        concat!(
15573            "Offset of field: ",
15574            stringify!(random_data),
15575            "::",
15576            stringify!(rand_deg)
15577        )
15578    );
15579    assert_eq!(
15580        unsafe { ::std::ptr::addr_of!((*ptr).rand_sep) as usize - ptr as usize },
15581        32usize,
15582        concat!(
15583            "Offset of field: ",
15584            stringify!(random_data),
15585            "::",
15586            stringify!(rand_sep)
15587        )
15588    );
15589    assert_eq!(
15590        unsafe { ::std::ptr::addr_of!((*ptr).end_ptr) as usize - ptr as usize },
15591        40usize,
15592        concat!(
15593            "Offset of field: ",
15594            stringify!(random_data),
15595            "::",
15596            stringify!(end_ptr)
15597        )
15598    );
15599}
15600impl Default for random_data {
15601    fn default() -> Self {
15602        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
15603        unsafe {
15604            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
15605            s.assume_init()
15606        }
15607    }
15608}
15609extern "C" {
15610    pub fn random_r(__buf: *mut random_data, __result: *mut i32) -> ::std::os::raw::c_int;
15611}
15612extern "C" {
15613    pub fn srandom_r(
15614        __seed: ::std::os::raw::c_uint,
15615        __buf: *mut random_data,
15616    ) -> ::std::os::raw::c_int;
15617}
15618extern "C" {
15619    pub fn initstate_r(
15620        __seed: ::std::os::raw::c_uint,
15621        __statebuf: *mut ::std::os::raw::c_char,
15622        __statelen: size_t,
15623        __buf: *mut random_data,
15624    ) -> ::std::os::raw::c_int;
15625}
15626extern "C" {
15627    pub fn setstate_r(
15628        __statebuf: *mut ::std::os::raw::c_char,
15629        __buf: *mut random_data,
15630    ) -> ::std::os::raw::c_int;
15631}
15632extern "C" {
15633    pub fn rand() -> ::std::os::raw::c_int;
15634}
15635extern "C" {
15636    pub fn srand(__seed: ::std::os::raw::c_uint);
15637}
15638extern "C" {
15639    pub fn rand_r(__seed: *mut ::std::os::raw::c_uint) -> ::std::os::raw::c_int;
15640}
15641extern "C" {
15642    pub fn drand48() -> f64;
15643}
15644extern "C" {
15645    pub fn erand48(__xsubi: *mut ::std::os::raw::c_ushort) -> f64;
15646}
15647extern "C" {
15648    pub fn lrand48() -> ::std::os::raw::c_long;
15649}
15650extern "C" {
15651    pub fn nrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long;
15652}
15653extern "C" {
15654    pub fn mrand48() -> ::std::os::raw::c_long;
15655}
15656extern "C" {
15657    pub fn jrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long;
15658}
15659extern "C" {
15660    pub fn srand48(__seedval: ::std::os::raw::c_long);
15661}
15662extern "C" {
15663    pub fn seed48(__seed16v: *mut ::std::os::raw::c_ushort) -> *mut ::std::os::raw::c_ushort;
15664}
15665extern "C" {
15666    pub fn lcong48(__param: *mut ::std::os::raw::c_ushort);
15667}
15668#[repr(C)]
15669#[derive(Debug, Default, Copy, Clone)]
15670pub struct drand48_data {
15671    pub __x: [::std::os::raw::c_ushort; 3usize],
15672    pub __old_x: [::std::os::raw::c_ushort; 3usize],
15673    pub __c: ::std::os::raw::c_ushort,
15674    pub __init: ::std::os::raw::c_ushort,
15675    pub __a: ::std::os::raw::c_ulonglong,
15676}
15677#[test]
15678fn bindgen_test_layout_drand48_data() {
15679    const UNINIT: ::std::mem::MaybeUninit<drand48_data> = ::std::mem::MaybeUninit::uninit();
15680    let ptr = UNINIT.as_ptr();
15681    assert_eq!(
15682        ::std::mem::size_of::<drand48_data>(),
15683        24usize,
15684        concat!("Size of: ", stringify!(drand48_data))
15685    );
15686    assert_eq!(
15687        ::std::mem::align_of::<drand48_data>(),
15688        8usize,
15689        concat!("Alignment of ", stringify!(drand48_data))
15690    );
15691    assert_eq!(
15692        unsafe { ::std::ptr::addr_of!((*ptr).__x) as usize - ptr as usize },
15693        0usize,
15694        concat!(
15695            "Offset of field: ",
15696            stringify!(drand48_data),
15697            "::",
15698            stringify!(__x)
15699        )
15700    );
15701    assert_eq!(
15702        unsafe { ::std::ptr::addr_of!((*ptr).__old_x) as usize - ptr as usize },
15703        6usize,
15704        concat!(
15705            "Offset of field: ",
15706            stringify!(drand48_data),
15707            "::",
15708            stringify!(__old_x)
15709        )
15710    );
15711    assert_eq!(
15712        unsafe { ::std::ptr::addr_of!((*ptr).__c) as usize - ptr as usize },
15713        12usize,
15714        concat!(
15715            "Offset of field: ",
15716            stringify!(drand48_data),
15717            "::",
15718            stringify!(__c)
15719        )
15720    );
15721    assert_eq!(
15722        unsafe { ::std::ptr::addr_of!((*ptr).__init) as usize - ptr as usize },
15723        14usize,
15724        concat!(
15725            "Offset of field: ",
15726            stringify!(drand48_data),
15727            "::",
15728            stringify!(__init)
15729        )
15730    );
15731    assert_eq!(
15732        unsafe { ::std::ptr::addr_of!((*ptr).__a) as usize - ptr as usize },
15733        16usize,
15734        concat!(
15735            "Offset of field: ",
15736            stringify!(drand48_data),
15737            "::",
15738            stringify!(__a)
15739        )
15740    );
15741}
15742extern "C" {
15743    pub fn drand48_r(__buffer: *mut drand48_data, __result: *mut f64) -> ::std::os::raw::c_int;
15744}
15745extern "C" {
15746    pub fn erand48_r(
15747        __xsubi: *mut ::std::os::raw::c_ushort,
15748        __buffer: *mut drand48_data,
15749        __result: *mut f64,
15750    ) -> ::std::os::raw::c_int;
15751}
15752extern "C" {
15753    pub fn lrand48_r(
15754        __buffer: *mut drand48_data,
15755        __result: *mut ::std::os::raw::c_long,
15756    ) -> ::std::os::raw::c_int;
15757}
15758extern "C" {
15759    pub fn nrand48_r(
15760        __xsubi: *mut ::std::os::raw::c_ushort,
15761        __buffer: *mut drand48_data,
15762        __result: *mut ::std::os::raw::c_long,
15763    ) -> ::std::os::raw::c_int;
15764}
15765extern "C" {
15766    pub fn mrand48_r(
15767        __buffer: *mut drand48_data,
15768        __result: *mut ::std::os::raw::c_long,
15769    ) -> ::std::os::raw::c_int;
15770}
15771extern "C" {
15772    pub fn jrand48_r(
15773        __xsubi: *mut ::std::os::raw::c_ushort,
15774        __buffer: *mut drand48_data,
15775        __result: *mut ::std::os::raw::c_long,
15776    ) -> ::std::os::raw::c_int;
15777}
15778extern "C" {
15779    pub fn srand48_r(
15780        __seedval: ::std::os::raw::c_long,
15781        __buffer: *mut drand48_data,
15782    ) -> ::std::os::raw::c_int;
15783}
15784extern "C" {
15785    pub fn seed48_r(
15786        __seed16v: *mut ::std::os::raw::c_ushort,
15787        __buffer: *mut drand48_data,
15788    ) -> ::std::os::raw::c_int;
15789}
15790extern "C" {
15791    pub fn lcong48_r(
15792        __param: *mut ::std::os::raw::c_ushort,
15793        __buffer: *mut drand48_data,
15794    ) -> ::std::os::raw::c_int;
15795}
15796extern "C" {
15797    pub fn malloc(__size: ::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void;
15798}
15799extern "C" {
15800    pub fn calloc(
15801        __nmemb: ::std::os::raw::c_ulong,
15802        __size: ::std::os::raw::c_ulong,
15803    ) -> *mut ::std::os::raw::c_void;
15804}
15805extern "C" {
15806    pub fn realloc(
15807        __ptr: *mut ::std::os::raw::c_void,
15808        __size: ::std::os::raw::c_ulong,
15809    ) -> *mut ::std::os::raw::c_void;
15810}
15811extern "C" {
15812    pub fn reallocarray(
15813        __ptr: *mut ::std::os::raw::c_void,
15814        __nmemb: size_t,
15815        __size: size_t,
15816    ) -> *mut ::std::os::raw::c_void;
15817}
15818extern "C" {
15819    pub fn free(__ptr: *mut ::std::os::raw::c_void);
15820}
15821extern "C" {
15822    pub fn alloca(__size: ::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void;
15823}
15824extern "C" {
15825    pub fn valloc(__size: size_t) -> *mut ::std::os::raw::c_void;
15826}
15827extern "C" {
15828    pub fn posix_memalign(
15829        __memptr: *mut *mut ::std::os::raw::c_void,
15830        __alignment: size_t,
15831        __size: size_t,
15832    ) -> ::std::os::raw::c_int;
15833}
15834extern "C" {
15835    pub fn aligned_alloc(__alignment: size_t, __size: size_t) -> *mut ::std::os::raw::c_void;
15836}
15837extern "C" {
15838    pub fn abort() -> !;
15839}
15840extern "C" {
15841    pub fn atexit(__func: ::std::option::Option<unsafe extern "C" fn()>) -> ::std::os::raw::c_int;
15842}
15843extern "C" {
15844    pub fn at_quick_exit(
15845        __func: ::std::option::Option<unsafe extern "C" fn()>,
15846    ) -> ::std::os::raw::c_int;
15847}
15848extern "C" {
15849    pub fn on_exit(
15850        __func: ::std::option::Option<
15851            unsafe extern "C" fn(
15852                __status: ::std::os::raw::c_int,
15853                __arg: *mut ::std::os::raw::c_void,
15854            ),
15855        >,
15856        __arg: *mut ::std::os::raw::c_void,
15857    ) -> ::std::os::raw::c_int;
15858}
15859extern "C" {
15860    pub fn exit(__status: ::std::os::raw::c_int) -> !;
15861}
15862extern "C" {
15863    pub fn quick_exit(__status: ::std::os::raw::c_int) -> !;
15864}
15865extern "C" {
15866    pub fn _Exit(__status: ::std::os::raw::c_int) -> !;
15867}
15868extern "C" {
15869    pub fn getenv(__name: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
15870}
15871extern "C" {
15872    pub fn putenv(__string: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;
15873}
15874extern "C" {
15875    pub fn setenv(
15876        __name: *const ::std::os::raw::c_char,
15877        __value: *const ::std::os::raw::c_char,
15878        __replace: ::std::os::raw::c_int,
15879    ) -> ::std::os::raw::c_int;
15880}
15881extern "C" {
15882    pub fn unsetenv(__name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
15883}
15884extern "C" {
15885    pub fn clearenv() -> ::std::os::raw::c_int;
15886}
15887extern "C" {
15888    pub fn mktemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
15889}
15890extern "C" {
15891    pub fn mkstemp(__template: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;
15892}
15893extern "C" {
15894    pub fn mkstemps(
15895        __template: *mut ::std::os::raw::c_char,
15896        __suffixlen: ::std::os::raw::c_int,
15897    ) -> ::std::os::raw::c_int;
15898}
15899extern "C" {
15900    pub fn mkdtemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
15901}
15902extern "C" {
15903    pub fn system(__command: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
15904}
15905extern "C" {
15906    pub fn realpath(
15907        __name: *const ::std::os::raw::c_char,
15908        __resolved: *mut ::std::os::raw::c_char,
15909    ) -> *mut ::std::os::raw::c_char;
15910}
15911pub type __compar_fn_t = ::std::option::Option<
15912    unsafe extern "C" fn(
15913        arg1: *const ::std::os::raw::c_void,
15914        arg2: *const ::std::os::raw::c_void,
15915    ) -> ::std::os::raw::c_int,
15916>;
15917extern "C" {
15918    pub fn bsearch(
15919        __key: *const ::std::os::raw::c_void,
15920        __base: *const ::std::os::raw::c_void,
15921        __nmemb: size_t,
15922        __size: size_t,
15923        __compar: __compar_fn_t,
15924    ) -> *mut ::std::os::raw::c_void;
15925}
15926extern "C" {
15927    pub fn qsort(
15928        __base: *mut ::std::os::raw::c_void,
15929        __nmemb: size_t,
15930        __size: size_t,
15931        __compar: __compar_fn_t,
15932    );
15933}
15934extern "C" {
15935    pub fn abs(__x: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
15936}
15937extern "C" {
15938    pub fn labs(__x: ::std::os::raw::c_long) -> ::std::os::raw::c_long;
15939}
15940extern "C" {
15941    pub fn llabs(__x: ::std::os::raw::c_longlong) -> ::std::os::raw::c_longlong;
15942}
15943extern "C" {
15944    pub fn div(__numer: ::std::os::raw::c_int, __denom: ::std::os::raw::c_int) -> div_t;
15945}
15946extern "C" {
15947    pub fn ldiv(__numer: ::std::os::raw::c_long, __denom: ::std::os::raw::c_long) -> ldiv_t;
15948}
15949extern "C" {
15950    pub fn lldiv(
15951        __numer: ::std::os::raw::c_longlong,
15952        __denom: ::std::os::raw::c_longlong,
15953    ) -> lldiv_t;
15954}
15955extern "C" {
15956    pub fn ecvt(
15957        __value: f64,
15958        __ndigit: ::std::os::raw::c_int,
15959        __decpt: *mut ::std::os::raw::c_int,
15960        __sign: *mut ::std::os::raw::c_int,
15961    ) -> *mut ::std::os::raw::c_char;
15962}
15963extern "C" {
15964    pub fn fcvt(
15965        __value: f64,
15966        __ndigit: ::std::os::raw::c_int,
15967        __decpt: *mut ::std::os::raw::c_int,
15968        __sign: *mut ::std::os::raw::c_int,
15969    ) -> *mut ::std::os::raw::c_char;
15970}
15971extern "C" {
15972    pub fn gcvt(
15973        __value: f64,
15974        __ndigit: ::std::os::raw::c_int,
15975        __buf: *mut ::std::os::raw::c_char,
15976    ) -> *mut ::std::os::raw::c_char;
15977}
15978extern "C" {
15979    pub fn qecvt(
15980        __value: u128,
15981        __ndigit: ::std::os::raw::c_int,
15982        __decpt: *mut ::std::os::raw::c_int,
15983        __sign: *mut ::std::os::raw::c_int,
15984    ) -> *mut ::std::os::raw::c_char;
15985}
15986extern "C" {
15987    pub fn qfcvt(
15988        __value: u128,
15989        __ndigit: ::std::os::raw::c_int,
15990        __decpt: *mut ::std::os::raw::c_int,
15991        __sign: *mut ::std::os::raw::c_int,
15992    ) -> *mut ::std::os::raw::c_char;
15993}
15994extern "C" {
15995    pub fn qgcvt(
15996        __value: u128,
15997        __ndigit: ::std::os::raw::c_int,
15998        __buf: *mut ::std::os::raw::c_char,
15999    ) -> *mut ::std::os::raw::c_char;
16000}
16001extern "C" {
16002    pub fn ecvt_r(
16003        __value: f64,
16004        __ndigit: ::std::os::raw::c_int,
16005        __decpt: *mut ::std::os::raw::c_int,
16006        __sign: *mut ::std::os::raw::c_int,
16007        __buf: *mut ::std::os::raw::c_char,
16008        __len: size_t,
16009    ) -> ::std::os::raw::c_int;
16010}
16011extern "C" {
16012    pub fn fcvt_r(
16013        __value: f64,
16014        __ndigit: ::std::os::raw::c_int,
16015        __decpt: *mut ::std::os::raw::c_int,
16016        __sign: *mut ::std::os::raw::c_int,
16017        __buf: *mut ::std::os::raw::c_char,
16018        __len: size_t,
16019    ) -> ::std::os::raw::c_int;
16020}
16021extern "C" {
16022    pub fn qecvt_r(
16023        __value: u128,
16024        __ndigit: ::std::os::raw::c_int,
16025        __decpt: *mut ::std::os::raw::c_int,
16026        __sign: *mut ::std::os::raw::c_int,
16027        __buf: *mut ::std::os::raw::c_char,
16028        __len: size_t,
16029    ) -> ::std::os::raw::c_int;
16030}
16031extern "C" {
16032    pub fn qfcvt_r(
16033        __value: u128,
16034        __ndigit: ::std::os::raw::c_int,
16035        __decpt: *mut ::std::os::raw::c_int,
16036        __sign: *mut ::std::os::raw::c_int,
16037        __buf: *mut ::std::os::raw::c_char,
16038        __len: size_t,
16039    ) -> ::std::os::raw::c_int;
16040}
16041extern "C" {
16042    pub fn mblen(__s: *const ::std::os::raw::c_char, __n: size_t) -> ::std::os::raw::c_int;
16043}
16044extern "C" {
16045    pub fn mbtowc(
16046        __pwc: *mut wchar_t,
16047        __s: *const ::std::os::raw::c_char,
16048        __n: size_t,
16049    ) -> ::std::os::raw::c_int;
16050}
16051extern "C" {
16052    pub fn wctomb(__s: *mut ::std::os::raw::c_char, __wchar: wchar_t) -> ::std::os::raw::c_int;
16053}
16054extern "C" {
16055    pub fn mbstowcs(
16056        __pwcs: *mut wchar_t,
16057        __s: *const ::std::os::raw::c_char,
16058        __n: size_t,
16059    ) -> size_t;
16060}
16061extern "C" {
16062    pub fn wcstombs(
16063        __s: *mut ::std::os::raw::c_char,
16064        __pwcs: *const wchar_t,
16065        __n: size_t,
16066    ) -> size_t;
16067}
16068extern "C" {
16069    pub fn rpmatch(__response: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
16070}
16071extern "C" {
16072    pub fn getsubopt(
16073        __optionp: *mut *mut ::std::os::raw::c_char,
16074        __tokens: *const *mut ::std::os::raw::c_char,
16075        __valuep: *mut *mut ::std::os::raw::c_char,
16076    ) -> ::std::os::raw::c_int;
16077}
16078extern "C" {
16079    pub fn getloadavg(__loadavg: *mut f64, __nelem: ::std::os::raw::c_int)
16080        -> ::std::os::raw::c_int;
16081}
16082extern "C" {
16083    pub fn Tss2_TctiLdr_Finalize(context: *mut *mut TSS2_TCTI_CONTEXT);
16084}
16085extern "C" {
16086    pub fn Tss2_TctiLdr_Initialize_Ex(
16087        name: *const ::std::os::raw::c_char,
16088        conf: *const ::std::os::raw::c_char,
16089        context: *mut *mut TSS2_TCTI_CONTEXT,
16090    ) -> TSS2_RC;
16091}
16092extern "C" {
16093    pub fn Tss2_TctiLdr_Initialize(
16094        nameConf: *const ::std::os::raw::c_char,
16095        context: *mut *mut TSS2_TCTI_CONTEXT,
16096    ) -> TSS2_RC;
16097}
16098extern "C" {
16099    pub fn Tss2_TctiLdr_GetInfo(
16100        name: *const ::std::os::raw::c_char,
16101        info: *mut *mut TSS2_TCTI_INFO,
16102    ) -> TSS2_RC;
16103}
16104extern "C" {
16105    pub fn Tss2_TctiLdr_FreeInfo(info: *mut *mut TSS2_TCTI_INFO);
16106}
16107extern "C" {
16108    pub fn Tss2_MU_BYTE_Marshal(
16109        src: BYTE,
16110        buffer: *mut u8,
16111        buffer_size: size_t,
16112        offset: *mut size_t,
16113    ) -> TSS2_RC;
16114}
16115extern "C" {
16116    pub fn Tss2_MU_BYTE_Unmarshal(
16117        buffer: *const u8,
16118        buffer_size: size_t,
16119        offset: *mut size_t,
16120        dest: *mut BYTE,
16121    ) -> TSS2_RC;
16122}
16123extern "C" {
16124    pub fn Tss2_MU_INT8_Marshal(
16125        src: INT8,
16126        buffer: *mut u8,
16127        buffer_size: size_t,
16128        offset: *mut size_t,
16129    ) -> TSS2_RC;
16130}
16131extern "C" {
16132    pub fn Tss2_MU_INT8_Unmarshal(
16133        buffer: *const u8,
16134        buffer_size: size_t,
16135        offset: *mut size_t,
16136        dest: *mut INT8,
16137    ) -> TSS2_RC;
16138}
16139extern "C" {
16140    pub fn Tss2_MU_INT16_Marshal(
16141        src: INT16,
16142        buffer: *mut u8,
16143        buffer_size: size_t,
16144        offset: *mut size_t,
16145    ) -> TSS2_RC;
16146}
16147extern "C" {
16148    pub fn Tss2_MU_INT16_Unmarshal(
16149        buffer: *const u8,
16150        buffer_size: size_t,
16151        offset: *mut size_t,
16152        dest: *mut INT16,
16153    ) -> TSS2_RC;
16154}
16155extern "C" {
16156    pub fn Tss2_MU_INT32_Marshal(
16157        src: INT32,
16158        buffer: *mut u8,
16159        buffer_size: size_t,
16160        offset: *mut size_t,
16161    ) -> TSS2_RC;
16162}
16163extern "C" {
16164    pub fn Tss2_MU_INT32_Unmarshal(
16165        buffer: *const u8,
16166        buffer_size: size_t,
16167        offset: *mut size_t,
16168        dest: *mut INT32,
16169    ) -> TSS2_RC;
16170}
16171extern "C" {
16172    pub fn Tss2_MU_INT64_Marshal(
16173        src: INT64,
16174        buffer: *mut u8,
16175        buffer_size: size_t,
16176        offset: *mut size_t,
16177    ) -> TSS2_RC;
16178}
16179extern "C" {
16180    pub fn Tss2_MU_INT64_Unmarshal(
16181        buffer: *const u8,
16182        buffer_size: size_t,
16183        offset: *mut size_t,
16184        dest: *mut INT64,
16185    ) -> TSS2_RC;
16186}
16187extern "C" {
16188    pub fn Tss2_MU_UINT8_Marshal(
16189        src: UINT8,
16190        buffer: *mut u8,
16191        buffer_size: size_t,
16192        offset: *mut size_t,
16193    ) -> TSS2_RC;
16194}
16195extern "C" {
16196    pub fn Tss2_MU_UINT8_Unmarshal(
16197        buffer: *const u8,
16198        buffer_size: size_t,
16199        offset: *mut size_t,
16200        dest: *mut UINT8,
16201    ) -> TSS2_RC;
16202}
16203extern "C" {
16204    pub fn Tss2_MU_UINT16_Marshal(
16205        src: UINT16,
16206        buffer: *mut u8,
16207        buffer_size: size_t,
16208        offset: *mut size_t,
16209    ) -> TSS2_RC;
16210}
16211extern "C" {
16212    pub fn Tss2_MU_UINT16_Unmarshal(
16213        buffer: *const u8,
16214        buffer_size: size_t,
16215        offset: *mut size_t,
16216        dest: *mut UINT16,
16217    ) -> TSS2_RC;
16218}
16219extern "C" {
16220    pub fn Tss2_MU_UINT32_Marshal(
16221        src: UINT32,
16222        buffer: *mut u8,
16223        buffer_size: size_t,
16224        offset: *mut size_t,
16225    ) -> TSS2_RC;
16226}
16227extern "C" {
16228    pub fn Tss2_MU_UINT32_Unmarshal(
16229        buffer: *const u8,
16230        buffer_size: size_t,
16231        offset: *mut size_t,
16232        dest: *mut UINT32,
16233    ) -> TSS2_RC;
16234}
16235extern "C" {
16236    pub fn Tss2_MU_UINT64_Marshal(
16237        src: UINT64,
16238        buffer: *mut u8,
16239        buffer_size: size_t,
16240        offset: *mut size_t,
16241    ) -> TSS2_RC;
16242}
16243extern "C" {
16244    pub fn Tss2_MU_UINT64_Unmarshal(
16245        buffer: *const u8,
16246        buffer_size: size_t,
16247        offset: *mut size_t,
16248        dest: *mut UINT64,
16249    ) -> TSS2_RC;
16250}
16251extern "C" {
16252    pub fn Tss2_MU_TPM2_CC_Marshal(
16253        src: TPM2_CC,
16254        buffer: *mut u8,
16255        buffer_size: size_t,
16256        offset: *mut size_t,
16257    ) -> TSS2_RC;
16258}
16259extern "C" {
16260    pub fn Tss2_MU_TPM2_CC_Unmarshal(
16261        buffer: *const u8,
16262        buffer_size: size_t,
16263        offset: *mut size_t,
16264        dest: *mut TPM2_CC,
16265    ) -> TSS2_RC;
16266}
16267extern "C" {
16268    pub fn Tss2_MU_TPM2_ST_Marshal(
16269        src: TPM2_ST,
16270        buffer: *mut u8,
16271        buffer_size: size_t,
16272        offset: *mut size_t,
16273    ) -> TSS2_RC;
16274}
16275extern "C" {
16276    pub fn Tss2_MU_TPM2_ST_Unmarshal(
16277        buffer: *const u8,
16278        buffer_size: size_t,
16279        offset: *mut size_t,
16280        dest: *mut TPM2_ST,
16281    ) -> TSS2_RC;
16282}
16283extern "C" {
16284    pub fn Tss2_MU_TPMA_ALGORITHM_Marshal(
16285        src: TPMA_ALGORITHM,
16286        buffer: *mut u8,
16287        buffer_size: size_t,
16288        offset: *mut size_t,
16289    ) -> TSS2_RC;
16290}
16291extern "C" {
16292    pub fn Tss2_MU_TPMA_ALGORITHM_Unmarshal(
16293        buffer: *const u8,
16294        buffer_size: size_t,
16295        offset: *mut size_t,
16296        dest: *mut TPMA_ALGORITHM,
16297    ) -> TSS2_RC;
16298}
16299extern "C" {
16300    pub fn Tss2_MU_TPMA_CC_Marshal(
16301        src: TPMA_CC,
16302        buffer: *mut u8,
16303        buffer_size: size_t,
16304        offset: *mut size_t,
16305    ) -> TSS2_RC;
16306}
16307extern "C" {
16308    pub fn Tss2_MU_TPMA_CC_Unmarshal(
16309        buffer: *const u8,
16310        buffer_size: size_t,
16311        offset: *mut size_t,
16312        dest: *mut TPMA_CC,
16313    ) -> TSS2_RC;
16314}
16315extern "C" {
16316    pub fn Tss2_MU_TPMA_LOCALITY_Marshal(
16317        src: TPMA_LOCALITY,
16318        buffer: *mut u8,
16319        buffer_size: size_t,
16320        offset: *mut size_t,
16321    ) -> TSS2_RC;
16322}
16323extern "C" {
16324    pub fn Tss2_MU_TPMA_LOCALITY_Unmarshal(
16325        buffer: *const u8,
16326        buffer_size: size_t,
16327        offset: *mut size_t,
16328        dest: *mut TPMA_LOCALITY,
16329    ) -> TSS2_RC;
16330}
16331extern "C" {
16332    pub fn Tss2_MU_TPMA_NV_Marshal(
16333        src: TPMA_NV,
16334        buffer: *mut u8,
16335        buffer_size: size_t,
16336        offset: *mut size_t,
16337    ) -> TSS2_RC;
16338}
16339extern "C" {
16340    pub fn Tss2_MU_TPMA_NV_Unmarshal(
16341        buffer: *const u8,
16342        buffer_size: size_t,
16343        offset: *mut size_t,
16344        dest: *mut TPMA_NV,
16345    ) -> TSS2_RC;
16346}
16347extern "C" {
16348    pub fn Tss2_MU_TPMA_OBJECT_Marshal(
16349        src: TPMA_OBJECT,
16350        buffer: *mut u8,
16351        buffer_size: size_t,
16352        offset: *mut size_t,
16353    ) -> TSS2_RC;
16354}
16355extern "C" {
16356    pub fn Tss2_MU_TPMA_OBJECT_Unmarshal(
16357        buffer: *const u8,
16358        buffer_size: size_t,
16359        offset: *mut size_t,
16360        dest: *mut TPMA_OBJECT,
16361    ) -> TSS2_RC;
16362}
16363extern "C" {
16364    pub fn Tss2_MU_TPMA_PERMANENT_Marshal(
16365        src: TPMA_PERMANENT,
16366        buffer: *mut u8,
16367        buffer_size: size_t,
16368        offset: *mut size_t,
16369    ) -> TSS2_RC;
16370}
16371extern "C" {
16372    pub fn Tss2_MU_TPMA_PERMANENT_Unmarshal(
16373        buffer: *const u8,
16374        buffer_size: size_t,
16375        offset: *mut size_t,
16376        dest: *mut TPMA_PERMANENT,
16377    ) -> TSS2_RC;
16378}
16379extern "C" {
16380    pub fn Tss2_MU_TPMA_SESSION_Marshal(
16381        src: TPMA_SESSION,
16382        buffer: *mut u8,
16383        buffer_size: size_t,
16384        offset: *mut size_t,
16385    ) -> TSS2_RC;
16386}
16387extern "C" {
16388    pub fn Tss2_MU_TPMA_SESSION_Unmarshal(
16389        buffer: *const u8,
16390        buffer_size: size_t,
16391        offset: *mut size_t,
16392        dest: *mut TPMA_SESSION,
16393    ) -> TSS2_RC;
16394}
16395extern "C" {
16396    pub fn Tss2_MU_TPMA_STARTUP_CLEAR_Marshal(
16397        src: TPMA_STARTUP_CLEAR,
16398        buffer: *mut u8,
16399        buffer_size: size_t,
16400        offset: *mut size_t,
16401    ) -> TSS2_RC;
16402}
16403extern "C" {
16404    pub fn Tss2_MU_TPMA_STARTUP_CLEAR_Unmarshal(
16405        buffer: *const u8,
16406        buffer_size: size_t,
16407        offset: *mut size_t,
16408        dest: *mut TPMA_STARTUP_CLEAR,
16409    ) -> TSS2_RC;
16410}
16411extern "C" {
16412    pub fn Tss2_MU_TPM2B_DIGEST_Marshal(
16413        src: *const TPM2B_DIGEST,
16414        buffer: *mut u8,
16415        buffer_size: size_t,
16416        offset: *mut size_t,
16417    ) -> TSS2_RC;
16418}
16419extern "C" {
16420    pub fn Tss2_MU_TPM2B_DIGEST_Unmarshal(
16421        buffer: *const u8,
16422        buffer_size: size_t,
16423        offset: *mut size_t,
16424        dest: *mut TPM2B_DIGEST,
16425    ) -> TSS2_RC;
16426}
16427extern "C" {
16428    pub fn Tss2_MU_TPM2B_ATTEST_Marshal(
16429        src: *const TPM2B_ATTEST,
16430        buffer: *mut u8,
16431        buffer_size: size_t,
16432        offset: *mut size_t,
16433    ) -> TSS2_RC;
16434}
16435extern "C" {
16436    pub fn Tss2_MU_TPM2B_ATTEST_Unmarshal(
16437        buffer: *const u8,
16438        buffer_size: size_t,
16439        offset: *mut size_t,
16440        dest: *mut TPM2B_ATTEST,
16441    ) -> TSS2_RC;
16442}
16443extern "C" {
16444    pub fn Tss2_MU_TPM2B_NAME_Marshal(
16445        src: *const TPM2B_NAME,
16446        buffer: *mut u8,
16447        buffer_size: size_t,
16448        offset: *mut size_t,
16449    ) -> TSS2_RC;
16450}
16451extern "C" {
16452    pub fn Tss2_MU_TPM2B_NAME_Unmarshal(
16453        buffer: *const u8,
16454        buffer_size: size_t,
16455        offset: *mut size_t,
16456        dest: *mut TPM2B_NAME,
16457    ) -> TSS2_RC;
16458}
16459extern "C" {
16460    pub fn Tss2_MU_TPM2B_MAX_NV_BUFFER_Marshal(
16461        src: *const TPM2B_MAX_NV_BUFFER,
16462        buffer: *mut u8,
16463        buffer_size: size_t,
16464        offset: *mut size_t,
16465    ) -> TSS2_RC;
16466}
16467extern "C" {
16468    pub fn Tss2_MU_TPM2B_MAX_NV_BUFFER_Unmarshal(
16469        buffer: *const u8,
16470        buffer_size: size_t,
16471        offset: *mut size_t,
16472        dest: *mut TPM2B_MAX_NV_BUFFER,
16473    ) -> TSS2_RC;
16474}
16475extern "C" {
16476    pub fn Tss2_MU_TPM2B_SENSITIVE_DATA_Marshal(
16477        src: *const TPM2B_SENSITIVE_DATA,
16478        buffer: *mut u8,
16479        buffer_size: size_t,
16480        offset: *mut size_t,
16481    ) -> TSS2_RC;
16482}
16483extern "C" {
16484    pub fn Tss2_MU_TPM2B_SENSITIVE_DATA_Unmarshal(
16485        buffer: *const u8,
16486        buffer_size: size_t,
16487        offset: *mut size_t,
16488        dest: *mut TPM2B_SENSITIVE_DATA,
16489    ) -> TSS2_RC;
16490}
16491extern "C" {
16492    pub fn Tss2_MU_TPM2B_ECC_PARAMETER_Marshal(
16493        src: *const TPM2B_ECC_PARAMETER,
16494        buffer: *mut u8,
16495        buffer_size: size_t,
16496        offset: *mut size_t,
16497    ) -> TSS2_RC;
16498}
16499extern "C" {
16500    pub fn Tss2_MU_TPM2B_ECC_PARAMETER_Unmarshal(
16501        buffer: *const u8,
16502        buffer_size: size_t,
16503        offset: *mut size_t,
16504        dest: *mut TPM2B_ECC_PARAMETER,
16505    ) -> TSS2_RC;
16506}
16507extern "C" {
16508    pub fn Tss2_MU_TPM2B_PUBLIC_KEY_RSA_Marshal(
16509        src: *const TPM2B_PUBLIC_KEY_RSA,
16510        buffer: *mut u8,
16511        buffer_size: size_t,
16512        offset: *mut size_t,
16513    ) -> TSS2_RC;
16514}
16515extern "C" {
16516    pub fn Tss2_MU_TPM2B_PUBLIC_KEY_RSA_Unmarshal(
16517        buffer: *const u8,
16518        buffer_size: size_t,
16519        offset: *mut size_t,
16520        dest: *mut TPM2B_PUBLIC_KEY_RSA,
16521    ) -> TSS2_RC;
16522}
16523extern "C" {
16524    pub fn Tss2_MU_TPM2B_PRIVATE_KEY_RSA_Marshal(
16525        src: *const TPM2B_PRIVATE_KEY_RSA,
16526        buffer: *mut u8,
16527        buffer_size: size_t,
16528        offset: *mut size_t,
16529    ) -> TSS2_RC;
16530}
16531extern "C" {
16532    pub fn Tss2_MU_TPM2B_PRIVATE_KEY_RSA_Unmarshal(
16533        buffer: *const u8,
16534        buffer_size: size_t,
16535        offset: *mut size_t,
16536        dest: *mut TPM2B_PRIVATE_KEY_RSA,
16537    ) -> TSS2_RC;
16538}
16539extern "C" {
16540    pub fn Tss2_MU_TPM2B_PRIVATE_Marshal(
16541        src: *const TPM2B_PRIVATE,
16542        buffer: *mut u8,
16543        buffer_size: size_t,
16544        offset: *mut size_t,
16545    ) -> TSS2_RC;
16546}
16547extern "C" {
16548    pub fn Tss2_MU_TPM2B_PRIVATE_Unmarshal(
16549        buffer: *const u8,
16550        buffer_size: size_t,
16551        offset: *mut size_t,
16552        dest: *mut TPM2B_PRIVATE,
16553    ) -> TSS2_RC;
16554}
16555extern "C" {
16556    pub fn Tss2_MU_TPM2B_CONTEXT_SENSITIVE_Marshal(
16557        src: *const TPM2B_CONTEXT_SENSITIVE,
16558        buffer: *mut u8,
16559        buffer_size: size_t,
16560        offset: *mut size_t,
16561    ) -> TSS2_RC;
16562}
16563extern "C" {
16564    pub fn Tss2_MU_TPM2B_CONTEXT_SENSITIVE_Unmarshal(
16565        buffer: *const u8,
16566        buffer_size: size_t,
16567        offset: *mut size_t,
16568        dest: *mut TPM2B_CONTEXT_SENSITIVE,
16569    ) -> TSS2_RC;
16570}
16571extern "C" {
16572    pub fn Tss2_MU_TPM2B_CONTEXT_DATA_Marshal(
16573        src: *const TPM2B_CONTEXT_DATA,
16574        buffer: *mut u8,
16575        buffer_size: size_t,
16576        offset: *mut size_t,
16577    ) -> TSS2_RC;
16578}
16579extern "C" {
16580    pub fn Tss2_MU_TPM2B_CONTEXT_DATA_Unmarshal(
16581        buffer: *const u8,
16582        buffer_size: size_t,
16583        offset: *mut size_t,
16584        dest: *mut TPM2B_CONTEXT_DATA,
16585    ) -> TSS2_RC;
16586}
16587extern "C" {
16588    pub fn Tss2_MU_TPM2B_DATA_Marshal(
16589        src: *const TPM2B_DATA,
16590        buffer: *mut u8,
16591        buffer_size: size_t,
16592        offset: *mut size_t,
16593    ) -> TSS2_RC;
16594}
16595extern "C" {
16596    pub fn Tss2_MU_TPM2B_DATA_Unmarshal(
16597        buffer: *const u8,
16598        buffer_size: size_t,
16599        offset: *mut size_t,
16600        dest: *mut TPM2B_DATA,
16601    ) -> TSS2_RC;
16602}
16603extern "C" {
16604    pub fn Tss2_MU_TPM2B_SYM_KEY_Marshal(
16605        src: *const TPM2B_SYM_KEY,
16606        buffer: *mut u8,
16607        buffer_size: size_t,
16608        offset: *mut size_t,
16609    ) -> TSS2_RC;
16610}
16611extern "C" {
16612    pub fn Tss2_MU_TPM2B_SYM_KEY_Unmarshal(
16613        buffer: *const u8,
16614        buffer_size: size_t,
16615        offset: *mut size_t,
16616        dest: *mut TPM2B_SYM_KEY,
16617    ) -> TSS2_RC;
16618}
16619extern "C" {
16620    pub fn Tss2_MU_TPM2B_ECC_POINT_Marshal(
16621        src: *const TPM2B_ECC_POINT,
16622        buffer: *mut u8,
16623        buffer_size: size_t,
16624        offset: *mut size_t,
16625    ) -> TSS2_RC;
16626}
16627extern "C" {
16628    pub fn Tss2_MU_TPM2B_ECC_POINT_Unmarshal(
16629        buffer: *const u8,
16630        buffer_size: size_t,
16631        offset: *mut size_t,
16632        dest: *mut TPM2B_ECC_POINT,
16633    ) -> TSS2_RC;
16634}
16635extern "C" {
16636    pub fn Tss2_MU_TPM2B_NV_PUBLIC_Marshal(
16637        src: *const TPM2B_NV_PUBLIC,
16638        buffer: *mut u8,
16639        buffer_size: size_t,
16640        offset: *mut size_t,
16641    ) -> TSS2_RC;
16642}
16643extern "C" {
16644    pub fn Tss2_MU_TPM2B_NV_PUBLIC_Unmarshal(
16645        buffer: *const u8,
16646        buffer_size: size_t,
16647        offset: *mut size_t,
16648        dest: *mut TPM2B_NV_PUBLIC,
16649    ) -> TSS2_RC;
16650}
16651extern "C" {
16652    pub fn Tss2_MU_TPM2B_SENSITIVE_Marshal(
16653        src: *const TPM2B_SENSITIVE,
16654        buffer: *mut u8,
16655        buffer_size: size_t,
16656        offset: *mut size_t,
16657    ) -> TSS2_RC;
16658}
16659extern "C" {
16660    pub fn Tss2_MU_TPM2B_SENSITIVE_Unmarshal(
16661        buffer: *const u8,
16662        buffer_size: size_t,
16663        offset: *mut size_t,
16664        dest: *mut TPM2B_SENSITIVE,
16665    ) -> TSS2_RC;
16666}
16667extern "C" {
16668    pub fn Tss2_MU_TPM2B_SENSITIVE_CREATE_Marshal(
16669        src: *const TPM2B_SENSITIVE_CREATE,
16670        buffer: *mut u8,
16671        buffer_size: size_t,
16672        offset: *mut size_t,
16673    ) -> TSS2_RC;
16674}
16675extern "C" {
16676    pub fn Tss2_MU_TPM2B_SENSITIVE_CREATE_Unmarshal(
16677        buffer: *const u8,
16678        buffer_size: size_t,
16679        offset: *mut size_t,
16680        dest: *mut TPM2B_SENSITIVE_CREATE,
16681    ) -> TSS2_RC;
16682}
16683extern "C" {
16684    pub fn Tss2_MU_TPM2B_CREATION_DATA_Marshal(
16685        src: *const TPM2B_CREATION_DATA,
16686        buffer: *mut u8,
16687        buffer_size: size_t,
16688        offset: *mut size_t,
16689    ) -> TSS2_RC;
16690}
16691extern "C" {
16692    pub fn Tss2_MU_TPM2B_CREATION_DATA_Unmarshal(
16693        buffer: *const u8,
16694        buffer_size: size_t,
16695        offset: *mut size_t,
16696        dest: *mut TPM2B_CREATION_DATA,
16697    ) -> TSS2_RC;
16698}
16699extern "C" {
16700    pub fn Tss2_MU_TPM2B_PUBLIC_Marshal(
16701        src: *const TPM2B_PUBLIC,
16702        buffer: *mut u8,
16703        buffer_size: size_t,
16704        offset: *mut size_t,
16705    ) -> TSS2_RC;
16706}
16707extern "C" {
16708    pub fn Tss2_MU_TPM2B_PUBLIC_Unmarshal(
16709        buffer: *const u8,
16710        buffer_size: size_t,
16711        offset: *mut size_t,
16712        dest: *mut TPM2B_PUBLIC,
16713    ) -> TSS2_RC;
16714}
16715extern "C" {
16716    pub fn Tss2_MU_TPM2B_ENCRYPTED_SECRET_Marshal(
16717        src: *const TPM2B_ENCRYPTED_SECRET,
16718        buffer: *mut u8,
16719        buffer_size: size_t,
16720        offset: *mut size_t,
16721    ) -> TSS2_RC;
16722}
16723extern "C" {
16724    pub fn Tss2_MU_TPM2B_ENCRYPTED_SECRET_Unmarshal(
16725        buffer: *const u8,
16726        buffer_size: size_t,
16727        offset: *mut size_t,
16728        dest: *mut TPM2B_ENCRYPTED_SECRET,
16729    ) -> TSS2_RC;
16730}
16731extern "C" {
16732    pub fn Tss2_MU_TPM2B_ID_OBJECT_Marshal(
16733        src: *const TPM2B_ID_OBJECT,
16734        buffer: *mut u8,
16735        buffer_size: size_t,
16736        offset: *mut size_t,
16737    ) -> TSS2_RC;
16738}
16739extern "C" {
16740    pub fn Tss2_MU_TPM2B_ID_OBJECT_Unmarshal(
16741        buffer: *const u8,
16742        buffer_size: size_t,
16743        offset: *mut size_t,
16744        dest: *mut TPM2B_ID_OBJECT,
16745    ) -> TSS2_RC;
16746}
16747extern "C" {
16748    pub fn Tss2_MU_TPM2B_IV_Marshal(
16749        src: *const TPM2B_IV,
16750        buffer: *mut u8,
16751        buffer_size: size_t,
16752        offset: *mut size_t,
16753    ) -> TSS2_RC;
16754}
16755extern "C" {
16756    pub fn Tss2_MU_TPM2B_IV_Unmarshal(
16757        buffer: *const u8,
16758        buffer_size: size_t,
16759        offset: *mut size_t,
16760        dest: *mut TPM2B_IV,
16761    ) -> TSS2_RC;
16762}
16763extern "C" {
16764    pub fn Tss2_MU_TPM2B_AUTH_Marshal(
16765        src: *const TPM2B_AUTH,
16766        buffer: *mut u8,
16767        buffer_size: size_t,
16768        offset: *mut size_t,
16769    ) -> TSS2_RC;
16770}
16771extern "C" {
16772    pub fn Tss2_MU_TPM2B_AUTH_Unmarshal(
16773        buffer: *const u8,
16774        buffer_size: size_t,
16775        offset: *mut size_t,
16776        dest: *mut TPM2B_AUTH,
16777    ) -> TSS2_RC;
16778}
16779extern "C" {
16780    pub fn Tss2_MU_TPM2B_EVENT_Marshal(
16781        src: *const TPM2B_EVENT,
16782        buffer: *mut u8,
16783        buffer_size: size_t,
16784        offset: *mut size_t,
16785    ) -> TSS2_RC;
16786}
16787extern "C" {
16788    pub fn Tss2_MU_TPM2B_EVENT_Unmarshal(
16789        buffer: *const u8,
16790        buffer_size: size_t,
16791        offset: *mut size_t,
16792        dest: *mut TPM2B_EVENT,
16793    ) -> TSS2_RC;
16794}
16795extern "C" {
16796    pub fn Tss2_MU_TPM2B_MAX_BUFFER_Marshal(
16797        src: *const TPM2B_MAX_BUFFER,
16798        buffer: *mut u8,
16799        buffer_size: size_t,
16800        offset: *mut size_t,
16801    ) -> TSS2_RC;
16802}
16803extern "C" {
16804    pub fn Tss2_MU_TPM2B_MAX_BUFFER_Unmarshal(
16805        buffer: *const u8,
16806        buffer_size: size_t,
16807        offset: *mut size_t,
16808        dest: *mut TPM2B_MAX_BUFFER,
16809    ) -> TSS2_RC;
16810}
16811extern "C" {
16812    pub fn Tss2_MU_TPM2B_NONCE_Marshal(
16813        src: *const TPM2B_NONCE,
16814        buffer: *mut u8,
16815        buffer_size: size_t,
16816        offset: *mut size_t,
16817    ) -> TSS2_RC;
16818}
16819extern "C" {
16820    pub fn Tss2_MU_TPM2B_NONCE_Unmarshal(
16821        buffer: *const u8,
16822        buffer_size: size_t,
16823        offset: *mut size_t,
16824        dest: *mut TPM2B_NONCE,
16825    ) -> TSS2_RC;
16826}
16827extern "C" {
16828    pub fn Tss2_MU_TPM2B_OPERAND_Marshal(
16829        src: *const TPM2B_OPERAND,
16830        buffer: *mut u8,
16831        buffer_size: size_t,
16832        offset: *mut size_t,
16833    ) -> TSS2_RC;
16834}
16835extern "C" {
16836    pub fn Tss2_MU_TPM2B_OPERAND_Unmarshal(
16837        buffer: *const u8,
16838        buffer_size: size_t,
16839        offset: *mut size_t,
16840        dest: *mut TPM2B_OPERAND,
16841    ) -> TSS2_RC;
16842}
16843extern "C" {
16844    pub fn Tss2_MU_TPM2B_TIMEOUT_Marshal(
16845        src: *const TPM2B_TIMEOUT,
16846        buffer: *mut u8,
16847        buffer_size: size_t,
16848        offset: *mut size_t,
16849    ) -> TSS2_RC;
16850}
16851extern "C" {
16852    pub fn Tss2_MU_TPM2B_TIMEOUT_Unmarshal(
16853        buffer: *const u8,
16854        buffer_size: size_t,
16855        offset: *mut size_t,
16856        dest: *mut TPM2B_TIMEOUT,
16857    ) -> TSS2_RC;
16858}
16859extern "C" {
16860    pub fn Tss2_MU_TPM2B_TEMPLATE_Marshal(
16861        src: *const TPM2B_TEMPLATE,
16862        buffer: *mut u8,
16863        buffer_size: size_t,
16864        offset: *mut size_t,
16865    ) -> TSS2_RC;
16866}
16867extern "C" {
16868    pub fn Tss2_MU_TPM2B_TEMPLATE_Unmarshal(
16869        buffer: *const u8,
16870        buffer_size: size_t,
16871        offset: *mut size_t,
16872        dest: *mut TPM2B_TEMPLATE,
16873    ) -> TSS2_RC;
16874}
16875extern "C" {
16876    pub fn Tss2_MU_TPMS_CONTEXT_Marshal(
16877        src: *const TPMS_CONTEXT,
16878        buffer: *mut u8,
16879        buffer_size: size_t,
16880        offset: *mut size_t,
16881    ) -> TSS2_RC;
16882}
16883extern "C" {
16884    pub fn Tss2_MU_TPMS_CONTEXT_Unmarshal(
16885        buffer: *const u8,
16886        buffer_size: size_t,
16887        offset: *mut size_t,
16888        dest: *mut TPMS_CONTEXT,
16889    ) -> TSS2_RC;
16890}
16891extern "C" {
16892    pub fn Tss2_MU_TPMS_TIME_INFO_Marshal(
16893        src: *const TPMS_TIME_INFO,
16894        buffer: *mut u8,
16895        buffer_size: size_t,
16896        offset: *mut size_t,
16897    ) -> TSS2_RC;
16898}
16899extern "C" {
16900    pub fn Tss2_MU_TPMS_TIME_INFO_Unmarshal(
16901        buffer: *const u8,
16902        buffer_size: size_t,
16903        offset: *mut size_t,
16904        dest: *mut TPMS_TIME_INFO,
16905    ) -> TSS2_RC;
16906}
16907extern "C" {
16908    pub fn Tss2_MU_TPMS_ECC_POINT_Marshal(
16909        src: *const TPMS_ECC_POINT,
16910        buffer: *mut u8,
16911        buffer_size: size_t,
16912        offset: *mut size_t,
16913    ) -> TSS2_RC;
16914}
16915extern "C" {
16916    pub fn Tss2_MU_TPMS_ECC_POINT_Unmarshal(
16917        buffer: *const u8,
16918        buffer_size: size_t,
16919        offset: *mut size_t,
16920        dest: *mut TPMS_ECC_POINT,
16921    ) -> TSS2_RC;
16922}
16923extern "C" {
16924    pub fn Tss2_MU_TPMS_NV_PUBLIC_Marshal(
16925        src: *const TPMS_NV_PUBLIC,
16926        buffer: *mut u8,
16927        buffer_size: size_t,
16928        offset: *mut size_t,
16929    ) -> TSS2_RC;
16930}
16931extern "C" {
16932    pub fn Tss2_MU_TPMS_NV_PUBLIC_Unmarshal(
16933        buffer: *const u8,
16934        buffer_size: size_t,
16935        offset: *mut size_t,
16936        dest: *mut TPMS_NV_PUBLIC,
16937    ) -> TSS2_RC;
16938}
16939extern "C" {
16940    pub fn Tss2_MU_TPMS_ALG_PROPERTY_Marshal(
16941        src: *const TPMS_ALG_PROPERTY,
16942        buffer: *mut u8,
16943        buffer_size: size_t,
16944        offset: *mut size_t,
16945    ) -> TSS2_RC;
16946}
16947extern "C" {
16948    pub fn Tss2_MU_TPMS_ALG_PROPERTY_Unmarshal(
16949        buffer: *const u8,
16950        buffer_size: size_t,
16951        offset: *mut size_t,
16952        dest: *mut TPMS_ALG_PROPERTY,
16953    ) -> TSS2_RC;
16954}
16955extern "C" {
16956    pub fn Tss2_MU_TPMS_ALGORITHM_DESCRIPTION_Marshal(
16957        src: *const TPMS_ALGORITHM_DESCRIPTION,
16958        buffer: *mut u8,
16959        buffer_size: size_t,
16960        offset: *mut size_t,
16961    ) -> TSS2_RC;
16962}
16963extern "C" {
16964    pub fn Tss2_MU_TPMS_ALGORITHM_DESCRIPTION_Unmarshal(
16965        buffer: *const u8,
16966        buffer_size: size_t,
16967        offset: *mut size_t,
16968        dest: *mut TPMS_ALGORITHM_DESCRIPTION,
16969    ) -> TSS2_RC;
16970}
16971extern "C" {
16972    pub fn Tss2_MU_TPMS_TAGGED_PROPERTY_Marshal(
16973        src: *const TPMS_TAGGED_PROPERTY,
16974        buffer: *mut u8,
16975        buffer_size: size_t,
16976        offset: *mut size_t,
16977    ) -> TSS2_RC;
16978}
16979extern "C" {
16980    pub fn Tss2_MU_TPMS_TAGGED_PROPERTY_Unmarshal(
16981        buffer: *const u8,
16982        buffer_size: size_t,
16983        offset: *mut size_t,
16984        dest: *mut TPMS_TAGGED_PROPERTY,
16985    ) -> TSS2_RC;
16986}
16987extern "C" {
16988    pub fn Tss2_MU_TPMS_TAGGED_POLICY_Marshal(
16989        src: *const TPMS_TAGGED_POLICY,
16990        buffer: *mut u8,
16991        buffer_size: size_t,
16992        offset: *mut size_t,
16993    ) -> TSS2_RC;
16994}
16995extern "C" {
16996    pub fn Tss2_MU_TPMS_TAGGED_POLICY_Unmarshal(
16997        buffer: *const u8,
16998        buffer_size: size_t,
16999        offset: *mut size_t,
17000        dest: *mut TPMS_TAGGED_POLICY,
17001    ) -> TSS2_RC;
17002}
17003extern "C" {
17004    pub fn Tss2_MU_TPMS_CLOCK_INFO_Marshal(
17005        src: *const TPMS_CLOCK_INFO,
17006        buffer: *mut u8,
17007        buffer_size: size_t,
17008        offset: *mut size_t,
17009    ) -> TSS2_RC;
17010}
17011extern "C" {
17012    pub fn Tss2_MU_TPMS_CLOCK_INFO_Unmarshal(
17013        buffer: *const u8,
17014        buffer_size: size_t,
17015        offset: *mut size_t,
17016        dest: *mut TPMS_CLOCK_INFO,
17017    ) -> TSS2_RC;
17018}
17019extern "C" {
17020    pub fn Tss2_MU_TPMS_TIME_ATTEST_INFO_Marshal(
17021        src: *const TPMS_TIME_ATTEST_INFO,
17022        buffer: *mut u8,
17023        buffer_size: size_t,
17024        offset: *mut size_t,
17025    ) -> TSS2_RC;
17026}
17027extern "C" {
17028    pub fn Tss2_MU_TPMS_TIME_ATTEST_INFO_Unmarshal(
17029        buffer: *const u8,
17030        buffer_size: size_t,
17031        offset: *mut size_t,
17032        dest: *mut TPMS_TIME_ATTEST_INFO,
17033    ) -> TSS2_RC;
17034}
17035extern "C" {
17036    pub fn Tss2_MU_TPMS_CERTIFY_INFO_Marshal(
17037        src: *const TPMS_CERTIFY_INFO,
17038        buffer: *mut u8,
17039        buffer_size: size_t,
17040        offset: *mut size_t,
17041    ) -> TSS2_RC;
17042}
17043extern "C" {
17044    pub fn Tss2_MU_TPMS_CERTIFY_INFO_Unmarshal(
17045        buffer: *const u8,
17046        buffer_size: size_t,
17047        offset: *mut size_t,
17048        dest: *mut TPMS_CERTIFY_INFO,
17049    ) -> TSS2_RC;
17050}
17051extern "C" {
17052    pub fn Tss2_MU_TPMS_COMMAND_AUDIT_INFO_Marshal(
17053        src: *const TPMS_COMMAND_AUDIT_INFO,
17054        buffer: *mut u8,
17055        buffer_size: size_t,
17056        offset: *mut size_t,
17057    ) -> TSS2_RC;
17058}
17059extern "C" {
17060    pub fn Tss2_MU_TPMS_COMMAND_AUDIT_INFO_Unmarshal(
17061        buffer: *const u8,
17062        buffer_size: size_t,
17063        offset: *mut size_t,
17064        dest: *mut TPMS_COMMAND_AUDIT_INFO,
17065    ) -> TSS2_RC;
17066}
17067extern "C" {
17068    pub fn Tss2_MU_TPMS_SESSION_AUDIT_INFO_Marshal(
17069        src: *const TPMS_SESSION_AUDIT_INFO,
17070        buffer: *mut u8,
17071        buffer_size: size_t,
17072        offset: *mut size_t,
17073    ) -> TSS2_RC;
17074}
17075extern "C" {
17076    pub fn Tss2_MU_TPMS_SESSION_AUDIT_INFO_Unmarshal(
17077        buffer: *const u8,
17078        buffer_size: size_t,
17079        offset: *mut size_t,
17080        dest: *mut TPMS_SESSION_AUDIT_INFO,
17081    ) -> TSS2_RC;
17082}
17083extern "C" {
17084    pub fn Tss2_MU_TPMS_CREATION_INFO_Marshal(
17085        src: *const TPMS_CREATION_INFO,
17086        buffer: *mut u8,
17087        buffer_size: size_t,
17088        offset: *mut size_t,
17089    ) -> TSS2_RC;
17090}
17091extern "C" {
17092    pub fn Tss2_MU_TPMS_CREATION_INFO_Unmarshal(
17093        buffer: *const u8,
17094        buffer_size: size_t,
17095        offset: *mut size_t,
17096        dest: *mut TPMS_CREATION_INFO,
17097    ) -> TSS2_RC;
17098}
17099extern "C" {
17100    pub fn Tss2_MU_TPMS_NV_CERTIFY_INFO_Marshal(
17101        src: *const TPMS_NV_CERTIFY_INFO,
17102        buffer: *mut u8,
17103        buffer_size: size_t,
17104        offset: *mut size_t,
17105    ) -> TSS2_RC;
17106}
17107extern "C" {
17108    pub fn Tss2_MU_TPMS_NV_CERTIFY_INFO_Unmarshal(
17109        buffer: *const u8,
17110        buffer_size: size_t,
17111        offset: *mut size_t,
17112        dest: *mut TPMS_NV_CERTIFY_INFO,
17113    ) -> TSS2_RC;
17114}
17115extern "C" {
17116    pub fn Tss2_MU_TPMS_AUTH_COMMAND_Marshal(
17117        src: *const TPMS_AUTH_COMMAND,
17118        buffer: *mut u8,
17119        buffer_size: size_t,
17120        offset: *mut size_t,
17121    ) -> TSS2_RC;
17122}
17123extern "C" {
17124    pub fn Tss2_MU_TPMS_AUTH_COMMAND_Unmarshal(
17125        buffer: *const u8,
17126        buffer_size: size_t,
17127        offset: *mut size_t,
17128        dest: *mut TPMS_AUTH_COMMAND,
17129    ) -> TSS2_RC;
17130}
17131extern "C" {
17132    pub fn Tss2_MU_TPMS_AUTH_RESPONSE_Marshal(
17133        src: *const TPMS_AUTH_RESPONSE,
17134        buffer: *mut u8,
17135        buffer_size: size_t,
17136        offset: *mut size_t,
17137    ) -> TSS2_RC;
17138}
17139extern "C" {
17140    pub fn Tss2_MU_TPMS_AUTH_RESPONSE_Unmarshal(
17141        buffer: *const u8,
17142        buffer_size: size_t,
17143        offset: *mut size_t,
17144        dest: *mut TPMS_AUTH_RESPONSE,
17145    ) -> TSS2_RC;
17146}
17147extern "C" {
17148    pub fn Tss2_MU_TPMS_SENSITIVE_CREATE_Marshal(
17149        src: *const TPMS_SENSITIVE_CREATE,
17150        buffer: *mut u8,
17151        buffer_size: size_t,
17152        offset: *mut size_t,
17153    ) -> TSS2_RC;
17154}
17155extern "C" {
17156    pub fn Tss2_MU_TPMS_SENSITIVE_CREATE_Unmarshal(
17157        buffer: *const u8,
17158        buffer_size: size_t,
17159        offset: *mut size_t,
17160        dest: *mut TPMS_SENSITIVE_CREATE,
17161    ) -> TSS2_RC;
17162}
17163extern "C" {
17164    pub fn Tss2_MU_TPMS_SCHEME_HASH_Marshal(
17165        src: *const TPMS_SCHEME_HASH,
17166        buffer: *mut u8,
17167        buffer_size: size_t,
17168        offset: *mut size_t,
17169    ) -> TSS2_RC;
17170}
17171extern "C" {
17172    pub fn Tss2_MU_TPMS_SCHEME_HASH_Unmarshal(
17173        buffer: *const u8,
17174        buffer_size: size_t,
17175        offset: *mut size_t,
17176        dest: *mut TPMS_SCHEME_HASH,
17177    ) -> TSS2_RC;
17178}
17179extern "C" {
17180    pub fn Tss2_MU_TPMS_SCHEME_ECDAA_Marshal(
17181        src: *const TPMS_SCHEME_ECDAA,
17182        buffer: *mut u8,
17183        buffer_size: size_t,
17184        offset: *mut size_t,
17185    ) -> TSS2_RC;
17186}
17187extern "C" {
17188    pub fn Tss2_MU_TPMS_SCHEME_ECDAA_Unmarshal(
17189        buffer: *const u8,
17190        buffer_size: size_t,
17191        offset: *mut size_t,
17192        dest: *mut TPMS_SCHEME_ECDAA,
17193    ) -> TSS2_RC;
17194}
17195extern "C" {
17196    pub fn Tss2_MU_TPMS_SCHEME_XOR_Marshal(
17197        src: *const TPMS_SCHEME_XOR,
17198        buffer: *mut u8,
17199        buffer_size: size_t,
17200        offset: *mut size_t,
17201    ) -> TSS2_RC;
17202}
17203extern "C" {
17204    pub fn Tss2_MU_TPMS_SCHEME_XOR_Unmarshal(
17205        buffer: *const u8,
17206        buffer_size: size_t,
17207        offset: *mut size_t,
17208        dest: *mut TPMS_SCHEME_XOR,
17209    ) -> TSS2_RC;
17210}
17211extern "C" {
17212    pub fn Tss2_MU_TPMS_SIGNATURE_RSA_Marshal(
17213        src: *const TPMS_SIGNATURE_RSA,
17214        buffer: *mut u8,
17215        buffer_size: size_t,
17216        offset: *mut size_t,
17217    ) -> TSS2_RC;
17218}
17219extern "C" {
17220    pub fn Tss2_MU_TPMS_SIGNATURE_RSA_Unmarshal(
17221        buffer: *const u8,
17222        buffer_size: size_t,
17223        offset: *mut size_t,
17224        dest: *mut TPMS_SIGNATURE_RSA,
17225    ) -> TSS2_RC;
17226}
17227extern "C" {
17228    pub fn Tss2_MU_TPMS_SIGNATURE_ECC_Marshal(
17229        src: *const TPMS_SIGNATURE_ECC,
17230        buffer: *mut u8,
17231        buffer_size: size_t,
17232        offset: *mut size_t,
17233    ) -> TSS2_RC;
17234}
17235extern "C" {
17236    pub fn Tss2_MU_TPMS_SIGNATURE_ECC_Unmarshal(
17237        buffer: *const u8,
17238        buffer_size: size_t,
17239        offset: *mut size_t,
17240        dest: *mut TPMS_SIGNATURE_ECC,
17241    ) -> TSS2_RC;
17242}
17243extern "C" {
17244    pub fn Tss2_MU_TPMS_NV_PIN_COUNTER_PARAMETERS_Marshal(
17245        src: *const TPMS_NV_PIN_COUNTER_PARAMETERS,
17246        buffer: *mut u8,
17247        buffer_size: size_t,
17248        offset: *mut size_t,
17249    ) -> TSS2_RC;
17250}
17251extern "C" {
17252    pub fn Tss2_MU_TPMS_NV_PIN_COUNTER_PARAMETERS_Unmarshal(
17253        buffer: *const u8,
17254        buffer_size: size_t,
17255        offset: *mut size_t,
17256        dest: *mut TPMS_NV_PIN_COUNTER_PARAMETERS,
17257    ) -> TSS2_RC;
17258}
17259extern "C" {
17260    pub fn Tss2_MU_TPMS_CONTEXT_DATA_Marshal(
17261        src: *const TPMS_CONTEXT_DATA,
17262        buffer: *mut u8,
17263        buffer_size: size_t,
17264        offset: *mut size_t,
17265    ) -> TSS2_RC;
17266}
17267extern "C" {
17268    pub fn Tss2_MU_TPMS_CONTEXT_DATA_Unmarshal(
17269        buffer: *const u8,
17270        buffer_size: size_t,
17271        offset: *mut size_t,
17272        dest: *mut TPMS_CONTEXT_DATA,
17273    ) -> TSS2_RC;
17274}
17275extern "C" {
17276    pub fn Tss2_MU_TPMS_PCR_SELECT_Marshal(
17277        src: *const TPMS_PCR_SELECT,
17278        buffer: *mut u8,
17279        buffer_size: size_t,
17280        offset: *mut size_t,
17281    ) -> TSS2_RC;
17282}
17283extern "C" {
17284    pub fn Tss2_MU_TPMS_PCR_SELECT_Unmarshal(
17285        buffer: *const u8,
17286        buffer_size: size_t,
17287        offset: *mut size_t,
17288        dest: *mut TPMS_PCR_SELECT,
17289    ) -> TSS2_RC;
17290}
17291extern "C" {
17292    pub fn Tss2_MU_TPMS_PCR_SELECTION_Marshal(
17293        src: *const TPMS_PCR_SELECTION,
17294        buffer: *mut u8,
17295        buffer_size: size_t,
17296        offset: *mut size_t,
17297    ) -> TSS2_RC;
17298}
17299extern "C" {
17300    pub fn Tss2_MU_TPMS_PCR_SELECTION_Unmarshal(
17301        buffer: *const u8,
17302        buffer_size: size_t,
17303        offset: *mut size_t,
17304        dest: *mut TPMS_PCR_SELECTION,
17305    ) -> TSS2_RC;
17306}
17307extern "C" {
17308    pub fn Tss2_MU_TPMS_TAGGED_PCR_SELECT_Marshal(
17309        src: *const TPMS_TAGGED_PCR_SELECT,
17310        buffer: *mut u8,
17311        buffer_size: size_t,
17312        offset: *mut size_t,
17313    ) -> TSS2_RC;
17314}
17315extern "C" {
17316    pub fn Tss2_MU_TPMS_TAGGED_PCR_SELECT_Unmarshal(
17317        buffer: *const u8,
17318        buffer_size: size_t,
17319        offset: *mut size_t,
17320        dest: *mut TPMS_TAGGED_PCR_SELECT,
17321    ) -> TSS2_RC;
17322}
17323extern "C" {
17324    pub fn Tss2_MU_TPMS_QUOTE_INFO_Marshal(
17325        src: *const TPMS_QUOTE_INFO,
17326        buffer: *mut u8,
17327        buffer_size: size_t,
17328        offset: *mut size_t,
17329    ) -> TSS2_RC;
17330}
17331extern "C" {
17332    pub fn Tss2_MU_TPMS_QUOTE_INFO_Unmarshal(
17333        buffer: *const u8,
17334        buffer_size: size_t,
17335        offset: *mut size_t,
17336        dest: *mut TPMS_QUOTE_INFO,
17337    ) -> TSS2_RC;
17338}
17339extern "C" {
17340    pub fn Tss2_MU_TPMS_CREATION_DATA_Marshal(
17341        src: *const TPMS_CREATION_DATA,
17342        buffer: *mut u8,
17343        buffer_size: size_t,
17344        offset: *mut size_t,
17345    ) -> TSS2_RC;
17346}
17347extern "C" {
17348    pub fn Tss2_MU_TPMS_CREATION_DATA_Unmarshal(
17349        buffer: *const u8,
17350        buffer_size: size_t,
17351        offset: *mut size_t,
17352        dest: *mut TPMS_CREATION_DATA,
17353    ) -> TSS2_RC;
17354}
17355extern "C" {
17356    pub fn Tss2_MU_TPMS_ECC_PARMS_Marshal(
17357        src: *const TPMS_ECC_PARMS,
17358        buffer: *mut u8,
17359        buffer_size: size_t,
17360        offset: *mut size_t,
17361    ) -> TSS2_RC;
17362}
17363extern "C" {
17364    pub fn Tss2_MU_TPMS_ECC_PARMS_Unmarshal(
17365        buffer: *const u8,
17366        buffer_size: size_t,
17367        offset: *mut size_t,
17368        dest: *mut TPMS_ECC_PARMS,
17369    ) -> TSS2_RC;
17370}
17371extern "C" {
17372    pub fn Tss2_MU_TPMS_ATTEST_Marshal(
17373        src: *const TPMS_ATTEST,
17374        buffer: *mut u8,
17375        buffer_size: size_t,
17376        offset: *mut size_t,
17377    ) -> TSS2_RC;
17378}
17379extern "C" {
17380    pub fn Tss2_MU_TPMS_ATTEST_Unmarshal(
17381        buffer: *const u8,
17382        buffer_size: size_t,
17383        offset: *mut size_t,
17384        dest: *mut TPMS_ATTEST,
17385    ) -> TSS2_RC;
17386}
17387extern "C" {
17388    pub fn Tss2_MU_TPMS_ALGORITHM_DETAIL_ECC_Marshal(
17389        src: *const TPMS_ALGORITHM_DETAIL_ECC,
17390        buffer: *mut u8,
17391        buffer_size: size_t,
17392        offset: *mut size_t,
17393    ) -> TSS2_RC;
17394}
17395extern "C" {
17396    pub fn Tss2_MU_TPMS_ALGORITHM_DETAIL_ECC_Unmarshal(
17397        buffer: *const u8,
17398        buffer_size: size_t,
17399        offset: *mut size_t,
17400        dest: *mut TPMS_ALGORITHM_DETAIL_ECC,
17401    ) -> TSS2_RC;
17402}
17403extern "C" {
17404    pub fn Tss2_MU_TPMS_CAPABILITY_DATA_Marshal(
17405        src: *const TPMS_CAPABILITY_DATA,
17406        buffer: *mut u8,
17407        buffer_size: size_t,
17408        offset: *mut size_t,
17409    ) -> TSS2_RC;
17410}
17411extern "C" {
17412    pub fn Tss2_MU_TPMS_CAPABILITY_DATA_Unmarshal(
17413        buffer: *const u8,
17414        buffer_size: size_t,
17415        offset: *mut size_t,
17416        dest: *mut TPMS_CAPABILITY_DATA,
17417    ) -> TSS2_RC;
17418}
17419extern "C" {
17420    pub fn Tss2_MU_TPMS_KEYEDHASH_PARMS_Marshal(
17421        src: *const TPMS_KEYEDHASH_PARMS,
17422        buffer: *mut u8,
17423        buffer_size: size_t,
17424        offset: *mut size_t,
17425    ) -> TSS2_RC;
17426}
17427extern "C" {
17428    pub fn Tss2_MU_TPMS_KEYEDHASH_PARMS_Unmarshal(
17429        buffer: *const u8,
17430        buffer_size: size_t,
17431        offset: *mut size_t,
17432        dest: *mut TPMS_KEYEDHASH_PARMS,
17433    ) -> TSS2_RC;
17434}
17435extern "C" {
17436    pub fn Tss2_MU_TPMS_RSA_PARMS_Marshal(
17437        src: *const TPMS_RSA_PARMS,
17438        buffer: *mut u8,
17439        buffer_size: size_t,
17440        offset: *mut size_t,
17441    ) -> TSS2_RC;
17442}
17443extern "C" {
17444    pub fn Tss2_MU_TPMS_RSA_PARMS_Unmarshal(
17445        buffer: *const u8,
17446        buffer_size: size_t,
17447        offset: *mut size_t,
17448        dest: *mut TPMS_RSA_PARMS,
17449    ) -> TSS2_RC;
17450}
17451extern "C" {
17452    pub fn Tss2_MU_TPMS_SYMCIPHER_PARMS_Marshal(
17453        src: *const TPMS_SYMCIPHER_PARMS,
17454        buffer: *mut u8,
17455        buffer_size: size_t,
17456        offset: *mut size_t,
17457    ) -> TSS2_RC;
17458}
17459extern "C" {
17460    pub fn Tss2_MU_TPMS_SYMCIPHER_PARMS_Unmarshal(
17461        buffer: *const u8,
17462        buffer_size: size_t,
17463        offset: *mut size_t,
17464        dest: *mut TPMS_SYMCIPHER_PARMS,
17465    ) -> TSS2_RC;
17466}
17467extern "C" {
17468    pub fn Tss2_MU_TPMS_AC_OUTPUT_Marshal(
17469        src: *const TPMS_AC_OUTPUT,
17470        buffer: *mut u8,
17471        buffer_size: size_t,
17472        offset: *mut size_t,
17473    ) -> TSS2_RC;
17474}
17475extern "C" {
17476    pub fn Tss2_MU_TPMS_AC_OUTPUT_Unmarshal(
17477        buffer: *const u8,
17478        buffer_size: size_t,
17479        offset: *mut size_t,
17480        dest: *mut TPMS_AC_OUTPUT,
17481    ) -> TSS2_RC;
17482}
17483extern "C" {
17484    pub fn Tss2_MU_TPMS_ID_OBJECT_Marshal(
17485        src: *const TPMS_ID_OBJECT,
17486        buffer: *mut u8,
17487        buffer_size: size_t,
17488        offset: *mut size_t,
17489    ) -> TSS2_RC;
17490}
17491extern "C" {
17492    pub fn Tss2_MU_TPMS_ID_OBJECT_Unmarshal(
17493        buffer: *const u8,
17494        buffer_size: size_t,
17495        offset: *mut size_t,
17496        dest: *mut TPMS_ID_OBJECT,
17497    ) -> TSS2_RC;
17498}
17499extern "C" {
17500    pub fn Tss2_MU_TPML_CC_Marshal(
17501        src: *const TPML_CC,
17502        buffer: *mut u8,
17503        buffer_size: size_t,
17504        offset: *mut size_t,
17505    ) -> TSS2_RC;
17506}
17507extern "C" {
17508    pub fn Tss2_MU_TPML_CC_Unmarshal(
17509        buffer: *const u8,
17510        buffer_size: size_t,
17511        offset: *mut size_t,
17512        dest: *mut TPML_CC,
17513    ) -> TSS2_RC;
17514}
17515extern "C" {
17516    pub fn Tss2_MU_TPML_CCA_Marshal(
17517        src: *const TPML_CCA,
17518        buffer: *mut u8,
17519        buffer_size: size_t,
17520        offset: *mut size_t,
17521    ) -> TSS2_RC;
17522}
17523extern "C" {
17524    pub fn Tss2_MU_TPML_CCA_Unmarshal(
17525        buffer: *const u8,
17526        buffer_size: size_t,
17527        offset: *mut size_t,
17528        dest: *mut TPML_CCA,
17529    ) -> TSS2_RC;
17530}
17531extern "C" {
17532    pub fn Tss2_MU_TPML_ALG_Marshal(
17533        src: *const TPML_ALG,
17534        buffer: *mut u8,
17535        buffer_size: size_t,
17536        offset: *mut size_t,
17537    ) -> TSS2_RC;
17538}
17539extern "C" {
17540    pub fn Tss2_MU_TPML_ALG_Unmarshal(
17541        buffer: *const u8,
17542        buffer_size: size_t,
17543        offset: *mut size_t,
17544        dest: *mut TPML_ALG,
17545    ) -> TSS2_RC;
17546}
17547extern "C" {
17548    pub fn Tss2_MU_TPML_HANDLE_Marshal(
17549        src: *const TPML_HANDLE,
17550        buffer: *mut u8,
17551        buffer_size: size_t,
17552        offset: *mut size_t,
17553    ) -> TSS2_RC;
17554}
17555extern "C" {
17556    pub fn Tss2_MU_TPML_HANDLE_Unmarshal(
17557        buffer: *const u8,
17558        buffer_size: size_t,
17559        offset: *mut size_t,
17560        dest: *mut TPML_HANDLE,
17561    ) -> TSS2_RC;
17562}
17563extern "C" {
17564    pub fn Tss2_MU_TPML_DIGEST_Marshal(
17565        src: *const TPML_DIGEST,
17566        buffer: *mut u8,
17567        buffer_size: size_t,
17568        offset: *mut size_t,
17569    ) -> TSS2_RC;
17570}
17571extern "C" {
17572    pub fn Tss2_MU_TPML_DIGEST_Unmarshal(
17573        buffer: *const u8,
17574        buffer_size: size_t,
17575        offset: *mut size_t,
17576        dest: *mut TPML_DIGEST,
17577    ) -> TSS2_RC;
17578}
17579extern "C" {
17580    pub fn Tss2_MU_TPML_DIGEST_VALUES_Marshal(
17581        src: *const TPML_DIGEST_VALUES,
17582        buffer: *mut u8,
17583        buffer_size: size_t,
17584        offset: *mut size_t,
17585    ) -> TSS2_RC;
17586}
17587extern "C" {
17588    pub fn Tss2_MU_TPML_DIGEST_VALUES_Unmarshal(
17589        buffer: *const u8,
17590        buffer_size: size_t,
17591        offset: *mut size_t,
17592        dest: *mut TPML_DIGEST_VALUES,
17593    ) -> TSS2_RC;
17594}
17595extern "C" {
17596    pub fn Tss2_MU_TPML_PCR_SELECTION_Marshal(
17597        src: *const TPML_PCR_SELECTION,
17598        buffer: *mut u8,
17599        buffer_size: size_t,
17600        offset: *mut size_t,
17601    ) -> TSS2_RC;
17602}
17603extern "C" {
17604    pub fn Tss2_MU_TPML_PCR_SELECTION_Unmarshal(
17605        buffer: *const u8,
17606        buffer_size: size_t,
17607        offset: *mut size_t,
17608        dest: *mut TPML_PCR_SELECTION,
17609    ) -> TSS2_RC;
17610}
17611extern "C" {
17612    pub fn Tss2_MU_TPML_ALG_PROPERTY_Marshal(
17613        src: *const TPML_ALG_PROPERTY,
17614        buffer: *mut u8,
17615        buffer_size: size_t,
17616        offset: *mut size_t,
17617    ) -> TSS2_RC;
17618}
17619extern "C" {
17620    pub fn Tss2_MU_TPML_ALG_PROPERTY_Unmarshal(
17621        buffer: *const u8,
17622        buffer_size: size_t,
17623        offset: *mut size_t,
17624        dest: *mut TPML_ALG_PROPERTY,
17625    ) -> TSS2_RC;
17626}
17627extern "C" {
17628    pub fn Tss2_MU_TPML_ECC_CURVE_Marshal(
17629        src: *const TPML_ECC_CURVE,
17630        buffer: *mut u8,
17631        buffer_size: size_t,
17632        offset: *mut size_t,
17633    ) -> TSS2_RC;
17634}
17635extern "C" {
17636    pub fn Tss2_MU_TPML_ECC_CURVE_Unmarshal(
17637        buffer: *const u8,
17638        buffer_size: size_t,
17639        offset: *mut size_t,
17640        dest: *mut TPML_ECC_CURVE,
17641    ) -> TSS2_RC;
17642}
17643extern "C" {
17644    pub fn Tss2_MU_TPML_TAGGED_PCR_PROPERTY_Marshal(
17645        src: *const TPML_TAGGED_PCR_PROPERTY,
17646        buffer: *mut u8,
17647        buffer_size: size_t,
17648        offset: *mut size_t,
17649    ) -> TSS2_RC;
17650}
17651extern "C" {
17652    pub fn Tss2_MU_TPML_TAGGED_PCR_PROPERTY_Unmarshal(
17653        buffer: *const u8,
17654        buffer_size: size_t,
17655        offset: *mut size_t,
17656        dest: *mut TPML_TAGGED_PCR_PROPERTY,
17657    ) -> TSS2_RC;
17658}
17659extern "C" {
17660    pub fn Tss2_MU_TPML_TAGGED_TPM_PROPERTY_Marshal(
17661        src: *const TPML_TAGGED_TPM_PROPERTY,
17662        buffer: *mut u8,
17663        buffer_size: size_t,
17664        offset: *mut size_t,
17665    ) -> TSS2_RC;
17666}
17667extern "C" {
17668    pub fn Tss2_MU_TPML_TAGGED_TPM_PROPERTY_Unmarshal(
17669        buffer: *const u8,
17670        buffer_size: size_t,
17671        offset: *mut size_t,
17672        dest: *mut TPML_TAGGED_TPM_PROPERTY,
17673    ) -> TSS2_RC;
17674}
17675extern "C" {
17676    pub fn Tss2_MU_TPML_INTEL_PTT_PROPERTY_Marshal(
17677        src: *const TPML_INTEL_PTT_PROPERTY,
17678        buffer: *mut u8,
17679        buffer_size: size_t,
17680        offset: *mut size_t,
17681    ) -> TSS2_RC;
17682}
17683extern "C" {
17684    pub fn Tss2_MU_TPML_INTEL_PTT_PROPERTY_Unmarshal(
17685        buffer: *const u8,
17686        buffer_size: size_t,
17687        offset: *mut size_t,
17688        dest: *mut TPML_INTEL_PTT_PROPERTY,
17689    ) -> TSS2_RC;
17690}
17691extern "C" {
17692    pub fn Tss2_MU_TPML_AC_CAPABILITIES_Marshal(
17693        src: *const TPML_AC_CAPABILITIES,
17694        buffer: *mut u8,
17695        buffer_size: size_t,
17696        offset: *mut size_t,
17697    ) -> TSS2_RC;
17698}
17699extern "C" {
17700    pub fn Tss2_MU_TPML_AC_CAPABILITIES_Unmarshal(
17701        buffer: *const u8,
17702        buffer_size: size_t,
17703        offset: *mut size_t,
17704        dest: *mut TPML_AC_CAPABILITIES,
17705    ) -> TSS2_RC;
17706}
17707extern "C" {
17708    pub fn Tss2_MU_TPMU_HA_Marshal(
17709        src: *const TPMU_HA,
17710        selector_value: u32,
17711        buffer: *mut u8,
17712        buffer_size: size_t,
17713        offset: *mut size_t,
17714    ) -> TSS2_RC;
17715}
17716extern "C" {
17717    pub fn Tss2_MU_TPMU_HA_Unmarshal(
17718        buffer: *const u8,
17719        buffer_size: size_t,
17720        offset: *mut size_t,
17721        selector_value: u32,
17722        dest: *mut TPMU_HA,
17723    ) -> TSS2_RC;
17724}
17725extern "C" {
17726    pub fn Tss2_MU_TPMU_CAPABILITIES_Marshal(
17727        src: *const TPMU_CAPABILITIES,
17728        selector_value: u32,
17729        buffer: *mut u8,
17730        buffer_size: size_t,
17731        offset: *mut size_t,
17732    ) -> TSS2_RC;
17733}
17734extern "C" {
17735    pub fn Tss2_MU_TPMU_CAPABILITIES_Unmarshal(
17736        buffer: *const u8,
17737        buffer_size: size_t,
17738        offset: *mut size_t,
17739        selector_value: u32,
17740        dest: *mut TPMU_CAPABILITIES,
17741    ) -> TSS2_RC;
17742}
17743extern "C" {
17744    pub fn Tss2_MU_TPMU_ATTEST_Marshal(
17745        src: *const TPMU_ATTEST,
17746        selector_value: u32,
17747        buffer: *mut u8,
17748        buffer_size: size_t,
17749        offset: *mut size_t,
17750    ) -> TSS2_RC;
17751}
17752extern "C" {
17753    pub fn Tss2_MU_TPMU_ATTEST_Unmarshal(
17754        buffer: *const u8,
17755        buffer_size: size_t,
17756        offset: *mut size_t,
17757        selector_value: u32,
17758        dest: *mut TPMU_ATTEST,
17759    ) -> TSS2_RC;
17760}
17761extern "C" {
17762    pub fn Tss2_MU_TPMU_SYM_KEY_BITS_Marshal(
17763        src: *const TPMU_SYM_KEY_BITS,
17764        selector_value: u32,
17765        buffer: *mut u8,
17766        buffer_size: size_t,
17767        offset: *mut size_t,
17768    ) -> TSS2_RC;
17769}
17770extern "C" {
17771    pub fn Tss2_MU_TPMU_SYM_KEY_BITS_Unmarshal(
17772        buffer: *const u8,
17773        buffer_size: size_t,
17774        offset: *mut size_t,
17775        selector_value: u32,
17776        dest: *mut TPMU_SYM_KEY_BITS,
17777    ) -> TSS2_RC;
17778}
17779extern "C" {
17780    pub fn Tss2_MU_TPMU_SYM_MODE_Marshal(
17781        src: *const TPMU_SYM_MODE,
17782        selector_value: u32,
17783        buffer: *mut u8,
17784        buffer_size: size_t,
17785        offset: *mut size_t,
17786    ) -> TSS2_RC;
17787}
17788extern "C" {
17789    pub fn Tss2_MU_TPMU_SYM_MODE_Unmarshal(
17790        buffer: *const u8,
17791        buffer_size: size_t,
17792        offset: *mut size_t,
17793        selector_value: u32,
17794        dest: *mut TPMU_SYM_MODE,
17795    ) -> TSS2_RC;
17796}
17797extern "C" {
17798    pub fn Tss2_MU_TPMU_SIG_SCHEME_Marshal(
17799        src: *const TPMU_SIG_SCHEME,
17800        selector_value: u32,
17801        buffer: *mut u8,
17802        buffer_size: size_t,
17803        offset: *mut size_t,
17804    ) -> TSS2_RC;
17805}
17806extern "C" {
17807    pub fn Tss2_MU_TPMU_SIG_SCHEME_Unmarshal(
17808        buffer: *const u8,
17809        buffer_size: size_t,
17810        offset: *mut size_t,
17811        selector_value: u32,
17812        dest: *mut TPMU_SIG_SCHEME,
17813    ) -> TSS2_RC;
17814}
17815extern "C" {
17816    pub fn Tss2_MU_TPMU_KDF_SCHEME_Marshal(
17817        src: *const TPMU_KDF_SCHEME,
17818        selector_value: u32,
17819        buffer: *mut u8,
17820        buffer_size: size_t,
17821        offset: *mut size_t,
17822    ) -> TSS2_RC;
17823}
17824extern "C" {
17825    pub fn Tss2_MU_TPMU_KDF_SCHEME_Unmarshal(
17826        buffer: *const u8,
17827        buffer_size: size_t,
17828        offset: *mut size_t,
17829        selector_value: u32,
17830        dest: *mut TPMU_KDF_SCHEME,
17831    ) -> TSS2_RC;
17832}
17833extern "C" {
17834    pub fn Tss2_MU_TPMU_ASYM_SCHEME_Marshal(
17835        src: *const TPMU_ASYM_SCHEME,
17836        selector_value: u32,
17837        buffer: *mut u8,
17838        buffer_size: size_t,
17839        offset: *mut size_t,
17840    ) -> TSS2_RC;
17841}
17842extern "C" {
17843    pub fn Tss2_MU_TPMU_ASYM_SCHEME_Unmarshal(
17844        buffer: *const u8,
17845        buffer_size: size_t,
17846        offset: *mut size_t,
17847        selector_value: u32,
17848        dest: *mut TPMU_ASYM_SCHEME,
17849    ) -> TSS2_RC;
17850}
17851extern "C" {
17852    pub fn Tss2_MU_TPMU_SCHEME_KEYEDHASH_Marshal(
17853        src: *const TPMU_SCHEME_KEYEDHASH,
17854        selector_value: u32,
17855        buffer: *mut u8,
17856        buffer_size: size_t,
17857        offset: *mut size_t,
17858    ) -> TSS2_RC;
17859}
17860extern "C" {
17861    pub fn Tss2_MU_TPMU_SCHEME_KEYEDHASH_Unmarshal(
17862        buffer: *const u8,
17863        buffer_size: size_t,
17864        offset: *mut size_t,
17865        selector_value: u32,
17866        dest: *mut TPMU_SCHEME_KEYEDHASH,
17867    ) -> TSS2_RC;
17868}
17869extern "C" {
17870    pub fn Tss2_MU_TPMU_SIGNATURE_Marshal(
17871        src: *const TPMU_SIGNATURE,
17872        selector_value: u32,
17873        buffer: *mut u8,
17874        buffer_size: size_t,
17875        offset: *mut size_t,
17876    ) -> TSS2_RC;
17877}
17878extern "C" {
17879    pub fn Tss2_MU_TPMU_SIGNATURE_Unmarshal(
17880        buffer: *const u8,
17881        buffer_size: size_t,
17882        offset: *mut size_t,
17883        selector_value: u32,
17884        dest: *mut TPMU_SIGNATURE,
17885    ) -> TSS2_RC;
17886}
17887extern "C" {
17888    pub fn Tss2_MU_TPMU_SENSITIVE_COMPOSITE_Marshal(
17889        src: *const TPMU_SENSITIVE_COMPOSITE,
17890        selector_value: u32,
17891        buffer: *mut u8,
17892        buffer_size: size_t,
17893        offset: *mut size_t,
17894    ) -> TSS2_RC;
17895}
17896extern "C" {
17897    pub fn Tss2_MU_TPMU_SENSITIVE_COMPOSITE_Unmarshal(
17898        buffer: *const u8,
17899        buffer_size: size_t,
17900        offset: *mut size_t,
17901        selector_value: u32,
17902        dest: *mut TPMU_SENSITIVE_COMPOSITE,
17903    ) -> TSS2_RC;
17904}
17905extern "C" {
17906    pub fn Tss2_MU_TPMU_ENCRYPTED_SECRET_Marshal(
17907        src: *const TPMU_ENCRYPTED_SECRET,
17908        selector_value: u32,
17909        buffer: *mut u8,
17910        buffer_size: size_t,
17911        offset: *mut size_t,
17912    ) -> TSS2_RC;
17913}
17914extern "C" {
17915    pub fn Tss2_MU_TPMU_ENCRYPTED_SECRET_Unmarshal(
17916        buffer: *const u8,
17917        buffer_size: size_t,
17918        offset: *mut size_t,
17919        selector_value: u32,
17920        dest: *mut TPMU_ENCRYPTED_SECRET,
17921    ) -> TSS2_RC;
17922}
17923extern "C" {
17924    pub fn Tss2_MU_TPMU_PUBLIC_PARMS_Marshal(
17925        src: *const TPMU_PUBLIC_PARMS,
17926        selector_value: u32,
17927        buffer: *mut u8,
17928        buffer_size: size_t,
17929        offset: *mut size_t,
17930    ) -> TSS2_RC;
17931}
17932extern "C" {
17933    pub fn Tss2_MU_TPMU_PUBLIC_PARMS_Unmarshal(
17934        buffer: *const u8,
17935        buffer_size: size_t,
17936        offset: *mut size_t,
17937        selector_value: u32,
17938        dest: *mut TPMU_PUBLIC_PARMS,
17939    ) -> TSS2_RC;
17940}
17941extern "C" {
17942    pub fn Tss2_MU_TPMU_PUBLIC_ID_Marshal(
17943        src: *const TPMU_PUBLIC_ID,
17944        selector_value: u32,
17945        buffer: *mut u8,
17946        buffer_size: size_t,
17947        offset: *mut size_t,
17948    ) -> TSS2_RC;
17949}
17950extern "C" {
17951    pub fn Tss2_MU_TPMU_PUBLIC_ID_Unmarshal(
17952        buffer: *const u8,
17953        buffer_size: size_t,
17954        offset: *mut size_t,
17955        selector_value: u32,
17956        dest: *mut TPMU_PUBLIC_ID,
17957    ) -> TSS2_RC;
17958}
17959extern "C" {
17960    pub fn Tss2_MU_TPMU_NAME_Marshal(
17961        src: *const TPMU_NAME,
17962        selector_value: u32,
17963        buffer: *mut u8,
17964        buffer_size: size_t,
17965        offset: *mut size_t,
17966    ) -> TSS2_RC;
17967}
17968extern "C" {
17969    pub fn Tss2_MU_TPMU_NAME_Unmarshal(
17970        buffer: *const u8,
17971        buffer_size: size_t,
17972        offset: *mut size_t,
17973        selector_value: u32,
17974        dest: *mut TPMU_NAME,
17975    ) -> TSS2_RC;
17976}
17977extern "C" {
17978    pub fn Tss2_MU_TPMT_HA_Marshal(
17979        src: *const TPMT_HA,
17980        buffer: *mut u8,
17981        buffer_size: size_t,
17982        offset: *mut size_t,
17983    ) -> TSS2_RC;
17984}
17985extern "C" {
17986    pub fn Tss2_MU_TPMT_HA_Unmarshal(
17987        buffer: *const u8,
17988        buffer_size: size_t,
17989        offset: *mut size_t,
17990        dest: *mut TPMT_HA,
17991    ) -> TSS2_RC;
17992}
17993extern "C" {
17994    pub fn Tss2_MU_TPMT_SYM_DEF_Marshal(
17995        src: *const TPMT_SYM_DEF,
17996        buffer: *mut u8,
17997        buffer_size: size_t,
17998        offset: *mut size_t,
17999    ) -> TSS2_RC;
18000}
18001extern "C" {
18002    pub fn Tss2_MU_TPMT_SYM_DEF_Unmarshal(
18003        buffer: *const u8,
18004        buffer_size: size_t,
18005        offset: *mut size_t,
18006        dest: *mut TPMT_SYM_DEF,
18007    ) -> TSS2_RC;
18008}
18009extern "C" {
18010    pub fn Tss2_MU_TPMT_SYM_DEF_OBJECT_Marshal(
18011        src: *const TPMT_SYM_DEF_OBJECT,
18012        buffer: *mut u8,
18013        buffer_size: size_t,
18014        offset: *mut size_t,
18015    ) -> TSS2_RC;
18016}
18017extern "C" {
18018    pub fn Tss2_MU_TPMT_SYM_DEF_OBJECT_Unmarshal(
18019        buffer: *const u8,
18020        buffer_size: size_t,
18021        offset: *mut size_t,
18022        dest: *mut TPMT_SYM_DEF_OBJECT,
18023    ) -> TSS2_RC;
18024}
18025extern "C" {
18026    pub fn Tss2_MU_TPMT_KEYEDHASH_SCHEME_Marshal(
18027        src: *const TPMT_KEYEDHASH_SCHEME,
18028        buffer: *mut u8,
18029        buffer_size: size_t,
18030        offset: *mut size_t,
18031    ) -> TSS2_RC;
18032}
18033extern "C" {
18034    pub fn Tss2_MU_TPMT_KEYEDHASH_SCHEME_Unmarshal(
18035        buffer: *const u8,
18036        buffer_size: size_t,
18037        offset: *mut size_t,
18038        dest: *mut TPMT_KEYEDHASH_SCHEME,
18039    ) -> TSS2_RC;
18040}
18041extern "C" {
18042    pub fn Tss2_MU_TPMT_SIG_SCHEME_Marshal(
18043        src: *const TPMT_SIG_SCHEME,
18044        buffer: *mut u8,
18045        buffer_size: size_t,
18046        offset: *mut size_t,
18047    ) -> TSS2_RC;
18048}
18049extern "C" {
18050    pub fn Tss2_MU_TPMT_SIG_SCHEME_Unmarshal(
18051        buffer: *const u8,
18052        buffer_size: size_t,
18053        offset: *mut size_t,
18054        dest: *mut TPMT_SIG_SCHEME,
18055    ) -> TSS2_RC;
18056}
18057extern "C" {
18058    pub fn Tss2_MU_TPMT_KDF_SCHEME_Marshal(
18059        src: *const TPMT_KDF_SCHEME,
18060        buffer: *mut u8,
18061        buffer_size: size_t,
18062        offset: *mut size_t,
18063    ) -> TSS2_RC;
18064}
18065extern "C" {
18066    pub fn Tss2_MU_TPMT_KDF_SCHEME_Unmarshal(
18067        buffer: *const u8,
18068        buffer_size: size_t,
18069        offset: *mut size_t,
18070        dest: *mut TPMT_KDF_SCHEME,
18071    ) -> TSS2_RC;
18072}
18073extern "C" {
18074    pub fn Tss2_MU_TPMT_ASYM_SCHEME_Marshal(
18075        src: *const TPMT_ASYM_SCHEME,
18076        buffer: *mut u8,
18077        buffer_size: size_t,
18078        offset: *mut size_t,
18079    ) -> TSS2_RC;
18080}
18081extern "C" {
18082    pub fn Tss2_MU_TPMT_ASYM_SCHEME_Unmarshal(
18083        buffer: *const u8,
18084        buffer_size: size_t,
18085        offset: *mut size_t,
18086        dest: *mut TPMT_ASYM_SCHEME,
18087    ) -> TSS2_RC;
18088}
18089extern "C" {
18090    pub fn Tss2_MU_TPMT_RSA_SCHEME_Marshal(
18091        src: *const TPMT_RSA_SCHEME,
18092        buffer: *mut u8,
18093        buffer_size: size_t,
18094        offset: *mut size_t,
18095    ) -> TSS2_RC;
18096}
18097extern "C" {
18098    pub fn Tss2_MU_TPMT_RSA_SCHEME_Unmarshal(
18099        buffer: *const u8,
18100        buffer_size: size_t,
18101        offset: *mut size_t,
18102        dest: *mut TPMT_RSA_SCHEME,
18103    ) -> TSS2_RC;
18104}
18105extern "C" {
18106    pub fn Tss2_MU_TPMT_RSA_DECRYPT_Marshal(
18107        src: *const TPMT_RSA_DECRYPT,
18108        buffer: *mut u8,
18109        buffer_size: size_t,
18110        offset: *mut size_t,
18111    ) -> TSS2_RC;
18112}
18113extern "C" {
18114    pub fn Tss2_MU_TPMT_RSA_DECRYPT_Unmarshal(
18115        buffer: *const u8,
18116        buffer_size: size_t,
18117        offset: *mut size_t,
18118        dest: *mut TPMT_RSA_DECRYPT,
18119    ) -> TSS2_RC;
18120}
18121extern "C" {
18122    pub fn Tss2_MU_TPMT_ECC_SCHEME_Marshal(
18123        src: *const TPMT_ECC_SCHEME,
18124        buffer: *mut u8,
18125        buffer_size: size_t,
18126        offset: *mut size_t,
18127    ) -> TSS2_RC;
18128}
18129extern "C" {
18130    pub fn Tss2_MU_TPMT_ECC_SCHEME_Unmarshal(
18131        buffer: *const u8,
18132        buffer_size: size_t,
18133        offset: *mut size_t,
18134        dest: *mut TPMT_ECC_SCHEME,
18135    ) -> TSS2_RC;
18136}
18137extern "C" {
18138    pub fn Tss2_MU_TPMT_SIGNATURE_Marshal(
18139        src: *const TPMT_SIGNATURE,
18140        buffer: *mut u8,
18141        buffer_size: size_t,
18142        offset: *mut size_t,
18143    ) -> TSS2_RC;
18144}
18145extern "C" {
18146    pub fn Tss2_MU_TPMT_SIGNATURE_Unmarshal(
18147        buffer: *const u8,
18148        buffer_size: size_t,
18149        offset: *mut size_t,
18150        dest: *mut TPMT_SIGNATURE,
18151    ) -> TSS2_RC;
18152}
18153extern "C" {
18154    pub fn Tss2_MU_TPMT_SENSITIVE_Marshal(
18155        src: *const TPMT_SENSITIVE,
18156        buffer: *mut u8,
18157        buffer_size: size_t,
18158        offset: *mut size_t,
18159    ) -> TSS2_RC;
18160}
18161extern "C" {
18162    pub fn Tss2_MU_TPMT_SENSITIVE_Unmarshal(
18163        buffer: *const u8,
18164        buffer_size: size_t,
18165        offset: *mut size_t,
18166        dest: *mut TPMT_SENSITIVE,
18167    ) -> TSS2_RC;
18168}
18169extern "C" {
18170    pub fn Tss2_MU_TPMT_PUBLIC_Marshal(
18171        src: *const TPMT_PUBLIC,
18172        buffer: *mut u8,
18173        buffer_size: size_t,
18174        offset: *mut size_t,
18175    ) -> TSS2_RC;
18176}
18177extern "C" {
18178    pub fn Tss2_MU_TPMT_PUBLIC_Unmarshal(
18179        buffer: *const u8,
18180        buffer_size: size_t,
18181        offset: *mut size_t,
18182        dest: *mut TPMT_PUBLIC,
18183    ) -> TSS2_RC;
18184}
18185extern "C" {
18186    pub fn Tss2_MU_TPMT_PUBLIC_PARMS_Marshal(
18187        src: *const TPMT_PUBLIC_PARMS,
18188        buffer: *mut u8,
18189        buffer_size: size_t,
18190        offset: *mut size_t,
18191    ) -> TSS2_RC;
18192}
18193extern "C" {
18194    pub fn Tss2_MU_TPMT_PUBLIC_PARMS_Unmarshal(
18195        buffer: *const u8,
18196        buffer_size: size_t,
18197        offset: *mut size_t,
18198        dest: *mut TPMT_PUBLIC_PARMS,
18199    ) -> TSS2_RC;
18200}
18201extern "C" {
18202    pub fn Tss2_MU_TPMT_TK_CREATION_Marshal(
18203        src: *const TPMT_TK_CREATION,
18204        buffer: *mut u8,
18205        buffer_size: size_t,
18206        offset: *mut size_t,
18207    ) -> TSS2_RC;
18208}
18209extern "C" {
18210    pub fn Tss2_MU_TPMT_TK_CREATION_Unmarshal(
18211        buffer: *const u8,
18212        buffer_size: size_t,
18213        offset: *mut size_t,
18214        dest: *mut TPMT_TK_CREATION,
18215    ) -> TSS2_RC;
18216}
18217extern "C" {
18218    pub fn Tss2_MU_TPMT_TK_VERIFIED_Marshal(
18219        src: *const TPMT_TK_VERIFIED,
18220        buffer: *mut u8,
18221        buffer_size: size_t,
18222        offset: *mut size_t,
18223    ) -> TSS2_RC;
18224}
18225extern "C" {
18226    pub fn Tss2_MU_TPMT_TK_VERIFIED_Unmarshal(
18227        buffer: *const u8,
18228        buffer_size: size_t,
18229        offset: *mut size_t,
18230        dest: *mut TPMT_TK_VERIFIED,
18231    ) -> TSS2_RC;
18232}
18233extern "C" {
18234    pub fn Tss2_MU_TPMT_TK_AUTH_Marshal(
18235        src: *const TPMT_TK_AUTH,
18236        buffer: *mut u8,
18237        buffer_size: size_t,
18238        offset: *mut size_t,
18239    ) -> TSS2_RC;
18240}
18241extern "C" {
18242    pub fn Tss2_MU_TPMT_TK_AUTH_Unmarshal(
18243        buffer: *const u8,
18244        buffer_size: size_t,
18245        offset: *mut size_t,
18246        dest: *mut TPMT_TK_AUTH,
18247    ) -> TSS2_RC;
18248}
18249extern "C" {
18250    pub fn Tss2_MU_TPMT_TK_HASHCHECK_Marshal(
18251        src: *const TPMT_TK_HASHCHECK,
18252        buffer: *mut u8,
18253        buffer_size: size_t,
18254        offset: *mut size_t,
18255    ) -> TSS2_RC;
18256}
18257extern "C" {
18258    pub fn Tss2_MU_TPMT_TK_HASHCHECK_Unmarshal(
18259        buffer: *const u8,
18260        buffer_size: size_t,
18261        offset: *mut size_t,
18262        dest: *mut TPMT_TK_HASHCHECK,
18263    ) -> TSS2_RC;
18264}
18265extern "C" {
18266    pub fn Tss2_MU_TPM2_HANDLE_Marshal(
18267        in_: TPM2_HANDLE,
18268        buffer: *mut u8,
18269        size: size_t,
18270        offset: *mut size_t,
18271    ) -> TSS2_RC;
18272}
18273extern "C" {
18274    pub fn Tss2_MU_TPM2_HANDLE_Unmarshal(
18275        buffer: *const u8,
18276        size: size_t,
18277        offset: *mut size_t,
18278        out: *mut TPM2_HANDLE,
18279    ) -> TSS2_RC;
18280}
18281extern "C" {
18282    pub fn Tss2_MU_TPMI_ALG_HASH_Marshal(
18283        in_: TPMI_ALG_HASH,
18284        buffer: *mut u8,
18285        size: size_t,
18286        offset: *mut size_t,
18287    ) -> TSS2_RC;
18288}
18289extern "C" {
18290    pub fn Tss2_MU_TPMI_ALG_HASH_Unmarshal(
18291        buffer: *const u8,
18292        size: size_t,
18293        offset: *mut size_t,
18294        out: *mut TPMI_ALG_HASH,
18295    ) -> TSS2_RC;
18296}
18297extern "C" {
18298    pub fn Tss2_MU_TPM2_SE_Marshal(
18299        in_: TPM2_SE,
18300        buffer: *mut u8,
18301        size: size_t,
18302        offset: *mut size_t,
18303    ) -> TSS2_RC;
18304}
18305extern "C" {
18306    pub fn Tss2_MU_TPM2_SE_Unmarshal(
18307        buffer: *const u8,
18308        size: size_t,
18309        offset: *mut size_t,
18310        out: *mut TPM2_SE,
18311    ) -> TSS2_RC;
18312}
18313extern "C" {
18314    pub fn Tss2_MU_TPM2_NT_Marshal(
18315        in_: TPM2_NT,
18316        buffer: *mut u8,
18317        size: size_t,
18318        offset: *mut size_t,
18319    ) -> TSS2_RC;
18320}
18321extern "C" {
18322    pub fn Tss2_MU_TPM2_NT_Unmarshal(
18323        buffer: *const u8,
18324        size: size_t,
18325        offset: *mut size_t,
18326        out: *mut TPM2_NT,
18327    ) -> TSS2_RC;
18328}
18329extern "C" {
18330    pub fn Tss2_MU_TPMS_EMPTY_Marshal(
18331        in_: *const TPMS_EMPTY,
18332        buffer: *mut u8,
18333        size: size_t,
18334        offset: *mut size_t,
18335    ) -> TSS2_RC;
18336}
18337extern "C" {
18338    pub fn Tss2_MU_TPMS_EMPTY_Unmarshal(
18339        buffer: *const u8,
18340        size: size_t,
18341        offset: *mut size_t,
18342        out: *mut TPMS_EMPTY,
18343    ) -> TSS2_RC;
18344}