	.file	"extr_softp11.c_add_cert.c"
	.intel_syntax noprefix
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"adding certificate\n"
.LC1:
	.string	"add cert ok: %lx\n"
.LC2:
	.string	"add key ok: %lx\n"
	.section	.rodata.str1.8,"aMS",@progbits,1
	.align 8
.LC3:
	.string	"something went wrong when adding cert!\n"
	.text
	.p2align 4
	.type	add_cert, @function
add_cert:
.LFB0:
	.cfi_startproc
	endbr64
	push	r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	push	r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	push	r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	push	r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	mov	r12d, edx
	push	rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	mov	ebp, edi
	lea	rdi, .LC0[rip]
	push	rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	mov	rbx, rsi
	sub	rsp, 120
	.cfi_def_cfa_offset 176
	mov	r14, QWORD PTR CKR_GENERAL_ERROR[rip]
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR 104[rsp], rax
	xor	eax, eax
	movzx	eax, BYTE PTR CK_TRUE[rip]
	mov	BYTE PTR 39[rsp], al
	movzx	eax, BYTE PTR CK_FALSE[rip]
	mov	BYTE PTR 40[rsp], al
	movzx	eax, BYTE PTR CKC_X_509[rip]
	mov	BYTE PTR 41[rsp], al
	xor	eax, eax
	call	st_logf@PLT
	lea	rdx, 48[rsp]
	mov	esi, r12d
	mov	edi, ebp
	mov	QWORD PTR 80[rsp], 0
	mov	DWORD PTR 88[rsp], 0
	movdqa	xmm0, XMMWORD PTR 80[rsp]
	movaps	XMMWORD PTR 64[rsp], xmm0
	movaps	XMMWORD PTR 48[rsp], xmm0
	call	hx509_cert_binary@PLT
	test	eax, eax
	je	.L18
.L2:
	cmp	QWORD PTR CKR_OK[rip], r14
	je	.L10
	lea	rdi, .LC3[rip]
	xor	eax, eax
	call	st_logf@PLT
.L10:
	mov	rdi, QWORD PTR 48[rsp]
	call	hx509_xfree@PLT
	xor	edi, edi
	call	hx509_xfree@PLT
	mov	rdi, QWORD PTR 80[rsp]
	call	hx509_xfree@PLT
	mov	rdi, QWORD PTR 64[rsp]
	call	hx509_xfree@PLT
	mov	rax, QWORD PTR 104[rsp]
	xor	rax, QWORD PTR fs:40
	jne	.L19
	add	rsp, 120
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	xor	eax, eax
	pop	rbx
	.cfi_def_cfa_offset 48
	pop	rbp
	.cfi_def_cfa_offset 40
	pop	r12
	.cfi_def_cfa_offset 32
	pop	r13
	.cfi_def_cfa_offset 24
	pop	r14
	.cfi_def_cfa_offset 16
	pop	r15
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L18:
	.cfi_restore_state
	lea	r13, 44[rsp]
	mov	edi, r12d
	mov	rsi, r13
	call	hx509_cert_get_issuer@PLT
	test	eax, eax
	jne	.L2
	mov	edi, DWORD PTR 44[rsp]
	lea	rsi, 80[rsp]
	call	hx509_name_binary@PLT
	mov	rdi, r13
	mov	r15d, eax
	call	hx509_name_free@PLT
	test	r15d, r15d
	jne	.L2
	mov	rsi, r13
	mov	edi, r12d
	call	hx509_cert_get_subject@PLT
	test	eax, eax
	jne	.L2
	mov	edi, DWORD PTR 44[rsp]
	lea	rsi, 64[rsp]
	call	hx509_name_binary@PLT
	mov	rdi, r13
	mov	r15d, eax
	call	hx509_name_free@PLT
	test	r15d, r15d
	jne	.L2
	mov	edi, DWORD PTR context[rip]
	mov	rdx, r13
	mov	esi, r12d
	call	hx509_cert_get_SPKI_AlgorithmIdentifier@PLT
	mov	r14, QWORD PTR CKR_DEVICE_MEMORY[rip]
	test	eax, eax
	jne	.L2
	movzx	eax, BYTE PTR CKK_RSA[rip]
	mov	rdi, r13
	mov	BYTE PTR 42[rsp], al
	call	free_AlgorithmIdentifier@PLT
	movzx	eax, BYTE PTR CKO_CERTIFICATE[rip]
	mov	BYTE PTR 38[rsp], al
	xor	eax, eax
	call	add_st_object@PLT
	mov	r14, rax
	test	rax, rax
	je	.L16
	mov	edi, r12d
	lea	r15, 40[rsp]
	call	hx509_cert_ref@PLT
	mov	edx, DWORD PTR CKA_CLASS[rip]
	xor	esi, esi
	mov	rdi, r14
	mov	QWORD PTR [r14], rax
	lea	rax, 38[rsp]
	mov	r8d, 1
	mov	rcx, rax
	mov	QWORD PTR 8[rsp], rax
	call	add_object_attribute@PLT
	lea	rax, 39[rsp]
	xor	esi, esi
	mov	rdi, r14
	mov	edx, DWORD PTR CKA_TOKEN[rip]
	mov	r8d, 1
	mov	rcx, rax
	mov	QWORD PTR [rsp], rax
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_PRIVATE[rip]
	xor	esi, esi
	mov	rdi, r14
	mov	r8d, 1
	mov	rcx, r15
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_MODIFIABLE[rip]
	xor	esi, esi
	mov	rcx, r15
	mov	r8d, 1
	mov	rdi, r14
	call	add_object_attribute@PLT
	mov	rdi, QWORD PTR [rbx]
	call	strlen@PLT
	mov	rcx, QWORD PTR [rbx]
	mov	edx, DWORD PTR CKA_LABEL[rip]
	xor	esi, esi
	mov	rdi, r14
	mov	r8d, eax
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_CERTIFICATE_TYPE[rip]
	xor	esi, esi
	mov	rdi, r14
	lea	rcx, 41[rsp]
	mov	r8d, 1
	call	add_object_attribute@PLT
	mov	rdi, QWORD PTR 8[rbx]
	call	strlen@PLT
	mov	rcx, QWORD PTR 8[rbx]
	xor	esi, esi
	mov	rdi, r14
	mov	edx, DWORD PTR CKA_ID[rip]
	mov	r8d, eax
	call	add_object_attribute@PLT
	mov	r8d, DWORD PTR 72[rsp]
	xor	esi, esi
	mov	rdi, r14
	mov	rcx, QWORD PTR 64[rsp]
	mov	edx, DWORD PTR CKA_SUBJECT[rip]
	call	add_object_attribute@PLT
	mov	r8d, DWORD PTR 88[rsp]
	xor	esi, esi
	mov	rdi, r14
	mov	rcx, QWORD PTR 80[rsp]
	mov	edx, DWORD PTR CKA_ISSUER[rip]
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_SERIAL_NUMBER[rip]
	xor	r8d, r8d
	xor	ecx, ecx
	xor	esi, esi
	mov	rdi, r14
	call	add_object_attribute@PLT
	mov	r8d, DWORD PTR 56[rsp]
	xor	esi, esi
	mov	rdi, r14
	mov	rcx, QWORD PTR 48[rsp]
	mov	edx, DWORD PTR CKA_VALUE[rip]
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_TRUSTED[rip]
	mov	rcx, r15
	xor	esi, esi
	mov	r8d, 1
	mov	rdi, r14
	call	add_object_attribute@PLT
	mov	rdi, r14
	call	OBJECT_ID@PLT
	lea	rdi, .LC1[rip]
	mov	rsi, rax
	xor	eax, eax
	call	st_logf@PLT
	movzx	eax, BYTE PTR CKO_PUBLIC_KEY[rip]
	mov	BYTE PTR 38[rsp], al
	xor	eax, eax
	call	add_st_object@PLT
	mov	r14, rax
	test	rax, rax
	je	.L16
	mov	edi, r12d
	call	hx509_cert_ref@PLT
	mov	rcx, QWORD PTR 8[rsp]
	xor	esi, esi
	mov	rdi, r14
	mov	QWORD PTR [r14], rax
	mov	edx, DWORD PTR CKA_CLASS[rip]
	mov	r8d, 1
	call	add_object_attribute@PLT
	mov	rcx, QWORD PTR [rsp]
	xor	esi, esi
	mov	rdi, r14
	mov	edx, DWORD PTR CKA_TOKEN[rip]
	mov	r8d, 1
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_PRIVATE[rip]
	xor	esi, esi
	mov	rcx, r15
	mov	r8d, 1
	mov	rdi, r14
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_MODIFIABLE[rip]
	xor	esi, esi
	mov	rcx, r15
	mov	r8d, 1
	mov	rdi, r14
	call	add_object_attribute@PLT
	mov	rdi, QWORD PTR [rbx]
	call	strlen@PLT
	mov	rcx, QWORD PTR [rbx]
	mov	edx, DWORD PTR CKA_LABEL[rip]
	xor	esi, esi
	mov	r8d, eax
	mov	rdi, r14
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_KEY_TYPE[rip]
	xor	esi, esi
	mov	rdi, r14
	lea	rax, 42[rsp]
	mov	r8d, 1
	mov	rcx, rax
	mov	QWORD PTR 16[rsp], rax
	call	add_object_attribute@PLT
	mov	rdi, QWORD PTR 8[rbx]
	call	strlen@PLT
	mov	rcx, QWORD PTR 8[rbx]
	xor	esi, esi
	mov	rdi, r14
	mov	edx, DWORD PTR CKA_ID[rip]
	mov	r8d, eax
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_START_DATE[rip]
	xor	esi, esi
	mov	rdi, r14
	mov	r8d, 1
	lea	rcx, empty.2036[rip]
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_END_DATE[rip]
	xor	esi, esi
	mov	rdi, r14
	mov	r8d, 1
	lea	rcx, empty.2036[rip]
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_DERIVE[rip]
	xor	esi, esi
	mov	rcx, r15
	mov	r8d, 1
	mov	rdi, r14
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_LOCAL[rip]
	xor	esi, esi
	mov	rcx, r15
	mov	r8d, 1
	mov	rdi, r14
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_KEY_GEN_MECHANISM[rip]
	xor	esi, esi
	mov	rdi, r14
	movzx	eax, BYTE PTR CKM_RSA_X_509[rip]
	mov	r8d, 1
	mov	BYTE PTR 43[rsp], al
	lea	rax, 43[rsp]
	mov	rcx, rax
	mov	QWORD PTR 24[rsp], rax
	call	add_object_attribute@PLT
	mov	r8d, DWORD PTR 72[rsp]
	xor	esi, esi
	mov	rdi, r14
	mov	rcx, QWORD PTR 64[rsp]
	mov	edx, DWORD PTR CKA_SUBJECT[rip]
	call	add_object_attribute@PLT
	mov	rcx, QWORD PTR [rsp]
	xor	esi, esi
	mov	rdi, r14
	mov	edx, DWORD PTR CKA_ENCRYPT[rip]
	mov	r8d, 1
	call	add_object_attribute@PLT
	mov	rcx, QWORD PTR [rsp]
	xor	esi, esi
	mov	rdi, r14
	mov	edx, DWORD PTR CKA_VERIFY[rip]
	mov	r8d, 1
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_VERIFY_RECOVER[rip]
	xor	esi, esi
	mov	rcx, r15
	mov	r8d, 1
	mov	rdi, r14
	call	add_object_attribute@PLT
	mov	rcx, QWORD PTR [rsp]
	xor	esi, esi
	mov	rdi, r14
	mov	edx, DWORD PTR CKA_WRAP[rip]
	mov	r8d, 1
	call	add_object_attribute@PLT
	mov	rcx, QWORD PTR [rsp]
	xor	esi, esi
	mov	rdi, r14
	mov	edx, DWORD PTR CKA_TRUSTED[rip]
	mov	r8d, 1
	call	add_object_attribute@PLT
	movsx	edx, BYTE PTR 42[rsp]
	mov	ecx, r12d
	mov	rsi, r14
	mov	edi, ebp
	call	add_pubkey_info@PLT
	mov	rdi, r14
	call	OBJECT_ID@PLT
	lea	rdi, .LC2[rip]
	mov	rsi, rax
	xor	eax, eax
	call	st_logf@PLT
	mov	edi, r12d
	call	hx509_cert_have_private_key@PLT
	test	rax, rax
	je	.L10
	movzx	eax, BYTE PTR CKO_PRIVATE_KEY[rip]
	mov	BYTE PTR 38[rsp], al
	xor	eax, eax
	call	add_st_object@PLT
	mov	r14, rax
	test	rax, rax
	je	.L16
	mov	edi, r12d
	call	hx509_cert_ref@PLT
	mov	rcx, QWORD PTR 8[rsp]
	xor	esi, esi
	mov	rdi, r14
	mov	QWORD PTR [r14], rax
	mov	edx, DWORD PTR CKA_CLASS[rip]
	mov	r8d, 1
	call	add_object_attribute@PLT
	mov	rcx, QWORD PTR [rsp]
	xor	esi, esi
	mov	rdi, r14
	mov	edx, DWORD PTR CKA_TOKEN[rip]
	mov	r8d, 1
	call	add_object_attribute@PLT
	mov	rcx, QWORD PTR [rsp]
	xor	esi, esi
	mov	rdi, r14
	mov	edx, DWORD PTR CKA_PRIVATE[rip]
	mov	r8d, 1
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_MODIFIABLE[rip]
	mov	rcx, r15
	xor	esi, esi
	mov	r8d, 1
	mov	rdi, r14
	call	add_object_attribute@PLT
	mov	rdi, QWORD PTR [rbx]
	call	strlen@PLT
	mov	rcx, QWORD PTR [rbx]
	mov	edx, DWORD PTR CKA_LABEL[rip]
	xor	esi, esi
	mov	rdi, r14
	mov	r8d, eax
	call	add_object_attribute@PLT
	mov	rcx, QWORD PTR 16[rsp]
	xor	esi, esi
	mov	rdi, r14
	mov	edx, DWORD PTR CKA_KEY_TYPE[rip]
	mov	r8d, 1
	call	add_object_attribute@PLT
	mov	rdi, QWORD PTR 8[rbx]
	call	strlen@PLT
	mov	rcx, QWORD PTR 8[rbx]
	xor	esi, esi
	mov	rdi, r14
	mov	edx, DWORD PTR CKA_ID[rip]
	mov	r8d, eax
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_START_DATE[rip]
	xor	esi, esi
	mov	rdi, r14
	mov	r8d, 1
	lea	rcx, empty.2036[rip]
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_END_DATE[rip]
	xor	esi, esi
	mov	rdi, r14
	mov	r8d, 1
	lea	rcx, empty.2036[rip]
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_DERIVE[rip]
	mov	rcx, r15
	xor	esi, esi
	mov	rdi, r14
	mov	r8d, 1
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_LOCAL[rip]
	mov	rcx, r15
	xor	esi, esi
	mov	rdi, r14
	mov	r8d, 1
	call	add_object_attribute@PLT
	mov	rcx, QWORD PTR 24[rsp]
	xor	esi, esi
	mov	rdi, r14
	movzx	eax, BYTE PTR CKM_RSA_X_509[rip]
	mov	edx, DWORD PTR CKA_KEY_GEN_MECHANISM[rip]
	mov	r8d, 1
	mov	BYTE PTR 43[rsp], al
	call	add_object_attribute@PLT
	mov	r8d, DWORD PTR 72[rsp]
	xor	esi, esi
	mov	rdi, r14
	mov	rcx, QWORD PTR 64[rsp]
	mov	edx, DWORD PTR CKA_SUBJECT[rip]
	call	add_object_attribute@PLT
	mov	rbx, QWORD PTR [rsp]
	xor	esi, esi
	mov	rdi, r14
	mov	edx, DWORD PTR CKA_SENSITIVE[rip]
	mov	r8d, 1
	mov	rcx, rbx
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_SECONDARY_AUTH[rip]
	mov	rcx, r15
	xor	esi, esi
	mov	rdi, r14
	mov	r8d, 1
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_AUTH_PIN_FLAGS[rip]
	mov	rcx, r13
	xor	esi, esi
	mov	rdi, r14
	mov	r8d, 1
	mov	BYTE PTR 44[rsp], 0
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_DECRYPT[rip]
	mov	rcx, rbx
	xor	esi, esi
	mov	rdi, r14
	mov	r8d, 1
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_SIGN[rip]
	mov	rcx, rbx
	xor	esi, esi
	mov	rdi, r14
	mov	r8d, 1
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_SIGN_RECOVER[rip]
	mov	rcx, r15
	xor	esi, esi
	mov	rdi, r14
	mov	r8d, 1
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_UNWRAP[rip]
	mov	rcx, rbx
	xor	esi, esi
	mov	rdi, r14
	mov	r8d, 1
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_EXTRACTABLE[rip]
	mov	rcx, rbx
	xor	esi, esi
	mov	rdi, r14
	mov	r8d, 1
	call	add_object_attribute@PLT
	mov	edx, DWORD PTR CKA_NEVER_EXTRACTABLE[rip]
	mov	rcx, r15
	xor	esi, esi
	mov	rdi, r14
	mov	r8d, 1
	call	add_object_attribute@PLT
	movsx	edx, BYTE PTR 42[rsp]
	mov	ecx, r12d
	mov	rsi, r14
	mov	edi, ebp
	call	add_pubkey_info@PLT
	jmp	.L10
.L16:
	mov	r14, QWORD PTR CKR_DEVICE_MEMORY[rip]
	jmp	.L2
.L19:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE0:
	.size	add_cert, .-add_cert
	.local	empty.2036
	.comm	empty.2036,1,1
	.comm	context,4,4
	.comm	CK_TRUE,1,1
	.comm	CK_FALSE,1,1
	.comm	CKR_OK,8,8
	.comm	CKR_GENERAL_ERROR,8,8
	.comm	CKR_DEVICE_MEMORY,8,8
	.comm	CKO_PUBLIC_KEY,1,1
	.comm	CKO_PRIVATE_KEY,1,1
	.comm	CKO_CERTIFICATE,1,1
	.comm	CKM_RSA_X_509,1,1
	.comm	CKK_RSA,1,1
	.comm	CKC_X_509,1,1
	.comm	CKA_WRAP,4,4
	.comm	CKA_VERIFY_RECOVER,4,4
	.comm	CKA_VERIFY,4,4
	.comm	CKA_VALUE,4,4
	.comm	CKA_UNWRAP,4,4
	.comm	CKA_TRUSTED,4,4
	.comm	CKA_TOKEN,4,4
	.comm	CKA_SUBJECT,4,4
	.comm	CKA_START_DATE,4,4
	.comm	CKA_SIGN_RECOVER,4,4
	.comm	CKA_SIGN,4,4
	.comm	CKA_SERIAL_NUMBER,4,4
	.comm	CKA_SENSITIVE,4,4
	.comm	CKA_SECONDARY_AUTH,4,4
	.comm	CKA_PRIVATE,4,4
	.comm	CKA_NEVER_EXTRACTABLE,4,4
	.comm	CKA_MODIFIABLE,4,4
	.comm	CKA_LOCAL,4,4
	.comm	CKA_LABEL,4,4
	.comm	CKA_KEY_TYPE,4,4
	.comm	CKA_KEY_GEN_MECHANISM,4,4
	.comm	CKA_ISSUER,4,4
	.comm	CKA_ID,4,4
	.comm	CKA_EXTRACTABLE,4,4
	.comm	CKA_END_DATE,4,4
	.comm	CKA_ENCRYPT,4,4
	.comm	CKA_DERIVE,4,4
	.comm	CKA_DECRYPT,4,4
	.comm	CKA_CLASS,4,4
	.comm	CKA_CERTIFICATE_TYPE,4,4
	.comm	CKA_AUTH_PIN_FLAGS,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 8
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 8
4:

	.arch armv5t
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 2
	.eabi_attribute 30, 2
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"extr_softp11.c_add_cert.c"
	.text
	.section	.rodata.str1.4,"aMS",%progbits,1
	.align	2
.LC0:
	.ascii	"adding certificate\012\000"
	.align	2
.LC1:
	.ascii	"add cert ok: %lx\012\000"
	.align	2
.LC2:
	.ascii	"add key ok: %lx\012\000"
	.align	2
.LC3:
	.ascii	"something went wrong when adding cert!\012\000"
	.section	.rodata.cst4,"aM",%progbits,4
	.align	2
.LC4:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	add_cert, %function
add_cert:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
	ldr	ip, .L21
	mov	r5, r0
	ldr	r3, .L21+4
	ldr	r0, .L21+8
	ldrb	r7, [ip]	@ zero_extendqisi2
	ldrb	lr, [r0]	@ zero_extendqisi2
	ldrb	ip, [r3]	@ zero_extendqisi2
	mov	r4, r2
	ldr	r3, .L21+12
	ldr	r2, .L21+16
	sub	sp, sp, #60
	ldr	r0, .L21+20
	ldr	r2, [r2]
	str	r2, [sp, #52]
	mov	r2,#0
	mov	r6, r1
	ldr	r9, [r3]
	strb	r7, [sp, #19]
	strb	lr, [sp, #20]
	strb	ip, [sp, #21]
	bl	st_logf
	mov	r3, #0
	add	r2, sp, #28
	str	r3, [sp, #44]
	str	r3, [sp, #48]
	add	r8, sp, #44
	add	r7, sp, #36
	ldm	r8, {r0, r1}
	stm	r7, {r0, r1}
	stm	r2, {r0, r1}
	mov	r1, r4
	mov	r0, r5
	bl	hx509_cert_binary
	cmp	r0, #0
	beq	.L19
.L2:
	ldr	r3, .L21+24
	ldr	r3, [r3]
	cmp	r3, r9
	beq	.L10
	ldr	r0, .L21+28
	bl	st_logf
.L10:
	ldr	r0, [sp, #28]
	bl	hx509_xfree
	mov	r0, #0
	bl	hx509_xfree
	ldr	r0, [sp, #44]
	bl	hx509_xfree
	ldr	r0, [sp, #36]
	bl	hx509_xfree
	ldr	r3, .L21+16
	ldr	r2, [r3]
	ldr	r3, [sp, #52]
	eors	r2, r3, r2
	mov	r3, #0
	bne	.L20
	mov	r0, #0
	add	sp, sp, #60
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L19:
	mov	r0, r4
	add	r1, sp, #24
	bl	hx509_cert_get_issuer
	cmp	r0, #0
	bne	.L2
	mov	r1, r8
	ldr	r0, [sp, #24]
	bl	hx509_name_binary
	mov	r8, r0
	add	r0, sp, #24
	bl	hx509_name_free
	cmp	r8, #0
	bne	.L2
	mov	r0, r4
	add	r1, sp, #24
	bl	hx509_cert_get_subject
	cmp	r0, #0
	bne	.L2
	mov	r1, r7
	ldr	r0, [sp, #24]
	bl	hx509_name_binary
	mov	r7, r0
	add	r0, sp, #24
	bl	hx509_name_free
	cmp	r7, #0
	bne	.L2
	ldr	r3, .L21+32
	mov	r1, r4
	ldr	r0, [r3]
	add	r2, sp, #24
	bl	hx509_cert_get_SPKI_AlgorithmIdentifier
	subs	r7, r0, #0
	bne	.L17
	ldr	r3, .L21+36
	add	r0, sp, #24
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [sp, #22]
	bl	free_AlgorithmIdentifier
	ldr	r3, .L21+40
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [sp, #18]
	bl	add_st_object
	subs	r8, r0, #0
	beq	.L17
	mov	r0, r4
	bl	hx509_cert_ref
	mov	r9, #1
	ldr	fp, .L21+44
	str	r0, [r8]
	mov	r1, r7
	mov	r0, r8
	ldr	r2, [fp]
	add	r3, sp, #18
	ldr	r10, .L21+48
	str	r9, [sp]
	bl	add_object_attribute
	str	r9, [sp]
	mov	r1, r7
	mov	r0, r8
	ldr	r2, [r10]
	add	r3, sp, #19
	bl	add_object_attribute
	ldr	r3, .L21+52
	str	r9, [sp]
	ldr	r2, [r3]
	mov	r1, r7
	mov	r0, r8
	add	r3, sp, #20
	bl	add_object_attribute
	ldr	r2, .L21+56
	str	r9, [sp]
	mov	r1, r7
	ldr	r2, [r2]
	mov	r0, r8
	add	r3, sp, #20
	bl	add_object_attribute
	ldr	r3, [r6]
	mov	r0, r3
	str	r3, [sp, #12]
	bl	strlen
	ldr	r2, .L21+60
	str	r0, [sp]
	mov	r1, r7
	mov	r0, r8
	ldr	r3, [sp, #12]
	ldr	r2, [r2]
	bl	add_object_attribute
	ldr	r3, .L21+64
	str	r9, [sp]
	ldr	r2, [r3]
	mov	r1, r7
	mov	r0, r8
	add	r3, sp, #21
	bl	add_object_attribute
	ldr	r3, [r6, #4]
	mov	r0, r3
	str	r3, [sp, #12]
	bl	strlen
	ldr	r2, .L21+68
	str	r0, [sp]
	mov	r1, r7
	mov	r0, r8
	ldr	r3, [sp, #12]
	ldr	r2, [r2]
	bl	add_object_attribute
	ldr	r3, [sp, #40]
	ldr	r2, .L21+72
	mov	r1, r7
	ldr	r2, [r2]
	mov	r0, r8
	str	r3, [sp]
	ldr	r3, [sp, #36]
	bl	add_object_attribute
	ldr	r3, [sp, #48]
	ldr	r2, .L21+76
	mov	r1, r7
	ldr	r2, [r2]
	mov	r0, r8
	str	r3, [sp]
	ldr	r3, [sp, #44]
	bl	add_object_attribute
	ldr	r3, .L21+80
	str	r7, [sp]
	ldr	r2, [r3]
	mov	r1, r7
	mov	r3, r7
	mov	r0, r8
	bl	add_object_attribute
	ldr	r3, [sp, #32]
	ldr	r2, .L21+84
	mov	r1, r7
	ldr	r2, [r2]
	mov	r0, r8
	str	r3, [sp]
	ldr	r3, [sp, #28]
	bl	add_object_attribute
	ldr	r2, .L21+88
	str	r9, [sp]
	ldr	r2, [r2]
	add	r3, sp, #20
	mov	r1, r7
	mov	r0, r8
	bl	add_object_attribute
	mov	r0, r8
	bl	OBJECT_ID
	mov	r1, r0
	ldr	r0, .L21+92
	bl	st_logf
	ldr	r3, .L21+96
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [sp, #18]
	bl	add_st_object
	subs	r8, r0, #0
	beq	.L17
	mov	r0, r4
	bl	hx509_cert_ref
	mov	r1, r7
	str	r0, [r8]
	ldr	r2, [fp]
	add	r3, sp, #18
	mov	r0, r8
	str	r9, [sp]
	bl	add_object_attribute
	str	r9, [sp]
	mov	r1, r7
	ldr	r2, [r10]
	add	r3, sp, #19
	mov	r0, r8
	bl	add_object_attribute
	ldr	r2, .L21+52
	str	r9, [sp]
	mov	r1, r7
	ldr	r2, [r2]
	add	r3, sp, #20
	mov	r0, r8
	bl	add_object_attribute
	ldr	r2, .L21+56
	str	r9, [sp]
	mov	r1, r7
	ldr	r2, [r2]
	add	r3, sp, #20
	mov	r0, r8
	bl	add_object_attribute
	ldr	r3, [r6]
	mov	r0, r3
	str	r3, [sp, #12]
	bl	strlen
	ldr	r2, .L21+60
	str	r0, [sp]
	mov	r1, r7
	ldr	r3, [sp, #12]
	ldr	r2, [r2]
	mov	r0, r8
	bl	add_object_attribute
	ldr	r3, .L21+100
	str	r9, [sp]
	ldr	r2, [r3]
	mov	r1, r7
	add	r3, sp, #22
	mov	r0, r8
	bl	add_object_attribute
	ldr	r3, [r6, #4]
	mov	r0, r3
	str	r3, [sp, #12]
	bl	strlen
	ldr	r2, .L21+68
	str	r0, [sp]
	mov	r1, r7
	ldr	r3, [sp, #12]
	ldr	r2, [r2]
	mov	r0, r8
	bl	add_object_attribute
	ldr	r3, .L21+104
	str	r9, [sp]
	ldr	r2, [r3]
	mov	r1, r7
	ldr	r3, .L21+108
	mov	r0, r8
	bl	add_object_attribute
	ldr	r3, .L21+112
	str	r9, [sp]
	ldr	r2, [r3]
	mov	r1, r7
	ldr	r3, .L21+108
	mov	r0, r8
	bl	add_object_attribute
	ldr	r3, .L21+116
	str	r9, [sp]
	ldr	r2, [r3]
	mov	r1, r7
	add	r3, sp, #20
	mov	r0, r8
	bl	add_object_attribute
	ldr	r3, .L21+120
	str	r9, [sp]
	ldr	r2, [r3]
	mov	r1, r7
	add	r3, sp, #20
	mov	r0, r8
	bl	add_object_attribute
	ldr	r3, .L21+124
	mov	r1, r7
	ldrb	ip, [r3]	@ zero_extendqisi2
	ldr	r3, .L21+128
	str	r9, [sp]
	ldr	r2, [r3]
	mov	r0, r8
	add	r3, sp, #23
	strb	ip, [sp, #23]
	bl	add_object_attribute
	ldr	r2, [sp, #40]
	mov	r1, r7
	str	r2, [sp]
	ldr	r2, .L21+72
	ldr	r3, [sp, #36]
	ldr	r2, [r2]
	mov	r0, r8
	bl	add_object_attribute
	ldr	r3, .L21+132
	str	r9, [sp]
	ldr	r2, [r3]
	mov	r1, r7
	add	r3, sp, #19
	mov	r0, r8
	bl	add_object_attribute
	ldr	r3, .L21+136
	str	r9, [sp]
	ldr	r2, [r3]
	mov	r1, r7
	add	r3, sp, #19
	mov	r0, r8
	bl	add_object_attribute
	ldr	r3, .L21+140
	str	r9, [sp]
	ldr	r2, [r3]
	mov	r1, r7
	add	r3, sp, #20
	mov	r0, r8
	bl	add_object_attribute
	ldr	r3, .L21+144
	str	r9, [sp]
	ldr	r2, [r3]
	mov	r1, r7
	add	r3, sp, #19
	mov	r0, r8
	bl	add_object_attribute
	ldr	r3, .L21+88
	str	r9, [sp]
	ldr	r2, [r3]
	mov	r1, r7
	add	r3, sp, #19
	mov	r0, r8
	bl	add_object_attribute
	mov	r3, r4
	ldrb	r2, [sp, #22]	@ zero_extendqisi2
	mov	r1, r8
	mov	r0, r5
	bl	add_pubkey_info
	mov	r0, r8
	bl	OBJECT_ID
	mov	r1, r0
	ldr	r0, .L21+148
	bl	st_logf
	mov	r0, r4
	bl	hx509_cert_have_private_key
	cmp	r0, #0
	beq	.L10
	ldr	r3, .L21+152
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [sp, #18]
	bl	add_st_object
	subs	r7, r0, #0
	beq	.L17
	mov	r0, r4
	mov	r8, #1
	bl	hx509_cert_ref
	ldr	r2, [fp]
	str	r0, [r7]
	add	r3, sp, #18
	mov	r1, #0
	mov	r0, r7
	str	r8, [sp]
	bl	add_object_attribute
	str	r8, [sp]
	ldr	r2, [r10]
	add	r3, sp, #19
	mov	r1, #0
	mov	r0, r7
	bl	add_object_attribute
	ldr	r3, .L21+52
	str	r8, [sp]
	ldr	r2, [r3]
	mov	r1, #0
	add	r3, sp, #19
	mov	r0, r7
	bl	add_object_attribute
	ldr	r3, .L21+56
	str	r8, [sp]
	ldr	r2, [r3]
	mov	r1, #0
	add	r3, sp, #20
	mov	r0, r7
	bl	add_object_attribute
	ldr	r10, [r6]
	mov	r9, #0
	mov	r0, r10
	bl	strlen
	ldr	r2, .L21+60
	str	r0, [sp]
	mov	r3, r10
	mov	r1, r9
	mov	r0, r7
	ldr	r2, [r2]
	bl	add_object_attribute
	ldr	r2, .L21+100
	str	r8, [sp]
	mov	r1, r9
	add	r3, sp, #22
	ldr	r2, [r2]
	mov	r0, r7
	bl	add_object_attribute
	ldr	r6, [r6, #4]
	mov	r0, r6
	bl	strlen
	ldr	r2, .L21+68
	str	r0, [sp]
	mov	r3, r6
	mov	r1, r9
	mov	r0, r7
	ldr	r2, [r2]
	bl	add_object_attribute
	ldr	r3, .L21+104
	str	r8, [sp]
	mov	r1, r9
	ldr	r2, [r3]
	mov	r0, r7
	ldr	r3, .L21+108
	bl	add_object_attribute
	ldr	r3, .L21+112
	str	r8, [sp]
	mov	r1, r9
	ldr	r2, [r3]
	mov	r0, r7
	ldr	r3, .L21+108
	bl	add_object_attribute
	ldr	r3, .L21+116
	str	r8, [sp]
	mov	r1, r9
	ldr	r2, [r3]
	mov	r0, r7
	add	r3, sp, #20
	bl	add_object_attribute
	ldr	r3, .L21+120
	str	r8, [sp]
	mov	r1, r9
	ldr	r2, [r3]
	mov	r0, r7
	add	r3, sp, #20
	bl	add_object_attribute
	ldr	r3, .L21+124
	ldr	r2, .L21+128
	ldrb	ip, [r3]	@ zero_extendqisi2
	str	r8, [sp]
	mov	r1, r9
	add	r3, sp, #23
	mov	r0, r7
	ldr	r2, [r2]
	strb	ip, [sp, #23]
	bl	add_object_attribute
	ldr	r3, [sp, #40]
	ldr	r2, .L21+72
	mov	r1, r9
	ldr	r2, [r2]
	mov	r0, r7
	str	r3, [sp]
	ldr	r3, [sp, #36]
	bl	add_object_attribute
	ldr	r3, .L21+156
	str	r8, [sp]
	mov	r1, r9
	ldr	r2, [r3]
	mov	r0, r7
	add	r3, sp, #19
	bl	add_object_attribute
	ldr	r3, .L21+160
	str	r8, [sp]
	mov	r1, r9
	ldr	r2, [r3]
	mov	r0, r7
	add	r3, sp, #20
	bl	add_object_attribute
	ldr	r2, .L21+164
	str	r8, [sp]
	mov	r1, r9
	add	r3, sp, #24
	mov	r0, r7
	ldr	r2, [r2]
	strb	r9, [sp, #24]
	bl	add_object_attribute
	ldr	r3, .L21+168
	str	r8, [sp]
	mov	r1, r9
	ldr	r2, [r3]
	mov	r0, r7
	add	r3, sp, #19
	bl	add_object_attribute
	ldr	r3, .L21+172
	str	r8, [sp]
	mov	r1, r9
	ldr	r2, [r3]
	mov	r0, r7
	add	r3, sp, #19
	bl	add_object_attribute
	ldr	r3, .L21+176
	str	r8, [sp]
	mov	r1, r9
	ldr	r2, [r3]
	mov	r0, r7
	add	r3, sp, #20
	bl	add_object_attribute
	ldr	r3, .L21+180
	str	r8, [sp]
	mov	r1, r9
	ldr	r2, [r3]
	mov	r0, r7
	add	r3, sp, #19
	bl	add_object_attribute
	ldr	r2, .L21+184
	str	r8, [sp]
	mov	r1, r9
	add	r3, sp, #19
	mov	r0, r7
	ldr	r2, [r2]
	bl	add_object_attribute
	ldr	r2, .L21+188
	str	r8, [sp]
	mov	r1, r9
	add	r3, sp, #20
	mov	r0, r7
	ldr	r2, [r2]
	bl	add_object_attribute
	mov	r3, r4
	mov	r1, r7
	mov	r0, r5
	ldrb	r2, [sp, #22]	@ zero_extendqisi2
	bl	add_pubkey_info
	b	.L10
.L17:
	ldr	r3, .L21+192
	ldr	r9, [r3]
	b	.L2
.L20:
	bl	__stack_chk_fail
.L22:
	.align	2
.L21:
	.word	CK_TRUE
	.word	CKC_X_509
	.word	CK_FALSE
	.word	CKR_GENERAL_ERROR
	.word	.LC4
	.word	.LC0
	.word	CKR_OK
	.word	.LC3
	.word	context
	.word	CKK_RSA
	.word	CKO_CERTIFICATE
	.word	CKA_CLASS
	.word	CKA_TOKEN
	.word	CKA_PRIVATE
	.word	CKA_MODIFIABLE
	.word	CKA_LABEL
	.word	CKA_CERTIFICATE_TYPE
	.word	CKA_ID
	.word	CKA_SUBJECT
	.word	CKA_ISSUER
	.word	CKA_SERIAL_NUMBER
	.word	CKA_VALUE
	.word	CKA_TRUSTED
	.word	.LC1
	.word	CKO_PUBLIC_KEY
	.word	CKA_KEY_TYPE
	.word	CKA_START_DATE
	.word	.LANCHOR0
	.word	CKA_END_DATE
	.word	CKA_DERIVE
	.word	CKA_LOCAL
	.word	CKM_RSA_X_509
	.word	CKA_KEY_GEN_MECHANISM
	.word	CKA_ENCRYPT
	.word	CKA_VERIFY
	.word	CKA_VERIFY_RECOVER
	.word	CKA_WRAP
	.word	.LC2
	.word	CKO_PRIVATE_KEY
	.word	CKA_SENSITIVE
	.word	CKA_SECONDARY_AUTH
	.word	CKA_AUTH_PIN_FLAGS
	.word	CKA_DECRYPT
	.word	CKA_SIGN
	.word	CKA_SIGN_RECOVER
	.word	CKA_UNWRAP
	.word	CKA_EXTRACTABLE
	.word	CKA_NEVER_EXTRACTABLE
	.word	CKR_DEVICE_MEMORY
	.size	add_cert, .-add_cert
	.comm	context,4,4
	.comm	CK_TRUE,1,1
	.comm	CK_FALSE,1,1
	.comm	CKR_OK,4,4
	.comm	CKR_GENERAL_ERROR,4,4
	.comm	CKR_DEVICE_MEMORY,4,4
	.comm	CKO_PUBLIC_KEY,1,1
	.comm	CKO_PRIVATE_KEY,1,1
	.comm	CKO_CERTIFICATE,1,1
	.comm	CKM_RSA_X_509,1,1
	.comm	CKK_RSA,1,1
	.comm	CKC_X_509,1,1
	.comm	CKA_WRAP,4,4
	.comm	CKA_VERIFY_RECOVER,4,4
	.comm	CKA_VERIFY,4,4
	.comm	CKA_VALUE,4,4
	.comm	CKA_UNWRAP,4,4
	.comm	CKA_TRUSTED,4,4
	.comm	CKA_TOKEN,4,4
	.comm	CKA_SUBJECT,4,4
	.comm	CKA_START_DATE,4,4
	.comm	CKA_SIGN_RECOVER,4,4
	.comm	CKA_SIGN,4,4
	.comm	CKA_SERIAL_NUMBER,4,4
	.comm	CKA_SENSITIVE,4,4
	.comm	CKA_SECONDARY_AUTH,4,4
	.comm	CKA_PRIVATE,4,4
	.comm	CKA_NEVER_EXTRACTABLE,4,4
	.comm	CKA_MODIFIABLE,4,4
	.comm	CKA_LOCAL,4,4
	.comm	CKA_LABEL,4,4
	.comm	CKA_KEY_TYPE,4,4
	.comm	CKA_KEY_GEN_MECHANISM,4,4
	.comm	CKA_ISSUER,4,4
	.comm	CKA_ID,4,4
	.comm	CKA_EXTRACTABLE,4,4
	.comm	CKA_END_DATE,4,4
	.comm	CKA_ENCRYPT,4,4
	.comm	CKA_DERIVE,4,4
	.comm	CKA_DECRYPT,4,4
	.comm	CKA_CLASS,4,4
	.comm	CKA_CERTIFICATE_TYPE,4,4
	.comm	CKA_AUTH_PIN_FLAGS,4,4
	.bss
	.align	2
	.set	.LANCHOR0,. + 0
	.type	empty.4320, %object
	.size	empty.4320, 1
empty.4320:
	.space	1
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
