// File: /workspace/github_c_makefile_star2_O0/GangZhuo[P]dohclient/src/ns_msg.c
// Function: get_answers
static const char* get_answers(stream_t *s, const ns_msg_t* msg)
{
	static char answers[NS_PAYLOAD_SIZE];
	int i, rrcount, r, len = 0;
	const ns_rr_t* rr;

	for (i = 0, rrcount = ns_rrcount(msg); i < rrcount; i++) {
		rr = msg->rrs + i;
		if (rr->type == NS_QTYPE_A) {
			char ipname[INET6_ADDRSTRLEN];
			struct in_addr* addr = (struct in_addr*)rr->rdata;
			inet_ntop(AF_INET, addr, ipname, INET6_ADDRSTRLEN);
			r = stream_writef(s, len > 0 ? ", %s %d %s %s %s" : "%s %d %s %s %s",
					rr->name,
					rr->ttl,
					ns_classname(rr->cls),
					ns_typename(rr->type),
					ipname);
			if (r < 0)
				return NULL;
			len += r;
		}
		else if (rr->type == NS_QTYPE_AAAA) {
			struct in6_addr* addr = (struct in6_addr*)rr->rdata;
			static char ipname[INET6_ADDRSTRLEN];
			inet_ntop(AF_INET6, addr, ipname, INET6_ADDRSTRLEN);
			r = stream_writef(s, len > 0 ? ", %s %d %s %s %s" : "%s %d %s %s %s",
					rr->name,
					rr->ttl,
					ns_classname(rr->cls),
					ns_typename(rr->type),
					ipname);
			if (r < 0)
				return NULL;
			len += r;
		}
		else if (rr->type == NS_QTYPE_PTR) {
			r = stream_writef(s, len > 0 ? ", %s %d %s %s %s" : "%s %d %s %s %s",
					rr->name,
					rr->ttl,
					ns_classname(rr->cls),
					ns_typename(rr->type),
					rr->rdata);
			if (r < 0)
				return NULL;
			len += r;
		}
		else if (rr->type == NS_QTYPE_CNAME) {
			r = stream_writef(s, len > 0 ? ", %s %d %s %s %s" : "%s %d %s %s %s",
					rr->name,
					rr->ttl,
					ns_classname(rr->cls),
					ns_typename(rr->type),
					rr->rdata);
			if (r < 0)
				return NULL;
			len += r;
		}
		else if (rr->type == NS_QTYPE_SOA) {
			ns_soa_t* soa = rr->rdata;
			r = stream_writef(s, len > 0 ? ", %s %d %s %s %s,%s" : " %s %d %s %s %s,%s",
					rr->name,
					rr->ttl,
					ns_classname(rr->cls),
					ns_typename(rr->type),
					soa->mname,
					soa->rname);
			if (r < 0)
				return NULL;
			len += r;
		}
		else {
			r = stream_writef(s, len > 0 ? ", %s %d %s %s [%d bytes]" : "%s %d %s %s [%d bytes]",
					rr->name,
					rr->ttl,
					ns_classname(rr->cls),
					ns_typename(rr->type),
					(int)rr->rdlength);
			if (r < 0)
				return NULL;
			len += r;
		}
	}

	len = MIN(len, sizeof(answers) - 1);
	if (len > 0)
		strncpy(answers, s->array, len);
	answers[len] = '\0';

	return answers;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x180, %rsp            # imm = 0x180
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl $0x0, -0x28(%rbp)
movl $0x0, -0x1c(%rbp)
movq -0x18(%rbp), %rax
movzwl 0x6(%rax), %eax
movq -0x18(%rbp), %rcx
movzwl 0x8(%rcx), %ecx
addl %ecx, %eax
movq -0x18(%rbp), %rcx
movzwl 0xa(%rcx), %ecx
addl %ecx, %eax
movl %eax, -0x20(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x20(%rbp), %eax
jge 0x283cc
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x1c(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movzwl 0x8(%rax), %eax
cmpl $0x1, %eax
jne 0x27f6f
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rsi
leaq -0x60(%rbp), %rdx
movl $0x2, %edi
movl $0x2e, %ecx
callq 0x33c0
movq -0x10(%rbp), %rax
movq %rax, -0xa0(%rbp)
movl -0x28(%rbp), %edx
leaq 0x10860(%rip), %rax     # 0x3872c
leaq 0x10857(%rip), %rcx     # 0x3872a
cmpl $0x0, %edx
cmovgq %rcx, %rax
movq %rax, -0x98(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x90(%rbp)
movq -0x30(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x84(%rbp)
movq -0x30(%rbp), %rax
movzwl 0xa(%rax), %edi
callq 0x27d20
movq %rax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movzwl 0x8(%rax), %edi
callq 0x27a50
movq -0xa0(%rbp), %rdi
movq -0x98(%rbp), %rsi
movq -0x90(%rbp), %rdx
movl -0x84(%rbp), %ecx
movq -0x80(%rbp), %r8
movq %rax, %r9
leaq -0x60(%rbp), %rax
movq %rax, (%rsp)
movb $0x0, %al
callq 0x2e040
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
jge 0x27f61
movq $0x0, -0x8(%rbp)
jmp 0x28434
movl -0x24(%rbp), %eax
addl -0x28(%rbp), %eax
movl %eax, -0x28(%rbp)
jmp 0x283bc
movq -0x30(%rbp), %rax
movzwl 0x8(%rax), %eax
cmpl $0x1c, %eax
jne 0x28067
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rsi
movl $0xa, %edi
leaq 0x1a284(%rip), %rdx     # 0x42220
movl $0x2e, %ecx
callq 0x33c0
movq -0x10(%rbp), %rax
movq %rax, -0xc8(%rbp)
movl -0x28(%rbp), %edx
leaq 0x10771(%rip), %rax     # 0x3872c
leaq 0x10768(%rip), %rcx     # 0x3872a
cmpl $0x0, %edx
cmovgq %rcx, %rax
movq %rax, -0xc0(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xb8(%rbp)
movq -0x30(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0xac(%rbp)
movq -0x30(%rbp), %rax
movzwl 0xa(%rax), %edi
callq 0x27d20
movq %rax, -0xa8(%rbp)
movq -0x30(%rbp), %rax
movzwl 0x8(%rax), %edi
callq 0x27a50
movq -0xc8(%rbp), %rdi
movq -0xc0(%rbp), %rsi
movq -0xb8(%rbp), %rdx
movl -0xac(%rbp), %ecx
movq -0xa8(%rbp), %r8
movq %rax, %r9
leaq 0x1a1e8(%rip), %rax     # 0x42220
movq %rax, (%rsp)
movb $0x0, %al
callq 0x2e040
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
jge 0x28059
movq $0x0, -0x8(%rbp)
jmp 0x28434
movl -0x24(%rbp), %eax
addl -0x28(%rbp), %eax
movl %eax, -0x28(%rbp)
jmp 0x283ba
movq -0x30(%rbp), %rax
movzwl 0x8(%rax), %eax
cmpl $0xc, %eax
jne 0x2813a
movq -0x10(%rbp), %rax
movq %rax, -0xf0(%rbp)
movl -0x28(%rbp), %edx
leaq 0x1069f(%rip), %rax     # 0x3872c
leaq 0x10696(%rip), %rcx     # 0x3872a
cmpl $0x0, %edx
cmovgq %rcx, %rax
movq %rax, -0xe8(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xe0(%rbp)
movq -0x30(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0xd4(%rbp)
movq -0x30(%rbp), %rax
movzwl 0xa(%rax), %edi
callq 0x27d20
movq %rax, -0xd0(%rbp)
movq -0x30(%rbp), %rax
movzwl 0x8(%rax), %edi
callq 0x27a50
movq -0xf0(%rbp), %rdi
movq -0xe8(%rbp), %rsi
movq -0xe0(%rbp), %rdx
movl -0xd4(%rbp), %ecx
movq -0xd0(%rbp), %r8
movq %rax, %r9
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, (%rsp)
movb $0x0, %al
callq 0x2e040
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
jge 0x2812c
movq $0x0, -0x8(%rbp)
jmp 0x28434
movl -0x24(%rbp), %eax
addl -0x28(%rbp), %eax
movl %eax, -0x28(%rbp)
jmp 0x283b8
movq -0x30(%rbp), %rax
movzwl 0x8(%rax), %eax
cmpl $0x5, %eax
jne 0x2820d
movq -0x10(%rbp), %rax
movq %rax, -0x118(%rbp)
movl -0x28(%rbp), %edx
leaq 0x105cc(%rip), %rax     # 0x3872c
leaq 0x105c3(%rip), %rcx     # 0x3872a
cmpl $0x0, %edx
cmovgq %rcx, %rax
movq %rax, -0x110(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x108(%rbp)
movq -0x30(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0xfc(%rbp)
movq -0x30(%rbp), %rax
movzwl 0xa(%rax), %edi
callq 0x27d20
movq %rax, -0xf8(%rbp)
movq -0x30(%rbp), %rax
movzwl 0x8(%rax), %edi
callq 0x27a50
movq -0x118(%rbp), %rdi
movq -0x110(%rbp), %rsi
movq -0x108(%rbp), %rdx
movl -0xfc(%rbp), %ecx
movq -0xf8(%rbp), %r8
movq %rax, %r9
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, (%rsp)
movb $0x0, %al
callq 0x2e040
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
jge 0x281ff
movq $0x0, -0x8(%rbp)
jmp 0x28434
movl -0x24(%rbp), %eax
addl -0x28(%rbp), %eax
movl %eax, -0x28(%rbp)
jmp 0x283b6
movq -0x30(%rbp), %rax
movzwl 0x8(%rax), %eax
cmpl $0x6, %eax
jne 0x282f8
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x78(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x140(%rbp)
movl -0x28(%rbp), %edx
leaq 0x104fd(%rip), %rax     # 0x3873c
leaq 0x104f5(%rip), %rcx     # 0x3873b
cmpl $0x0, %edx
cmovgq %rcx, %rax
movq %rax, -0x138(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x130(%rbp)
movq -0x30(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x124(%rbp)
movq -0x30(%rbp), %rax
movzwl 0xa(%rax), %edi
callq 0x27d20
movq %rax, -0x120(%rbp)
movq -0x30(%rbp), %rax
movzwl 0x8(%rax), %edi
callq 0x27a50
movq -0x140(%rbp), %rdi
movq -0x138(%rbp), %rsi
movq -0x130(%rbp), %rdx
movl -0x124(%rbp), %ecx
movq -0x120(%rbp), %r8
movq %rax, %r9
movq -0x78(%rbp), %rax
movq (%rax), %r10
movq -0x78(%rbp), %rax
movq 0x8(%rax), %rax
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
movb $0x0, %al
callq 0x2e040
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
jge 0x282ea
movq $0x0, -0x8(%rbp)
jmp 0x28434
movl -0x24(%rbp), %eax
addl -0x28(%rbp), %eax
movl %eax, -0x28(%rbp)
jmp 0x283b4
movq -0x10(%rbp), %rax
movq %rax, -0x168(%rbp)
movl -0x28(%rbp), %edx
leaq 0x10444(%rip), %rax     # 0x38751
leaq 0x1043b(%rip), %rcx     # 0x3874f
cmpl $0x0, %edx
cmovgq %rcx, %rax
movq %rax, -0x160(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x158(%rbp)
movq -0x30(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x14c(%rbp)
movq -0x30(%rbp), %rax
movzwl 0xa(%rax), %edi
callq 0x27d20
movq %rax, -0x148(%rbp)
movq -0x30(%rbp), %rax
movzwl 0x8(%rax), %edi
callq 0x27a50
movq -0x168(%rbp), %rdi
movq -0x160(%rbp), %rsi
movq -0x158(%rbp), %rdx
movl -0x14c(%rbp), %ecx
movq -0x148(%rbp), %r8
movq %rax, %r9
movq -0x30(%rbp), %rax
movzwl 0x10(%rax), %eax
movl %eax, (%rsp)
movb $0x0, %al
callq 0x2e040
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
jge 0x283ab
movq $0x0, -0x8(%rbp)
jmp 0x28434
movl -0x24(%rbp), %eax
addl -0x28(%rbp), %eax
movl %eax, -0x28(%rbp)
jmp 0x283b6
jmp 0x283b8
jmp 0x283ba
jmp 0x283bc
jmp 0x283be
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x27e60
movslq -0x28(%rbp), %rax
cmpq $0x3ff, %rax            # imm = 0x3FF
jae 0x283e5
movslq -0x28(%rbp), %rax
movq %rax, -0x170(%rbp)
jmp 0x283f3
movl $0x3ff, %eax            # imm = 0x3FF
movq %rax, -0x170(%rbp)
jmp 0x283f3
movq -0x170(%rbp), %rax
movl %eax, -0x28(%rbp)
cmpl $0x0, -0x28(%rbp)
jle 0x2841a
movq -0x10(%rbp), %rax
movq (%rax), %rsi
movslq -0x28(%rbp), %rdx
leaq 0x19a0b(%rip), %rdi     # 0x41e20
callq 0x31f0
movslq -0x28(%rbp), %rcx
leaq 0x199fb(%rip), %rax     # 0x41e20
movb $0x0, (%rax,%rcx)
leaq 0x199f0(%rip), %rax     # 0x41e20
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x180, %rsp            # imm = 0x180
popq %rbp
retq
nopw %cs:(%rax,%rax)