	.file	"580574.c"
	.intel_syntax noprefix
	.text
	.globl	n
	.bss
	.align 4
	.type	n, @object
	.size	n, 4
n:
	.zero	4
	.globl	k
	.align 4
	.type	k, @object
	.size	k, 4
k:
	.zero	4
	.globl	numThreads
	.align 4
	.type	numThreads, @object
	.size	numThreads, 4
numThreads:
	.zero	4
	.globl	finished
	.align 4
	.type	finished, @object
	.size	finished, 4
finished:
	.zero	4
	.globl	numer
	.align 8
	.type	numer, @object
	.size	numer, 8
numer:
	.zero	8
	.globl	denom
	.align 8
	.type	denom, @object
	.size	denom, 8
denom:
	.zero	8
	.globl	result
	.data
	.align 4
	.type	result, @object
	.size	result, 4
result:
	.long	1065353216
	.globl	countNumerFactors
	.bss
	.align 32
	.type	countNumerFactors, @object
	.size	countNumerFactors, 48
countNumerFactors:
	.zero	48
	.globl	countDenomFactors
	.align 32
	.type	countDenomFactors, @object
	.size	countDenomFactors, 48
countDenomFactors:
	.zero	48
	.globl	countNumerBarrier
	.align 32
	.type	countNumerBarrier, @object
	.size	countNumerBarrier, 48
countNumerBarrier:
	.zero	48
	.globl	countDenomBarrier
	.align 32
	.type	countDenomBarrier, @object
	.size	countDenomBarrier, 48
countDenomBarrier:
	.zero	48
	.globl	barrier1
	.align 8
	.type	barrier1, @object
	.size	barrier1, 8
barrier1:
	.zero	8
	.globl	barrier2
	.align 8
	.type	barrier2, @object
	.size	barrier2, 8
barrier2:
	.zero	8
	.section	.rodata
	.align 8
.LC0:
	.string	"Wrong number of arguments. Syntax: %s n k numThreads\n"
	.align 8
.LC1:
	.string	"The binomial coefficient is: 1\n"
	.align 8
.LC2:
	.string	"The binomial coefficient is: %.2f\n"
	.text
	.globl	main
	.type	main, @function
main:
.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, 48
	mov	DWORD PTR -36[rbp], edi
	mov	QWORD PTR -48[rbp], rsi
	cmp	DWORD PTR -36[rbp], 4
	je	.L2
	mov	rax, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC0[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	eax, -1
	jmp	.L3
.L2:
	mov	rax, QWORD PTR -48[rbp]
	add	rax, 8
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR n[rip], eax
	mov	rax, QWORD PTR -48[rbp]
	add	rax, 16
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR k[rip], eax
	mov	rax, QWORD PTR -48[rbp]
	add	rax, 24
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR numThreads[rip], eax
	mov	eax, DWORD PTR n[rip]
	test	eax, eax
	jne	.L4
	mov	eax, DWORD PTR k[rip]
	test	eax, eax
	je	.L5
.L4:
	mov	edx, DWORD PTR n[rip]
	mov	eax, DWORD PTR k[rip]
	cmp	edx, eax
	jne	.L6
.L5:
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 31
	mov	esi, 1
	lea	rdi, .LC1[rip]
	call	fwrite@PLT
	mov	eax, 0
	jmp	.L3
.L6:
	mov	eax, DWORD PTR k[rip]
	mov	edx, eax
	shr	edx, 31
	add	eax, edx
	sar	eax
	mov	edx, eax
	mov	eax, DWORD PTR numThreads[rip]
	cmp	edx, eax
	jg	.L7
	mov	eax, DWORD PTR k[rip]
	mov	edx, eax
	shr	edx, 31
	add	eax, edx
	sar	eax
	mov	DWORD PTR numThreads[rip], eax
.L7:
	mov	edi, 32
	call	malloc@PLT
	mov	QWORD PTR barrier1[rip], rax
	mov	edi, 32
	call	malloc@PLT
	mov	QWORD PTR barrier2[rip], rax
	mov	rax, QWORD PTR barrier1[rip]
	mov	edx, 0
	mov	esi, 0
	mov	rdi, rax
	call	sem_init@PLT
	mov	rax, QWORD PTR barrier2[rip]
	mov	edx, 0
	mov	esi, 0
	mov	rdi, rax
	call	sem_init@PLT
	mov	eax, DWORD PTR n[rip]
	mov	edx, DWORD PTR k[rip]
	sub	eax, edx
	add	eax, 1
	mov	DWORD PTR countNumerFactors[rip+40], eax
	mov	esi, 0
	lea	rdi, countNumerFactors[rip]
	call	pthread_mutex_init@PLT
	mov	DWORD PTR countDenomFactors[rip+40], 1
	mov	esi, 0
	lea	rdi, countDenomFactors[rip]
	call	pthread_mutex_init@PLT
	mov	DWORD PTR countNumerBarrier[rip+40], 0
	mov	esi, 0
	lea	rdi, countNumerBarrier[rip]
	call	pthread_mutex_init@PLT
	mov	DWORD PTR countDenomBarrier[rip+40], 0
	mov	esi, 0
	lea	rdi, countDenomBarrier[rip]
	call	pthread_mutex_init@PLT
	mov	eax, DWORD PTR numThreads[rip]
	cdqe
	sal	rax, 2
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR numer[rip], rax
	mov	eax, DWORD PTR numThreads[rip]
	cdqe
	sal	rax, 2
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR denom[rip], rax
	mov	DWORD PTR -20[rbp], 0
	jmp	.L8
.L9:
	mov	rdx, QWORD PTR numer[rip]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	DWORD PTR [rax], 1
	mov	rdx, QWORD PTR denom[rip]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	DWORD PTR [rax], 1
	add	DWORD PTR -20[rbp], 1
.L8:
	mov	eax, DWORD PTR numThreads[rip]
	cmp	DWORD PTR -20[rbp], eax
	jl	.L9
	mov	eax, DWORD PTR numThreads[rip]
	add	eax, eax
	cdqe
	sal	rax, 3
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	DWORD PTR -20[rbp], 0
	jmp	.L10
.L11:
	mov	edi, 4
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -20[rbp]
	mov	DWORD PTR [rax], edx
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -16[rbp]
	lea	rdi, [rdx+rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, rax
	lea	rdx, thNumerator[rip]
	mov	esi, 0
	call	pthread_create@PLT
	mov	edx, DWORD PTR numThreads[rip]
	mov	eax, DWORD PTR -20[rbp]
	add	eax, edx
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -16[rbp]
	lea	rdi, [rdx+rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, rax
	lea	rdx, thDenominator[rip]
	mov	esi, 0
	call	pthread_create@PLT
	add	DWORD PTR -20[rbp], 1
.L10:
	mov	eax, DWORD PTR numThreads[rip]
	cmp	DWORD PTR -20[rbp], eax
	jl	.L11
	mov	DWORD PTR -20[rbp], 0
	jmp	.L12
.L13:
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	esi, 0
	mov	rdi, rax
	call	pthread_join@PLT
	add	DWORD PTR -20[rbp], 1
.L12:
	mov	eax, DWORD PTR numThreads[rip]
	add	eax, eax
	cmp	DWORD PTR -20[rbp], eax
	jl	.L13
	movss	xmm0, DWORD PTR result[rip]
	pxor	xmm1, xmm1
	cvtss2sd	xmm1, xmm0
	movq	rdx, xmm1
	mov	rax, QWORD PTR stdout[rip]
	movq	xmm0, rdx
	lea	rsi, .LC2[rip]
	mov	rdi, rax
	mov	eax, 1
	call	fprintf@PLT
	mov	eax, 0
.L3:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	main, .-main
	.globl	thNumerator
	.type	thNumerator, @function
thNumerator:
.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
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -12[rbp], eax
	jmp	.L15
.L28:
	lea	rdi, countNumerFactors[rip]
	call	pthread_mutex_lock@PLT
	mov	edx, DWORD PTR countNumerFactors[rip+40]
	mov	eax, DWORD PTR n[rip]
	cmp	edx, eax
	jge	.L16
	mov	eax, DWORD PTR countNumerFactors[rip+40]
	mov	edx, DWORD PTR countNumerFactors[rip+40]
	lea	ecx, 1[rdx]
	mov	rsi, QWORD PTR numer[rip]
	mov	edx, DWORD PTR -12[rbp]
	movsx	rdx, edx
	sal	rdx, 2
	add	rdx, rsi
	imul	eax, ecx
	mov	DWORD PTR [rdx], eax
	mov	eax, DWORD PTR countNumerFactors[rip+40]
	add	eax, 2
	mov	DWORD PTR countNumerFactors[rip+40], eax
	jmp	.L17
.L16:
	mov	edx, DWORD PTR countNumerFactors[rip+40]
	mov	eax, DWORD PTR n[rip]
	cmp	edx, eax
	jne	.L18
	mov	rdx, QWORD PTR numer[rip]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 2
	add	rdx, rax
	mov	eax, DWORD PTR n[rip]
	mov	DWORD PTR [rdx], eax
	mov	eax, DWORD PTR countNumerFactors[rip+40]
	add	eax, 1
	mov	DWORD PTR countNumerFactors[rip+40], eax
	jmp	.L17
.L18:
	mov	rdx, QWORD PTR numer[rip]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	DWORD PTR [rax], 1
	mov	eax, DWORD PTR countNumerFactors[rip+40]
	add	eax, 1
	mov	DWORD PTR countNumerFactors[rip+40], eax
.L17:
	lea	rdi, countNumerFactors[rip]
	call	pthread_mutex_unlock@PLT
	lea	rdi, countNumerBarrier[rip]
	call	pthread_mutex_lock@PLT
	lea	rdi, countDenomBarrier[rip]
	call	pthread_mutex_lock@PLT
	mov	eax, DWORD PTR countNumerBarrier[rip+40]
	add	eax, 1
	mov	DWORD PTR countNumerBarrier[rip+40], eax
	mov	edx, DWORD PTR countNumerBarrier[rip+40]
	mov	eax, DWORD PTR numThreads[rip]
	cmp	edx, eax
	jne	.L19
	mov	edx, DWORD PTR countDenomBarrier[rip+40]
	mov	eax, DWORD PTR numThreads[rip]
	cmp	edx, eax
	jne	.L19
	mov	DWORD PTR -16[rbp], 0
	jmp	.L20
.L21:
	mov	rdx, QWORD PTR numer[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, eax
	mov	rdx, QWORD PTR denom[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	pxor	xmm2, xmm2
	cvtsi2ss	xmm2, eax
	movaps	xmm1, xmm0
	divss	xmm1, xmm2
	movss	xmm0, DWORD PTR result[rip]
	mulss	xmm0, xmm1
	movss	DWORD PTR result[rip], xmm0
	mov	rdx, QWORD PTR numer[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	DWORD PTR [rax], 1
	mov	rdx, QWORD PTR denom[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	DWORD PTR [rax], 1
	add	DWORD PTR -16[rbp], 1
.L20:
	mov	eax, DWORD PTR numThreads[rip]
	cmp	DWORD PTR -16[rbp], eax
	jl	.L21
	lea	rdi, countNumerFactors[rip]
	call	pthread_mutex_lock@PLT
	lea	rdi, countDenomFactors[rip]
	call	pthread_mutex_lock@PLT
	mov	edx, DWORD PTR countNumerFactors[rip+40]
	mov	eax, DWORD PTR n[rip]
	cmp	edx, eax
	jle	.L22
	mov	edx, DWORD PTR countDenomFactors[rip+40]
	mov	eax, DWORD PTR k[rip]
	cmp	edx, eax
	jle	.L22
	mov	DWORD PTR finished[rip], 1
.L22:
	lea	rdi, countDenomFactors[rip]
	call	pthread_mutex_unlock@PLT
	lea	rdi, countNumerFactors[rip]
	call	pthread_mutex_unlock@PLT
	mov	DWORD PTR -16[rbp], 0
	jmp	.L23
.L24:
	mov	rax, QWORD PTR barrier1[rip]
	mov	rdi, rax
	call	sem_post@PLT
	add	DWORD PTR -16[rbp], 1
.L23:
	mov	eax, DWORD PTR numThreads[rip]
	add	eax, eax
	cmp	DWORD PTR -16[rbp], eax
	jl	.L24
.L19:
	lea	rdi, countDenomBarrier[rip]
	call	pthread_mutex_unlock@PLT
	lea	rdi, countNumerBarrier[rip]
	call	pthread_mutex_unlock@PLT
	mov	rax, QWORD PTR barrier1[rip]
	mov	rdi, rax
	call	sem_wait@PLT
	lea	rdi, countNumerBarrier[rip]
	call	pthread_mutex_lock@PLT
	lea	rdi, countDenomBarrier[rip]
	call	pthread_mutex_lock@PLT
	mov	eax, DWORD PTR countNumerBarrier[rip+40]
	sub	eax, 1
	mov	DWORD PTR countNumerBarrier[rip+40], eax
	mov	eax, DWORD PTR countNumerBarrier[rip+40]
	test	eax, eax
	jne	.L25
	mov	eax, DWORD PTR countDenomBarrier[rip+40]
	test	eax, eax
	jne	.L25
	mov	DWORD PTR -16[rbp], 0
	jmp	.L26
.L27:
	mov	rax, QWORD PTR barrier2[rip]
	mov	rdi, rax
	call	sem_post@PLT
	add	DWORD PTR -16[rbp], 1
.L26:
	mov	eax, DWORD PTR numThreads[rip]
	add	eax, eax
	cmp	DWORD PTR -16[rbp], eax
	jl	.L27
.L25:
	lea	rdi, countDenomBarrier[rip]
	call	pthread_mutex_unlock@PLT
	lea	rdi, countNumerBarrier[rip]
	call	pthread_mutex_unlock@PLT
	mov	rax, QWORD PTR barrier2[rip]
	mov	rdi, rax
	call	sem_wait@PLT
.L15:
	mov	eax, DWORD PTR finished[rip]
	test	eax, eax
	je	.L28
	mov	edi, 0
	call	pthread_exit@PLT
	.cfi_endproc
.LFE7:
	.size	thNumerator, .-thNumerator
	.globl	thDenominator
	.type	thDenominator, @function
thDenominator:
.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, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -12[rbp], eax
	jmp	.L30
.L43:
	lea	rdi, countDenomFactors[rip]
	call	pthread_mutex_lock@PLT
	mov	edx, DWORD PTR countDenomFactors[rip+40]
	mov	eax, DWORD PTR k[rip]
	cmp	edx, eax
	jge	.L31
	mov	eax, DWORD PTR countDenomFactors[rip+40]
	mov	edx, DWORD PTR countDenomFactors[rip+40]
	lea	ecx, 1[rdx]
	mov	rsi, QWORD PTR denom[rip]
	mov	edx, DWORD PTR -12[rbp]
	movsx	rdx, edx
	sal	rdx, 2
	add	rdx, rsi
	imul	eax, ecx
	mov	DWORD PTR [rdx], eax
	mov	eax, DWORD PTR countDenomFactors[rip+40]
	add	eax, 2
	mov	DWORD PTR countDenomFactors[rip+40], eax
	jmp	.L32
.L31:
	mov	edx, DWORD PTR countDenomFactors[rip+40]
	mov	eax, DWORD PTR k[rip]
	cmp	edx, eax
	jne	.L33
	mov	rdx, QWORD PTR denom[rip]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 2
	add	rdx, rax
	mov	eax, DWORD PTR k[rip]
	mov	DWORD PTR [rdx], eax
	mov	eax, DWORD PTR countDenomFactors[rip+40]
	add	eax, 1
	mov	DWORD PTR countDenomFactors[rip+40], eax
	jmp	.L32
.L33:
	mov	rdx, QWORD PTR denom[rip]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	DWORD PTR [rax], 1
	mov	eax, DWORD PTR countDenomFactors[rip+40]
	add	eax, 1
	mov	DWORD PTR countDenomFactors[rip+40], eax
.L32:
	lea	rdi, countDenomFactors[rip]
	call	pthread_mutex_unlock@PLT
	lea	rdi, countNumerBarrier[rip]
	call	pthread_mutex_lock@PLT
	lea	rdi, countDenomBarrier[rip]
	call	pthread_mutex_lock@PLT
	mov	eax, DWORD PTR countDenomBarrier[rip+40]
	add	eax, 1
	mov	DWORD PTR countDenomBarrier[rip+40], eax
	mov	edx, DWORD PTR countDenomBarrier[rip+40]
	mov	eax, DWORD PTR numThreads[rip]
	cmp	edx, eax
	jne	.L34
	mov	edx, DWORD PTR countDenomBarrier[rip+40]
	mov	eax, DWORD PTR numThreads[rip]
	cmp	edx, eax
	jne	.L34
	mov	DWORD PTR -16[rbp], 0
	jmp	.L35
.L36:
	mov	rdx, QWORD PTR numer[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, eax
	mov	rdx, QWORD PTR denom[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	pxor	xmm2, xmm2
	cvtsi2ss	xmm2, eax
	movaps	xmm1, xmm0
	divss	xmm1, xmm2
	movss	xmm0, DWORD PTR result[rip]
	mulss	xmm0, xmm1
	movss	DWORD PTR result[rip], xmm0
	mov	rdx, QWORD PTR numer[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	DWORD PTR [rax], 1
	mov	rdx, QWORD PTR denom[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	DWORD PTR [rax], 1
	add	DWORD PTR -16[rbp], 1
.L35:
	mov	eax, DWORD PTR numThreads[rip]
	cmp	DWORD PTR -16[rbp], eax
	jl	.L36
	lea	rdi, countNumerFactors[rip]
	call	pthread_mutex_lock@PLT
	lea	rdi, countDenomFactors[rip]
	call	pthread_mutex_lock@PLT
	mov	edx, DWORD PTR countNumerFactors[rip+40]
	mov	eax, DWORD PTR n[rip]
	cmp	edx, eax
	jle	.L37
	mov	edx, DWORD PTR countDenomFactors[rip+40]
	mov	eax, DWORD PTR k[rip]
	cmp	edx, eax
	jle	.L37
	mov	DWORD PTR finished[rip], 1
.L37:
	lea	rdi, countDenomFactors[rip]
	call	pthread_mutex_unlock@PLT
	lea	rdi, countNumerFactors[rip]
	call	pthread_mutex_unlock@PLT
	mov	DWORD PTR -16[rbp], 0
	jmp	.L38
.L39:
	mov	rax, QWORD PTR barrier1[rip]
	mov	rdi, rax
	call	sem_post@PLT
	add	DWORD PTR -16[rbp], 1
.L38:
	mov	eax, DWORD PTR numThreads[rip]
	add	eax, eax
	cmp	DWORD PTR -16[rbp], eax
	jl	.L39
.L34:
	lea	rdi, countDenomBarrier[rip]
	call	pthread_mutex_unlock@PLT
	lea	rdi, countNumerBarrier[rip]
	call	pthread_mutex_unlock@PLT
	mov	rax, QWORD PTR barrier1[rip]
	mov	rdi, rax
	call	sem_wait@PLT
	lea	rdi, countNumerBarrier[rip]
	call	pthread_mutex_lock@PLT
	lea	rdi, countDenomBarrier[rip]
	call	pthread_mutex_lock@PLT
	mov	eax, DWORD PTR countDenomBarrier[rip+40]
	sub	eax, 1
	mov	DWORD PTR countDenomBarrier[rip+40], eax
	mov	eax, DWORD PTR countNumerBarrier[rip+40]
	test	eax, eax
	jne	.L40
	mov	eax, DWORD PTR countDenomBarrier[rip+40]
	test	eax, eax
	jne	.L40
	mov	DWORD PTR -16[rbp], 0
	jmp	.L41
.L42:
	mov	rax, QWORD PTR barrier2[rip]
	mov	rdi, rax
	call	sem_post@PLT
	add	DWORD PTR -16[rbp], 1
.L41:
	mov	eax, DWORD PTR numThreads[rip]
	add	eax, eax
	cmp	DWORD PTR -16[rbp], eax
	jl	.L42
.L40:
	lea	rdi, countDenomBarrier[rip]
	call	pthread_mutex_unlock@PLT
	lea	rdi, countNumerBarrier[rip]
	call	pthread_mutex_unlock@PLT
	mov	rax, QWORD PTR barrier2[rip]
	mov	rdi, rax
	call	sem_wait@PLT
.L30:
	mov	eax, DWORD PTR finished[rip]
	test	eax, eax
	je	.L43
	mov	edi, 0
	call	pthread_exit@PLT
	.cfi_endproc
.LFE8:
	.size	thDenominator, .-thDenominator
	.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	"580574.c"
	.text
	.comm	n,4,4
	.comm	k,4,4
	.comm	numThreads,4,4
	.global	finished
	.bss
	.align	2
	.type	finished, %object
	.size	finished, 4
finished:
	.space	4
	.comm	numer,4,4
	.comm	denom,4,4
	.global	result
	.data
	.align	2
	.type	result, %object
	.size	result, 4
result:
	.word	1065353216
	.comm	countNumerFactors,28,4
	.comm	countDenomFactors,28,4
	.comm	countNumerBarrier,28,4
	.comm	countDenomBarrier,28,4
	.comm	barrier1,4,4
	.comm	barrier2,4,4
	.section	.rodata
	.align	2
.LC0:
	.ascii	"Wrong number of arguments. Syntax: %s n k numThread"
	.ascii	"s\012\000"
	.align	2
.LC1:
	.ascii	"The binomial coefficient is: 1\012\000"
	.global	__aeabi_f2d
	.align	2
.LC2:
	.ascii	"The binomial coefficient is: %.2f\012\000"
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #28
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	ldr	r3, [fp, #-32]
	cmp	r3, #4
	beq	.L2
	ldr	r3, .L14
	ldr	r0, [r3]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r1, .L14+4
	bl	fprintf
	mvn	r3, #0
	b	.L3
.L2:
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	ldr	r3, [r3]
	mov	r0, r3
	bl	atoi
	mov	r3, r0
	ldr	r2, .L14+8
	str	r3, [r2]
	ldr	r3, [fp, #-36]
	add	r3, r3, #8
	ldr	r3, [r3]
	mov	r0, r3
	bl	atoi
	mov	r3, r0
	ldr	r2, .L14+12
	str	r3, [r2]
	ldr	r3, [fp, #-36]
	add	r3, r3, #12
	ldr	r3, [r3]
	mov	r0, r3
	bl	atoi
	mov	r3, r0
	ldr	r2, .L14+16
	str	r3, [r2]
	ldr	r3, .L14+8
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L4
	ldr	r3, .L14+12
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L5
.L4:
	ldr	r3, .L14+8
	ldr	r2, [r3]
	ldr	r3, .L14+12
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L6
.L5:
	ldr	r3, .L14+20
	ldr	r3, [r3]
	mov	r2, #31
	mov	r1, #1
	ldr	r0, .L14+24
	bl	fwrite
	mov	r3, #0
	b	.L3
.L6:
	ldr	r3, .L14+12
	ldr	r3, [r3]
	lsr	r2, r3, #31
	add	r3, r2, r3
	asr	r3, r3, #1
	mov	r2, r3
	ldr	r3, .L14+16
	ldr	r3, [r3]
	cmp	r2, r3
	bgt	.L7
	ldr	r3, .L14+12
	ldr	r3, [r3]
	lsr	r2, r3, #31
	add	r3, r2, r3
	asr	r3, r3, #1
	mov	r2, r3
	ldr	r3, .L14+16
	str	r2, [r3]
.L7:
	mov	r0, #16
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L14+28
	str	r2, [r3]
	mov	r0, #16
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L14+32
	str	r2, [r3]
	ldr	r3, .L14+28
	ldr	r3, [r3]
	mov	r2, #0
	mov	r1, #0
	mov	r0, r3
	bl	sem_init
	ldr	r3, .L14+32
	ldr	r3, [r3]
	mov	r2, #0
	mov	r1, #0
	mov	r0, r3
	bl	sem_init
	ldr	r3, .L14+8
	ldr	r2, [r3]
	ldr	r3, .L14+12
	ldr	r3, [r3]
	sub	r3, r2, r3
	add	r3, r3, #1
	ldr	r2, .L14+36
	str	r3, [r2, #24]
	mov	r1, #0
	ldr	r0, .L14+36
	bl	pthread_mutex_init
	ldr	r3, .L14+40
	mov	r2, #1
	str	r2, [r3, #24]
	mov	r1, #0
	ldr	r0, .L14+40
	bl	pthread_mutex_init
	ldr	r3, .L14+44
	mov	r2, #0
	str	r2, [r3, #24]
	mov	r1, #0
	ldr	r0, .L14+44
	bl	pthread_mutex_init
	ldr	r3, .L14+48
	mov	r2, #0
	str	r2, [r3, #24]
	mov	r1, #0
	ldr	r0, .L14+48
	bl	pthread_mutex_init
	ldr	r3, .L14+16
	ldr	r3, [r3]
	lsl	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L14+52
	str	r2, [r3]
	ldr	r3, .L14+16
	ldr	r3, [r3]
	lsl	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L14+56
	str	r2, [r3]
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L8
.L9:
	ldr	r3, .L14+52
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, #1
	str	r2, [r3]
	ldr	r3, .L14+56
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, #1
	str	r2, [r3]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L8:
	ldr	r3, .L14+16
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	blt	.L9
	ldr	r3, .L14+16
	ldr	r3, [r3]
	lsl	r3, r3, #3
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L10
.L11:
	mov	r0, #4
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-24]
	str	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-20]
	add	r0, r2, r3
	ldr	r3, [fp, #-16]
	ldr	r2, .L14+60
	mov	r1, #0
	bl	pthread_create
	ldr	r3, .L14+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, [fp, #-20]
	add	r0, r2, r3
	ldr	r3, [fp, #-16]
	ldr	r2, .L14+64
	mov	r1, #0
	bl	pthread_create
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L10:
	ldr	r3, .L14+16
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	blt	.L11
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L12
.L13:
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r1, #0
	mov	r0, r3
	bl	pthread_join
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L12:
	ldr	r3, .L14+16
	ldr	r3, [r3]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	blt	.L13
	ldr	r3, .L14+20
	ldr	r4, [r3]
	ldr	r3, .L14+68
	ldr	r3, [r3]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L14+72
	mov	r0, r4
	bl	fprintf
	mov	r3, #0
.L3:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L15:
	.align	2
.L14:
	.word	stderr
	.word	.LC0
	.word	n
	.word	k
	.word	numThreads
	.word	stdout
	.word	.LC1
	.word	barrier1
	.word	barrier2
	.word	countNumerFactors
	.word	countDenomFactors
	.word	countNumerBarrier
	.word	countDenomBarrier
	.word	numer
	.word	denom
	.word	thNumerator
	.word	thDenominator
	.word	result
	.word	.LC2
	.size	main, .-main
	.global	__aeabi_i2f
	.global	__aeabi_fdiv
	.global	__aeabi_fmul
	.align	2
	.global	thNumerator
	.syntax unified
	.arm
	.fpu softvfp
	.type	thNumerator, %function
thNumerator:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #28
	str	r0, [fp, #-32]
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	b	.L17
.L30:
	ldr	r0, .L31
	bl	pthread_mutex_lock
	ldr	r3, .L31
	ldr	r2, [r3, #24]
	ldr	r3, .L31+4
	ldr	r3, [r3]
	cmp	r2, r3
	bge	.L18
	ldr	r3, .L31
	ldr	r2, [r3, #24]
	ldr	r3, .L31
	ldr	r3, [r3, #24]
	add	r1, r3, #1
	ldr	r3, .L31+8
	ldr	r0, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r0, r3
	mul	r2, r1, r2
	str	r2, [r3]
	ldr	r3, .L31
	ldr	r3, [r3, #24]
	add	r3, r3, #2
	ldr	r2, .L31
	str	r3, [r2, #24]
	b	.L19
.L18:
	ldr	r3, .L31
	ldr	r2, [r3, #24]
	ldr	r3, .L31+4
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L20
	ldr	r3, .L31+8
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, .L31+4
	ldr	r2, [r2]
	str	r2, [r3]
	ldr	r3, .L31
	ldr	r3, [r3, #24]
	add	r3, r3, #1
	ldr	r2, .L31
	str	r3, [r2, #24]
	b	.L19
.L20:
	ldr	r3, .L31+8
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, #1
	str	r2, [r3]
	ldr	r3, .L31
	ldr	r3, [r3, #24]
	add	r3, r3, #1
	ldr	r2, .L31
	str	r3, [r2, #24]
.L19:
	ldr	r0, .L31
	bl	pthread_mutex_unlock
	ldr	r0, .L31+12
	bl	pthread_mutex_lock
	ldr	r0, .L31+16
	bl	pthread_mutex_lock
	ldr	r3, .L31+12
	ldr	r3, [r3, #24]
	add	r3, r3, #1
	ldr	r2, .L31+12
	str	r3, [r2, #24]
	ldr	r3, .L31+12
	ldr	r2, [r3, #24]
	ldr	r3, .L31+20
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L21
	ldr	r3, .L31+16
	ldr	r2, [r3, #24]
	ldr	r3, .L31+20
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L21
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L22
.L23:
	ldr	r3, .L31+8
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r4, r0
	ldr	r3, .L31+24
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r3, r0
	mov	r1, r3
	mov	r0, r4
	bl	__aeabi_fdiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L31+28
	ldr	r3, [r3]	@ float
	mov	r1, r3
	mov	r0, r2
	bl	__aeabi_fmul
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L31+28
	str	r2, [r3]	@ float
	ldr	r3, .L31+8
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, #1
	str	r2, [r3]
	ldr	r3, .L31+24
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, #1
	str	r2, [r3]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L22:
	ldr	r3, .L31+20
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	blt	.L23
	ldr	r0, .L31
	bl	pthread_mutex_lock
	ldr	r0, .L31+32
	bl	pthread_mutex_lock
	ldr	r3, .L31
	ldr	r2, [r3, #24]
	ldr	r3, .L31+4
	ldr	r3, [r3]
	cmp	r2, r3
	ble	.L24
	ldr	r3, .L31+32
	ldr	r2, [r3, #24]
	ldr	r3, .L31+36
	ldr	r3, [r3]
	cmp	r2, r3
	ble	.L24
	ldr	r3, .L31+40
	mov	r2, #1
	str	r2, [r3]
.L24:
	ldr	r0, .L31+32
	bl	pthread_mutex_unlock
	ldr	r0, .L31
	bl	pthread_mutex_unlock
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L25
.L26:
	ldr	r3, .L31+44
	ldr	r3, [r3]
	mov	r0, r3
	bl	sem_post
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L25:
	ldr	r3, .L31+20
	ldr	r3, [r3]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	blt	.L26
.L21:
	ldr	r0, .L31+16
	bl	pthread_mutex_unlock
	ldr	r0, .L31+12
	bl	pthread_mutex_unlock
	ldr	r3, .L31+44
	ldr	r3, [r3]
	mov	r0, r3
	bl	sem_wait
	ldr	r0, .L31+12
	bl	pthread_mutex_lock
	ldr	r0, .L31+16
	bl	pthread_mutex_lock
	ldr	r3, .L31+12
	ldr	r3, [r3, #24]
	sub	r3, r3, #1
	ldr	r2, .L31+12
	str	r3, [r2, #24]
	ldr	r3, .L31+12
	ldr	r3, [r3, #24]
	cmp	r3, #0
	bne	.L27
	ldr	r3, .L31+16
	ldr	r3, [r3, #24]
	cmp	r3, #0
	bne	.L27
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L28
.L29:
	ldr	r3, .L31+48
	ldr	r3, [r3]
	mov	r0, r3
	bl	sem_post
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L28:
	ldr	r3, .L31+20
	ldr	r3, [r3]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	blt	.L29
.L27:
	ldr	r0, .L31+16
	bl	pthread_mutex_unlock
	ldr	r0, .L31+12
	bl	pthread_mutex_unlock
	ldr	r3, .L31+48
	ldr	r3, [r3]
	mov	r0, r3
	bl	sem_wait
.L17:
	ldr	r3, .L31+40
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L30
	mov	r0, #0
	bl	pthread_exit
.L32:
	.align	2
.L31:
	.word	countNumerFactors
	.word	n
	.word	numer
	.word	countNumerBarrier
	.word	countDenomBarrier
	.word	numThreads
	.word	denom
	.word	result
	.word	countDenomFactors
	.word	k
	.word	finished
	.word	barrier1
	.word	barrier2
	.size	thNumerator, .-thNumerator
	.align	2
	.global	thDenominator
	.syntax unified
	.arm
	.fpu softvfp
	.type	thDenominator, %function
thDenominator:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #28
	str	r0, [fp, #-32]
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	b	.L34
.L47:
	ldr	r0, .L48
	bl	pthread_mutex_lock
	ldr	r3, .L48
	ldr	r2, [r3, #24]
	ldr	r3, .L48+4
	ldr	r3, [r3]
	cmp	r2, r3
	bge	.L35
	ldr	r3, .L48
	ldr	r2, [r3, #24]
	ldr	r3, .L48
	ldr	r3, [r3, #24]
	add	r1, r3, #1
	ldr	r3, .L48+8
	ldr	r0, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r0, r3
	mul	r2, r1, r2
	str	r2, [r3]
	ldr	r3, .L48
	ldr	r3, [r3, #24]
	add	r3, r3, #2
	ldr	r2, .L48
	str	r3, [r2, #24]
	b	.L36
.L35:
	ldr	r3, .L48
	ldr	r2, [r3, #24]
	ldr	r3, .L48+4
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L37
	ldr	r3, .L48+8
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, .L48+4
	ldr	r2, [r2]
	str	r2, [r3]
	ldr	r3, .L48
	ldr	r3, [r3, #24]
	add	r3, r3, #1
	ldr	r2, .L48
	str	r3, [r2, #24]
	b	.L36
.L37:
	ldr	r3, .L48+8
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, #1
	str	r2, [r3]
	ldr	r3, .L48
	ldr	r3, [r3, #24]
	add	r3, r3, #1
	ldr	r2, .L48
	str	r3, [r2, #24]
.L36:
	ldr	r0, .L48
	bl	pthread_mutex_unlock
	ldr	r0, .L48+12
	bl	pthread_mutex_lock
	ldr	r0, .L48+16
	bl	pthread_mutex_lock
	ldr	r3, .L48+16
	ldr	r3, [r3, #24]
	add	r3, r3, #1
	ldr	r2, .L48+16
	str	r3, [r2, #24]
	ldr	r3, .L48+16
	ldr	r2, [r3, #24]
	ldr	r3, .L48+20
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L38
	ldr	r3, .L48+16
	ldr	r2, [r3, #24]
	ldr	r3, .L48+20
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L38
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L39
.L40:
	ldr	r3, .L48+24
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r4, r0
	ldr	r3, .L48+8
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r3, r0
	mov	r1, r3
	mov	r0, r4
	bl	__aeabi_fdiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L48+28
	ldr	r3, [r3]	@ float
	mov	r1, r3
	mov	r0, r2
	bl	__aeabi_fmul
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L48+28
	str	r2, [r3]	@ float
	ldr	r3, .L48+24
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, #1
	str	r2, [r3]
	ldr	r3, .L48+8
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, #1
	str	r2, [r3]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L39:
	ldr	r3, .L48+20
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	blt	.L40
	ldr	r0, .L48+32
	bl	pthread_mutex_lock
	ldr	r0, .L48
	bl	pthread_mutex_lock
	ldr	r3, .L48+32
	ldr	r2, [r3, #24]
	ldr	r3, .L48+36
	ldr	r3, [r3]
	cmp	r2, r3
	ble	.L41
	ldr	r3, .L48
	ldr	r2, [r3, #24]
	ldr	r3, .L48+4
	ldr	r3, [r3]
	cmp	r2, r3
	ble	.L41
	ldr	r3, .L48+40
	mov	r2, #1
	str	r2, [r3]
.L41:
	ldr	r0, .L48
	bl	pthread_mutex_unlock
	ldr	r0, .L48+32
	bl	pthread_mutex_unlock
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L42
.L43:
	ldr	r3, .L48+44
	ldr	r3, [r3]
	mov	r0, r3
	bl	sem_post
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L42:
	ldr	r3, .L48+20
	ldr	r3, [r3]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	blt	.L43
.L38:
	ldr	r0, .L48+16
	bl	pthread_mutex_unlock
	ldr	r0, .L48+12
	bl	pthread_mutex_unlock
	ldr	r3, .L48+44
	ldr	r3, [r3]
	mov	r0, r3
	bl	sem_wait
	ldr	r0, .L48+12
	bl	pthread_mutex_lock
	ldr	r0, .L48+16
	bl	pthread_mutex_lock
	ldr	r3, .L48+16
	ldr	r3, [r3, #24]
	sub	r3, r3, #1
	ldr	r2, .L48+16
	str	r3, [r2, #24]
	ldr	r3, .L48+12
	ldr	r3, [r3, #24]
	cmp	r3, #0
	bne	.L44
	ldr	r3, .L48+16
	ldr	r3, [r3, #24]
	cmp	r3, #0
	bne	.L44
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L45
.L46:
	ldr	r3, .L48+48
	ldr	r3, [r3]
	mov	r0, r3
	bl	sem_post
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L45:
	ldr	r3, .L48+20
	ldr	r3, [r3]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	blt	.L46
.L44:
	ldr	r0, .L48+16
	bl	pthread_mutex_unlock
	ldr	r0, .L48+12
	bl	pthread_mutex_unlock
	ldr	r3, .L48+48
	ldr	r3, [r3]
	mov	r0, r3
	bl	sem_wait
.L34:
	ldr	r3, .L48+40
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L47
	mov	r0, #0
	bl	pthread_exit
.L49:
	.align	2
.L48:
	.word	countDenomFactors
	.word	k
	.word	denom
	.word	countNumerBarrier
	.word	countDenomBarrier
	.word	numThreads
	.word	numer
	.word	result
	.word	countNumerFactors
	.word	n
	.word	finished
	.word	barrier1
	.word	barrier2
	.size	thDenominator, .-thDenominator
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
