	.file	"925382.c"
	.intel_syntax noprefix
	.text
	.section	.rodata
.LC0:
	.string	""
.LC1:
	.string	"strnlen (\"\", 0) == 0"
	.align 8
.LC2:
	.string	"assertion on line %i failed: %s\n"
.LC3:
	.string	"strnlen (\"\", 1) == 0"
.LC4:
	.string	"strnlen (\"\", 9) == 0"
	.align 8
.LC5:
	.string	"strnlen (\"\", PTRDIFF_MAX) == 0"
.LC6:
	.string	"strnlen (\"\", SIZE_MAX) == 0"
.LC7:
	.string	"strnlen (\"\", -1) == 0"
.LC8:
	.string	"1"
.LC9:
	.string	"strnlen (\"1\", 0) == 0"
.LC10:
	.string	"strnlen (\"1\", 1) == 1"
.LC11:
	.string	"strnlen (\"1\", 9) == 1"
	.align 8
.LC12:
	.string	"strnlen (\"1\", PTRDIFF_MAX) == 1"
.LC13:
	.string	"strnlen (\"1\", SIZE_MAX) == 1"
.LC14:
	.string	"strnlen (\"1\", -2) == 1"
.LC15:
	.string	"123"
.LC16:
	.string	"strnlen (\"123\", 0) == 0"
.LC17:
	.string	"strnlen (\"123\", 1) == 1"
.LC18:
	.string	"strnlen (\"123\", 2) == 2"
.LC19:
	.string	"strnlen (\"123\", 3) == 3"
.LC20:
	.string	"strnlen (\"123\", 9) == 3"
	.align 8
.LC21:
	.string	"strnlen (\"123\", PTRDIFF_MAX) == 3"
	.align 8
.LC22:
	.string	"strnlen (\"123\", SIZE_MAX) == 3"
.LC23:
	.string	"strnlen (\"123\", -2) == 3"
	.text
	.globl	test_strnlen_str_cst
	.type	test_strnlen_str_cst, @function
test_strnlen_str_cst:
.LFB0:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	esi, 0
	lea	rdi, .LC0[rip]
	call	strnlen@PLT
	test	rax, rax
	je	.L2
	lea	rdx, .LC1[rip]
	mov	esi, 21
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L2:
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	strnlen@PLT
	test	rax, rax
	je	.L3
	lea	rdx, .LC3[rip]
	mov	esi, 22
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L3:
	mov	esi, 9
	lea	rdi, .LC0[rip]
	call	strnlen@PLT
	test	rax, rax
	je	.L4
	lea	rdx, .LC4[rip]
	mov	esi, 23
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L4:
	movabs	rsi, 9223372036854775807
	lea	rdi, .LC0[rip]
	call	strnlen@PLT
	test	rax, rax
	je	.L5
	lea	rdx, .LC5[rip]
	mov	esi, 24
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L5:
	mov	rsi, -1
	lea	rdi, .LC0[rip]
	call	strnlen@PLT
	test	rax, rax
	je	.L6
	lea	rdx, .LC6[rip]
	mov	esi, 25
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L6:
	mov	rsi, -1
	lea	rdi, .LC0[rip]
	call	strnlen@PLT
	test	rax, rax
	je	.L7
	lea	rdx, .LC7[rip]
	mov	esi, 26
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L7:
	mov	esi, 0
	lea	rdi, .LC8[rip]
	call	strnlen@PLT
	test	rax, rax
	je	.L8
	lea	rdx, .LC9[rip]
	mov	esi, 28
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L8:
	mov	esi, 1
	lea	rdi, .LC8[rip]
	call	strnlen@PLT
	cmp	rax, 1
	je	.L9
	lea	rdx, .LC10[rip]
	mov	esi, 29
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L9:
	mov	esi, 9
	lea	rdi, .LC8[rip]
	call	strnlen@PLT
	cmp	rax, 1
	je	.L10
	lea	rdx, .LC11[rip]
	mov	esi, 30
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L10:
	movabs	rsi, 9223372036854775807
	lea	rdi, .LC8[rip]
	call	strnlen@PLT
	cmp	rax, 1
	je	.L11
	lea	rdx, .LC12[rip]
	mov	esi, 31
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L11:
	mov	rsi, -1
	lea	rdi, .LC8[rip]
	call	strnlen@PLT
	cmp	rax, 1
	je	.L12
	lea	rdx, .LC13[rip]
	mov	esi, 32
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L12:
	mov	rsi, -2
	lea	rdi, .LC8[rip]
	call	strnlen@PLT
	cmp	rax, 1
	je	.L13
	lea	rdx, .LC14[rip]
	mov	esi, 33
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L13:
	mov	esi, 0
	lea	rdi, .LC15[rip]
	call	strnlen@PLT
	test	rax, rax
	je	.L14
	lea	rdx, .LC16[rip]
	mov	esi, 35
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L14:
	mov	esi, 1
	lea	rdi, .LC15[rip]
	call	strnlen@PLT
	cmp	rax, 1
	je	.L15
	lea	rdx, .LC17[rip]
	mov	esi, 36
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L15:
	mov	esi, 2
	lea	rdi, .LC15[rip]
	call	strnlen@PLT
	cmp	rax, 2
	je	.L16
	lea	rdx, .LC18[rip]
	mov	esi, 37
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L16:
	mov	esi, 3
	lea	rdi, .LC15[rip]
	call	strnlen@PLT
	cmp	rax, 3
	je	.L17
	lea	rdx, .LC19[rip]
	mov	esi, 38
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L17:
	mov	esi, 9
	lea	rdi, .LC15[rip]
	call	strnlen@PLT
	cmp	rax, 3
	je	.L18
	lea	rdx, .LC20[rip]
	mov	esi, 39
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L18:
	movabs	rsi, 9223372036854775807
	lea	rdi, .LC15[rip]
	call	strnlen@PLT
	cmp	rax, 3
	je	.L19
	lea	rdx, .LC21[rip]
	mov	esi, 40
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L19:
	mov	rsi, -1
	lea	rdi, .LC15[rip]
	call	strnlen@PLT
	cmp	rax, 3
	je	.L20
	lea	rdx, .LC22[rip]
	mov	esi, 41
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L20:
	mov	rsi, -2
	lea	rdi, .LC15[rip]
	call	strnlen@PLT
	cmp	rax, 3
	je	.L22
	lea	rdx, .LC23[rip]
	mov	esi, 42
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L22:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	test_strnlen_str_cst, .-test_strnlen_str_cst
	.section	.rodata
.LC24:
	.string	"strnlen (\"\", r_0_3) == 0"
.LC25:
	.string	"strnlen (\"1\", r_0_3) <= 1"
.LC26:
	.string	"12"
.LC27:
	.string	"strnlen (\"12\", r_0_3) <= 2"
.LC28:
	.string	"strnlen (\"123\", r_0_3) <= 3"
.LC29:
	.string	"1234"
.LC30:
	.string	"strnlen (\"1234\", r_0_3) <= 3"
.LC31:
	.string	"strnlen (\"\", r_1_3) == 0"
.LC32:
	.string	"strnlen (\"1\", r_1_3) == 1"
.LC33:
	.string	"strnlen (\"12\", r_1_3) <= 2"
.LC34:
	.string	"strnlen (\"123\", r_1_3) <= 3"
.LC35:
	.string	"strnlen (\"1234\", r_1_3) <= 3"
.LC36:
	.string	"strnlen (\"\", r_2_3) == 0"
.LC37:
	.string	"strnlen (\"1\", r_2_3) == 1"
.LC38:
	.string	"strnlen (\"12\", r_2_3) == 2"
.LC39:
	.string	"strnlen (\"123\", r_2_3) <= 3"
.LC40:
	.string	"strnlen (\"1234\", r_2_3) <= 3"
	.text
	.globl	test_strnlen_str_range
	.type	test_strnlen_str_range, @function
test_strnlen_str_range:
.LFB1:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	and	eax, 3
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	or	rax, 1
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	or	rax, 2
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC0[rip]
	call	strnlen@PLT
	test	rax, rax
	je	.L24
	lea	rdx, .LC24[rip]
	mov	esi, 51
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L24:
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC8[rip]
	call	strnlen@PLT
	cmp	rax, 1
	jbe	.L25
	lea	rdx, .LC25[rip]
	mov	esi, 52
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L25:
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC26[rip]
	call	strnlen@PLT
	cmp	rax, 2
	jbe	.L26
	lea	rdx, .LC27[rip]
	mov	esi, 53
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L26:
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC15[rip]
	call	strnlen@PLT
	cmp	rax, 3
	jbe	.L27
	lea	rdx, .LC28[rip]
	mov	esi, 54
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L27:
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC29[rip]
	call	strnlen@PLT
	cmp	rax, 3
	jbe	.L28
	lea	rdx, .LC30[rip]
	mov	esi, 55
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L28:
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rax
	lea	rdi, .LC0[rip]
	call	strnlen@PLT
	test	rax, rax
	je	.L29
	lea	rdx, .LC31[rip]
	mov	esi, 57
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L29:
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rax
	lea	rdi, .LC8[rip]
	call	strnlen@PLT
	cmp	rax, 1
	je	.L30
	lea	rdx, .LC32[rip]
	mov	esi, 58
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L30:
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rax
	lea	rdi, .LC26[rip]
	call	strnlen@PLT
	cmp	rax, 2
	jbe	.L31
	lea	rdx, .LC33[rip]
	mov	esi, 59
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L31:
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rax
	lea	rdi, .LC15[rip]
	call	strnlen@PLT
	cmp	rax, 3
	jbe	.L32
	lea	rdx, .LC34[rip]
	mov	esi, 60
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L32:
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rax
	lea	rdi, .LC29[rip]
	call	strnlen@PLT
	cmp	rax, 3
	jbe	.L33
	lea	rdx, .LC35[rip]
	mov	esi, 61
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L33:
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	lea	rdi, .LC0[rip]
	call	strnlen@PLT
	test	rax, rax
	je	.L34
	lea	rdx, .LC36[rip]
	mov	esi, 63
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L34:
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	lea	rdi, .LC8[rip]
	call	strnlen@PLT
	cmp	rax, 1
	je	.L35
	lea	rdx, .LC37[rip]
	mov	esi, 64
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L35:
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	lea	rdi, .LC26[rip]
	call	strnlen@PLT
	cmp	rax, 2
	je	.L36
	lea	rdx, .LC38[rip]
	mov	esi, 65
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L36:
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	lea	rdi, .LC15[rip]
	call	strnlen@PLT
	cmp	rax, 3
	jbe	.L37
	lea	rdx, .LC39[rip]
	mov	esi, 66
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L37:
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	lea	rdi, .LC29[rip]
	call	strnlen@PLT
	cmp	rax, 3
	jbe	.L39
	lea	rdx, .LC40[rip]
	mov	esi, 67
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L39:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	test_strnlen_str_range, .-test_strnlen_str_range
	.section	.rodata
	.align 8
.LC41:
	.string	"strnlen (\"1234\" + i++, n) <= 3"
.LC42:
	.string	"i == 1"
.LC43:
	.string	"strnlen (\"1234\", n++) <= 3"
.LC44:
	.string	"n == r_2_3 + 1"
	.text
	.globl	test_strnlen_str_range_side_effect
	.type	test_strnlen_str_range_side_effect, @function
test_strnlen_str_range_side_effect:
.LFB2:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -56[rbp], rdi
	mov	rax, QWORD PTR -56[rbp]
	and	eax, 3
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	or	rax, 1
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	or	rax, 2
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR -8[rbp], rax
	mov	DWORD PTR -36[rbp], 0
	mov	eax, DWORD PTR -36[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -36[rbp], edx
	cdqe
	lea	rdx, .LC29[rip]
	add	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	mov	rdi, rdx
	call	strnlen@PLT
	cmp	rax, 3
	jbe	.L41
	lea	rdx, .LC41[rip]
	mov	esi, 79
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L41:
	cmp	DWORD PTR -36[rbp], 1
	je	.L42
	lea	rdx, .LC42[rip]
	mov	esi, 80
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L42:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -8[rbp], rdx
	mov	rsi, rax
	lea	rdi, .LC29[rip]
	call	strnlen@PLT
	cmp	rax, 3
	jbe	.L43
	lea	rdx, .LC43[rip]
	mov	esi, 82
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L43:
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1
	cmp	QWORD PTR -8[rbp], rax
	je	.L45
	lea	rdx, .LC44[rip]
	mov	esi, 83
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L45:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE2:
	.size	test_strnlen_str_range_side_effect, .-test_strnlen_str_range_side_effect
	.globl	main_test
	.type	main_test, @function
main_test:
.LFB3:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	call	test_strnlen_str_cst
	lea	rax, .LC0[rip]
	mov	rdi, rax
	call	test_strnlen_str_range
	lea	rax, .LC0[rip]
	mov	rdi, rax
	call	test_strnlen_str_range_side_effect
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE3:
	.size	main_test, .-main_test
	.ident	"GCC: (Ubuntu 10.5.0-1ubuntu1~20.04) 10.5.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, 6
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"925382.c"
	.text
	.section	.rodata
	.align	2
.LC0:
	.ascii	"\000"
	.align	2
.LC1:
	.ascii	"strnlen (\"\", 0) == 0\000"
	.align	2
.LC2:
	.ascii	"assertion on line %i failed: %s\012\000"
	.align	2
.LC3:
	.ascii	"strnlen (\"\", 1) == 0\000"
	.align	2
.LC4:
	.ascii	"strnlen (\"\", 9) == 0\000"
	.align	2
.LC5:
	.ascii	"strnlen (\"\", PTRDIFF_MAX) == 0\000"
	.align	2
.LC6:
	.ascii	"strnlen (\"\", SIZE_MAX) == 0\000"
	.align	2
.LC7:
	.ascii	"strnlen (\"\", -1) == 0\000"
	.align	2
.LC8:
	.ascii	"1\000"
	.align	2
.LC9:
	.ascii	"strnlen (\"1\", 0) == 0\000"
	.align	2
.LC10:
	.ascii	"strnlen (\"1\", 1) == 1\000"
	.align	2
.LC11:
	.ascii	"strnlen (\"1\", 9) == 1\000"
	.align	2
.LC12:
	.ascii	"strnlen (\"1\", PTRDIFF_MAX) == 1\000"
	.align	2
.LC13:
	.ascii	"strnlen (\"1\", SIZE_MAX) == 1\000"
	.align	2
.LC14:
	.ascii	"strnlen (\"1\", -2) == 1\000"
	.align	2
.LC15:
	.ascii	"123\000"
	.align	2
.LC16:
	.ascii	"strnlen (\"123\", 0) == 0\000"
	.align	2
.LC17:
	.ascii	"strnlen (\"123\", 1) == 1\000"
	.align	2
.LC18:
	.ascii	"strnlen (\"123\", 2) == 2\000"
	.align	2
.LC19:
	.ascii	"strnlen (\"123\", 3) == 3\000"
	.align	2
.LC20:
	.ascii	"strnlen (\"123\", 9) == 3\000"
	.align	2
.LC21:
	.ascii	"strnlen (\"123\", PTRDIFF_MAX) == 3\000"
	.align	2
.LC22:
	.ascii	"strnlen (\"123\", SIZE_MAX) == 3\000"
	.align	2
.LC23:
	.ascii	"strnlen (\"123\", -2) == 3\000"
	.text
	.align	2
	.global	test_strnlen_str_cst
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_strnlen_str_cst, %function
test_strnlen_str_cst:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	mov	r1, #0
	ldr	r0, .L23
	bl	strnlen
	mov	r3, r0
	cmp	r3, #0
	beq	.L2
	ldr	r2, .L23+4
	mov	r1, #21
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L2:
	mov	r1, #1
	ldr	r0, .L23
	bl	strnlen
	mov	r3, r0
	cmp	r3, #0
	beq	.L3
	ldr	r2, .L23+12
	mov	r1, #22
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L3:
	mov	r1, #9
	ldr	r0, .L23
	bl	strnlen
	mov	r3, r0
	cmp	r3, #0
	beq	.L4
	ldr	r2, .L23+16
	mov	r1, #23
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L4:
	mvn	r1, #-2147483648
	ldr	r0, .L23
	bl	strnlen
	mov	r3, r0
	cmp	r3, #0
	beq	.L5
	ldr	r2, .L23+20
	mov	r1, #24
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L5:
	mvn	r1, #0
	ldr	r0, .L23
	bl	strnlen
	mov	r3, r0
	cmp	r3, #0
	beq	.L6
	ldr	r2, .L23+24
	mov	r1, #25
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L6:
	mvn	r1, #0
	ldr	r0, .L23
	bl	strnlen
	mov	r3, r0
	cmp	r3, #0
	beq	.L7
	ldr	r2, .L23+28
	mov	r1, #26
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L7:
	mov	r1, #0
	ldr	r0, .L23+32
	bl	strnlen
	mov	r3, r0
	cmp	r3, #0
	beq	.L8
	ldr	r2, .L23+36
	mov	r1, #28
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L8:
	mov	r1, #1
	ldr	r0, .L23+32
	bl	strnlen
	mov	r3, r0
	cmp	r3, #1
	beq	.L9
	ldr	r2, .L23+40
	mov	r1, #29
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L9:
	mov	r1, #9
	ldr	r0, .L23+32
	bl	strnlen
	mov	r3, r0
	cmp	r3, #1
	beq	.L10
	ldr	r2, .L23+44
	mov	r1, #30
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L10:
	mvn	r1, #-2147483648
	ldr	r0, .L23+32
	bl	strnlen
	mov	r3, r0
	cmp	r3, #1
	beq	.L11
	ldr	r2, .L23+48
	mov	r1, #31
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L11:
	mvn	r1, #0
	ldr	r0, .L23+32
	bl	strnlen
	mov	r3, r0
	cmp	r3, #1
	beq	.L12
	ldr	r2, .L23+52
	mov	r1, #32
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L12:
	mvn	r1, #1
	ldr	r0, .L23+32
	bl	strnlen
	mov	r3, r0
	cmp	r3, #1
	beq	.L13
	ldr	r2, .L23+56
	mov	r1, #33
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L13:
	mov	r1, #0
	ldr	r0, .L23+60
	bl	strnlen
	mov	r3, r0
	cmp	r3, #0
	beq	.L14
	ldr	r2, .L23+64
	mov	r1, #35
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L14:
	mov	r1, #1
	ldr	r0, .L23+60
	bl	strnlen
	mov	r3, r0
	cmp	r3, #1
	beq	.L15
	ldr	r2, .L23+68
	mov	r1, #36
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L15:
	mov	r1, #2
	ldr	r0, .L23+60
	bl	strnlen
	mov	r3, r0
	cmp	r3, #2
	beq	.L16
	ldr	r2, .L23+72
	mov	r1, #37
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L16:
	mov	r1, #3
	ldr	r0, .L23+60
	bl	strnlen
	mov	r3, r0
	cmp	r3, #3
	beq	.L17
	ldr	r2, .L23+76
	mov	r1, #38
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L17:
	mov	r1, #9
	ldr	r0, .L23+60
	bl	strnlen
	mov	r3, r0
	cmp	r3, #3
	beq	.L18
	ldr	r2, .L23+80
	mov	r1, #39
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L18:
	mvn	r1, #-2147483648
	ldr	r0, .L23+60
	bl	strnlen
	mov	r3, r0
	cmp	r3, #3
	beq	.L19
	ldr	r2, .L23+84
	mov	r1, #40
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L19:
	mvn	r1, #0
	ldr	r0, .L23+60
	bl	strnlen
	mov	r3, r0
	cmp	r3, #3
	beq	.L20
	ldr	r2, .L23+88
	mov	r1, #41
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L20:
	mvn	r1, #1
	ldr	r0, .L23+60
	bl	strnlen
	mov	r3, r0
	cmp	r3, #3
	beq	.L22
	ldr	r2, .L23+92
	mov	r1, #42
	ldr	r0, .L23+8
	bl	printf
	bl	abort
.L22:
	nop
	pop	{fp, pc}
.L24:
	.align	2
.L23:
	.word	.LC0
	.word	.LC1
	.word	.LC2
	.word	.LC3
	.word	.LC4
	.word	.LC5
	.word	.LC6
	.word	.LC7
	.word	.LC8
	.word	.LC9
	.word	.LC10
	.word	.LC11
	.word	.LC12
	.word	.LC13
	.word	.LC14
	.word	.LC15
	.word	.LC16
	.word	.LC17
	.word	.LC18
	.word	.LC19
	.word	.LC20
	.word	.LC21
	.word	.LC22
	.word	.LC23
	.size	test_strnlen_str_cst, .-test_strnlen_str_cst
	.section	.rodata
	.align	2
.LC24:
	.ascii	"strnlen (\"\", r_0_3) == 0\000"
	.align	2
.LC25:
	.ascii	"strnlen (\"1\", r_0_3) <= 1\000"
	.align	2
.LC26:
	.ascii	"12\000"
	.align	2
.LC27:
	.ascii	"strnlen (\"12\", r_0_3) <= 2\000"
	.align	2
.LC28:
	.ascii	"strnlen (\"123\", r_0_3) <= 3\000"
	.align	2
.LC29:
	.ascii	"1234\000"
	.align	2
.LC30:
	.ascii	"strnlen (\"1234\", r_0_3) <= 3\000"
	.align	2
.LC31:
	.ascii	"strnlen (\"\", r_1_3) == 0\000"
	.align	2
.LC32:
	.ascii	"strnlen (\"1\", r_1_3) == 1\000"
	.align	2
.LC33:
	.ascii	"strnlen (\"12\", r_1_3) <= 2\000"
	.align	2
.LC34:
	.ascii	"strnlen (\"123\", r_1_3) <= 3\000"
	.align	2
.LC35:
	.ascii	"strnlen (\"1234\", r_1_3) <= 3\000"
	.align	2
.LC36:
	.ascii	"strnlen (\"\", r_2_3) == 0\000"
	.align	2
.LC37:
	.ascii	"strnlen (\"1\", r_2_3) == 1\000"
	.align	2
.LC38:
	.ascii	"strnlen (\"12\", r_2_3) == 2\000"
	.align	2
.LC39:
	.ascii	"strnlen (\"123\", r_2_3) <= 3\000"
	.align	2
.LC40:
	.ascii	"strnlen (\"1234\", r_2_3) <= 3\000"
	.text
	.align	2
	.global	test_strnlen_str_range
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_strnlen_str_range, %function
test_strnlen_str_range:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-24]
	and	r3, r3, #3
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	orr	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-16]
	orr	r3, r3, #2
	str	r3, [fp, #-8]
	ldr	r1, [fp, #-16]
	ldr	r0, .L42
	bl	strnlen
	mov	r3, r0
	cmp	r3, #0
	beq	.L26
	ldr	r2, .L42+4
	mov	r1, #51
	ldr	r0, .L42+8
	bl	printf
	bl	abort
.L26:
	ldr	r1, [fp, #-16]
	ldr	r0, .L42+12
	bl	strnlen
	mov	r3, r0
	cmp	r3, #1
	bls	.L27
	ldr	r2, .L42+16
	mov	r1, #52
	ldr	r0, .L42+8
	bl	printf
	bl	abort
.L27:
	ldr	r1, [fp, #-16]
	ldr	r0, .L42+20
	bl	strnlen
	mov	r3, r0
	cmp	r3, #2
	bls	.L28
	ldr	r2, .L42+24
	mov	r1, #53
	ldr	r0, .L42+8
	bl	printf
	bl	abort
.L28:
	ldr	r1, [fp, #-16]
	ldr	r0, .L42+28
	bl	strnlen
	mov	r3, r0
	cmp	r3, #3
	bls	.L29
	ldr	r2, .L42+32
	mov	r1, #54
	ldr	r0, .L42+8
	bl	printf
	bl	abort
.L29:
	ldr	r1, [fp, #-16]
	ldr	r0, .L42+36
	bl	strnlen
	mov	r3, r0
	cmp	r3, #3
	bls	.L30
	ldr	r2, .L42+40
	mov	r1, #55
	ldr	r0, .L42+8
	bl	printf
	bl	abort
.L30:
	ldr	r1, [fp, #-12]
	ldr	r0, .L42
	bl	strnlen
	mov	r3, r0
	cmp	r3, #0
	beq	.L31
	ldr	r2, .L42+44
	mov	r1, #57
	ldr	r0, .L42+8
	bl	printf
	bl	abort
.L31:
	ldr	r1, [fp, #-12]
	ldr	r0, .L42+12
	bl	strnlen
	mov	r3, r0
	cmp	r3, #1
	beq	.L32
	ldr	r2, .L42+48
	mov	r1, #58
	ldr	r0, .L42+8
	bl	printf
	bl	abort
.L32:
	ldr	r1, [fp, #-12]
	ldr	r0, .L42+20
	bl	strnlen
	mov	r3, r0
	cmp	r3, #2
	bls	.L33
	ldr	r2, .L42+52
	mov	r1, #59
	ldr	r0, .L42+8
	bl	printf
	bl	abort
.L33:
	ldr	r1, [fp, #-12]
	ldr	r0, .L42+28
	bl	strnlen
	mov	r3, r0
	cmp	r3, #3
	bls	.L34
	ldr	r2, .L42+56
	mov	r1, #60
	ldr	r0, .L42+8
	bl	printf
	bl	abort
.L34:
	ldr	r1, [fp, #-12]
	ldr	r0, .L42+36
	bl	strnlen
	mov	r3, r0
	cmp	r3, #3
	bls	.L35
	ldr	r2, .L42+60
	mov	r1, #61
	ldr	r0, .L42+8
	bl	printf
	bl	abort
.L35:
	ldr	r1, [fp, #-8]
	ldr	r0, .L42
	bl	strnlen
	mov	r3, r0
	cmp	r3, #0
	beq	.L36
	ldr	r2, .L42+64
	mov	r1, #63
	ldr	r0, .L42+8
	bl	printf
	bl	abort
.L36:
	ldr	r1, [fp, #-8]
	ldr	r0, .L42+12
	bl	strnlen
	mov	r3, r0
	cmp	r3, #1
	beq	.L37
	ldr	r2, .L42+68
	mov	r1, #64
	ldr	r0, .L42+8
	bl	printf
	bl	abort
.L37:
	ldr	r1, [fp, #-8]
	ldr	r0, .L42+20
	bl	strnlen
	mov	r3, r0
	cmp	r3, #2
	beq	.L38
	ldr	r2, .L42+72
	mov	r1, #65
	ldr	r0, .L42+8
	bl	printf
	bl	abort
.L38:
	ldr	r1, [fp, #-8]
	ldr	r0, .L42+28
	bl	strnlen
	mov	r3, r0
	cmp	r3, #3
	bls	.L39
	ldr	r2, .L42+76
	mov	r1, #66
	ldr	r0, .L42+8
	bl	printf
	bl	abort
.L39:
	ldr	r1, [fp, #-8]
	ldr	r0, .L42+36
	bl	strnlen
	mov	r3, r0
	cmp	r3, #3
	bls	.L41
	ldr	r2, .L42+80
	mov	r1, #67
	ldr	r0, .L42+8
	bl	printf
	bl	abort
.L41:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L43:
	.align	2
.L42:
	.word	.LC0
	.word	.LC24
	.word	.LC2
	.word	.LC8
	.word	.LC25
	.word	.LC26
	.word	.LC27
	.word	.LC15
	.word	.LC28
	.word	.LC29
	.word	.LC30
	.word	.LC31
	.word	.LC32
	.word	.LC33
	.word	.LC34
	.word	.LC35
	.word	.LC36
	.word	.LC37
	.word	.LC38
	.word	.LC39
	.word	.LC40
	.size	test_strnlen_str_range, .-test_strnlen_str_range
	.section	.rodata
	.align	2
.LC41:
	.ascii	"strnlen (\"1234\" + i++, n) <= 3\000"
	.align	2
.LC42:
	.ascii	"i == 1\000"
	.align	2
.LC43:
	.ascii	"strnlen (\"1234\", n++) <= 3\000"
	.align	2
.LC44:
	.ascii	"n == r_2_3 + 1\000"
	.text
	.align	2
	.global	test_strnlen_str_range_side_effect
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_strnlen_str_range_side_effect, %function
test_strnlen_str_range_side_effect:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	ldr	r3, [fp, #-32]
	and	r3, r3, #3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	orr	r3, r3, #1
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-24]
	orr	r3, r3, #2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	add	r2, r3, #1
	str	r2, [fp, #-8]
	mov	r2, r3
	ldr	r3, .L50
	add	r3, r2, r3
	ldr	r1, [fp, #-12]
	mov	r0, r3
	bl	strnlen
	mov	r3, r0
	cmp	r3, #3
	bls	.L45
	ldr	r2, .L50+4
	mov	r1, #79
	ldr	r0, .L50+8
	bl	printf
	bl	abort
.L45:
	ldr	r3, [fp, #-8]
	cmp	r3, #1
	beq	.L46
	ldr	r2, .L50+12
	mov	r1, #80
	ldr	r0, .L50+8
	bl	printf
	bl	abort
.L46:
	ldr	r3, [fp, #-12]
	add	r2, r3, #1
	str	r2, [fp, #-12]
	mov	r1, r3
	ldr	r0, .L50
	bl	strnlen
	mov	r3, r0
	cmp	r3, #3
	bls	.L47
	ldr	r2, .L50+16
	mov	r1, #82
	ldr	r0, .L50+8
	bl	printf
	bl	abort
.L47:
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	beq	.L49
	ldr	r2, .L50+20
	mov	r1, #83
	ldr	r0, .L50+8
	bl	printf
	bl	abort
.L49:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L51:
	.align	2
.L50:
	.word	.LC29
	.word	.LC41
	.word	.LC2
	.word	.LC42
	.word	.LC43
	.word	.LC44
	.size	test_strnlen_str_range_side_effect, .-test_strnlen_str_range_side_effect
	.align	2
	.global	main_test
	.syntax unified
	.arm
	.fpu softvfp
	.type	main_test, %function
main_test:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	bl	test_strnlen_str_cst
	ldr	r3, .L53
	mov	r0, r3
	bl	test_strnlen_str_range
	ldr	r3, .L53
	mov	r0, r3
	bl	test_strnlen_str_range_side_effect
	nop
	pop	{fp, pc}
.L54:
	.align	2
.L53:
	.word	.LC0
	.size	main_test, .-main_test
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
