	.file	"217884.c"
	.intel_syntax noprefix
	.text
	.type	ksft_exit_pass, @function
ksft_exit_pass:
.LFB6:
	.cfi_startproc
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	edi, 0
	call	exit@PLT
	.cfi_endproc
.LFE6:
	.size	ksft_exit_pass, .-ksft_exit_pass
	.type	ksft_exit_fail, @function
ksft_exit_fail:
.LFB7:
	.cfi_startproc
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	edi, 1
	call	exit@PLT
	.cfi_endproc
.LFE7:
	.size	ksft_exit_fail, .-ksft_exit_fail
	.globl	systick
	.bss
	.align 8
	.type	systick, @object
	.size	systick, 8
systick:
	.zero	8
	.text
	.globl	llabs
	.type	llabs, @function
llabs:
.LFB8:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	cmp	QWORD PTR -8[rbp], 0
	jns	.L4
	neg	QWORD PTR -8[rbp]
.L4:
	mov	rax, QWORD PTR -8[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	llabs, .-llabs
	.globl	ts_to_nsec
	.type	ts_to_nsec, @function
ts_to_nsec:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, rdi
	mov	rcx, rsi
	mov	rdx, rcx
	mov	QWORD PTR -16[rbp], rax
	mov	QWORD PTR -8[rbp], rdx
	mov	rax, QWORD PTR -16[rbp]
	imul	rdx, rax, 1000000000
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	ts_to_nsec, .-ts_to_nsec
	.globl	nsec_to_ts
	.type	nsec_to_ts, @function
nsec_to_ts:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	rcx, QWORD PTR -24[rbp]
	movabs	rdx, 1237940039285380275
	mov	rax, rcx
	imul	rdx
	mov	rax, rdx
	sar	rax, 26
	sar	rcx, 63
	mov	rdx, rcx
	sub	rax, rdx
	mov	QWORD PTR -16[rbp], rax
	mov	rcx, QWORD PTR -24[rbp]
	movabs	rdx, 1237940039285380275
	mov	rax, rcx
	imul	rdx
	mov	rax, rdx
	sar	rax, 26
	mov	rdx, rcx
	sar	rdx, 63
	sub	rax, rdx
	imul	rdx, rax, 1000000000
	mov	rax, rcx
	sub	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	nsec_to_ts, .-nsec_to_ts
	.globl	diff_timespec
	.type	diff_timespec, @function
diff_timespec:
.LFB11:
	.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	rax, rsi
	mov	r8, rdi
	mov	rsi, r8
	mov	rdi, r9
	mov	rdi, rax
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -48[rbp], rdx
	mov	QWORD PTR -40[rbp], rcx
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rdx
	mov	rsi, rax
	call	ts_to_nsec
	mov	QWORD PTR -16[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rdx
	mov	rsi, rax
	call	ts_to_nsec
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR -16[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	diff_timespec, .-diff_timespec
	.globl	get_monotonic_and_raw
	.type	get_monotonic_and_raw, @function
get_monotonic_and_raw:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 120
	.cfi_offset 3, -24
	mov	QWORD PTR -120[rbp], rdi
	mov	QWORD PTR -128[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	mov	QWORD PTR -104[rbp], 0
	mov	rax, QWORD PTR -120[rbp]
	mov	rsi, rax
	mov	edi, 1
	call	clock_gettime@PLT
	mov	rax, QWORD PTR -128[rbp]
	mov	rsi, rax
	mov	edi, 4
	call	clock_gettime@PLT
	mov	DWORD PTR -108[rbp], 0
	jmp	.L13
.L16:
	lea	rax, -80[rbp]
	mov	rsi, rax
	mov	edi, 1
	call	clock_gettime@PLT
	lea	rax, -64[rbp]
	mov	rsi, rax
	mov	edi, 4
	call	clock_gettime@PLT
	lea	rax, -48[rbp]
	mov	rsi, rax
	mov	edi, 1
	call	clock_gettime@PLT
	mov	rax, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rdi, QWORD PTR -80[rbp]
	mov	rsi, QWORD PTR -72[rbp]
	mov	rcx, rdx
	mov	rdx, rax
	call	diff_timespec
	mov	QWORD PTR -96[rbp], rax
	cmp	QWORD PTR -104[rbp], 0
	je	.L14
	mov	rax, QWORD PTR -96[rbp]
	cmp	rax, QWORD PTR -104[rbp]
	jge	.L15
.L14:
	mov	rax, QWORD PTR -96[rbp]
	mov	QWORD PTR -104[rbp], rax
	mov	rcx, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rdx, QWORD PTR -56[rbp]
	mov	QWORD PTR [rcx], rax
	mov	QWORD PTR 8[rcx], rdx
	mov	rdx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rdx
	mov	rsi, rax
	call	ts_to_nsec
	mov	rbx, rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rdx
	mov	rsi, rax
	call	ts_to_nsec
	add	rax, rbx
	shr	rax
	mov	QWORD PTR -88[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	nsec_to_ts
	mov	rcx, QWORD PTR -120[rbp]
	mov	QWORD PTR [rcx], rax
	mov	QWORD PTR 8[rcx], rdx
.L15:
	add	DWORD PTR -108[rbp], 1
.L13:
	cmp	DWORD PTR -108[rbp], 2
	jle	.L16
	nop
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L17
	call	__stack_chk_fail@PLT
.L17:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	get_monotonic_and_raw, .-get_monotonic_and_raw
	.globl	get_ppm_drift
	.type	get_ppm_drift, @function
get_ppm_drift:
.LFB13:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 112
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rdx, -64[rbp]
	lea	rax, -80[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	get_monotonic_and_raw
	mov	edi, 15
	call	sleep@PLT
	lea	rdx, -32[rbp]
	lea	rax, -48[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	get_monotonic_and_raw
	mov	rax, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rdi, QWORD PTR -80[rbp]
	mov	rsi, QWORD PTR -72[rbp]
	mov	rcx, rdx
	mov	rdx, rax
	call	diff_timespec
	mov	QWORD PTR -104[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	rdi, QWORD PTR -64[rbp]
	mov	rsi, QWORD PTR -56[rbp]
	mov	rcx, rdx
	mov	rdx, rax
	call	diff_timespec
	mov	QWORD PTR -96[rbp], rax
	mov	rax, QWORD PTR -104[rbp]
	imul	rax, rax, 1000000
	cqo
	idiv	QWORD PTR -96[rbp]
	sub	rax, 1000000
	mov	QWORD PTR -88[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L20
	call	__stack_chk_fail@PLT
.L20:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	get_ppm_drift, .-get_ppm_drift
	.section	.rodata
	.align 8
.LC0:
	.string	"Estimating tick (act: %ld usec, %lld ppm): "
.LC1:
	.string	"%lld usec, %lld ppm"
.LC2:
	.string	"\t[ERROR]"
	.align 8
.LC3:
	.string	"\tUnexpected adjtimex return values, make sure ntpd is not running."
.LC4:
	.string	"\t[FAILED]"
.LC5:
	.string	"\t[OK]"
	.text
	.globl	check_tick_adj
	.type	check_tick_adj, @function
check_tick_adj:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 256
	mov	QWORD PTR -248[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -224[rbp], 16384
	mov	eax, DWORD PTR -224[rbp]
	or	eax, 1
	mov	DWORD PTR -224[rbp], eax
	mov	eax, DWORD PTR -224[rbp]
	or	eax, 2
	mov	DWORD PTR -224[rbp], eax
	mov	eax, DWORD PTR -224[rbp]
	or	eax, 16
	mov	DWORD PTR -224[rbp], eax
	mov	DWORD PTR -184[rbp], 1
	mov	QWORD PTR -216[rbp], 0
	mov	QWORD PTR -208[rbp], 0
	mov	rax, QWORD PTR -248[rbp]
	mov	QWORD PTR -136[rbp], rax
	lea	rax, -224[rbp]
	mov	rdi, rax
	call	adjtimex@PLT
	mov	edi, 1
	call	sleep@PLT
	mov	rax, QWORD PTR -248[rbp]
	imul	rax, rax, 1000000
	mov	rsi, QWORD PTR systick[rip]
	cqo
	idiv	rsi
	sub	rax, 1000000
	mov	QWORD PTR -240[rbp], rax
	mov	rdx, QWORD PTR -240[rbp]
	mov	rax, QWORD PTR -248[rbp]
	mov	rsi, rax
	lea	rdi, .LC0[rip]
	mov	eax, 0
	call	printf@PLT
	call	get_ppm_drift
	mov	QWORD PTR -232[rbp], rax
	mov	rax, QWORD PTR systick[rip]
	imul	rax, QWORD PTR -232[rbp]
	mov	rcx, rax
	movabs	rdx, 4835703278458516699
	mov	rax, rcx
	imul	rdx
	mov	rax, rdx
	sar	rax, 18
	sar	rcx, 63
	sub	rax, rcx
	mov	rdx, rax
	mov	rax, QWORD PTR systick[rip]
	lea	rcx, [rdx+rax]
	mov	rax, QWORD PTR -232[rbp]
	mov	rdx, rax
	mov	rsi, rcx
	lea	rdi, .LC1[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rdi, rax
	call	fflush@PLT
	mov	DWORD PTR -224[rbp], 0
	lea	rax, -224[rbp]
	mov	rdi, rax
	call	adjtimex@PLT
	mov	rax, QWORD PTR -216[rbp]
	test	rax, rax
	jne	.L22
	mov	rax, QWORD PTR -208[rbp]
	test	rax, rax
	jne	.L22
	mov	rax, QWORD PTR -136[rbp]
	cmp	QWORD PTR -248[rbp], rax
	je	.L23
.L22:
	lea	rdi, .LC2[rip]
	call	puts@PLT
	lea	rdi, .LC3[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L26
.L23:
	mov	rax, QWORD PTR -232[rbp]
	sub	rax, QWORD PTR -240[rbp]
	cqo
	xor	rax, rdx
	sub	rax, rdx
	cmp	rax, 100
	jle	.L25
	lea	rdi, .LC4[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L26
.L25:
	lea	rdi, .LC5[rip]
	call	puts@PLT
	mov	eax, 0
.L26:
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L27
	call	__stack_chk_fail@PLT
.L27:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	check_tick_adj, .-check_tick_adj
	.section	.rodata
.LC6:
	.string	"ERR: NO CLOCK_MONOTONIC_RAW"
	.align 8
.LC7:
	.string	"Each iteration takes about 15 seconds"
	.text
	.globl	main
	.type	main, @function
main:
.LFB15:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 288
	mov	DWORD PTR -276[rbp], edi
	mov	QWORD PTR -288[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	QWORD PTR -264[rbp], 0
	mov	rax, QWORD PTR stdout[rip]
	mov	esi, 0
	mov	rdi, rax
	call	setbuf@PLT
	lea	rax, -240[rbp]
	mov	rsi, rax
	mov	edi, 4
	call	clock_gettime@PLT
	test	eax, eax
	je	.L29
	lea	rdi, .LC6[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L36
.L29:
	lea	rdi, .LC7[rip]
	call	puts@PLT
	mov	edi, 2
	call	sysconf@PLT
	mov	QWORD PTR systick[rip], rax
	mov	edi, 2
	call	sysconf@PLT
	mov	rsi, rax
	mov	eax, 1000000
	cqo
	idiv	rsi
	mov	QWORD PTR systick[rip], rax
	mov	rcx, QWORD PTR systick[rip]
	movabs	rdx, 7378697629483820647
	mov	rax, rcx
	imul	rdx
	mov	rax, rdx
	sar	rax, 2
	sar	rcx, 63
	mov	rdx, rcx
	sub	rax, rdx
	mov	QWORD PTR -256[rbp], rax
	mov	rax, QWORD PTR -256[rbp]
	lea	rdx, 3[rax]
	test	rax, rax
	cmovs	rax, rdx
	sar	rax, 2
	mov	QWORD PTR -248[rbp], rax
	mov	rax, QWORD PTR systick[rip]
	sub	rax, QWORD PTR -256[rbp]
	mov	QWORD PTR -272[rbp], rax
	jmp	.L31
.L34:
	mov	rax, QWORD PTR -272[rbp]
	mov	rdi, rax
	call	check_tick_adj
	test	eax, eax
	je	.L32
	mov	QWORD PTR -264[rbp], 1
	jmp	.L33
.L32:
	mov	rax, QWORD PTR -248[rbp]
	add	QWORD PTR -272[rbp], rax
.L31:
	mov	rdx, QWORD PTR systick[rip]
	mov	rax, QWORD PTR -256[rbp]
	add	rax, rdx
	cmp	QWORD PTR -272[rbp], rax
	jl	.L34
.L33:
	mov	DWORD PTR -224[rbp], 16384
	mov	eax, DWORD PTR -224[rbp]
	or	eax, 1
	mov	DWORD PTR -224[rbp], eax
	mov	eax, DWORD PTR -224[rbp]
	or	eax, 2
	mov	DWORD PTR -224[rbp], eax
	mov	QWORD PTR -216[rbp], 0
	mov	QWORD PTR -208[rbp], 0
	mov	rax, QWORD PTR systick[rip]
	mov	QWORD PTR -136[rbp], rax
	lea	rax, -224[rbp]
	mov	rdi, rax
	call	adjtimex@PLT
	cmp	QWORD PTR -264[rbp], 0
	je	.L35
	call	ksft_exit_fail
	jmp	.L36
.L35:
	call	ksft_exit_pass
.L36:
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L37
	call	__stack_chk_fail@PLT
.L37:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	main, .-main
	.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	"217884.c"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	ksft_exit_pass, %function
ksft_exit_pass:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	mov	r0, #0
	bl	exit
	.size	ksft_exit_pass, .-ksft_exit_pass
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	ksft_exit_fail, %function
ksft_exit_fail:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	mov	r0, #1
	bl	exit
	.size	ksft_exit_fail, .-ksft_exit_fail
	.comm	systick,4,4
	.align	2
	.global	llabs
	.syntax unified
	.arm
	.fpu softvfp
	.type	llabs, %function
llabs:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	cmp	r2, #0
	sbcs	r3, r3, #0
	bge	.L4
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	str	r2, [fp, #-12]
	str	r3, [fp, #-8]
.L4:
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	llabs, .-llabs
	.align	2
	.global	ts_to_nsec
	.syntax unified
	.arm
	.fpu softvfp
	.type	ts_to_nsec, %function
ts_to_nsec:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #8
	sub	r3, fp, #20
	stm	r3, {r0, r1}
	ldr	r3, [fp, #-20]
	mov	r0, r3
	asr	r1, r0, #31
	ldr	r3, .L8
	mul	r2, r3, r1
	mov	r3, #0
	mul	r3, r0, r3
	add	ip, r2, r3
	ldr	lr, .L8
	umull	r2, r3, r0, lr
	add	r1, ip, r3
	mov	r3, r1
	ldr	r1, [fp, #-16]
	mov	r0, r1
	asr	r1, r0, #31
	adds	r4, r2, r0
	adc	r5, r3, r1
	mov	r2, r4
	mov	r3, r5
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L9:
	.align	2
.L8:
	.word	1000000000
	.size	ts_to_nsec, .-ts_to_nsec
	.global	__aeabi_ldivmod
	.align	2
	.global	nsec_to_ts
	.syntax unified
	.arm
	.fpu softvfp
	.type	nsec_to_ts, %function
nsec_to_ts:
	@ 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, #-16]
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	adr	r3, .L12
	ldmia	r3, {r2-r3}
	bl	__aeabi_ldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	str	r3, [fp, #-12]
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	adr	r3, .L12
	ldmia	r3, {r2-r3}
	bl	__aeabi_ldivmod
	mov	r3, r2
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	mov	r2, r3
	sub	r3, fp, #12
	ldm	r3, {r0, r1}
	stm	r2, {r0, r1}
	ldr	r0, [fp, #-16]
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L13:
	.align	3
.L12:
	.word	1000000000
	.word	0
	.size	nsec_to_ts, .-nsec_to_ts
	.align	2
	.global	diff_timespec
	.syntax unified
	.arm
	.fpu softvfp
	.type	diff_timespec, %function
diff_timespec:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #32
	sub	ip, fp, #36
	stm	ip, {r0, r1}
	sub	r1, fp, #44
	stm	r1, {r2, r3}
	sub	r3, fp, #36
	ldm	r3, {r0, r1}
	bl	ts_to_nsec
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	sub	r3, fp, #44
	ldm	r3, {r0, r1}
	bl	ts_to_nsec
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	subs	r4, r0, r2
	sbc	r5, r1, r3
	mov	r2, r4
	mov	r3, r5
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
	.size	diff_timespec, .-diff_timespec
	.section	.rodata
	.align	2
.LC0:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	get_monotonic_and_raw
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_monotonic_and_raw, %function
get_monotonic_and_raw:
	@ args = 0, pretend = 0, frame = 80
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #80
	str	r0, [fp, #-88]
	str	r1, [fp, #-92]
	ldr	r3, .L22
	ldr	r3, [r3]
	str	r3, [fp, #-24]
	mov	r3,#0
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-76]
	str	r3, [fp, #-72]
	ldr	r1, [fp, #-88]
	mov	r0, #1
	bl	clock_gettime
	ldr	r1, [fp, #-92]
	mov	r0, #4
	bl	clock_gettime
	mov	r3, #0
	str	r3, [fp, #-80]
	b	.L17
.L20:
	sub	r3, fp, #48
	mov	r1, r3
	mov	r0, #1
	bl	clock_gettime
	sub	r3, fp, #40
	mov	r1, r3
	mov	r0, #4
	bl	clock_gettime
	sub	r3, fp, #32
	mov	r1, r3
	mov	r0, #1
	bl	clock_gettime
	sub	r3, fp, #32
	ldm	r3, {r2, r3}
	sub	r1, fp, #48
	ldm	r1, {r0, r1}
	bl	diff_timespec
	str	r0, [fp, #-68]
	str	r1, [fp, #-64]
	sub	r3, fp, #76
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L18
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	sub	r3, fp, #76
	ldmia	r3, {r2-r3}
	cmp	r0, r2
	sbcs	r3, r1, r3
	bge	.L19
.L18:
	sub	r3, fp, #68
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-76]
	str	r3, [fp, #-72]
	ldr	r3, [fp, #-92]
	mov	r2, r3
	sub	r3, fp, #40
	ldm	r3, {r0, r1}
	stm	r2, {r0, r1}
	sub	r3, fp, #48
	ldm	r3, {r0, r1}
	bl	ts_to_nsec
	mov	r6, r0
	mov	r7, r1
	sub	r3, fp, #32
	ldm	r3, {r0, r1}
	bl	ts_to_nsec
	mov	r2, r0
	mov	r3, r1
	adds	r4, r6, r2
	adc	r5, r7, r3
	mov	r2, #0
	mov	r3, #0
	lsr	r2, r4, #1
	orr	r2, r2, r5, lsl #31
	lsr	r3, r5, #1
	str	r2, [fp, #-60]
	str	r3, [fp, #-56]
	ldr	r6, [fp, #-88]
	sub	r1, fp, #100
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	mov	r0, r1
	bl	nsec_to_ts
	mov	r2, r6
	sub	r3, fp, #100
	ldm	r3, {r0, r1}
	stm	r2, {r0, r1}
.L19:
	ldr	r3, [fp, #-80]
	add	r3, r3, #1
	str	r3, [fp, #-80]
.L17:
	ldr	r3, [fp, #-80]
	cmp	r3, #2
	ble	.L20
	nop
	ldr	r3, .L22
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L21
	bl	__stack_chk_fail
.L21:
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L23:
	.align	2
.L22:
	.word	.LC0
	.size	get_monotonic_and_raw, .-get_monotonic_and_raw
	.section	.rodata
	.align	2
.LC1:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	get_ppm_drift
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_ppm_drift, %function
get_ppm_drift:
	@ args = 0, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #64
	ldr	r3, .L27+8
	ldr	r3, [r3]
	str	r3, [fp, #-32]
	mov	r3,#0
	sub	r2, fp, #56
	sub	r3, fp, #64
	mov	r1, r2
	mov	r0, r3
	bl	get_monotonic_and_raw
	mov	r0, #15
	bl	sleep
	sub	r2, fp, #40
	sub	r3, fp, #48
	mov	r1, r2
	mov	r0, r3
	bl	get_monotonic_and_raw
	sub	r3, fp, #48
	ldm	r3, {r2, r3}
	sub	r1, fp, #64
	ldm	r1, {r0, r1}
	bl	diff_timespec
	str	r0, [fp, #-92]
	str	r1, [fp, #-88]
	sub	r3, fp, #40
	ldm	r3, {r2, r3}
	sub	r1, fp, #56
	ldm	r1, {r0, r1}
	bl	diff_timespec
	str	r0, [fp, #-84]
	str	r1, [fp, #-80]
	sub	r5, fp, #92
	ldmia	r5, {r4-r5}
	mov	r2, r4
	mov	r3, r5
	mov	r0, #0
	mov	r1, #0
	lsl	r1, r3, #5
	orr	r1, r1, r2, lsr #27
	lsl	r0, r2, #5
	mov	r2, r0
	mov	r3, r1
	subs	r2, r2, r4
	sbc	r3, r3, r5
	mov	r0, #0
	mov	r1, #0
	lsl	r1, r3, #9
	orr	r1, r1, r2, lsr #23
	lsl	r0, r2, #9
	mov	r2, r0
	mov	r3, r1
	adds	r2, r2, r4
	adc	r3, r3, r5
	mov	r0, #0
	mov	r1, #0
	lsl	r1, r3, #6
	orr	r1, r1, r2, lsr #26
	lsl	r0, r2, #6
	subs	r0, r0, r2
	sbc	r1, r1, r3
	adds	r8, r0, r4
	adc	r9, r1, r5
	sub	r3, fp, #84
	ldmia	r3, {r2-r3}
	mov	r0, r8
	mov	r1, r9
	bl	__aeabi_ldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	adr	r3, .L27
	ldmia	r3, {r2-r3}
	adds	r6, r0, r2
	adc	r7, r1, r3
	str	r6, [fp, #-76]
	str	r7, [fp, #-72]
	sub	r3, fp, #76
	ldmia	r3, {r2-r3}
	ldr	r1, .L27+8
	ldr	r0, [r1]
	ldr	r1, [fp, #-32]
	eors	r0, r1, r0
	mov	r1, #0
	beq	.L26
	bl	__stack_chk_fail
.L26:
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L28:
	.align	3
.L27:
	.word	-1000000
	.word	-1
	.word	.LC1
	.size	get_ppm_drift, .-get_ppm_drift
	.section	.rodata
	.align	2
.LC2:
	.ascii	"Estimating tick (act: %ld usec, %lld ppm): \000"
	.align	2
.LC3:
	.ascii	"%lld usec, %lld ppm\000"
	.align	2
.LC4:
	.ascii	"\011[ERROR]\000"
	.align	2
.LC5:
	.ascii	"\011Unexpected adjtimex return values, make sure nt"
	.ascii	"pd is not running.\000"
	.align	2
.LC6:
	.ascii	"\011[FAILED]\000"
	.align	2
.LC7:
	.ascii	"\011[OK]\000"
	.align	2
.LC8:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	check_tick_adj
	.syntax unified
	.arm
	.fpu softvfp
	.type	check_tick_adj, %function
check_tick_adj:
	@ args = 0, pretend = 0, frame = 184
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #192
	str	r0, [fp, #-184]
	ldr	r3, .L36+8
	ldr	r3, [r3]
	str	r3, [fp, #-32]
	mov	r3,#0
	mov	r3, #16384
	str	r3, [fp, #-160]
	ldr	r3, [fp, #-160]
	orr	r3, r3, #1
	str	r3, [fp, #-160]
	ldr	r3, [fp, #-160]
	orr	r3, r3, #2
	str	r3, [fp, #-160]
	ldr	r3, [fp, #-160]
	orr	r3, r3, #16
	str	r3, [fp, #-160]
	mov	r3, #1
	str	r3, [fp, #-140]
	mov	r3, #0
	str	r3, [fp, #-156]
	mov	r3, #0
	str	r3, [fp, #-152]
	ldr	r3, [fp, #-184]
	str	r3, [fp, #-116]
	sub	r3, fp, #160
	mov	r0, r3
	bl	adjtimex
	mov	r0, #1
	bl	sleep
	ldr	r3, [fp, #-184]
	mov	r4, r3
	asr	r5, r4, #31
	mov	r2, r4
	mov	r3, r5
	mov	r0, #0
	mov	r1, #0
	lsl	r1, r3, #5
	orr	r1, r1, r2, lsr #27
	lsl	r0, r2, #5
	mov	r2, r0
	mov	r3, r1
	subs	r2, r2, r4
	sbc	r3, r3, r5
	mov	r0, #0
	mov	r1, #0
	lsl	r1, r3, #9
	orr	r1, r1, r2, lsr #23
	lsl	r0, r2, #9
	mov	r2, r0
	mov	r3, r1
	adds	r2, r2, r4
	adc	r3, r3, r5
	mov	r0, #0
	mov	r1, #0
	lsl	r1, r3, #6
	orr	r1, r1, r2, lsr #26
	lsl	r0, r2, #6
	subs	r0, r0, r2
	sbc	r1, r1, r3
	adds	r3, r0, r4
	str	r3, [fp, #-196]
	adc	r3, r1, r5
	str	r3, [fp, #-192]
	ldr	r3, .L36+12
	ldr	r3, [r3]
	mov	r2, r3
	asr	r3, r2, #31
	sub	r1, fp, #196
	ldmia	r1, {r0-r1}
	bl	__aeabi_ldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	adr	r3, .L36
	ldmia	r3, {r2-r3}
	adds	ip, r0, r2
	str	ip, [fp, #-212]
	adc	r3, r1, r3
	str	r3, [fp, #-208]
	sub	r4, fp, #212
	ldmia	r4, {r3-r4}
	str	r3, [fp, #-180]
	str	r4, [fp, #-176]
	sub	r3, fp, #180
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-184]
	ldr	r0, .L36+16
	bl	printf
	bl	get_ppm_drift
	str	r0, [fp, #-172]
	str	r1, [fp, #-168]
	ldr	r3, .L36+12
	ldr	r3, [r3]
	mov	r4, r3
	asr	r5, r4, #31
	ldr	r3, .L36+12
	ldr	r3, [r3]
	mov	r2, r3
	asr	r3, r2, #31
	ldr	r1, [fp, #-172]
	mul	r0, r3, r1
	ldr	r1, [fp, #-168]
	mul	r1, r2, r1
	add	ip, r0, r1
	ldr	lr, [fp, #-172]
	umull	r0, r1, lr, r2
	add	r3, ip, r1
	mov	r1, r3
	ldr	r2, .L36+20
	mov	r3, #0
	bl	__aeabi_ldivmod
	mov	r2, r0
	mov	r3, r1
	adds	r1, r4, r2
	str	r1, [fp, #-204]
	adc	r3, r5, r3
	str	r3, [fp, #-200]
	sub	r3, fp, #172
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	sub	r3, fp, #204
	ldmia	r3, {r2-r3}
	ldr	r0, .L36+24
	bl	printf
	ldr	r3, .L36+28
	ldr	r3, [r3]
	mov	r0, r3
	bl	fflush
	mov	r3, #0
	str	r3, [fp, #-160]
	sub	r3, fp, #160
	mov	r0, r3
	bl	adjtimex
	ldr	r3, [fp, #-156]
	cmp	r3, #0
	bne	.L30
	ldr	r3, [fp, #-152]
	cmp	r3, #0
	bne	.L30
	ldr	r3, [fp, #-116]
	ldr	r2, [fp, #-184]
	cmp	r2, r3
	beq	.L31
.L30:
	ldr	r0, .L36+32
	bl	puts
	ldr	r0, .L36+36
	bl	puts
	mvn	r3, #0
	b	.L34
.L31:
	sub	r1, fp, #172
	ldmia	r1, {r0-r1}
	sub	r3, fp, #180
	ldmia	r3, {r2-r3}
	subs	r8, r0, r2
	sbc	r9, r1, r3
	mov	r2, #0
	mov	r3, #0
	asr	r2, r9, #31
	asr	r3, r9, #31
	eor	r6, r2, r8
	eor	r7, r3, r9
	subs	r6, r6, r2
	sbc	r7, r7, r3
	cmp	r6, #101
	sbcs	r3, r7, #0
	blt	.L33
	ldr	r0, .L36+40
	bl	puts
	mvn	r3, #0
	b	.L34
.L33:
	ldr	r0, .L36+44
	bl	puts
	mov	r3, #0
.L34:
	ldr	r2, .L36+8
	ldr	r1, [r2]
	ldr	r2, [fp, #-32]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L35
	bl	__stack_chk_fail
.L35:
	mov	r0, r3
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L37:
	.align	3
.L36:
	.word	-1000000
	.word	-1
	.word	.LC8
	.word	systick
	.word	.LC2
	.word	1000000
	.word	.LC3
	.word	stdout
	.word	.LC4
	.word	.LC5
	.word	.LC6
	.word	.LC7
	.size	check_tick_adj, .-check_tick_adj
	.section	.rodata
	.align	2
.LC9:
	.ascii	"ERR: NO CLOCK_MONOTONIC_RAW\000"
	.align	2
.LC10:
	.ascii	"Each iteration takes about 15 seconds\000"
	.global	__aeabi_idiv
	.align	2
.LC11:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 168
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #168
	str	r0, [fp, #-168]
	str	r1, [fp, #-172]
	ldr	r3, .L48
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-156]
	ldr	r3, .L48+4
	ldr	r3, [r3]
	mov	r1, #0
	mov	r0, r3
	bl	setbuf
	sub	r3, fp, #144
	mov	r1, r3
	mov	r0, #4
	bl	clock_gettime
	mov	r3, r0
	cmp	r3, #0
	beq	.L39
	ldr	r0, .L48+8
	bl	puts
	mvn	r3, #0
	b	.L46
.L39:
	ldr	r0, .L48+12
	bl	puts
	mov	r0, #2
	bl	sysconf
	mov	r3, r0
	ldr	r2, .L48+16
	str	r3, [r2]
	mov	r0, #2
	bl	sysconf
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L48+20
	bl	__aeabi_idiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L48+16
	str	r2, [r3]
	ldr	r3, .L48+16
	ldr	r3, [r3]
	ldr	r2, .L48+24
	smull	r1, r2, r3, r2
	asr	r2, r2, #2
	asr	r3, r3, #31
	sub	r3, r2, r3
	str	r3, [fp, #-152]
	ldr	r3, [fp, #-152]
	add	r2, r3, #3
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #2
	str	r3, [fp, #-148]
	ldr	r3, .L48+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-152]
	sub	r3, r2, r3
	str	r3, [fp, #-160]
	b	.L41
.L44:
	ldr	r0, [fp, #-160]
	bl	check_tick_adj
	mov	r3, r0
	cmp	r3, #0
	beq	.L42
	mov	r3, #1
	str	r3, [fp, #-156]
	b	.L43
.L42:
	ldr	r2, [fp, #-160]
	ldr	r3, [fp, #-148]
	add	r3, r2, r3
	str	r3, [fp, #-160]
.L41:
	ldr	r3, .L48+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-152]
	add	r3, r2, r3
	ldr	r2, [fp, #-160]
	cmp	r2, r3
	blt	.L44
.L43:
	mov	r3, #16384
	str	r3, [fp, #-136]
	ldr	r3, [fp, #-136]
	orr	r3, r3, #1
	str	r3, [fp, #-136]
	ldr	r3, [fp, #-136]
	orr	r3, r3, #2
	str	r3, [fp, #-136]
	mov	r3, #0
	str	r3, [fp, #-132]
	mov	r3, #0
	str	r3, [fp, #-128]
	ldr	r3, .L48+16
	ldr	r3, [r3]
	str	r3, [fp, #-92]
	sub	r3, fp, #136
	mov	r0, r3
	bl	adjtimex
	ldr	r3, [fp, #-156]
	cmp	r3, #0
	beq	.L45
	bl	ksft_exit_fail
	mov	r3, r0
	b	.L46
.L45:
	bl	ksft_exit_pass
	mov	r3, r0
.L46:
	ldr	r2, .L48
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L47
	bl	__stack_chk_fail
.L47:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L49:
	.align	2
.L48:
	.word	.LC11
	.word	stdout
	.word	.LC9
	.word	.LC10
	.word	systick
	.word	1000000
	.word	1717986919
	.size	main, .-main
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
