// File: /workspace/github_c_makefile_star2_O0/wahern[P]cqueues/src/lib/dns.c
// Function: dns_nssconf_next
static _Bool dns_nssconf_next(struct dns_nssconf_source *src, const struct dns_resolv_conf *resconf, dns_nssconf_i *state) {
	int source, status, action;

	src->source = DNS_NSSCONF_INVALID;
	src->success = DNS_NSSCONF_RETURN;
	src->notfound = DNS_NSSCONF_CONTINUE;
	src->unavail = DNS_NSSCONF_CONTINUE;
	src->tryagain = DNS_NSSCONF_CONTINUE;

	while ((source = dns_nssconf_peek(resconf, *state))) {
		source = dns_nssconf_c2k(source);
		++*state;

		switch (source) {
		case DNS_NSSCONF_FILES:
		case DNS_NSSCONF_DNS:
		case DNS_NSSCONF_MDNS:
			src->source = source;
			break;
		default:
			continue;
		}

		while ((status = dns_nssconf_peek(resconf, *state)) && (action = dns_nssconf_peek(resconf, *state + 1))) {
			status = dns_nssconf_c2k(status);
			action = dns_nssconf_c2k(action);

			switch (action) {
			case DNS_NSSCONF_RETURN:
			case DNS_NSSCONF_CONTINUE:
				break;
			default:
				goto done;
			}

			switch (status) {
			case DNS_NSSCONF_SUCCESS:
				src->success = action;
				break;
			case DNS_NSSCONF_NOTFOUND:
				src->notfound = action;
				break;
			case DNS_NSSCONF_UNAVAIL:
				src->unavail = action;
				break;
			case DNS_NSSCONF_TRYAGAIN:
				src->tryagain = action;
				break;
			default:
				goto done;
			}

			*state += 2;
		}

		break;
	}
done:
	return src->source != DNS_NSSCONF_INVALID;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movl $0x0, (%rax)
movq -0x8(%rbp), %rax
movl $0x7, 0x4(%rax)
movq -0x8(%rbp), %rax
movl $0x6, 0x8(%rax)
movq -0x8(%rbp), %rax
movl $0x6, 0xc(%rax)
movq -0x8(%rbp), %rax
movl $0x6, 0x10(%rax)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl (%rax), %esi
callq 0x43b20
movl %eax, -0x1c(%rbp)
cmpl $0x0, %eax
je 0x3b5ce
movl -0x1c(%rbp), %edi
callq 0x43b70
movl %eax, -0x1c(%rbp)
movq -0x18(%rbp), %rax
movl (%rax), %ecx
incl %ecx
movl %ecx, (%rax)
movl -0x1c(%rbp), %eax
addl $-0x8, %eax
subl $0x2, %eax
ja 0x3b4f2
jmp 0x3b4e7
movl -0x1c(%rbp), %ecx
movq -0x8(%rbp), %rax
movl %ecx, (%rax)
jmp 0x3b4f4
jmp 0x3b4aa
jmp 0x3b4f6
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl (%rax), %esi
callq 0x43b20
movl %eax, %ecx
movl %ecx, -0x20(%rbp)
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x25(%rbp)
je 0x3b532
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl (%rax), %esi
addl $0x1, %esi
callq 0x43b20
movl %eax, -0x24(%rbp)
cmpl $0x0, %eax
setne %al
movb %al, -0x25(%rbp)
movb -0x25(%rbp), %al
testb $0x1, %al
jne 0x3b53e
jmp 0x3b5cc
movl -0x20(%rbp), %edi
callq 0x43b70
movl %eax, -0x20(%rbp)
movl -0x24(%rbp), %edi
callq 0x43b70
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
addl $-0x6, %eax
subl $0x1, %eax
ja 0x3b563
jmp 0x3b561
jmp 0x3b565
jmp 0x3b5d0
movl -0x20(%rbp), %eax
addl $-0x2, %eax
movl %eax, %ecx
movq %rcx, -0x30(%rbp)
subl $0x3, %eax
ja 0x3b5ba
movq -0x30(%rbp), %rax
leaq 0xe9db(%rip), %rcx      # 0x49f5c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl -0x24(%rbp), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x4(%rax)
jmp 0x3b5bc
movl -0x24(%rbp), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x8(%rax)
jmp 0x3b5bc
movl -0x24(%rbp), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x3b5bc
movl -0x24(%rbp), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x10(%rax)
jmp 0x3b5bc
jmp 0x3b5d0
movq -0x18(%rbp), %rax
movl (%rax), %ecx
addl $0x2, %ecx
movl %ecx, (%rax)
jmp 0x3b4f6
jmp 0x3b5ce
jmp 0x3b5d0
movq -0x8(%rbp), %rax
cmpl $0x0, (%rax)
setne %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)