// File: trisolaris233[P]httpc/src/connection.hpp
// Function: httpc::Connection::HandleReadBody(boost::system::error_code const&, unsigned long)
void HandleReadBody(boost::system::error_code const& ec, std::size_t bytes_transferred) {
            debug().dg("HandleReadBody() member function").lf();
        
            // debug().dg(this->request_).lf();

            // judge if user would like to receive the next file
            // if (this->request_.RecvNextFileOrNot()) {
            this->parser_.ParseBody(
                this->request_,
                this->buffer_.data(), 
                this->buffer_.data() + bytes_transferred
            );
            this->parser_.ParseFormData(
                this->request_,
                this->buffer_.data(), 
                this->buffer_.data() + bytes_transferred
            );
            debug().dg("parse post body complete").lf();
            // debug().dg(this->request_).lf();
            auto itr = this->response_.FindHeader("Content-Length");
            if (itr != this->response_.HeaderCEnd()) {
                debug().dg("Response Content-Length => ").dg(itr->value).lf();
            }
            // complete the parsement
            this->http_router_.Route(
                this->request_.method,
                this->request_.uri.GetUri(), 
                this->request_, 
                this->response_
            );
            // }
            
            // this->CheckKeepAlive_();

            // this->request_.uri.Update();
                // debug().dg(this->request_.uri.GetUri()).lf();
            
            //debug().dg(this->response_).lf();
            this->handler_.Respond(
                this->request_,
                this->response_
            );
            this->DoWrite();
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x40(%rbp)
leaq -0x19(%rbp), %rdi
leaq 0x177a2(%rip), %rsi     # 0x59f8c
callq 0x429d0
movq %rax, %rdi
callq 0x2cc60
movq -0x40(%rbp), %rdi
movq %rdi, %rax
addq $0x268, %rax            # imm = 0x268
movq %rax, -0x70(%rbp)
movq %rdi, %rax
addq $0x2a8, %rax            # imm = 0x2A8
movq %rax, -0x68(%rbp)
addq $0x68, %rdi
callq 0x30800
movq -0x40(%rbp), %rdi
movq %rax, -0x60(%rbp)
addq $0x68, %rdi
callq 0x30800
movq -0x70(%rbp), %rdi
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
movq %rax, %rcx
addq -0x18(%rbp), %rcx
callq 0x429f0
movq -0x40(%rbp), %rdi
movq %rdi, %rax
addq $0x268, %rax            # imm = 0x268
movq %rax, -0x58(%rbp)
movq %rdi, %rax
addq $0x2a8, %rax            # imm = 0x2A8
movq %rax, -0x50(%rbp)
addq $0x68, %rdi
callq 0x30800
movq -0x40(%rbp), %rdi
movq %rax, -0x48(%rbp)
addq $0x68, %rdi
callq 0x30800
movq -0x58(%rbp), %rdi
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq %rax, %rcx
addq -0x18(%rbp), %rcx
callq 0x434d0
leaq -0x1a(%rbp), %rdi
leaq 0x1770b(%rip), %rsi     # 0x59fad
callq 0x2cd30
movq %rax, %rdi
callq 0x2cc60
movq -0x40(%rbp), %rdi
addq $0x3d0, %rdi            # imm = 0x3D0
leaq 0x16f03(%rip), %rsi     # 0x597c4
callq 0x43b90
movq -0x40(%rbp), %rdi
movq %rax, -0x28(%rbp)
addq $0x3d0, %rdi            # imm = 0x3D0
callq 0x43c20
movq %rax, -0x30(%rbp)
leaq -0x28(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x14d60
testb $0x1, %al
jne 0x428f1
jmp 0x42926
leaq -0x31(%rbp), %rdi
leaq 0x176ca(%rip), %rsi     # 0x59fc6
callq 0x43c50
movq %rax, -0x78(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x31450
movq -0x78(%rbp), %rdi
movq %rax, %rsi
addq $0x20, %rsi
callq 0x43c70
movq %rax, %rdi
callq 0x2cc60
movq -0x40(%rbp), %rdi
movq 0x10(%rdi), %rax
movq %rax, -0x88(%rbp)
movq %rdi, %rax
addq $0x2a8, %rax            # imm = 0x2A8
movq %rax, -0x80(%rbp)
addq $0x2a8, %rdi            # imm = 0x2A8
addq $0x20, %rdi
callq 0x312f0
movq -0x88(%rbp), %rdi
movq -0x80(%rbp), %rsi
movq -0x40(%rbp), %r8
movq %rax, %rdx
movq %r8, %rcx
addq $0x2a8, %rcx            # imm = 0x2A8
addq $0x3d0, %r8             # imm = 0x3D0
callq 0x30d80
movq -0x40(%rbp), %rdx
movq %rdx, %rdi
addq $0x490, %rdi            # imm = 0x490
movq %rdx, %rsi
addq $0x2a8, %rsi            # imm = 0x2A8
addq $0x3d0, %rdx            # imm = 0x3D0
callq 0x56d00
movq -0x40(%rbp), %rdi
callq 0x31310
addq $0x90, %rsp
popq %rbp
retq