// File: /workspace/github_c_makefile_star2_O0/GangZhuo[P]dohclient/src/channel_tcp.c
// Function: step
static int step(channel_t* ctx,
	fd_set* readset, fd_set* writeset, fd_set* errorset)
{
	channel_tcp_t *c = (channel_tcp_t*)ctx;
	dlitem_t *cur, *nxt;
	tcpreq_t *req;
	time_t now;
	now = time(NULL);
	dllist_foreach(&c->reqs, cur, nxt, tcpreq_t, req, entry) {
		if (req->is_closing) {
			if (req->callback) {
				req->callback((channel_t*)c, -1, NULL, FALSE, FALSE, req->cb_state);
				req->callback = NULL;
			}
			dllist_init_remove(&req->entry);
			c->req_count--;
			req_destroy(req);
		}
		else {
			int r = req_step(ctx, req, now, readset, writeset, errorset);
			if (r != 0 || is_expired(req, now)) {
				if (r == 0)
					loge("request timeout - %s\n", req->qr.qname);
				if (req->callback) {
					req->callback((channel_t*)c, -1, NULL, FALSE, FALSE, req->cb_state);
					req->callback = NULL;
				}
				dllist_init_remove(&req->entry);
				c->req_count--;
				req_destroy(req);
			}
		}
	}
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0x3330
movq %rax, -0x48(%rbp)
movq -0x28(%rbp), %rax
movq 0x58(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x38(%rbp)
xorl %eax, %eax
movq %rax, %rcx
addq $0x30, %rcx
subq %rcx, %rax
addq -0x30(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x30(%rbp), %rax
movq -0x28(%rbp), %rcx
addq $0x58, %rcx
cmpq %rcx, %rax
sete %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x162d5
jmp 0x164c4
movq -0x40(%rbp), %rax
cmpl $0x0, 0x58(%rax)
je 0x1637d
movq -0x40(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x1631f
movq -0x40(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x28(%rbp), %rdi
movq -0x40(%rbp), %rcx
movq 0x28(%rcx), %r9
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
xorl %ecx, %ecx
movl %ecx, %edx
xorl %r8d, %r8d
movl %r8d, %ecx
callq *%rax
movq -0x40(%rbp), %rax
movq $0x0, 0x20(%rax)
jmp 0x16321
jmp 0x16323
movq -0x40(%rbp), %rax
movq 0x30(%rax), %rcx
movq -0x40(%rbp), %rax
movq 0x38(%rax), %rax
movq %rcx, (%rax)
movq -0x40(%rbp), %rax
movq 0x38(%rax), %rcx
movq -0x40(%rbp), %rax
movq 0x30(%rax), %rax
movq %rcx, 0x8(%rax)
movq -0x40(%rbp), %rax
movq $0x0, 0x38(%rax)
movq -0x40(%rbp), %rax
movq $0x0, 0x30(%rax)
movq -0x28(%rbp), %rax
movl 0x68(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x68(%rax)
movq -0x40(%rbp), %rdi
callq 0x15bd0
jmp 0x16496
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %r8
movq -0x20(%rbp), %r9
callq 0x180d0
movl %eax, -0x4c(%rbp)
cmpl $0x0, -0x4c(%rbp)
jne 0x163b9
movq -0x40(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x18640
cmpl $0x0, %eax
je 0x16494
cmpl $0x0, -0x4c(%rbp)
jne 0x163ff
jmp 0x163c1
movb $0x0, %al
callq 0x242d0
cmpl $0x3, (%rax)
jl 0x163fb
movq -0x40(%rbp), %rax
movq 0x8(%rax), %r9
movl $0x3, %edi
leaq 0x2044f(%rip), %rsi     # 0x36830
leaq 0x208e6(%rip), %rdx     # 0x36cce
movl $0x37b, %ecx            # imm = 0x37B
leaq 0x21455(%rip), %r8      # 0x37849
movb $0x0, %al
callq 0x243b0
jmp 0x163fd
jmp 0x163ff
movq -0x40(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x1643b
movq -0x40(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x28(%rbp), %rdi
movq -0x40(%rbp), %rcx
movq 0x28(%rcx), %r9
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
xorl %ecx, %ecx
movl %ecx, %edx
xorl %r8d, %r8d
movl %r8d, %ecx
callq *%rax
movq -0x40(%rbp), %rax
movq $0x0, 0x20(%rax)
jmp 0x1643d
jmp 0x1643f
movq -0x40(%rbp), %rax
movq 0x30(%rax), %rcx
movq -0x40(%rbp), %rax
movq 0x38(%rax), %rax
movq %rcx, (%rax)
movq -0x40(%rbp), %rax
movq 0x38(%rax), %rcx
movq -0x40(%rbp), %rax
movq 0x30(%rax), %rax
movq %rcx, 0x8(%rax)
movq -0x40(%rbp), %rax
movq $0x0, 0x38(%rax)
movq -0x40(%rbp), %rax
movq $0x0, 0x30(%rax)
movq -0x28(%rbp), %rax
movl 0x68(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x68(%rax)
movq -0x40(%rbp), %rdi
callq 0x15bd0
jmp 0x16496
jmp 0x16498
movq -0x38(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x38(%rbp)
xorl %eax, %eax
movq %rax, %rcx
addq $0x30, %rcx
subq %rcx, %rax
addq -0x30(%rbp), %rax
movq %rax, -0x40(%rbp)
jmp 0x162b8
xorl %eax, %eax
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)