	.file	"locks.c"
	.text
	.type	fence, @function
fence:
.LFB9:
	.cfi_startproc
	movl	$0, -4(%rsp)
	lock addl	$0, -4(%rsp)
	ret
	.cfi_endproc
.LFE9:
	.size	fence, .-fence
	.globl	cas_lock_init
	.type	cas_lock_init, @function
cas_lock_init:
.LFB11:
	.cfi_startproc
	movl	$0, (%rdi)
	movl	$0, %eax
	call	fence
	rep ret
	.cfi_endproc
.LFE11:
	.size	cas_lock_init, .-cas_lock_init
	.globl	cas_lock_lock
	.type	cas_lock_lock, @function
cas_lock_lock:
.LFB12:
	.cfi_startproc
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	subq	$24, %rsp
	.cfi_def_cfa_offset 48
	movq	%rdi, %rbx
	movabsq	$7378697629483820647, %rbp
	jmp	.L4
.L7:
	movl	$1, 8(%rsp)
	call	random
	movq	%rax, %rcx
	imulq	%rbp
	sarq	$2, %rdx
	movq	%rcx, %rax
	sarq	$63, %rax
	subq	%rax, %rdx
	leaq	(%rdx,%rdx,4), %rax
	addq	%rax, %rax
	subq	%rax, %rcx
	movl	$1, %eax
	sall	%cl, %eax
	movl	%eax, 12(%rsp)
	movl	12(%rsp), %eax
	leal	-1(%rax), %edx
	movl	%edx, 12(%rsp)
	testl	%eax, %eax
	je	.L4
.L6:
	movl	8(%rsp), %eax
	movl	%eax, 8(%rsp)
	movl	8(%rsp), %eax
	movl	%eax, 8(%rsp)
	movl	8(%rsp), %eax
	movl	%eax, 8(%rsp)
	movl	8(%rsp), %eax
	movl	%eax, 8(%rsp)
	movl	8(%rsp), %eax
	movl	%eax, 8(%rsp)
	movl	8(%rsp), %eax
	movl	%eax, 8(%rsp)
	movl	8(%rsp), %eax
	movl	%eax, 8(%rsp)
	movl	8(%rsp), %eax
	movl	%eax, 8(%rsp)
	movl	8(%rsp), %eax
	movl	%eax, 8(%rsp)
	movl	8(%rsp), %eax
	movl	%eax, 8(%rsp)
	movl	12(%rsp), %eax
	leal	-1(%rax), %edx
	movl	%edx, 12(%rsp)
	testl	%eax, %eax
	jne	.L6
.L4:
	cmpl	$0, (%rbx)
	jne	.L7
	movl	$1, %edx
	movl	$0, %eax
	lock cmpxchgl	%edx, (%rbx)
	jne	.L4
	addq	$24, %rsp
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE12:
	.size	cas_lock_lock, .-cas_lock_lock
	.globl	cas_lock_unlock
	.type	cas_lock_unlock, @function
cas_lock_unlock:
.LFB13:
	.cfi_startproc
	movl	$0, (%rdi)
	movl	$0, %eax
	call	fence
	rep ret
	.cfi_endproc
.LFE13:
	.size	cas_lock_unlock, .-cas_lock_unlock
	.globl	ticket_lock_init
	.type	ticket_lock_init, @function
ticket_lock_init:
.LFB14:
	.cfi_startproc
	movl	$0, (%rdi)
	movl	$0, 4(%rdi)
	movl	$0, %eax
	call	fence
	rep ret
	.cfi_endproc
.LFE14:
	.size	ticket_lock_init, .-ticket_lock_init
	.globl	ticket_lock_lock
	.type	ticket_lock_lock, @function
ticket_lock_lock:
.LFB15:
	.cfi_startproc
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rdi, %rbx
	movl	$1, %eax
	lock xaddl	%eax, 4(%rdi)
	movl	%eax, %ebp
	movl	(%rdi), %edx
	cmpl	%eax, %edx
	je	.L12
.L13:
	movl	$0, %eax
	call	fence
	movl	(%rbx), %eax
	cmpl	%ebp, %eax
	jne	.L13
.L12:
	movl	$0, %eax
	call	fence
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE15:
	.size	ticket_lock_lock, .-ticket_lock_lock
	.globl	ticket_lock_unlock
	.type	ticket_lock_unlock, @function
ticket_lock_unlock:
.LFB16:
	.cfi_startproc
	lock addl	$1, (%rdi)
	ret
	.cfi_endproc
.LFE16:
	.size	ticket_lock_unlock, .-ticket_lock_unlock
	.ident	"GCC: (GNU) 4.8.5 20150623 (Red Hat 4.8.5-39)"
	.section	.note.GNU-stack,"",@progbits
