// File: /workspace/github_cpp_makefile_star2_O3/trisolaris233[P]httpc/src/server.hpp
// Function: httpc::Server::Server(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, unsigned long)
Server(
            const std::string& address,
            const std::string& port,
            const std::string& document_root,
            std::size_t num_thread = GetCPUCoreNumber()
        )
        : io_context_(1)
        , acceptor_(io_context_)
        //, manager_(io_context_)
        , document_root_(document_root)
        , num_of_thread_(num_thread)
        , http_router_(*this) {
            boost::asio::ip::tcp::resolver resolver(io_context_);
            boost::asio::ip::tcp::endpoint endpoint = 
                *(resolver.resolve(address, port)).begin();
            this->acceptor_.open(endpoint.protocol());
            this->acceptor_.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true));
            this->acceptor_.bind(endpoint);
            this->acceptor_.listen();

            // Accept();
            //f();

            //this->AssignMultithreadAccept_();
            //this->Accept_();
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movq %r8, %r15
movq %rcx, %r14
movq %rdx, %r12
movq %rsi, %r13
movq %rdi, %rbx
movl $0x1, %esi
callq 0xc0fa
leaq 0x10(%rbx), %rdi
movq %rdi, -0x38(%rbp)
movq %rbx, %rsi
xorl %edx, %edx
callq 0xe6d4
leaq 0x60(%rbx), %rdi
leaq 0x70(%rbx), %rax
movq %rax, -0x30(%rbp)
movq %rax, 0x60(%rbx)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %rdi, -0x40(%rbp)
callq 0xb088
leaq 0x88(%rbx), %rax
xorl %ecx, %ecx
movl %ecx, 0x88(%rbx)
movq %rcx, 0x90(%rbx)
movq %rax, 0x98(%rbx)
movq %rax, 0xa0(%rbx)
movq %rcx, 0xa8(%rbx)
leaq 0xb8(%rbx), %rax
movl %ecx, 0xb8(%rbx)
movq %rcx, 0xc0(%rbx)
movq %rax, 0xc8(%rbx)
movq %rax, 0xd0(%rbx)
movq %rcx, 0xd8(%rbx)
leaq 0xe8(%rbx), %rax
movl %ecx, 0xe8(%rbx)
movq %rcx, 0xf0(%rbx)
movq %rax, 0xf8(%rbx)
movq %rax, 0x100(%rbx)
movq %rcx, 0x108(%rbx)
movq %rbx, 0x110(%rbx)
movq %r15, 0x118(%rbx)
leaq -0xc8(%rbp), %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x11192
movq (%r13), %rcx
movq 0x8(%r13), %rdx
movq (%r12), %r9
movq 0x8(%r12), %r8
movl $0x0, (%rsp)
leaq -0x58(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x11956
movq -0x58(%rbp), %rax
movq -0x50(%rbp), %rdi
testq %rdi, %rdi
movq -0x38(%rbp), %r14
je 0xaaf0
movq 0x2a4a2(%rip), %rcx     # 0x34f88
cmpb $0x0, (%rcx)
je 0xab04
incl 0x8(%rdi)
jmp 0xab08
movq (%rax), %rax
movups (%rax), %xmm0
movups 0xc(%rax), %xmm1
movups %xmm1, -0x74(%rbp)
movaps %xmm0, -0x80(%rbp)
jmp 0xab2d
lock
incl 0x8(%rdi)
movq (%rax), %rax
movups (%rax), %xmm0
movups 0xc(%rax), %xmm1
movups %xmm1, -0x74(%rbp)
movaps %xmm0, -0x80(%rbp)
callq 0x118ea
movq -0x50(%rbp), %rdi
testq %rdi, %rdi
je 0xab2d
callq 0x118ea
xorl %eax, %eax
cmpw $0x2, -0x80(%rbp)
setne %al
leal 0x2(,%rax,8), %eax
leaq -0x58(%rbp), %rsi
movl %eax, (%rsi)
movq %r14, %rdi
callq 0xc2ce
leaq -0x58(%rbp), %rsi
movl $0x1, (%rsi)
movq %r14, %rdi
callq 0xc36e
leaq -0x80(%rbp), %rsi
movq %r14, %rdi
callq 0xc40e
movq %r14, %rdi
movl $0x1000, %esi           # imm = 0x1000
callq 0xc4ae
leaq -0xc8(%rbp), %rdi
callq 0x133d2
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xabaa
jmp 0xabaa
jmp 0xabaa
movq %rax, %r12
jmp 0xabb9
movq %rax, %r12
jmp 0xabe1
movq %rax, %r12
jmp 0xabea
movq %rax, %r12
leaq -0xc8(%rbp), %rdi
callq 0x133d2
leaq 0x80(%rbx), %rdi
callq 0xc552
movq -0x40(%rbp), %rax
movq (%rax), %rdi
cmpq -0x30(%rbp), %rdi
je 0xabe1
movq -0x30(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x8520
movq -0x38(%rbp), %rdi
callq 0x1362a
movq %rbx, %rdi
callq 0xc57c
movq %r12, %rdi
callq 0x8830