	.file	"859044.c"
	.intel_syntax noprefix
	.text
	.globl	dist
	.bss
	.align 8
	.type	dist, @object
	.size	dist, 8
dist:
	.zero	8
	.globl	idid
	.align 4
	.type	idid, @object
	.size	idid, 4
idid:
	.zero	4
	.globl	st
	.align 8
	.type	st, @object
	.size	st, 8
st:
	.zero	8
	.text
	.globl	all_fast
	.type	all_fast, @function
all_fast:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	call	omp_get_thread_num@PLT
	mov	DWORD PTR -4[rbp], eax
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	add	edx, 1
	mov	DWORD PTR [rax], edx
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	all_fast, .-all_fast
	.globl	zero_slow
	.type	zero_slow, @function
zero_slow:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	call	omp_get_thread_num@PLT
	mov	DWORD PTR -20[rbp], eax
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	add	edx, 1
	mov	DWORD PTR [rax], edx
	cmp	DWORD PTR -20[rbp], 0
	jne	.L6
	mov	edi, 0
	call	system_clock
	movq	rax, xmm0
	mov	QWORD PTR -16[rbp], rax
	movsd	xmm1, QWORD PTR -16[rbp]
	movsd	xmm0, QWORD PTR .LC0[rip]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -8[rbp], xmm0
	jmp	.L4
.L5:
	mov	edi, 0
	call	system_clock
	movq	rax, xmm0
	mov	QWORD PTR -16[rbp], rax
.L4:
	movsd	xmm0, QWORD PTR -8[rbp]
	comisd	xmm0, QWORD PTR -16[rbp]
	ja	.L5
.L6:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	zero_slow, .-zero_slow
	.globl	imbalance
	.type	imbalance, @function
imbalance:
.LFB8:
	.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	DWORD PTR -36[rbp], edi
	call	omp_get_thread_num@PLT
	mov	DWORD PTR -20[rbp], eax
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	add	edx, 1
	mov	DWORD PTR [rax], edx
	cmp	DWORD PTR -36[rbp], 1
	jne	.L8
	mov	eax, DWORD PTR -20[rbp]
	mov	DWORD PTR idid[rip], eax
	mov	edi, 0
	call	system_clock
	movq	rax, xmm0
	mov	QWORD PTR -16[rbp], rax
	movsd	xmm1, QWORD PTR -16[rbp]
	movsd	xmm0, QWORD PTR .LC0[rip]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -8[rbp], xmm0
	jmp	.L9
.L10:
	mov	edi, 0
	call	system_clock
	movq	rax, xmm0
	mov	QWORD PTR -16[rbp], rax
.L9:
	movsd	xmm0, QWORD PTR -8[rbp]
	comisd	xmm0, QWORD PTR -16[rbp]
	ja	.L10
	jmp	.L14
.L8:
	mov	edi, 0
	call	system_clock
	movq	rax, xmm0
	mov	QWORD PTR -16[rbp], rax
	movsd	xmm1, QWORD PTR -16[rbp]
	movsd	xmm0, QWORD PTR .LC1[rip]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -8[rbp], xmm0
	jmp	.L12
.L13:
	mov	edi, 0
	call	system_clock
	movq	rax, xmm0
	mov	QWORD PTR -16[rbp], rax
.L12:
	movsd	xmm0, QWORD PTR -8[rbp]
	comisd	xmm0, QWORD PTR -16[rbp]
	ja	.L13
.L14:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	imbalance, .-imbalance
	.section	.rodata
.LC2:
	.string	"max threads = %d\n"
	.align 8
.LC3:
	.string	"report the % of iterations for each thread"
.LC4:
	.string	"for a set of loops"
.LC5:
	.string	"******"
.LC6:
	.string	"default scheduling"
	.align 8
.LC7:
	.string	"for a subroutine with little work"
.LC9:
	.string	"%d %6.2f %%\n"
	.align 8
.LC10:
	.string	" total iterations: %d time %10.2f\n\n"
	.align 8
.LC11:
	.string	"for a subroutine with thread 0 given 1 second of work"
.LC12:
	.string	"schedule(static,1)"
.LC13:
	.string	"schedule(static,2)"
.LC14:
	.string	"schedule(dynamic,1)"
.LC15:
	.string	"schedule(dynamic,2)"
.LC16:
	.string	"schedule(dynamic,4)"
.LC17:
	.string	"for an imbalanced subroutine"
	.align 8
.LC18:
	.string	" total iterations: %d time %10.2f\n"
	.align 8
.LC19:
	.string	" thread %d did the slow iteration\n\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	call	omp_get_max_threads@PLT
	mov	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, eax
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	sal	rax, 2
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR dist[rip], rax
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	zero
	mov	DWORD PTR -12[rbp], 0
	lea	rdi, .LC3[rip]
	call	explain
	lea	rdi, .LC4[rip]
	call	explain
	lea	rdi, .LC5[rip]
	call	explain
	lea	rdi, .LC6[rip]
	call	explain
	lea	rdi, .LC7[rip]
	call	explain
	mov	eax, DWORD PTR -8[rbp]
	imul	eax, eax, 100
	mov	DWORD PTR -4[rbp], eax
	mov	eax, 0
	call	start_time
	mov	DWORD PTR -16[rbp], 1
	jmp	.L16
.L17:
	mov	eax, 0
	call	all_fast
	add	DWORD PTR -16[rbp], 1
.L16:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jle	.L17
	mov	eax, 0
	call	my_bar
	mov	DWORD PTR -16[rbp], 0
	jmp	.L18
.L19:
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, eax
	movsd	xmm0, QWORD PTR .LC8[rip]
	mulsd	xmm0, xmm1
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, DWORD PTR -4[rbp]
	divsd	xmm0, xmm1
	movq	rdx, xmm0
	mov	eax, DWORD PTR -16[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC9[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	add	DWORD PTR -12[rbp], eax
	add	DWORD PTR -16[rbp], 1
.L18:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jl	.L19
	mov	eax, 0
	call	end_time
	movq	rax, xmm0
	mov	edx, DWORD PTR -12[rbp]
	movq	xmm0, rax
	mov	esi, edx
	lea	rdi, .LC10[rip]
	mov	eax, 1
	call	printf@PLT
	mov	DWORD PTR -12[rbp], 0
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	zero
	lea	rdi, .LC6[rip]
	call	explain
	lea	rdi, .LC11[rip]
	call	explain
	mov	eax, DWORD PTR -8[rbp]
	sal	eax, 2
	mov	DWORD PTR -4[rbp], eax
	mov	eax, 0
	call	start_time
	mov	DWORD PTR -16[rbp], 1
	jmp	.L20
.L21:
	mov	eax, 0
	call	zero_slow
	add	DWORD PTR -16[rbp], 1
.L20:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jle	.L21
	mov	eax, 0
	call	my_bar
	mov	DWORD PTR -16[rbp], 0
	jmp	.L22
.L23:
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, eax
	movsd	xmm0, QWORD PTR .LC8[rip]
	mulsd	xmm0, xmm1
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, DWORD PTR -4[rbp]
	divsd	xmm0, xmm1
	movq	rdx, xmm0
	mov	eax, DWORD PTR -16[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC9[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	add	DWORD PTR -12[rbp], eax
	add	DWORD PTR -16[rbp], 1
.L22:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jl	.L23
	mov	eax, 0
	call	end_time
	movq	rax, xmm0
	mov	edx, DWORD PTR -12[rbp]
	movq	xmm0, rax
	mov	esi, edx
	lea	rdi, .LC10[rip]
	mov	eax, 1
	call	printf@PLT
	mov	DWORD PTR -12[rbp], 0
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	zero
	lea	rdi, .LC12[rip]
	call	explain
	lea	rdi, .LC11[rip]
	call	explain
	mov	eax, 0
	call	start_time
	mov	DWORD PTR -16[rbp], 1
	jmp	.L24
.L25:
	mov	eax, 0
	call	zero_slow
	add	DWORD PTR -16[rbp], 1
.L24:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jle	.L25
	mov	DWORD PTR -16[rbp], 0
	jmp	.L26
.L27:
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, eax
	movsd	xmm0, QWORD PTR .LC8[rip]
	mulsd	xmm0, xmm1
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, DWORD PTR -4[rbp]
	divsd	xmm0, xmm1
	movq	rdx, xmm0
	mov	eax, DWORD PTR -16[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC9[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	add	DWORD PTR -12[rbp], eax
	add	DWORD PTR -16[rbp], 1
.L26:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jl	.L27
	mov	eax, 0
	call	end_time
	movq	rax, xmm0
	mov	edx, DWORD PTR -12[rbp]
	movq	xmm0, rax
	mov	esi, edx
	lea	rdi, .LC10[rip]
	mov	eax, 1
	call	printf@PLT
	mov	DWORD PTR -12[rbp], 0
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	zero
	lea	rdi, .LC13[rip]
	call	explain
	lea	rdi, .LC11[rip]
	call	explain
	mov	eax, 0
	call	start_time
	mov	DWORD PTR -16[rbp], 1
	jmp	.L28
.L29:
	mov	eax, 0
	call	zero_slow
	add	DWORD PTR -16[rbp], 1
.L28:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jle	.L29
	mov	DWORD PTR -16[rbp], 0
	jmp	.L30
.L31:
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, eax
	movsd	xmm0, QWORD PTR .LC8[rip]
	mulsd	xmm0, xmm1
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, DWORD PTR -4[rbp]
	divsd	xmm0, xmm1
	movq	rdx, xmm0
	mov	eax, DWORD PTR -16[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC9[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	add	DWORD PTR -12[rbp], eax
	add	DWORD PTR -16[rbp], 1
.L30:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jl	.L31
	mov	eax, 0
	call	end_time
	movq	rax, xmm0
	mov	edx, DWORD PTR -12[rbp]
	movq	xmm0, rax
	mov	esi, edx
	lea	rdi, .LC10[rip]
	mov	eax, 1
	call	printf@PLT
	mov	DWORD PTR -12[rbp], 0
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	zero
	lea	rdi, .LC14[rip]
	call	explain
	lea	rdi, .LC11[rip]
	call	explain
	mov	eax, 0
	call	start_time
	mov	DWORD PTR -16[rbp], 1
	jmp	.L32
.L33:
	mov	eax, 0
	call	zero_slow
	add	DWORD PTR -16[rbp], 1
.L32:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jle	.L33
	mov	DWORD PTR -16[rbp], 0
	jmp	.L34
.L35:
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, eax
	movsd	xmm0, QWORD PTR .LC8[rip]
	mulsd	xmm0, xmm1
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, DWORD PTR -4[rbp]
	divsd	xmm0, xmm1
	movq	rdx, xmm0
	mov	eax, DWORD PTR -16[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC9[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	add	DWORD PTR -12[rbp], eax
	add	DWORD PTR -16[rbp], 1
.L34:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jl	.L35
	mov	eax, 0
	call	end_time
	movq	rax, xmm0
	mov	edx, DWORD PTR -12[rbp]
	movq	xmm0, rax
	mov	esi, edx
	lea	rdi, .LC10[rip]
	mov	eax, 1
	call	printf@PLT
	mov	DWORD PTR -12[rbp], 0
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	zero
	lea	rdi, .LC15[rip]
	call	explain
	lea	rdi, .LC11[rip]
	call	explain
	mov	eax, 0
	call	start_time
	mov	DWORD PTR -16[rbp], 1
	jmp	.L36
.L37:
	mov	eax, 0
	call	zero_slow
	add	DWORD PTR -16[rbp], 1
.L36:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jle	.L37
	mov	DWORD PTR -16[rbp], 0
	jmp	.L38
.L39:
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, eax
	movsd	xmm0, QWORD PTR .LC8[rip]
	mulsd	xmm0, xmm1
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, DWORD PTR -4[rbp]
	divsd	xmm0, xmm1
	movq	rdx, xmm0
	mov	eax, DWORD PTR -16[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC9[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	add	DWORD PTR -12[rbp], eax
	add	DWORD PTR -16[rbp], 1
.L38:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jl	.L39
	mov	eax, 0
	call	end_time
	movq	rax, xmm0
	mov	edx, DWORD PTR -12[rbp]
	movq	xmm0, rax
	mov	esi, edx
	lea	rdi, .LC10[rip]
	mov	eax, 1
	call	printf@PLT
	mov	DWORD PTR -12[rbp], 0
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	zero
	lea	rdi, .LC16[rip]
	call	explain
	lea	rdi, .LC11[rip]
	call	explain
	mov	eax, 0
	call	start_time
	mov	DWORD PTR -16[rbp], 1
	jmp	.L40
.L41:
	mov	eax, 0
	call	zero_slow
	add	DWORD PTR -16[rbp], 1
.L40:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jle	.L41
	mov	DWORD PTR -16[rbp], 0
	jmp	.L42
.L43:
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, eax
	movsd	xmm0, QWORD PTR .LC8[rip]
	mulsd	xmm0, xmm1
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, DWORD PTR -4[rbp]
	divsd	xmm0, xmm1
	movq	rdx, xmm0
	mov	eax, DWORD PTR -16[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC9[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	add	DWORD PTR -12[rbp], eax
	add	DWORD PTR -16[rbp], 1
.L42:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jl	.L43
	mov	eax, 0
	call	end_time
	movq	rax, xmm0
	mov	edx, DWORD PTR -12[rbp]
	movq	xmm0, rax
	mov	esi, edx
	lea	rdi, .LC10[rip]
	mov	eax, 1
	call	printf@PLT
	mov	DWORD PTR -12[rbp], 0
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	zero
	lea	rdi, .LC6[rip]
	call	explain
	lea	rdi, .LC17[rip]
	call	explain
	mov	eax, DWORD PTR -8[rbp]
	imul	eax, eax, 100
	mov	DWORD PTR -4[rbp], eax
	mov	eax, 0
	call	start_time
	mov	DWORD PTR -16[rbp], 1
	jmp	.L44
.L45:
	mov	eax, DWORD PTR -16[rbp]
	mov	edi, eax
	call	imbalance
	add	DWORD PTR -16[rbp], 1
.L44:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jle	.L45
	mov	eax, 0
	call	my_bar
	mov	DWORD PTR -16[rbp], 0
	jmp	.L46
.L47:
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, eax
	movsd	xmm0, QWORD PTR .LC8[rip]
	mulsd	xmm0, xmm1
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, DWORD PTR -4[rbp]
	divsd	xmm0, xmm1
	movq	rdx, xmm0
	mov	eax, DWORD PTR -16[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC9[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	add	DWORD PTR -12[rbp], eax
	add	DWORD PTR -16[rbp], 1
.L46:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jl	.L47
	mov	eax, 0
	call	end_time
	movq	rax, xmm0
	mov	edx, DWORD PTR -12[rbp]
	movq	xmm0, rax
	mov	esi, edx
	lea	rdi, .LC18[rip]
	mov	eax, 1
	call	printf@PLT
	mov	eax, DWORD PTR idid[rip]
	mov	esi, eax
	lea	rdi, .LC19[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -12[rbp], 0
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	zero
	lea	rdi, .LC6[rip]
	call	explain
	lea	rdi, .LC17[rip]
	call	explain
	mov	eax, 0
	call	start_time
	mov	DWORD PTR -16[rbp], 1
	jmp	.L48
.L49:
	mov	eax, DWORD PTR -16[rbp]
	mov	edi, eax
	call	imbalance
	add	DWORD PTR -16[rbp], 1
.L48:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jle	.L49
	mov	eax, 0
	call	my_bar
	mov	DWORD PTR -16[rbp], 0
	jmp	.L50
.L51:
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, eax
	movsd	xmm0, QWORD PTR .LC8[rip]
	mulsd	xmm0, xmm1
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, DWORD PTR -4[rbp]
	divsd	xmm0, xmm1
	movq	rdx, xmm0
	mov	eax, DWORD PTR -16[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC9[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	add	DWORD PTR -12[rbp], eax
	add	DWORD PTR -16[rbp], 1
.L50:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jl	.L51
	mov	eax, 0
	call	end_time
	movq	rax, xmm0
	mov	edx, DWORD PTR -12[rbp]
	movq	xmm0, rax
	mov	esi, edx
	lea	rdi, .LC18[rip]
	mov	eax, 1
	call	printf@PLT
	mov	eax, DWORD PTR idid[rip]
	mov	esi, eax
	lea	rdi, .LC19[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -12[rbp], 0
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	zero
	lea	rdi, .LC12[rip]
	call	explain
	lea	rdi, .LC17[rip]
	call	explain
	mov	eax, 0
	call	start_time
	mov	DWORD PTR -16[rbp], 1
	jmp	.L52
.L53:
	mov	eax, DWORD PTR -16[rbp]
	mov	edi, eax
	call	imbalance
	add	DWORD PTR -16[rbp], 1
.L52:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jle	.L53
	mov	DWORD PTR -16[rbp], 0
	jmp	.L54
.L55:
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, eax
	movsd	xmm0, QWORD PTR .LC8[rip]
	mulsd	xmm0, xmm1
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, DWORD PTR -4[rbp]
	divsd	xmm0, xmm1
	movq	rdx, xmm0
	mov	eax, DWORD PTR -16[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC9[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	add	DWORD PTR -12[rbp], eax
	add	DWORD PTR -16[rbp], 1
.L54:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jl	.L55
	mov	eax, 0
	call	end_time
	movq	rax, xmm0
	mov	edx, DWORD PTR -12[rbp]
	movq	xmm0, rax
	mov	esi, edx
	lea	rdi, .LC18[rip]
	mov	eax, 1
	call	printf@PLT
	mov	eax, DWORD PTR idid[rip]
	mov	esi, eax
	lea	rdi, .LC19[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -12[rbp], 0
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	zero
	lea	rdi, .LC13[rip]
	call	explain
	lea	rdi, .LC17[rip]
	call	explain
	mov	eax, 0
	call	start_time
	mov	DWORD PTR -16[rbp], 1
	jmp	.L56
.L57:
	mov	eax, DWORD PTR -16[rbp]
	mov	edi, eax
	call	imbalance
	add	DWORD PTR -16[rbp], 1
.L56:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jle	.L57
	mov	DWORD PTR -16[rbp], 0
	jmp	.L58
.L59:
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, eax
	movsd	xmm0, QWORD PTR .LC8[rip]
	mulsd	xmm0, xmm1
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, DWORD PTR -4[rbp]
	divsd	xmm0, xmm1
	movq	rdx, xmm0
	mov	eax, DWORD PTR -16[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC9[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	add	DWORD PTR -12[rbp], eax
	add	DWORD PTR -16[rbp], 1
.L58:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jl	.L59
	mov	eax, 0
	call	end_time
	movq	rax, xmm0
	mov	edx, DWORD PTR -12[rbp]
	movq	xmm0, rax
	mov	esi, edx
	lea	rdi, .LC18[rip]
	mov	eax, 1
	call	printf@PLT
	mov	eax, DWORD PTR idid[rip]
	mov	esi, eax
	lea	rdi, .LC19[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -12[rbp], 0
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	zero
	lea	rdi, .LC14[rip]
	call	explain
	lea	rdi, .LC17[rip]
	call	explain
	mov	eax, 0
	call	start_time
	mov	DWORD PTR -16[rbp], 1
	jmp	.L60
.L61:
	mov	eax, DWORD PTR -16[rbp]
	mov	edi, eax
	call	imbalance
	add	DWORD PTR -16[rbp], 1
.L60:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jle	.L61
	mov	DWORD PTR -16[rbp], 0
	jmp	.L62
.L63:
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, eax
	movsd	xmm0, QWORD PTR .LC8[rip]
	mulsd	xmm0, xmm1
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, DWORD PTR -4[rbp]
	divsd	xmm0, xmm1
	movq	rdx, xmm0
	mov	eax, DWORD PTR -16[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC9[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	add	DWORD PTR -12[rbp], eax
	add	DWORD PTR -16[rbp], 1
.L62:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jl	.L63
	mov	eax, 0
	call	end_time
	movq	rax, xmm0
	mov	edx, DWORD PTR -12[rbp]
	movq	xmm0, rax
	mov	esi, edx
	lea	rdi, .LC18[rip]
	mov	eax, 1
	call	printf@PLT
	mov	eax, DWORD PTR idid[rip]
	mov	esi, eax
	lea	rdi, .LC19[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -12[rbp], 0
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	zero
	lea	rdi, .LC15[rip]
	call	explain
	lea	rdi, .LC17[rip]
	call	explain
	mov	eax, 0
	call	start_time
	mov	DWORD PTR -16[rbp], 1
	jmp	.L64
.L65:
	mov	eax, DWORD PTR -16[rbp]
	mov	edi, eax
	call	imbalance
	add	DWORD PTR -16[rbp], 1
.L64:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jle	.L65
	mov	DWORD PTR -16[rbp], 0
	jmp	.L66
.L67:
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, eax
	movsd	xmm0, QWORD PTR .LC8[rip]
	mulsd	xmm0, xmm1
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, DWORD PTR -4[rbp]
	divsd	xmm0, xmm1
	movq	rdx, xmm0
	mov	eax, DWORD PTR -16[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC9[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	add	DWORD PTR -12[rbp], eax
	add	DWORD PTR -16[rbp], 1
.L66:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jl	.L67
	mov	eax, 0
	call	end_time
	movq	rax, xmm0
	mov	edx, DWORD PTR -12[rbp]
	movq	xmm0, rax
	mov	esi, edx
	lea	rdi, .LC18[rip]
	mov	eax, 1
	call	printf@PLT
	mov	eax, DWORD PTR idid[rip]
	mov	esi, eax
	lea	rdi, .LC19[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -12[rbp], 0
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	zero
	lea	rdi, .LC16[rip]
	call	explain
	lea	rdi, .LC17[rip]
	call	explain
	mov	eax, 0
	call	start_time
	mov	DWORD PTR -16[rbp], 1
	jmp	.L68
.L69:
	mov	eax, DWORD PTR -16[rbp]
	mov	edi, eax
	call	imbalance
	add	DWORD PTR -16[rbp], 1
.L68:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jle	.L69
	mov	DWORD PTR -16[rbp], 0
	jmp	.L70
.L71:
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, eax
	movsd	xmm0, QWORD PTR .LC8[rip]
	mulsd	xmm0, xmm1
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, DWORD PTR -4[rbp]
	divsd	xmm0, xmm1
	movq	rdx, xmm0
	mov	eax, DWORD PTR -16[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC9[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	add	DWORD PTR -12[rbp], eax
	add	DWORD PTR -16[rbp], 1
.L70:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jl	.L71
	mov	eax, 0
	call	end_time
	movq	rax, xmm0
	mov	edx, DWORD PTR -12[rbp]
	movq	xmm0, rax
	mov	esi, edx
	lea	rdi, .LC18[rip]
	mov	eax, 1
	call	printf@PLT
	mov	eax, DWORD PTR idid[rip]
	mov	esi, eax
	lea	rdi, .LC19[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -12[rbp], 0
	mov	eax, 0
	call	my_bar
	mov	eax, 0
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	main, .-main
	.globl	my_bar
	.type	my_bar, @function
my_bar:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR stdout[rip]
	mov	rdi, rax
	call	fflush@PLT
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	my_bar, .-my_bar
	.section	.rodata
.LC20:
	.string	"******  %s\n"
	.text
	.globl	explain
	.type	explain, @function
explain:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	lea	rdi, .LC20[rip]
	mov	eax, 0
	call	printf@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	explain, .-explain
	.globl	system_clock
	.type	system_clock, @function
system_clock:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	QWORD PTR -72[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	movsd	xmm0, QWORD PTR .LC21[rip]
	movsd	QWORD PTR -56[rbp], xmm0
	lea	rdx, -40[rbp]
	lea	rax, -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	gettimeofday@PLT
	mov	rax, QWORD PTR -32[rbp]
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, rax
	mov	rax, QWORD PTR -24[rbp]
	pxor	xmm0, xmm0
	cvtsi2sd	xmm0, rax
	mulsd	xmm0, QWORD PTR -56[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -48[rbp], xmm0
	cmp	QWORD PTR -72[rbp], 0
	je	.L76
	mov	rax, QWORD PTR -72[rbp]
	movsd	xmm0, QWORD PTR -48[rbp]
	movsd	QWORD PTR [rax], xmm0
.L76:
	movsd	xmm0, QWORD PTR -48[rbp]
	movq	rax, xmm0
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L78
	call	__stack_chk_fail@PLT
.L78:
	movq	xmm0, rax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	system_clock, .-system_clock
	.globl	zero
	.type	zero, @function
zero:
.LFB13:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -20[rbp], edi
	mov	DWORD PTR -4[rbp], 0
	jmp	.L80
.L81:
	mov	rdx, QWORD PTR dist[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	DWORD PTR [rax], 0
	add	DWORD PTR -4[rbp], 1
.L80:
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, DWORD PTR -20[rbp]
	jl	.L81
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	zero, .-zero
	.globl	start_time
	.type	start_time, @function
start_time:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	edi, 0
	call	system_clock
	movq	rax, xmm0
	mov	QWORD PTR st[rip], rax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	start_time, .-start_time
	.globl	end_time
	.type	end_time, @function
end_time:
.LFB15:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	edi, 0
	call	system_clock
	movq	rax, xmm0
	movsd	xmm0, QWORD PTR st[rip]
	movq	xmm1, rax
	subsd	xmm1, xmm0
	movq	rax, xmm1
	movq	xmm0, rax
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	end_time, .-end_time
	.section	.rodata
	.align 8
.LC0:
	.long	0
	.long	1072693248
	.align 8
.LC1:
	.long	1202590843
	.long	1065646817
	.align 8
.LC8:
	.long	0
	.long	1079574528
	.align 8
.LC21:
	.long	-1598689907
	.long	1051772663
	.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	"859044.c"
	.text
	.comm	dist,4,4
	.comm	idid,4,4
	.comm	st,8,8
	.align	2
	.global	all_fast
	.syntax unified
	.arm
	.fpu softvfp
	.type	all_fast, %function
all_fast:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	bl	omp_get_thread_num
	str	r0, [fp, #-8]
	ldr	r3, .L2
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	add	r2, r2, #1
	str	r2, [r3]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L3:
	.align	2
.L2:
	.word	dist
	.size	all_fast, .-all_fast
	.global	__aeabi_dadd
	.global	__aeabi_dcmplt
	.align	2
	.global	zero_slow
	.syntax unified
	.arm
	.fpu softvfp
	.type	zero_slow, %function
zero_slow:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	bl	omp_get_thread_num
	str	r0, [fp, #-24]
	ldr	r3, .L9
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	add	r2, r2, #1
	str	r2, [r3]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L8
	mov	r0, #0
	bl	system_clock
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	mov	r2, #0
	ldr	r3, .L9+4
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-12]
	str	r3, [fp, #-8]
	b	.L6
.L7:
	mov	r0, #0
	bl	system_clock
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
.L6:
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	bne	.L7
.L8:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L10:
	.align	2
.L9:
	.word	dist
	.word	1072693248
	.size	zero_slow, .-zero_slow
	.align	2
	.global	imbalance
	.syntax unified
	.arm
	.fpu softvfp
	.type	imbalance, %function
imbalance:
	@ 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]
	bl	omp_get_thread_num
	str	r0, [fp, #-24]
	ldr	r3, .L19
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	add	r2, r2, #1
	str	r2, [r3]
	ldr	r3, [fp, #-32]
	cmp	r3, #1
	bne	.L12
	ldr	r2, .L19+4
	ldr	r3, [fp, #-24]
	str	r3, [r2]
	mov	r0, #0
	bl	system_clock
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	mov	r2, #0
	ldr	r3, .L19+8
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-12]
	str	r3, [fp, #-8]
	b	.L13
.L14:
	mov	r0, #0
	bl	system_clock
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
.L13:
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	bne	.L14
	b	.L18
.L12:
	mov	r0, #0
	bl	system_clock
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	ldr	r2, .L19+12
	ldr	r3, .L19+16
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-12]
	str	r3, [fp, #-8]
	b	.L16
.L17:
	mov	r0, #0
	bl	system_clock
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
.L16:
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	bne	.L17
.L18:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L20:
	.align	2
.L19:
	.word	dist
	.word	idid
	.word	1072693248
	.word	1202590843
	.word	1065646817
	.size	imbalance, .-imbalance
	.section	.rodata
	.align	2
.LC0:
	.ascii	"max threads = %d\012\000"
	.align	2
.LC1:
	.ascii	"report the % of iterations for each thread\000"
	.align	2
.LC2:
	.ascii	"for a set of loops\000"
	.align	2
.LC3:
	.ascii	"******\000"
	.align	2
.LC4:
	.ascii	"default scheduling\000"
	.align	2
.LC5:
	.ascii	"for a subroutine with little work\000"
	.global	__aeabi_i2d
	.global	__aeabi_dmul
	.global	__aeabi_ddiv
	.align	2
.LC6:
	.ascii	"%d %6.2f %%\012\000"
	.align	2
.LC7:
	.ascii	" total iterations: %d time %10.2f\012\012\000"
	.align	2
.LC8:
	.ascii	"for a subroutine with thread 0 given 1 second of wo"
	.ascii	"rk\000"
	.align	2
.LC9:
	.ascii	"schedule(static,1)\000"
	.align	2
.LC10:
	.ascii	"schedule(static,2)\000"
	.align	2
.LC11:
	.ascii	"schedule(dynamic,1)\000"
	.align	2
.LC12:
	.ascii	"schedule(dynamic,2)\000"
	.align	2
.LC13:
	.ascii	"schedule(dynamic,4)\000"
	.align	2
.LC14:
	.ascii	"for an imbalanced subroutine\000"
	.align	2
.LC15:
	.ascii	" total iterations: %d time %10.2f\012\000"
	.align	2
.LC16:
	.ascii	" thread %d did the slow iteration\012\012\000"
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #16
	bl	omp_get_max_threads
	str	r0, [fp, #-20]
	ldr	r1, [fp, #-20]
	ldr	r0, .L79
	bl	printf
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L79+4
	str	r2, [r3]
	ldr	r0, [fp, #-20]
	bl	zero
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r0, .L79+8
	bl	explain
	ldr	r0, .L79+12
	bl	explain
	ldr	r0, .L79+16
	bl	explain
	ldr	r0, .L79+20
	bl	explain
	ldr	r0, .L79+24
	bl	explain
	ldr	r2, [fp, #-20]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r2, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #2
	str	r3, [fp, #-16]
	bl	start_time
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L22
.L23:
	bl	all_fast
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L22:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	ble	.L23
	bl	my_bar
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L24
.L25:
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, #0
	ldr	r3, .L79+60
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r0, [fp, #-16]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-28]
	ldr	r0, .L79+64
	bl	printf
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L24:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	blt	.L25
	bl	end_time
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-24]
	ldr	r0, .L79+28
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r0, [fp, #-20]
	bl	zero
	ldr	r0, .L79+20
	bl	explain
	ldr	r0, .L79+32
	bl	explain
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #2
	str	r3, [fp, #-16]
	bl	start_time
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L26
.L27:
	bl	zero_slow
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L26:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	ble	.L27
	bl	my_bar
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L28
.L29:
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, #0
	ldr	r3, .L79+60
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r0, [fp, #-16]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-28]
	ldr	r0, .L79+64
	bl	printf
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L28:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	blt	.L29
	bl	end_time
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-24]
	ldr	r0, .L79+28
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r0, [fp, #-20]
	bl	zero
	ldr	r0, .L79+36
	bl	explain
	ldr	r0, .L79+32
	bl	explain
	bl	start_time
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L30
.L31:
	bl	zero_slow
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L30:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	ble	.L31
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L32
.L33:
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, #0
	ldr	r3, .L79+60
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r0, [fp, #-16]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-28]
	ldr	r0, .L79+64
	bl	printf
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L32:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	blt	.L33
	bl	end_time
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-24]
	ldr	r0, .L79+28
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r0, [fp, #-20]
	bl	zero
	ldr	r0, .L79+40
	bl	explain
	ldr	r0, .L79+32
	bl	explain
	bl	start_time
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L34
.L35:
	bl	zero_slow
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L34:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	ble	.L35
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L36
.L37:
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, #0
	ldr	r3, .L79+60
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r0, [fp, #-16]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-28]
	ldr	r0, .L79+64
	bl	printf
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L36:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	blt	.L37
	bl	end_time
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-24]
	ldr	r0, .L79+28
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r0, [fp, #-20]
	bl	zero
	ldr	r0, .L79+44
	bl	explain
	ldr	r0, .L79+32
	bl	explain
	bl	start_time
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L38
.L39:
	bl	zero_slow
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L38:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	ble	.L39
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L40
.L41:
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, #0
	ldr	r3, .L79+60
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r0, [fp, #-16]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-28]
	ldr	r0, .L79+64
	bl	printf
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L40:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	blt	.L41
	bl	end_time
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-24]
	ldr	r0, .L79+28
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r0, [fp, #-20]
	bl	zero
	ldr	r0, .L79+48
	bl	explain
	ldr	r0, .L79+32
	bl	explain
	bl	start_time
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L42
.L43:
	bl	zero_slow
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L42:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	ble	.L43
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L44
.L45:
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, #0
	ldr	r3, .L79+60
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r0, [fp, #-16]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-28]
	ldr	r0, .L79+64
	bl	printf
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L44:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	blt	.L45
	bl	end_time
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-24]
	ldr	r0, .L79+28
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r0, [fp, #-20]
	bl	zero
	ldr	r0, .L79+52
	bl	explain
	ldr	r0, .L79+32
	bl	explain
	bl	start_time
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L46
.L47:
	bl	zero_slow
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L46:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	ble	.L47
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L48
.L49:
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, #0
	ldr	r3, .L79+60
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r0, [fp, #-16]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-28]
	ldr	r0, .L79+64
	bl	printf
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L48:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	blt	.L49
	bl	end_time
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-24]
	ldr	r0, .L79+28
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r0, [fp, #-20]
	bl	zero
	ldr	r0, .L79+20
	bl	explain
	ldr	r0, .L79+56
	bl	explain
	ldr	r2, [fp, #-20]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r2, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #2
	str	r3, [fp, #-16]
	bl	start_time
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L50
.L51:
	ldr	r0, [fp, #-28]
	bl	imbalance
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L50:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	ble	.L51
	bl	my_bar
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L52
.L53:
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, #0
	ldr	r3, .L79+60
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r0, [fp, #-16]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-28]
	ldr	r0, .L79+64
	bl	printf
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L52:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	blt	.L53
	bl	end_time
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-24]
	ldr	r0, .L79+72
	bl	printf
	ldr	r3, .L79+76
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L79+80
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r0, [fp, #-20]
	bl	zero
	ldr	r0, .L79+20
	bl	explain
	ldr	r0, .L79+56
	bl	explain
	bl	start_time
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L54
.L55:
	ldr	r0, [fp, #-28]
	bl	imbalance
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L54:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	ble	.L55
	bl	my_bar
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L56
.L57:
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, #0
	ldr	r3, .L79+60
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r0, [fp, #-16]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-28]
	ldr	r0, .L79+64
	bl	printf
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L56:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	blt	.L57
	bl	end_time
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-24]
	ldr	r0, .L79+72
	bl	printf
	ldr	r3, .L79+76
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L79+80
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r0, [fp, #-20]
	bl	zero
	ldr	r0, .L79+36
	bl	explain
	ldr	r0, .L79+56
	bl	explain
	bl	start_time
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L58
.L59:
	ldr	r0, [fp, #-28]
	bl	imbalance
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L58:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	ble	.L59
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L60
.L61:
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, #0
	ldr	r3, .L79+60
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r0, [fp, #-16]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-28]
	ldr	r0, .L79+64
	bl	printf
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L60:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	blt	.L61
	bl	end_time
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-24]
	ldr	r0, .L79+72
	bl	printf
	ldr	r3, .L79+76
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L79+80
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r0, [fp, #-20]
	bl	zero
	ldr	r0, .L79+40
	bl	explain
	ldr	r0, .L79+56
	bl	explain
	bl	start_time
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L62
.L63:
	ldr	r0, [fp, #-28]
	bl	imbalance
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L62:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	ble	.L63
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L64
.L65:
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, #0
	ldr	r3, .L79+60
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r0, [fp, #-16]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-28]
	ldr	r0, .L79+64
	bl	printf
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L64:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	blt	.L65
	bl	end_time
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-24]
	ldr	r0, .L79+72
	bl	printf
	ldr	r3, .L79+76
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L79+80
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r0, [fp, #-20]
	bl	zero
	ldr	r0, .L79+44
	bl	explain
	ldr	r0, .L79+56
	bl	explain
	bl	start_time
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L66
.L67:
	ldr	r0, [fp, #-28]
	bl	imbalance
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L66:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	ble	.L67
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L68
.L69:
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, #0
	ldr	r3, .L79+60
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r0, [fp, #-16]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-28]
	ldr	r0, .L79+64
	bl	printf
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L68:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	blt	.L69
	bl	end_time
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-24]
	ldr	r0, .L79+72
	bl	printf
	ldr	r3, .L79+76
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L79+80
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r0, [fp, #-20]
	bl	zero
	ldr	r0, .L79+48
	bl	explain
	ldr	r0, .L79+56
	bl	explain
	bl	start_time
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L70
.L71:
	ldr	r0, [fp, #-28]
	bl	imbalance
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L70:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	ble	.L71
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L72
.L73:
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, #0
	ldr	r3, .L79+60
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r0, [fp, #-16]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-28]
	ldr	r0, .L79+64
	bl	printf
	ldr	r3, .L79+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L72:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	blt	.L73
	bl	end_time
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-24]
	ldr	r0, .L79+72
	bl	printf
	ldr	r3, .L79+76
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L79+80
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r0, [fp, #-20]
	bl	zero
	ldr	r0, .L79+52
	bl	explain
	ldr	r0, .L79+56
	bl	explain
	bl	start_time
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L74
.L80:
	.align	2
.L79:
	.word	.LC0
	.word	dist
	.word	.LC1
	.word	.LC2
	.word	.LC3
	.word	.LC4
	.word	.LC5
	.word	.LC7
	.word	.LC8
	.word	.LC9
	.word	.LC10
	.word	.LC11
	.word	.LC12
	.word	.LC13
	.word	.LC14
	.word	1079574528
	.word	.LC6
	.word	dist
	.word	.LC15
	.word	idid
	.word	.LC16
.L75:
	ldr	r0, [fp, #-28]
	bl	imbalance
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L74:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	ble	.L75
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L76
.L77:
	ldr	r3, .L79+68
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, #0
	ldr	r3, .L79+60
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r0, [fp, #-16]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-28]
	ldr	r0, .L79+64
	bl	printf
	ldr	r3, .L79+68
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L76:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	blt	.L77
	bl	end_time
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-24]
	ldr	r0, .L79+72
	bl	printf
	ldr	r3, .L79+76
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L79+80
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-24]
	bl	my_bar
	mov	r3, #0
	mov	r0, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
	.size	main, .-main
	.align	2
	.global	my_bar
	.syntax unified
	.arm
	.fpu softvfp
	.type	my_bar, %function
my_bar:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L82
	ldr	r3, [r3]
	mov	r0, r3
	bl	fflush
	nop
	pop	{fp, pc}
.L83:
	.align	2
.L82:
	.word	stdout
	.size	my_bar, .-my_bar
	.section	.rodata
	.align	2
.LC17:
	.ascii	"******  %s\012\000"
	.text
	.align	2
	.global	explain
	.syntax unified
	.arm
	.fpu softvfp
	.type	explain, %function
explain:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r1, [fp, #-8]
	ldr	r0, .L85
	bl	printf
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L86:
	.align	2
.L85:
	.word	.LC17
	.size	explain, .-explain
	.section	.rodata
	.align	2
.LC18:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	system_clock
	.syntax unified
	.arm
	.fpu softvfp
	.type	system_clock, %function
system_clock:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #48
	str	r0, [fp, #-56]
	ldr	r3, .L91
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r2, .L91+4
	ldr	r3, .L91+8
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	sub	r2, fp, #24
	sub	r3, fp, #32
	mov	r1, r2
	mov	r0, r3
	bl	gettimeofday
	ldr	r3, [fp, #-32]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r4, r0
	mov	r5, r1
	ldr	r3, [fp, #-28]
	mov	r0, r3
	bl	__aeabi_i2d
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	beq	.L88
	ldr	r1, [fp, #-56]
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
.L88:
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	ldr	r1, .L91
	ldr	r0, [r1]
	ldr	r1, [fp, #-16]
	eors	r0, r1, r0
	mov	r1, #0
	beq	.L90
	bl	__stack_chk_fail
.L90:
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L92:
	.align	2
.L91:
	.word	.LC18
	.word	-1598689907
	.word	1051772663
	.size	system_clock, .-system_clock
	.align	2
	.global	zero
	.syntax unified
	.arm
	.fpu softvfp
	.type	zero, %function
zero:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L94
.L95:
	ldr	r3, .L96
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L94:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L95
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L97:
	.align	2
.L96:
	.word	dist
	.size	zero, .-zero
	.align	2
	.global	start_time
	.syntax unified
	.arm
	.fpu softvfp
	.type	start_time, %function
start_time:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	mov	r0, #0
	bl	system_clock
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L99
	stm	r1, {r2-r3}
	nop
	pop	{fp, pc}
.L100:
	.align	2
.L99:
	.word	st
	.size	start_time, .-start_time
	.global	__aeabi_dsub
	.align	2
	.global	end_time
	.syntax unified
	.arm
	.fpu softvfp
	.type	end_time, %function
end_time:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	mov	r0, #0
	bl	system_clock
	ldr	r3, .L103
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	pop	{fp, pc}
.L104:
	.align	2
.L103:
	.word	st
	.size	end_time, .-end_time
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
