// File: /workspace/github_c_makefile_star2_O0/GangZhuo[P]dohclient/src/channel_chndoh.c
// Function: destroy
static void destroy(channel_t* ctx)
{
	channel_chndoh_t* c = (channel_chndoh_t*)ctx;
	dlitem_t* cur, * nxt;
	channel_req_t* req;

	dllist_foreach(&c->reqs, cur, nxt,
		channel_req_t, req, entry) {
		dllist_remove(&req->entry);
		if (req->callback)
			req->callback(ctx, -1, NULL, FALSE, FALSE, req->cb_state);
		myreq_destroy(req);
	}

	free(c->chndoh.name);
	free(c->chndoh.addrstr);
	free(c->chndoh.host);
	free(c->chndoh.path);
	free(c->chndoh.net.name);
	free(c->chndoh.net6.name);
	if (c->chndoh.channel == CH_DOH && c->chndoh.http) {
		http_destroy(c->chndoh.http);
		c->chndoh.http = NULL;
	}
	else if (c->chndoh.chctx) {
		c->chndoh.chctx->destroy(c->chndoh.chctx);
		c->chndoh.chctx = NULL;
	}

	free(c->frndoh.name);
	free(c->frndoh.addrstr);
	free(c->frndoh.host);
	free(c->frndoh.path);
	free(c->frndoh.net.name);
	free(c->frndoh.net6.name);
	if (c->frndoh.channel == CH_DOH && c->frndoh.http) {
		http_destroy(c->frndoh.http);
		c->frndoh.http = NULL;
	}
	else if (c->frndoh.chctx) {
		c->frndoh.chctx->destroy(c->frndoh.chctx);
		c->frndoh.chctx = NULL;
	}

	free(c);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
xorl %eax, %eax
movq %rax, %rcx
addq $0x28, %rcx
subq %rcx, %rax
addq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rax
movq -0x10(%rbp), %rcx
addq $0x58, %rcx
cmpq %rcx, %rax
sete %al
xorb $-0x1, %al
testb $0x1, %al
jne 0xf4cc
jmp 0xf55a
jmp 0xf4ce
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rcx
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
movq %rcx, (%rax)
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rcx
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq %rcx, 0x8(%rax)
movq -0x28(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0xf525
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rcx
movq 0x20(%rcx), %r9
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
xorl %ecx, %ecx
movl %ecx, %edx
xorl %r8d, %r8d
movl %r8d, %ecx
callq *%rax
movq -0x28(%rbp), %rdi
callq 0x10410
movq -0x20(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
xorl %eax, %eax
movq %rax, %rcx
addq $0x28, %rcx
subq %rcx, %rax
addq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0xf4af
movq -0x10(%rbp), %rax
movq 0x4d0(%rax), %rdi
callq 0x3460
movq -0x10(%rbp), %rax
movq 0x4d8(%rax), %rdi
callq 0x3460
movq -0x10(%rbp), %rax
movq 0x4e0(%rax), %rdi
callq 0x3460
movq -0x10(%rbp), %rax
movq 0x4e8(%rax), %rdi
callq 0x3460
movq -0x10(%rbp), %rax
movq 0x508(%rax), %rdi
callq 0x3460
movq -0x10(%rbp), %rax
movq 0x5a0(%rax), %rdi
callq 0x3460
movq -0x10(%rbp), %rax
cmpl $0x1, 0x630(%rax)
jne 0xf5f6
movq -0x10(%rbp), %rax
cmpq $0x0, 0x638(%rax)
je 0xf5f6
movq -0x10(%rbp), %rax
movq 0x638(%rax), %rdi
callq 0x1fdc0
movq -0x10(%rbp), %rax
movq $0x0, 0x638(%rax)
jmp 0xf631
movq -0x10(%rbp), %rax
cmpq $0x0, 0x638(%rax)
je 0xf62f
movq -0x10(%rbp), %rax
movq 0x638(%rax), %rax
movq 0x48(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x638(%rcx), %rdi
callq *%rax
movq -0x10(%rbp), %rax
movq $0x0, 0x638(%rax)
jmp 0xf631
movq -0x10(%rbp), %rax
movq 0xaa0(%rax), %rdi
callq 0x3460
movq -0x10(%rbp), %rax
movq 0xaa8(%rax), %rdi
callq 0x3460
movq -0x10(%rbp), %rax
movq 0xab0(%rax), %rdi
callq 0x3460
movq -0x10(%rbp), %rax
movq 0xab8(%rax), %rdi
callq 0x3460
movq -0x10(%rbp), %rax
movq 0xad8(%rax), %rdi
callq 0x3460
movq -0x10(%rbp), %rax
movq 0xb70(%rax), %rdi
callq 0x3460
movq -0x10(%rbp), %rax
cmpl $0x1, 0xc00(%rax)
jne 0xf6cd
movq -0x10(%rbp), %rax
cmpq $0x0, 0xc08(%rax)
je 0xf6cd
movq -0x10(%rbp), %rax
movq 0xc08(%rax), %rdi
callq 0x1fdc0
movq -0x10(%rbp), %rax
movq $0x0, 0xc08(%rax)
jmp 0xf708
movq -0x10(%rbp), %rax
cmpq $0x0, 0xc08(%rax)
je 0xf706
movq -0x10(%rbp), %rax
movq 0xc08(%rax), %rax
movq 0x48(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0xc08(%rcx), %rdi
callq *%rax
movq -0x10(%rbp), %rax
movq $0x0, 0xc08(%rax)
jmp 0xf708
movq -0x10(%rbp), %rdi
callq 0x3460
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)