// File: /workspace/github_cpp_makefile_star2_O3/davidgfnet[P]tadns/tadns.cc
// Function: DNSResolver::resolve(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, dns_record_type, void (*)(dns_cb_data*), void*, unsigned int)
void DNSResolver::resolve(std::string name, enum dns_record_type qtype,
                          dns_callback_t callback, void *ctx, unsigned options) {
    std::transform(name.begin(), name.end(), name.begin(), ::tolower);

    if (options & DNS_OPT_RECURSIVE_SOLVE) {
		struct cache_entry *dentry = find_cached_query(qtype, name);
		if (dentry) {
		    call_user(this, name, qtype, dentry, callback, ctx, DNS_OK);
		} else {
	        Query * oq = createQuery(0, ctx, name, qtype, callback);
    	    this->queue(0, name, oq, qtype, NULL);
		}
    } else {
        this->resolveInt(0, ctx, name, qtype, callback);
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movl %r9d, %ebp
movq %r8, (%rsp)
movq %rcx, 0x8(%rsp)
movl %edx, %r14d
movq %rsi, %r13
movq %rdi, 0x10(%rsp)
movq 0x8(%rsi), %r15
testq %r15, %r15
je 0x6827
movq (%r13), %r12
xorl %ebx, %ebx
movsbl (%r12,%rbx), %edi
callq 0x3390
movb %al, (%r12,%rbx)
incq %rbx
cmpq %rbx, %r15
jne 0x6811
testb $0x1, %bpl
jne 0x6873
leaq 0x68(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r13), %rsi
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %r13
movq %r13, %rdi
callq 0x3c72
movq 0x10(%rsp), %rdi
xorl %esi, %esi
movq (%rsp), %rdx
movq %r13, %rcx
movl %r14d, %r8d
movq 0x8(%rsp), %r9
callq 0x50ce
movq 0x58(%rsp), %rdi
jmp 0x69ac
leaq 0x48(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r13), %rsi
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq 0x38(%rsp), %rbp
movq %rbp, %rdi
callq 0x3c72
movq 0x10(%rsp), %r12
movq %r12, %rdi
movl %r14d, %ebx
movl %r14d, %esi
movq %rbp, %rdx
callq 0x46a4
movq %rax, %rbp
movq 0x38(%rsp), %rdi
cmpq %r15, %rdi
je 0x68c4
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x32b0
testq %rbp, %rbp
je 0x6917
leaq 0xa8(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r13), %rsi
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq 0x98(%rsp), %r14
movq %r14, %rdi
callq 0x3c72
movzwl %bx, %esi
movq %r14, %rdi
movq %rbp, %rdx
movq 0x8(%rsp), %rcx
movq (%rsp), %r8
xorl %r9d, %r9d
callq 0x501c
movq 0x98(%rsp), %rdi
jmp 0x69ac
leaq 0x28(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r13), %rsi
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq 0x18(%rsp), %rbp
movq %rbp, %rdi
callq 0x3c72
movq %r12, %rdi
xorl %esi, %esi
movq (%rsp), %rdx
movq %rbp, %rcx
movl %ebx, %r8d
movq 0x8(%rsp), %r9
callq 0x66fa
movq %rax, %rbp
movq 0x18(%rsp), %rdi
cmpq %r15, %rdi
je 0x696b
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x32b0
leaq 0x88(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r13), %rsi
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq 0x78(%rsp), %r12
movq %r12, %rdi
callq 0x3c72
movq 0x10(%rsp), %rdi
xorl %esi, %esi
movq %r12, %rdx
movq %rbp, %rcx
movl %ebx, %r8d
xorl %r9d, %r9d
callq 0x63e4
movq 0x78(%rsp), %rdi
cmpq %r15, %rdi
je 0x69bc
movq (%r15), %rsi
incq %rsi
callq 0x32b0
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x78(%rsp), %rdi
jmp 0x6a01
movq %rax, %rbx
movq 0x18(%rsp), %rdi
jmp 0x6a01
movq %rax, %rbx
movq 0x98(%rsp), %rdi
jmp 0x6a01
movq %rax, %rbx
movq 0x38(%rsp), %rdi
jmp 0x6a01
movq %rax, %rbx
movq 0x58(%rsp), %rdi
cmpq %r15, %rdi
je 0x6a11
movq (%r15), %rsi
incq %rsi
callq 0x32b0
movq %rbx, %rdi
callq 0x3400
nop