// File: /workspace/github_c_makefile_star2_O3/wahern[P]cqueues/src/cqueues.c
// Function: cqueue_destroy
static void cqueue_destroy(lua_State *L, struct cqueue *Q, struct callinfo *I) {
	struct cstack *cstack = Q->cstack;
	struct thread *thread;
	struct fileno *fileno;
	void *next;

	cstack_del(Q);

	Q->thread.current = NULL;

	while ((thread = LIST_FIRST(&Q->thread.pending))) {
		thread_del(L, Q, I, thread);
	}

	while ((thread = LIST_FIRST(&Q->thread.polling))) {
		thread_del(L, Q, I, thread);
	}

	for (fileno = LLRB_MIN(table, &Q->fileno.table); fileno; fileno = next) {
		next = LLRB_NEXT(table, &Q->fileno.table, fileno);
		fileno_del(Q, fileno, 0);
	}

	kpoll_destroy(&Q->kp, &cstack_onclosefd, cstack);

	pool_destroy(&Q->pool.event);
	pool_destroy(&Q->pool.fileno);
	pool_destroy(&Q->pool.wakecb);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdx, %r15
movq %rsi, %rbx
movq %rdi, %r12
movq 0x230(%rsi), %r14
testq %r14, %r14
je 0x14fdf
movq 0x238(%rbx), %rax
movq 0x240(%rbx), %rcx
testq %rax, %rax
je 0x14fd1
movq %rcx, 0x240(%rax)
movq %rax, (%rcx)
movq $0x0, 0x230(%rbx)
movq $0x0, 0x218(%rbx)
movq 0x210(%rbx), %rcx
testq %rcx, %rcx
je 0x15014
movq %r12, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x14671
jmp 0x14fea
movq %r12, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x14671
movq 0x208(%rbx), %rcx
testq %rcx, %rcx
jne 0x15006
leaq 0x1a0(%rbx), %rax
movq 0x1a0(%rbx), %rdx
testq %rdx, %rdx
je 0x156ca
movq %rdx, %rcx
movq 0x10(%rdx), %rdx
testq %rdx, %rdx
jne 0x1502e
movq 0x18(%rcx), %rsi
testq %rsi, %rsi
je 0x1505a
movq %rsi, %rdx
movq 0x10(%rsi), %rsi
testq %rsi, %rsi
jne 0x1504c
jmp 0x150a0
movq 0x20(%rcx), %rdx
testq %rdx, %rdx
je 0x15080
cmpq %rcx, 0x10(%rdx)
je 0x150a0
movq %rcx, %rsi
movq 0x20(%rsi), %rdx
testq %rdx, %rdx
je 0x15080
cmpq 0x18(%rdx), %rsi
movq %rdx, %rsi
je 0x1506c
jmp 0x150a0
xorl %edx, %edx
jmp 0x150a0
movq $0x0, 0x30(%rsi)
movq 0x38(%rsi), %rdi
movq 0x40(%rsi), %rsi
testq %rdi, %rdi
je 0x1509d
movq %rsi, 0x40(%rdi)
movq %rdi, (%rsi)
movq 0x8(%rcx), %rsi
testq %rsi, %rsi
jne 0x15084
movq (%rax), %r10
testq %r10, %r10
je 0x15699
movl (%rcx), %r9d
movq %rax, %rdi
movq 0x20(%r10), %rsi
movl (%r10), %r11d
movl %r9d, %ebp
subl %r11d, %ebp
movq 0x10(%r10), %r8
js 0x15136
testq %r8, %r8
je 0x15119
cmpb $0x1, 0x28(%r8)
jne 0x15119
movq 0x18(%r8), %r15
movq %r15, 0x10(%r10)
movq %rsi, %r11
testq %r15, %r15
je 0x150f2
movq %r10, 0x20(%r15)
movq 0x20(%r10), %r11
movq %r10, 0x18(%r8)
movb 0x28(%r10), %bpl
movb %bpl, 0x28(%r8)
movb $0x1, 0x28(%r10)
movq %r11, 0x20(%r8)
movq %r8, 0x20(%r10)
movq %r8, (%rdi)
movl (%r8), %r11d
movl %r9d, %ebp
subl %r11d, %ebp
jmp 0x1511c
movq %r10, %r8
movq 0x18(%r8), %r15
testl %ebp, %ebp
je 0x15210
testq %r15, %r15
jne 0x15219
jmp 0x152b4
testq %r8, %r8
je 0x15207
cmpb $0x0, 0x28(%r8)
jne 0x15207
movq 0x10(%r8), %r11
testq %r11, %r11
je 0x1515e
cmpb $0x0, 0x28(%r11)
jne 0x15207
xorb $0x1, 0x28(%r10)
xorb $0x1, 0x28(%r8)
movq 0x18(%r10), %r8
movb 0x28(%r8), %bpl
xorb $0x1, %bpl
movb %bpl, 0x28(%r8)
movq 0x10(%r8), %r11
testq %r11, %r11
je 0x15207
cmpb $0x1, 0x28(%r11)
jne 0x15207
movq 0x18(%r11), %r15
movq %r15, 0x10(%r8)
testq %r15, %r15
je 0x1519d
movq %r8, 0x20(%r15)
movq %r8, 0x18(%r11)
movb %bpl, 0x28(%r11)
movb $0x1, 0x28(%r8)
movq 0x20(%r8), %r15
movq %r15, 0x20(%r11)
movq %r11, 0x20(%r8)
movq %r11, 0x18(%r10)
movq (%rdi), %r8
movq 0x18(%r8), %r10
movq 0x10(%r10), %r11
movq %r11, 0x18(%r8)
testq %r11, %r11
je 0x151d2
movq %r8, 0x20(%r11)
movq %r8, 0x10(%r10)
movb 0x28(%r8), %r11b
movb %r11b, 0x28(%r10)
movb $0x1, 0x28(%r8)
movq 0x20(%r8), %r11
movq %r11, 0x20(%r10)
movq %r10, 0x20(%r8)
movq %r10, (%rdi)
xorb $0x1, 0x28(%r10)
movq 0x10(%r10), %rdi
xorb $0x1, 0x28(%rdi)
movq 0x18(%r10), %rdi
xorb $0x1, 0x28(%rdi)
addq $0x10, %r10
jmp 0x152bb
testq %r15, %r15
je 0x1550c
cmpb $0x0, 0x28(%r15)
jne 0x152b0
movq 0x10(%r15), %r10
testq %r10, %r10
je 0x15234
cmpb $0x0, 0x28(%r10)
jne 0x152b0
xorb $0x1, 0x28(%r8)
movq 0x10(%r8), %r10
xorb $0x1, 0x28(%r10)
xorb $0x1, 0x28(%r15)
movq 0x10(%r10), %r15
testq %r15, %r15
je 0x152a4
cmpb $0x1, 0x28(%r15)
jne 0x152a4
movq 0x18(%r10), %r11
movq %r11, 0x10(%r8)
testq %r11, %r11
je 0x15268
movq %r8, 0x20(%r11)
movq %r8, 0x18(%r10)
movb 0x28(%r8), %r11b
movb %r11b, 0x28(%r10)
movb $0x1, 0x28(%r8)
movq 0x20(%r8), %r11
movq %r11, 0x20(%r10)
movq %r10, 0x20(%r8)
movq %r10, (%rdi)
xorb $0x1, 0x28(%r10)
movq 0x10(%r10), %r8
xorb $0x1, 0x28(%r8)
movq 0x18(%r10), %r8
xorb $0x1, 0x28(%r8)
movl (%r10), %r11d
jmp 0x152a7
movq %r8, %r10
movl %r9d, %ebp
subl %r11d, %ebp
movq %r10, %r8
testl %ebp, %ebp
je 0x152cf
addq $0x18, %r8
movq %r8, %r10
movq %r10, %rdi
movq (%r10), %r10
testq %r10, %r10
jne 0x150bb
jmp 0x1555c
movq 0x18(%r8), %rsi
addq $0x18, %r8
movq 0x10(%rsi), %r9
testq %r9, %r9
je 0x15515
movq %r8, %r10
cmpb $0x0, 0x28(%r9)
jne 0x153af
movq 0x10(%r9), %r11
testq %r11, %r11
je 0x15306
cmpb $0x0, 0x28(%r11)
jne 0x153af
xorb $0x1, 0x28(%rsi)
xorb $0x1, 0x28(%r9)
movq 0x18(%rsi), %r9
movb 0x28(%r9), %bpl
xorb $0x1, %bpl
movb %bpl, 0x28(%r9)
movq 0x10(%r9), %r11
testq %r11, %r11
je 0x153af
cmpb $0x1, 0x28(%r11)
jne 0x153af
movq 0x18(%r11), %r15
movq %r15, 0x10(%r9)
testq %r15, %r15
je 0x15344
movq %r9, 0x20(%r15)
movq %r9, 0x18(%r11)
movb %bpl, 0x28(%r11)
movb $0x1, 0x28(%r9)
movq 0x20(%r9), %r15
movq %r15, 0x20(%r11)
movq %r11, 0x20(%r9)
movq %r11, 0x18(%rsi)
movq (%r10), %r9
movq 0x18(%r9), %rsi
movq 0x10(%rsi), %r11
movq %r11, 0x18(%r9)
testq %r11, %r11
je 0x15379
movq %r9, 0x20(%r11)
movq %r9, 0x10(%rsi)
movb 0x28(%r9), %r11b
movb %r11b, 0x28(%rsi)
movb $0x1, 0x28(%r9)
movq 0x20(%r9), %r11
movq %r11, 0x20(%rsi)
movq %rsi, 0x20(%r9)
movq %rsi, (%r10)
xorb $0x1, 0x28(%rsi)
movq 0x10(%rsi), %r9
xorb $0x1, 0x28(%r9)
movq 0x18(%rsi), %r9
xorb $0x1, 0x28(%r9)
movq %rsi, %r10
movq 0x10(%rsi), %rsi
addq $0x10, %r10
movq 0x10(%rsi), %r9
testq %r9, %r9
jne 0x152e7
movq 0x20(%rsi), %r9
movq $0x0, (%r10)
cmpq %r8, %r10
je 0x1551c
movq %r9, %r11
movq (%rax), %r15
movq 0x20(%r9), %r9
movq %rax, %r10
cmpq %r15, %r11
je 0x15409
leaq 0x10(%r9), %r15
leaq 0x18(%r9), %r10
xorl %r12d, %r12d
cmpq 0x10(%r9), %r11
setne %r12b
cmoveq %r15, %r10
movq 0x10(%r9,%r12,8), %r15
movq 0x18(%r15), %r11
testq %r11, %r11
je 0x1542a
cmpb $0x1, 0x28(%r11)
jne 0x1542a
movq 0x10(%r15), %r12
testq %r12, %r12
je 0x1542f
cmpb $0x0, 0x28(%r12)
je 0x1542f
movq %r15, %r11
jmp 0x15461
movq 0x10(%r11), %r12
movq %r12, 0x18(%r15)
testq %r12, %r12
je 0x15441
movq %r15, 0x20(%r12)
movq %r15, 0x10(%r11)
movb 0x28(%r15), %bpl
movb %bpl, 0x28(%r11)
movb $0x1, 0x28(%r15)
movq 0x20(%r15), %r12
movq %r12, 0x20(%r11)
movq %r11, 0x20(%r15)
movq %r11, (%r10)
movq 0x10(%r11), %r15
testq %r15, %r15
je 0x153d2
movb 0x28(%r15), %bpl
cmpb $0x1, %bpl
jne 0x154d2
movq 0x10(%r15), %r12
testq %r12, %r12
je 0x154d2
cmpb $0x1, 0x28(%r12)
jne 0x154d2
movq 0x18(%r15), %r12
movq %r12, 0x10(%r11)
testq %r12, %r12
je 0x1549b
movq %r11, 0x20(%r12)
movq %r11, 0x18(%r15)
movb 0x28(%r11), %bpl
movb %bpl, 0x28(%r15)
movb $0x1, 0x28(%r11)
movq 0x20(%r11), %r12
movq %r12, 0x20(%r15)
movq %r15, 0x20(%r11)
movq %r15, (%r10)
movq 0x10(%r15), %r12
testq %r12, %r12
je 0x153d2
movb 0x28(%r12), %bpl
movq %r15, %r11
jmp 0x154d5
movq %r15, %r12
testb $0x1, %bpl
je 0x153d2
movq 0x18(%r11), %r15
testq %r15, %r15
je 0x153d2
cmpb $0x1, 0x28(%r15)
jne 0x153d2
xorb $0x1, 0x28(%r11)
xorb $0x1, 0x28(%r12)
xorb $0x1, 0x28(%r15)
jmp 0x153d2
movq $0x0, (%rdi)
jmp 0x1555c
movq $0x0, (%r8)
movq (%rdi), %r8
movb 0x28(%r8), %r9b
movb %r9b, 0x28(%rsi)
movq 0x20(%r8), %r8
movq %r8, 0x20(%rsi)
movq (%rdi), %r8
movq 0x18(%r8), %r8
movq %r8, 0x18(%rsi)
testq %r8, %r8
je 0x15543
movq %rsi, 0x20(%r8)
movq (%rdi), %r8
movq 0x10(%r8), %r8
movq %r8, 0x10(%rsi)
testq %r8, %r8
je 0x15557
movq %rsi, 0x20(%r8)
movq %rsi, (%rdi)
jmp 0x15565
testq %rsi, %rsi
je 0x1568d
movq %rsi, %rdi
movq (%rax), %r9
movq 0x20(%rsi), %rsi
movq %rax, %r8
cmpq %r9, %rdi
je 0x15593
leaq 0x10(%rsi), %r9
leaq 0x18(%rsi), %r8
xorl %r10d, %r10d
cmpq 0x10(%rsi), %rdi
setne %r10b
cmoveq %r9, %r8
movq 0x10(%rsi,%r10,8), %r9
movq 0x18(%r9), %rdi
testq %rdi, %rdi
je 0x155b2
cmpb $0x1, 0x28(%rdi)
jne 0x155b2
movq 0x10(%r9), %r10
testq %r10, %r10
je 0x155b7
cmpb $0x0, 0x28(%r10)
je 0x155b7
movq %r9, %rdi
jmp 0x155e8
movq 0x10(%rdi), %r10
movq %r10, 0x18(%r9)
testq %r10, %r10
je 0x155c8
movq %r9, 0x20(%r10)
movq %r9, 0x10(%rdi)
movb 0x28(%r9), %r10b
movb %r10b, 0x28(%rdi)
movb $0x1, 0x28(%r9)
movq 0x20(%r9), %r10
movq %r10, 0x20(%rdi)
movq %rdi, 0x20(%r9)
movq %rdi, (%r8)
movq 0x10(%rdi), %r9
testq %r9, %r9
je 0x1555c
movb 0x28(%r9), %r10b
cmpb $0x1, %r10b
jne 0x15655
movq 0x10(%r9), %r11
testq %r11, %r11
je 0x15655
cmpb $0x1, 0x28(%r11)
jne 0x15655
movq 0x18(%r9), %r10
movq %r10, 0x10(%rdi)
testq %r10, %r10
je 0x15620
movq %rdi, 0x20(%r10)
movq %rdi, 0x18(%r9)
movb 0x28(%rdi), %r10b
movb %r10b, 0x28(%r9)
movb $0x1, 0x28(%rdi)
movq 0x20(%rdi), %r10
movq %r10, 0x20(%r9)
movq %r9, 0x20(%rdi)
movq %r9, (%r8)
movq 0x10(%r9), %r8
testq %r8, %r8
je 0x1555c
movb 0x28(%r8), %r10b
movq %r9, %rdi
jmp 0x15658
movq %r9, %r8
testb $0x1, %r10b
je 0x1555c
movq 0x18(%rdi), %r9
testq %r9, %r9
je 0x1555c
cmpb $0x1, 0x28(%r9)
jne 0x1555c
xorb $0x1, 0x28(%rdi)
xorb $0x1, 0x28(%r8)
xorb $0x1, 0x28(%r9)
jmp 0x1555c
movq (%rax), %rsi
testq %rsi, %rsi
je 0x15699
movb $0x0, 0x28(%rsi)
movq 0x30(%rcx), %rsi
movq 0x38(%rcx), %rdi
testq %rsi, %rsi
je 0x156aa
movq %rdi, 0x38(%rsi)
movq %rsi, (%rdi)
movq 0x1e8(%rbx), %rsi
movq %rsi, (%rcx)
movq %rcx, 0x1e8(%rbx)
movq %rdx, %rcx
testq %rdx, %rdx
jne 0x15043
movq %rbx, %rdi
movq %r14, %rsi
callq 0x14ec4
leaq 0x1c0(%rbx), %r14
leaq 0x1f0(%rbx), %rdi
callq 0x15704
addq $0x1d8, %rbx            # imm = 0x1D8
movq %rbx, %rdi
callq 0x15704
movq %r14, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x15704