	.file	"extr_ec_pmeth.c_pkey_ec_ctrl.c"
	.intel_syntax noprefix
	.text
	.p2align 4
	.type	pkey_ec_ctrl, @function
pkey_ec_ctrl:
.LFB0:
	.cfi_startproc
	endbr64
	push	r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	add	esi, -128
	push	r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	push	rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	push	rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	sub	rsp, 8
	.cfi_def_cfa_offset 48
	mov	rbx, QWORD PTR 8[rdi]
	cmp	esi, 15
	ja	.L22
	movsx	rbp, edx
	lea	rdx, .L4[rip]
	mov	r12, rcx
	movsx	rax, DWORD PTR [rdx+rsi*4]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L4:
	.long	.L30-.L4
	.long	.L30-.L4
	.long	.L16-.L4
	.long	.L15-.L4
	.long	.L14-.L4
	.long	.L13-.L4
	.long	.L12-.L4
	.long	.L11-.L4
	.long	.L10-.L4
	.long	.L9-.L4
	.long	.L8-.L4
	.long	.L7-.L4
	.long	.L6-.L4
	.long	.L5-.L4
	.long	.L30-.L4
	.long	.L30-.L4
	.text
	.p2align 4,,10
	.p2align 3
.L30:
	mov	r12d, 1
.L1:
	add	rsp, 8
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	mov	eax, r12d
	pop	rbx
	.cfi_def_cfa_offset 32
	pop	rbp
	.cfi_def_cfa_offset 24
	pop	r12
	.cfi_def_cfa_offset 16
	pop	r13
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L5:
	.cfi_restore_state
	cmp	ebp, -2
	je	.L39
	lea	eax, 1[rbp]
	cmp	eax, 2
	ja	.L22
	mov	DWORD PTR [rbx], ebp
	cmp	ebp, -1
	je	.L21
	mov	rax, QWORD PTR [rdi]
	mov	r13, QWORD PTR [rax]
	mov	rax, QWORD PTR 0[r13]
	test	rax, rax
	je	.L22
	mov	edi, DWORD PTR [rax]
	call	BN_is_one@PLT
	mov	r12d, eax
	test	eax, eax
	jne	.L30
	mov	rdi, QWORD PTR 48[rbx]
	test	rdi, rdi
	je	.L40
.L23:
	mov	esi, DWORD PTR EC_FLAG_COFACTOR_ECDH[rip]
	test	ebp, ebp
	je	.L24
	call	EC_KEY_set_flags@PLT
	mov	r12d, 1
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L16:
	mov	rdi, rcx
	call	EVP_MD_type@PLT
	cmp	eax, DWORD PTR NID_sha1[rip]
	jne	.L41
.L28:
	mov	QWORD PTR 32[rbx], r12
	mov	r12d, 1
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L15:
	mov	rax, QWORD PTR 32[rbx]
	mov	r12d, 1
	mov	QWORD PTR [rcx], rax
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L14:
	mov	rax, QWORD PTR 16[rbx]
	mov	r12d, DWORD PTR 24[rbx]
	mov	QWORD PTR [rcx], rax
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L13:
	mov	rax, QWORD PTR 8[rbx]
	mov	r12d, 1
	mov	DWORD PTR [rcx], eax
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L12:
	mov	rax, QWORD PTR 40[rbx]
	mov	r12d, 1
	mov	QWORD PTR [rcx], rax
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L11:
	mov	rdi, QWORD PTR 56[rbx]
	test	rdi, rdi
	je	.L42
	mov	esi, ebp
	mov	r12d, 1
	call	EC_GROUP_set_asn1_flag@PLT
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L10:
	mov	edi, ebp
	call	EC_GROUP_new_by_curve_name@PLT
	mov	rbp, rax
	test	rax, rax
	je	.L43
	mov	rdi, QWORD PTR 56[rbx]
	mov	r12d, 1
	call	EC_GROUP_free@PLT
	mov	QWORD PTR 56[rbx], rbp
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L9:
	mov	rdi, QWORD PTR 16[rbx]
	call	OPENSSL_free@PLT
	mov	QWORD PTR 16[rbx], r12
	test	r12, r12
	je	.L27
	mov	DWORD PTR 24[rbx], ebp
	mov	r12d, 1
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L8:
	cmp	ebp, -2
	je	.L44
	cmp	DWORD PTR EVP_PKEY_ECDH_KDF_NONE[rip], ebp
	je	.L26
	cmp	DWORD PTR EVP_PKEY_ECDH_KDF_X9_63[rip], ebp
	je	.L26
.L22:
	mov	r12d, -2
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L7:
	test	ebp, ebp
	jle	.L22
	mov	QWORD PTR 8[rbx], rbp
	mov	r12d, 1
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L6:
	mov	QWORD PTR 40[rbx], rcx
	mov	r12d, 1
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L26:
	mov	DWORD PTR 4[rbx], ebp
	mov	r12d, 1
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L41:
	mov	rdi, r12
	call	EVP_MD_type@PLT
	cmp	eax, DWORD PTR NID_ecdsa_with_SHA1[rip]
	je	.L28
	mov	rdi, r12
	call	EVP_MD_type@PLT
	cmp	eax, DWORD PTR NID_sha224[rip]
	je	.L28
	mov	rdi, r12
	call	EVP_MD_type@PLT
	cmp	eax, DWORD PTR NID_sha256[rip]
	je	.L28
	mov	rdi, r12
	call	EVP_MD_type@PLT
	cmp	eax, DWORD PTR NID_sha384[rip]
	je	.L28
	mov	rdi, r12
	call	EVP_MD_type@PLT
	cmp	eax, DWORD PTR NID_sha512[rip]
	je	.L28
	mov	rdi, r12
	call	EVP_MD_type@PLT
	cmp	eax, DWORD PTR NID_sha3_224[rip]
	je	.L28
	mov	rdi, r12
	call	EVP_MD_type@PLT
	cmp	eax, DWORD PTR NID_sha3_256[rip]
	je	.L28
	mov	rdi, r12
	call	EVP_MD_type@PLT
	cmp	eax, DWORD PTR NID_sha3_384[rip]
	je	.L28
	mov	rdi, r12
	call	EVP_MD_type@PLT
	cmp	eax, DWORD PTR NID_sha3_512[rip]
	je	.L28
	mov	esi, DWORD PTR EC_R_INVALID_DIGEST_TYPE[rip]
	mov	edi, DWORD PTR EC_F_PKEY_EC_CTRL[rip]
	xor	r12d, r12d
	call	ECerr@PLT
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L39:
	mov	r12d, DWORD PTR [rbx]
	cmp	r12d, -1
	jne	.L1
	mov	rax, QWORD PTR [rdi]
	xor	r12d, r12d
	mov	rdi, QWORD PTR [rax]
	call	EC_KEY_get_flags@PLT
	test	DWORD PTR EC_FLAG_COFACTOR_ECDH[rip], eax
	setne	r12b
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L27:
	mov	DWORD PTR 24[rbx], 0
	mov	r12d, 1
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L44:
	mov	r12d, DWORD PTR 4[rbx]
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L42:
	mov	esi, DWORD PTR EC_R_NO_PARAMETERS_SET[rip]
	mov	edi, DWORD PTR EC_F_PKEY_EC_CTRL[rip]
	xor	r12d, r12d
	call	ECerr@PLT
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L43:
	mov	esi, DWORD PTR EC_R_INVALID_CURVE[rip]
	mov	edi, DWORD PTR EC_F_PKEY_EC_CTRL[rip]
	xor	r12d, r12d
	call	ECerr@PLT
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L24:
	call	EC_KEY_clear_flags@PLT
	mov	r12d, 1
	jmp	.L1
.L21:
	mov	rdi, QWORD PTR 48[rbx]
	mov	r12d, 1
	call	EC_KEY_free@PLT
	mov	QWORD PTR 48[rbx], 0
	jmp	.L1
.L40:
	mov	rdi, r13
	call	EC_KEY_dup@PLT
	mov	QWORD PTR 48[rbx], rax
	mov	rdi, rax
	test	rax, rax
	jne	.L23
	jmp	.L1
	.cfi_endproc
.LFE0:
	.size	pkey_ec_ctrl, .-pkey_ec_ctrl
	.comm	NID_sha512,4,4
	.comm	NID_sha3_512,4,4
	.comm	NID_sha3_384,4,4
	.comm	NID_sha3_256,4,4
	.comm	NID_sha3_224,4,4
	.comm	NID_sha384,4,4
	.comm	NID_sha256,4,4
	.comm	NID_sha224,4,4
	.comm	NID_sha1,4,4
	.comm	NID_ecdsa_with_SHA1,4,4
	.comm	EVP_PKEY_ECDH_KDF_X9_63,4,4
	.comm	EVP_PKEY_ECDH_KDF_NONE,4,4
	.comm	EC_R_NO_PARAMETERS_SET,4,4
	.comm	EC_R_INVALID_DIGEST_TYPE,4,4
	.comm	EC_R_INVALID_CURVE,4,4
	.comm	EC_F_PKEY_EC_CTRL,4,4
	.comm	EC_FLAG_COFACTOR_ECDH,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_ec_pmeth.c_pkey_ec_ctrl.c"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	pkey_ec_ctrl, %function
pkey_ec_ctrl:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 0, uses_anonymous_args = 0
	sub	ip, r1, #128
	push	{r4, r5, r6, r7, r8, lr}
	mov	r7, r2
	mov	r5, r3
	ldr	r6, [r0, #4]
	cmp	ip, #15
	ldrls	pc, [pc, ip, asl #2]
	b	.L22
.L4:
	.word	.L30
	.word	.L30
	.word	.L16
	.word	.L15
	.word	.L14
	.word	.L13
	.word	.L12
	.word	.L11
	.word	.L10
	.word	.L9
	.word	.L8
	.word	.L7
	.word	.L6
	.word	.L5
	.word	.L30
	.word	.L30
.L30:
	mov	r4, #1
.L1:
	mov	r0, r4
	pop	{r4, r5, r6, r7, r8, pc}
.L5:
	cmn	r2, #2
	beq	.L39
	add	r3, r2, #1
	cmp	r3, #2
	bhi	.L22
	cmn	r2, #1
	str	r2, [r6]
	beq	.L21
	ldr	r3, [r0]
	ldr	r5, [r3]
	ldr	r3, [r5]
	cmp	r3, #0
	beq	.L22
	ldr	r0, [r3]
	bl	BN_is_one
	subs	r4, r0, #0
	bne	.L30
	ldr	r0, [r6, #28]
	cmp	r0, #0
	beq	.L40
.L23:
	ldr	r3, .L44
	cmp	r7, #0
	ldr	r1, [r3]
	beq	.L24
	bl	EC_KEY_set_flags
	mov	r4, #1
	b	.L1
.L16:
	mov	r0, r3
	bl	EVP_MD_type
	ldr	r3, .L44+4
	ldr	r3, [r3]
	cmp	r0, r3
	bne	.L41
.L28:
	mov	r4, #1
	str	r5, [r6, #20]
	b	.L1
.L15:
	ldr	r3, [r6, #20]
	mov	r4, #1
	str	r3, [r5]
	b	.L1
.L14:
	ldr	r3, [r6, #12]
	ldr	r4, [r6, #16]
	str	r3, [r5]
	b	.L1
.L13:
	ldr	r3, [r6, #8]
	mov	r4, #1
	str	r3, [r5]
	b	.L1
.L12:
	ldr	r3, [r6, #24]
	mov	r4, #1
	str	r3, [r5]
	b	.L1
.L11:
	ldr	r4, [r6, #32]
	cmp	r4, #0
	beq	.L42
	mov	r0, r4
	mov	r1, r2
	bl	EC_GROUP_set_asn1_flag
	mov	r4, #1
	b	.L1
.L10:
	mov	r0, r2
	bl	EC_GROUP_new_by_curve_name
	subs	r5, r0, #0
	beq	.L43
	ldr	r0, [r6, #32]
	bl	EC_GROUP_free
	mov	r4, #1
	str	r5, [r6, #32]
	b	.L1
.L9:
	ldr	r0, [r6, #12]
	bl	OPENSSL_free
	cmp	r5, #0
	mov	r4, #1
	str	r5, [r6, #12]
	strne	r7, [r6, #16]
	streq	r5, [r6, #16]
	b	.L1
.L8:
	cmn	r2, #2
	ldreq	r4, [r6, #4]
	beq	.L1
	ldr	r3, .L44+8
	ldr	r3, [r3]
	cmp	r3, r2
	beq	.L26
	ldr	r3, .L44+12
	ldr	r3, [r3]
	cmp	r3, r2
	beq	.L26
.L22:
	mvn	r4, #1
	b	.L1
.L7:
	cmp	r2, #0
	ble	.L22
	mov	r4, #1
	str	r2, [r6, #8]
	b	.L1
.L6:
	mov	r4, #1
	str	r3, [r6, #24]
	b	.L1
.L26:
	mov	r4, #1
	str	r7, [r6, #4]
	b	.L1
.L41:
	mov	r0, r5
	bl	EVP_MD_type
	ldr	r3, .L44+16
	ldr	r3, [r3]
	cmp	r0, r3
	beq	.L28
	mov	r0, r5
	bl	EVP_MD_type
	ldr	r3, .L44+20
	ldr	r3, [r3]
	cmp	r0, r3
	beq	.L28
	mov	r0, r5
	bl	EVP_MD_type
	ldr	r3, .L44+24
	ldr	r3, [r3]
	cmp	r0, r3
	beq	.L28
	mov	r0, r5
	bl	EVP_MD_type
	ldr	r3, .L44+28
	ldr	r3, [r3]
	cmp	r0, r3
	beq	.L28
	mov	r0, r5
	bl	EVP_MD_type
	ldr	r3, .L44+32
	ldr	r3, [r3]
	cmp	r0, r3
	beq	.L28
	mov	r0, r5
	bl	EVP_MD_type
	ldr	r3, .L44+36
	ldr	r3, [r3]
	cmp	r0, r3
	beq	.L28
	mov	r0, r5
	bl	EVP_MD_type
	ldr	r3, .L44+40
	ldr	r3, [r3]
	cmp	r0, r3
	beq	.L28
	mov	r0, r5
	bl	EVP_MD_type
	ldr	r3, .L44+44
	ldr	r3, [r3]
	cmp	r0, r3
	beq	.L28
	mov	r0, r5
	bl	EVP_MD_type
	ldr	r3, .L44+48
	ldr	r3, [r3]
	cmp	r0, r3
	beq	.L28
	ldr	r2, .L44+52
	ldr	r3, .L44+56
	ldr	r1, [r2]
	ldr	r0, [r3]
	bl	ECerr
	mov	r4, #0
	b	.L1
.L39:
	ldr	r4, [r6]
	cmn	r4, #1
	bne	.L1
	ldr	r3, [r0]
	ldr	r0, [r3]
	bl	EC_KEY_get_flags
	ldr	r3, .L44
	ldr	r3, [r3]
	tst	r0, r3
	movne	r4, #1
	moveq	r4, #0
	b	.L1
.L42:
	ldr	r2, .L44+60
	ldr	r3, .L44+56
	ldr	r1, [r2]
	ldr	r0, [r3]
	bl	ECerr
	b	.L1
.L43:
	ldr	r2, .L44+64
	ldr	r3, .L44+56
	ldr	r1, [r2]
	ldr	r0, [r3]
	mov	r4, r5
	bl	ECerr
	b	.L1
.L24:
	bl	EC_KEY_clear_flags
	mov	r4, #1
	b	.L1
.L21:
	ldr	r0, [r6, #28]
	bl	EC_KEY_free
	mov	r3, #0
	mov	r4, #1
	str	r3, [r6, #28]
	b	.L1
.L40:
	mov	r0, r5
	bl	EC_KEY_dup
	cmp	r0, #0
	str	r0, [r6, #28]
	bne	.L23
	b	.L1
.L45:
	.align	2
.L44:
	.word	EC_FLAG_COFACTOR_ECDH
	.word	NID_sha1
	.word	EVP_PKEY_ECDH_KDF_NONE
	.word	EVP_PKEY_ECDH_KDF_X9_63
	.word	NID_ecdsa_with_SHA1
	.word	NID_sha224
	.word	NID_sha256
	.word	NID_sha384
	.word	NID_sha512
	.word	NID_sha3_224
	.word	NID_sha3_256
	.word	NID_sha3_384
	.word	NID_sha3_512
	.word	EC_R_INVALID_DIGEST_TYPE
	.word	EC_F_PKEY_EC_CTRL
	.word	EC_R_NO_PARAMETERS_SET
	.word	EC_R_INVALID_CURVE
	.size	pkey_ec_ctrl, .-pkey_ec_ctrl
	.comm	NID_sha512,4,4
	.comm	NID_sha3_512,4,4
	.comm	NID_sha3_384,4,4
	.comm	NID_sha3_256,4,4
	.comm	NID_sha3_224,4,4
	.comm	NID_sha384,4,4
	.comm	NID_sha256,4,4
	.comm	NID_sha224,4,4
	.comm	NID_sha1,4,4
	.comm	NID_ecdsa_with_SHA1,4,4
	.comm	EVP_PKEY_ECDH_KDF_X9_63,4,4
	.comm	EVP_PKEY_ECDH_KDF_NONE,4,4
	.comm	EC_R_NO_PARAMETERS_SET,4,4
	.comm	EC_R_INVALID_DIGEST_TYPE,4,4
	.comm	EC_R_INVALID_CURVE,4,4
	.comm	EC_F_PKEY_EC_CTRL,4,4
	.comm	EC_FLAG_COFACTOR_ECDH,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
