// File: /workspace/github_c_makefile_star2_O1/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 0x14f77
movq 0x238(%rbx), %rax
testq %rax, %rax
je 0x14f62
movq 0x240(%rbx), %rcx
movq %rcx, 0x240(%rax)
movq 0x240(%rbx), %rcx
movq %rax, (%rcx)
movq $0x0, 0x230(%rbx)
movq $0x0, 0x218(%rbx)
movq 0x210(%rbx), %rcx
testq %rcx, %rcx
je 0x14fac
movq %r12, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x14654
jmp 0x14f82
movq %r12, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x14654
movq 0x208(%rbx), %rcx
testq %rcx, %rcx
jne 0x14f9e
leaq 0x1a0(%rbx), %rax
movq 0x1a0(%rbx), %rdx
testq %rdx, %rdx
je 0x1560d
movq %rdx, %rcx
movq 0x10(%rdx), %rdx
testq %rdx, %rdx
jne 0x14fc6
movq 0x18(%rcx), %rsi
testq %rsi, %rsi
je 0x14ff2
movq %rsi, %rdx
movq 0x10(%rsi), %rsi
testq %rsi, %rsi
jne 0x14fe4
jmp 0x1503c
movq 0x20(%rcx), %rdx
testq %rdx, %rdx
je 0x15018
cmpq %rcx, 0x10(%rdx)
je 0x1503c
movq %rcx, %rsi
movq 0x20(%rsi), %rdx
testq %rdx, %rdx
je 0x1503c
cmpq 0x18(%rdx), %rsi
movq %rdx, %rsi
je 0x15004
jmp 0x1503c
xorl %edx, %edx
jmp 0x1503c
movq $0x0, 0x30(%rsi)
movq 0x38(%rsi), %rdi
testq %rdi, %rdi
je 0x15035
movq 0x40(%rsi), %r8
movq %r8, 0x40(%rdi)
movq 0x40(%rsi), %rsi
movq %rdi, (%rsi)
movq 0x8(%rcx), %rsi
testq %rsi, %rsi
jne 0x1501c
movq (%rax), %r10
testq %r10, %r10
je 0x15263
movl (%rcx), %r9d
movq %rax, %rsi
movq 0x10(%r10), %r8
movq 0x20(%r10), %rdi
movl %r9d, %r11d
subl (%r10), %r11d
js 0x15175
testq %r8, %r8
je 0x150ae
cmpb $0x1, 0x28(%r8)
jne 0x150ae
movq 0x18(%r8), %r11
movq %r11, 0x10(%r10)
testq %r11, %r11
je 0x15088
movq %r10, 0x20(%r11)
movq %r10, 0x18(%r8)
movb 0x28(%r10), %r11b
movb %r11b, 0x28(%r8)
movb $0x1, 0x28(%r10)
movq 0x20(%r10), %r11
movq %r11, 0x20(%r8)
movq %r8, 0x20(%r10)
movq %r8, (%rsi)
movl %r9d, %r11d
subl (%r8), %r11d
testl %r11d, %r11d
jne 0x150c1
movq (%rsi), %r8
cmpq $0x0, 0x18(%r8)
je 0x154bf
movq (%rsi), %r8
movq 0x18(%r8), %r15
testq %r15, %r15
je 0x15160
cmpb $0x0, 0x28(%r15)
jne 0x15160
movq 0x10(%r15), %r10
testq %r10, %r10
je 0x150ec
cmpb $0x0, 0x28(%r10)
jne 0x15160
xorb $0x1, 0x28(%r8)
movq 0x10(%r8), %r10
xorb $0x1, 0x28(%r10)
xorb $0x1, 0x28(%r15)
movq 0x10(%r10), %r11
testq %r11, %r11
je 0x15157
cmpb $0x1, 0x28(%r11)
jne 0x15157
movq 0x18(%r10), %r11
movq %r11, 0x10(%r8)
testq %r11, %r11
je 0x15120
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, (%rsi)
xorb $0x1, 0x28(%r10)
movq 0x10(%r10), %r8
xorb $0x1, 0x28(%r8)
movq 0x18(%r10), %r8
xorb $0x1, 0x28(%r8)
movq (%rsi), %r8
movl %r9d, %r11d
subl (%r8), %r11d
movq (%rsi), %r8
addq $0x18, %r8
testl %r11d, %r11d
jne 0x1524f
jmp 0x1526a
testq %r8, %r8
je 0x15248
cmpb $0x0, 0x28(%r8)
jne 0x15248
movq 0x10(%r8), %r11
testq %r11, %r11
je 0x1519d
cmpb $0x0, 0x28(%r11)
jne 0x15248
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 0x15248
cmpb $0x1, 0x28(%r11)
jne 0x15248
movq 0x18(%r11), %r15
movq %r15, 0x10(%r8)
testq %r15, %r15
je 0x151dc
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 (%rsi), %r10
movq 0x18(%r10), %r8
movq 0x10(%r8), %r11
movq %r11, 0x18(%r10)
testq %r11, %r11
je 0x15211
movq %r10, 0x20(%r11)
movq %r10, 0x10(%r8)
movb 0x28(%r10), %r11b
movb %r11b, 0x28(%r8)
movb $0x1, 0x28(%r10)
movq 0x20(%r10), %r11
movq %r11, 0x20(%r8)
movq %r8, 0x20(%r10)
movq %r8, (%rsi)
xorb $0x1, 0x28(%r8)
movq 0x10(%r8), %r10
xorb $0x1, 0x28(%r10)
movq 0x18(%r8), %r8
xorb $0x1, 0x28(%r8)
movq (%rsi), %r8
addq $0x10, %r8
movq (%r8), %r10
movq %r8, %rsi
testq %r10, %r10
jne 0x15057
jmp 0x155c3
xorl %edi, %edi
jmp 0x155c3
movq (%r8), %r9
movq 0x10(%r9), %rdi
movq %r8, %r10
testq %rdi, %rdi
je 0x15356
cmpb $0x0, 0x28(%rdi)
jne 0x15342
movq 0x10(%rdi), %r11
testq %r11, %r11
je 0x1529b
cmpb $0x0, 0x28(%r11)
jne 0x15342
xorb $0x1, 0x28(%r9)
xorb $0x1, 0x28(%rdi)
movq 0x18(%r9), %rdi
movb 0x28(%rdi), %bpl
xorb $0x1, %bpl
movb %bpl, 0x28(%rdi)
movq 0x10(%rdi), %r11
testq %r11, %r11
je 0x15342
cmpb $0x1, 0x28(%r11)
jne 0x15342
movq 0x18(%r11), %r15
movq %r15, 0x10(%rdi)
testq %r15, %r15
je 0x152d9
movq %rdi, 0x20(%r15)
movq %rdi, 0x18(%r11)
movb %bpl, 0x28(%r11)
movb $0x1, 0x28(%rdi)
movq 0x20(%rdi), %r15
movq %r15, 0x20(%r11)
movq %r11, 0x20(%rdi)
movq %r11, 0x18(%r9)
movq (%r10), %r9
movq 0x18(%r9), %rdi
movq 0x10(%rdi), %r11
movq %r11, 0x18(%r9)
testq %r11, %r11
je 0x1530d
movq %r9, 0x20(%r11)
movq %r9, 0x10(%rdi)
movb 0x28(%r9), %r11b
movb %r11b, 0x28(%rdi)
movb $0x1, 0x28(%r9)
movq 0x20(%r9), %r11
movq %r11, 0x20(%rdi)
movq %rdi, 0x20(%r9)
movq %rdi, (%r10)
xorb $0x1, 0x28(%rdi)
movq 0x10(%rdi), %r9
xorb $0x1, 0x28(%r9)
movq 0x18(%rdi), %rdi
xorb $0x1, 0x28(%rdi)
movq (%r10), %r10
movq 0x10(%r10), %r9
addq $0x10, %r10
movq 0x10(%r9), %rdi
jmp 0x15274
movq 0x20(%r9), %rdi
movq $0x0, (%r10)
cmpq %r8, %r10
je 0x1547f
movq %rax, %r10
cmpq (%rax), %rdi
je 0x15386
movq 0x20(%rdi), %r10
cmpq 0x10(%r10), %rdi
je 0x15382
addq $0x18, %r10
jmp 0x15386
addq $0x10, %r10
movq 0x20(%rdi), %rdi
movq (%r10), %r11
movq 0x18(%r11), %r15
testq %r15, %r15
je 0x153e0
cmpb $0x1, 0x28(%r15)
jne 0x153e0
movq 0x10(%r11), %r12
testq %r12, %r12
je 0x153ae
cmpb $0x0, 0x28(%r12)
jne 0x153e0
movq 0x10(%r15), %r12
movq %r12, 0x18(%r11)
testq %r12, %r12
je 0x153c0
movq %r11, 0x20(%r12)
movq %r11, 0x10(%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 (%r10), %r11
movq 0x10(%r11), %r15
testq %r15, %r15
je 0x15436
cmpb $0x1, 0x28(%r15)
jne 0x15436
movq 0x10(%r15), %r12
testq %r12, %r12
je 0x15436
cmpb $0x1, 0x28(%r12)
jne 0x15436
movq 0x18(%r15), %r12
movq %r12, 0x10(%r11)
testq %r12, %r12
je 0x15416
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 (%r10), %r11
movq 0x10(%r11), %r15
testq %r15, %r15
je 0x15361
cmpb $0x1, 0x28(%r15)
jne 0x15361
movq 0x18(%r11), %r12
testq %r12, %r12
je 0x15361
cmpb $0x1, 0x28(%r12)
jne 0x15361
xorb $0x1, 0x28(%r11)
xorb $0x1, 0x28(%r15)
xorb $0x1, 0x28(%r12)
jmp 0x15361
movq (%rsi), %rdi
movb 0x28(%rdi), %r8b
movb %r8b, 0x28(%r9)
movq 0x20(%rdi), %rdi
movq %rdi, 0x20(%r9)
movq (%rsi), %rdi
movq 0x18(%rdi), %rdi
movq %rdi, 0x18(%r9)
testq %rdi, %rdi
je 0x154a6
movq %r9, 0x20(%rdi)
movq (%rsi), %rdi
movq 0x10(%rdi), %rdi
movq %rdi, 0x10(%r9)
testq %rdi, %rdi
je 0x154ba
movq %r9, 0x20(%rdi)
movq %r9, %rdi
jmp 0x154c2
xorl %r9d, %r9d
movq %r9, (%rsi)
jmp 0x155c3
movq %rax, %rsi
cmpq (%rax), %rdi
je 0x154e6
movq 0x20(%rdi), %rsi
cmpq 0x10(%rsi), %rdi
je 0x154e2
addq $0x18, %rsi
jmp 0x154e6
addq $0x10, %rsi
movq 0x20(%rdi), %rdi
movq (%rsi), %r8
movq 0x18(%r8), %r9
testq %r9, %r9
je 0x1553e
cmpb $0x1, 0x28(%r9)
jne 0x1553e
movq 0x10(%r8), %r10
testq %r10, %r10
je 0x1550d
cmpb $0x0, 0x28(%r10)
jne 0x1553e
movq 0x10(%r9), %r10
movq %r10, 0x18(%r8)
testq %r10, %r10
je 0x1551e
movq %r8, 0x20(%r10)
movq %r8, 0x10(%r9)
movb 0x28(%r8), %r10b
movb %r10b, 0x28(%r9)
movb $0x1, 0x28(%r8)
movq 0x20(%r8), %r10
movq %r10, 0x20(%r9)
movq %r9, 0x20(%r8)
movq %r9, (%rsi)
movq (%rsi), %r8
movq 0x10(%r8), %r9
testq %r9, %r9
je 0x15592
cmpb $0x1, 0x28(%r9)
jne 0x15592
movq 0x10(%r9), %r10
testq %r10, %r10
je 0x15592
cmpb $0x1, 0x28(%r10)
jne 0x15592
movq 0x18(%r9), %r10
movq %r10, 0x10(%r8)
testq %r10, %r10
je 0x15572
movq %r8, 0x20(%r10)
movq %r8, 0x18(%r9)
movb 0x28(%r8), %r10b
movb %r10b, 0x28(%r9)
movb $0x1, 0x28(%r8)
movq 0x20(%r8), %r10
movq %r10, 0x20(%r9)
movq %r9, 0x20(%r8)
movq %r9, (%rsi)
movq (%rsi), %rsi
movq 0x10(%rsi), %r8
testq %r8, %r8
je 0x155c3
cmpb $0x1, 0x28(%r8)
jne 0x155c3
movq 0x18(%rsi), %r9
testq %r9, %r9
je 0x155c3
cmpb $0x1, 0x28(%r9)
jne 0x155c3
xorb $0x1, 0x28(%rsi)
xorb $0x1, 0x28(%r8)
xorb $0x1, 0x28(%r9)
testq %rdi, %rdi
jne 0x154ca
movq (%rax), %rsi
testq %rsi, %rsi
je 0x155d8
movb $0x0, 0x28(%rsi)
movq 0x30(%rcx), %rsi
testq %rsi, %rsi
je 0x155e9
movq 0x38(%rcx), %rdi
movq %rdi, 0x38(%rsi)
movq 0x38(%rcx), %rdi
movq %rsi, (%rdi)
movq 0x1e8(%rbx), %rsi
movq %rsi, (%rcx)
movq %rcx, 0x1e8(%rbx)
movq %rdx, %rcx
testq %rdx, %rdx
jne 0x14fdb
movq %rbx, %rdi
movq %r14, %rsi
callq 0x14e55
leaq 0x1c0(%rbx), %r14
leaq 0x1f0(%rbx), %rdi
callq 0x15647
addq $0x1d8, %rbx            # imm = 0x1D8
movq %rbx, %rdi
callq 0x15647
movq %r14, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x15647