// File: /workspace/github_cpp_makefile_star2_O1/guoxuanhan[P]NetServer/echoserver.cpp
// Function: EchoServer::EchoServer(EventLoop*, int, int)
EchoServer::EchoServer(EventLoop* loop, const int port, const int threadnum)
    : tcpserver_(loop, port, threadnum)
{
    tcpserver_.SetNewConnCallback(std::bind(&EchoServer::HandleNewConnection, this, std::placeholders::_1));
    tcpserver_.SetMessageCallback(std::bind(&EchoServer::HandleMessage, this, std::placeholders::_1, std::placeholders::_2));
    tcpserver_.SetSendCompleteCallback(std::bind(&EchoServer::HandleSendComplete, this, std::placeholders::_1));
    tcpserver_.SetCloseCallback(std::bind(&EchoServer::HandleClose, this, std::placeholders::_1));
    tcpserver_.SetErrorCallback(std::bind(&EchoServer::HandleError, this, std::placeholders::_1));
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
callq 0xd3b8
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movaps %xmm0, (%rsp)
movl $0x18, %edi
callq 0x4350
leaq 0x2b8(%rip), %rcx       # 0x5142
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movq %rbx, 0x10(%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
leaq 0x582(%rip), %r14       # 0x5428
movq %r14, 0x18(%rsi)
leaq 0x593(%rip), %r15       # 0x5444
movq %r15, 0x10(%rsi)
leaq 0x128(%rbx), %rdi
callq 0x52a0
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x4ed8
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movaps %xmm0, (%rsp)
movl $0x18, %edi
callq 0x4350
leaq 0x291(%rip), %rcx       # 0x5186
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movq %rbx, 0x10(%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
leaq 0x5bf(%rip), %rax       # 0x54d0
movq %rax, 0x18(%rsi)
leaq 0x5d0(%rip), %rax       # 0x54ec
movq %rax, 0x10(%rsi)
leaq 0x148(%rbx), %rdi
callq 0x5364
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x4f43
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movaps %xmm0, (%rsp)
movl $0x18, %edi
callq 0x4350
leaq 0x2aa(%rip), %rcx       # 0x520a
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movq %rbx, 0x10(%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
movq %r14, 0x18(%rsi)
movq %r15, 0x10(%rsi)
leaq 0x168(%rbx), %rdi
callq 0x52a0
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x4fa0
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movaps %xmm0, (%rsp)
movl $0x18, %edi
callq 0x4350
leaq 0x24f(%rip), %rcx       # 0x520c
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movq %rbx, 0x10(%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
movq %r14, 0x18(%rsi)
movq %r15, 0x10(%rsi)
leaq 0x188(%rbx), %rdi
callq 0x52a0
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x4ffd
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movaps %xmm0, (%rsp)
movl $0x18, %edi
callq 0x4350
leaq 0x236(%rip), %rcx       # 0x5250
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movq %rbx, 0x10(%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
movq %r14, 0x18(%rsi)
movq %r15, 0x10(%rsi)
leaq 0x1a8(%rbx), %rdi
callq 0x52a0
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x505a
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
jmp 0x5126
jmp 0x5126
jmp 0x5126
jmp 0x5126
jmp 0x5126
movq %rax, %r14
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x5131
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x5131
jmp 0x5126
jmp 0x512e
movq %rax, %r14
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x5131
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x5131
jmp 0x5126
jmp 0x512e
movq %rax, %r14
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x5131
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x5131
jmp 0x5126
jmp 0x512e
movq %rax, %r14
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x5131
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x5131
jmp 0x5126
jmp 0x512e
movq %rax, %r14
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x5131
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x5131
movq %rax, %rdi
callq 0x4df2
movq %rax, %r14
movq %rbx, %rdi
callq 0xda44
movq %r14, %rdi
callq 0x45a0
nop