// File: /workspace/github_cpp_makefile_star2_O2/MisakiFx[P]P2PDownload/./httplib.h
// Function: httplib::Server::process_request(httplib::Stream&, bool, bool&)
inline bool Server::process_request(Stream &strm, bool last_connection,
            bool &connection_close) {
        const auto bufsiz = 2048;
        char buf[bufsiz];

        detail::stream_line_reader reader(strm, buf, bufsiz);

        // Connection has been closed on client
        if (!reader.getline()) { return false; }

        Request req;
        Response res;

        res.version = "HTTP/1.1";

        // Check if the request URI doesn't exceed the limit
        if (reader.size() > CPPHTTPLIB_REQUEST_URI_MAX_LENGTH) {
            res.status = 414;
            write_response(strm, last_connection, req, res);
            return true;
        }

        // Request line and headers
        if (!parse_request_line(reader.ptr(), req) ||
                !detail::read_headers(strm, req.headers)) {
            res.status = 400;
            write_response(strm, last_connection, req, res);
            return true;
        }

        if (req.get_header_value("Connection") == "close") {
            connection_close = true;
        }

        req.set_header("REMOTE_ADDR", strm.get_remote_addr().c_str());

        // Body
        if (req.method == "POST" || req.method == "PUT" || req.method == "PATCH") {
            bool exceed_payload_max_length = false;
            if (!detail::read_content(strm, req, payload_max_length_,
                        exceed_payload_max_length)) {
                res.status = exceed_payload_max_length ? 413 : 400;
                write_response(strm, last_connection, req, res);
                return !exceed_payload_max_length;
            }

            const auto &content_type = req.get_header_value("Content-Type");

            if (req.get_header_value("Content-Encoding") == "gzip") {
#ifdef CPPHTTPLIB_ZLIB_SUPPORT
                detail::decompress(req.body);
#else
                res.status = 415;
                write_response(strm, last_connection, req, res);
                return true;
#endif
            }

            if (!content_type.find("application/x-www-form-urlencoded")) {
                detail::parse_query_text(req.body, req.params);
            } else if (!content_type.find("multipart/form-data")) {
                std::string boundary;
                if (!detail::parse_multipart_boundary(content_type, boundary) ||
                        !detail::parse_multipart_formdata(boundary, req.body, req.files)) {
                    res.status = 400;
                    write_response(strm, last_connection, req, res);
                    return true;
                }
            }
        }

        if (routing(req, res)) {
            if (res.status == -1) { res.status = 200; }
        } else {
            //-------------------路由http路径失败-----------------
            res.status = 404;
        }

        write_response(strm, last_connection, req, res);
        return true;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xab8, %rsp            # imm = 0xAB8
movq %rcx, %r13
movl %edx, %r12d
movq %rsi, %r14
movq %rdi, %r15
leaq -0xb0(%rbp), %rbx
movq %rsi, -0x20(%rbx)
leaq -0xae0(%rbp), %rax
movq %rax, -0x18(%rbx)
movq $0x800, -0x10(%rbx)     # imm = 0x800
leaq -0xa0(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0xd0(%rbp), %rdi
callq 0x1b1ac
testb %al, %al
je 0x1afa1
movl %r12d, -0x30(%rbp)
leaq -0x2c8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
xorl %eax, %eax
movb %al, (%rcx)
leaq -0x2a8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x288(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x268(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x250(%rbp), %rcx
andl $0x0, (%rcx)
andq $0x0, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
andq $0x0, 0x20(%rcx)
leaq -0x218(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x200(%rbp), %rcx
andl $0x0, (%rcx)
andq $0x0, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
andq $0x0, 0x20(%rcx)
leaq -0x1d0(%rbp), %rcx
andl $0x0, (%rcx)
andq $0x0, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
xorps %xmm0, %xmm0
andq $0x0, 0x60(%rcx)
leaq -0x158(%rbp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %al, (%rdx)
orl $-0x1, 0x10(%rdx)
leaq -0x138(%rbp), %rdx
andl $0x0, (%rdx)
movups %xmm0, 0x50(%rcx)
andq $0x0, 0x8(%rdx)
movups %xmm0, 0x40(%rcx)
movups %xmm0, 0x30(%rcx)
movq %rdx, 0x10(%rdx)
movq %rdx, 0x18(%rdx)
andq $0x0, 0x20(%rdx)
leaq -0x100(%rbp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movups %xmm0, 0x20(%rcx)
movb %al, (%rdx)
movups %xmm0, 0x10(%rdx)
movups %xmm0, 0x20(%rdx)
leaq 0xa34c(%rip), %rsi      # 0x250ef
leaq -0x168(%rbp), %rdi
callq 0x8a40
movq -0xa8(%rbp), %rax
movq %rax, %rcx
testq %rax, %rax
jne 0x1adc5
movq -0xb8(%rbp), %rcx
movl $0x19e, %r12d           # imm = 0x19E
cmpq $0x2000, %rcx           # imm = 0x2000
ja 0x1b0b3
testq %rax, %rax
leaq -0xc8(%rbp), %rax
cmovneq %rbx, %rax
movq (%rax), %rsi
leaq -0x2d8(%rbp), %rdx
movq %r15, %rdi
callq 0x1b620
movl $0x190, %r12d           # imm = 0x190
testb %al, %al
je 0x1b0b3
leaq -0x258(%rbp), %rsi
movq %r14, %rdi
callq 0x1b8f0
testb %al, %al
je 0x1b0b3
leaq 0xa2d4(%rip), %rdx      # 0x250f8
leaq -0x50(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
xorl %ecx, %ecx
callq 0x147d2
leaq 0xa2c6(%rip), %rsi      # 0x25103
leaq -0x50(%rbp), %rdi
callq 0xe8a4
movl %eax, %r12d
leaq -0x50(%rbp), %rdi
callq 0x8aa8
testb %r12b, %r12b
je 0x1ae5c
movb $0x1, (%r13)
movq (%r14), %rax
leaq -0x50(%rbp), %rdi
movq %r14, %rsi
callq *0x28(%rax)
movl -0x30(%rbp), %r12d
movq -0x50(%rbp), %rdx
leaq 0xa291(%rip), %rsi      # 0x25109
leaq -0x2d8(%rbp), %rdi
callq 0x1bb24
leaq -0x2b8(%rbp), %r13
leaq -0x50(%rbp), %rdi
callq 0x8aa8
leaq 0xa27a(%rip), %rsi      # 0x25115
movq %r13, %rdi
callq 0xe8a4
testb %al, %al
jne 0x1aed1
leaq 0xa26c(%rip), %rsi      # 0x2511a
movq %r13, %rdi
callq 0xe8a4
testb %al, %al
jne 0x1aed1
leaq 0xa25d(%rip), %rsi      # 0x2511e
movq %r13, %rdi
callq 0xe8a4
testb %al, %al
je 0x1b084
leaq -0x29(%rbp), %rcx
movb $0x0, (%rcx)
movq 0x10(%r15), %rdx
xorps %xmm0, %xmm0
leaq -0x90(%rbp), %r8
movaps %xmm0, 0x10(%r8)
movaps %xmm0, (%r8)
leaq -0x2d8(%rbp), %rsi
movq %r14, %rdi
callq 0x1bb4f
movl %eax, %r13d
leaq -0x90(%rbp), %rdi
callq 0x16248
testb %r13b, %r13b
je 0x1afa9
leaq 0x9b6a(%rip), %rdx      # 0x24a87
leaq -0x50(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
xorl %ecx, %ecx
callq 0x147d2
leaq 0xa1ee(%rip), %rdx      # 0x25124
leaq -0x70(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
xorl %ecx, %ecx
callq 0x147d2
leaq 0xa1e6(%rip), %rsi      # 0x25135
leaq -0x70(%rbp), %r12
movq %r12, %rdi
callq 0xe8a4
movl %eax, %r13d
movq %r12, %rdi
callq 0x8aa8
testb %r13b, %r13b
je 0x1afe8
leaq -0x168(%rbp), %r8
movl $0x19f, 0x20(%r8)       # imm = 0x19F
movzbl -0x30(%rbp), %edx
leaq -0x2d8(%rbp), %rcx
movq %r15, %rdi
movq %r14, %rsi
callq 0x1b222
leaq -0x50(%rbp), %rdi
callq 0x8aa8
movb $0x1, %r13b
jmp 0x1b0da
xorl %r13d, %r13d
jmp 0x1b0f2
cmpb $0x0, -0x29(%rbp)
movl $0x19d, %eax            # imm = 0x19D
movl $0x190, %ecx            # imm = 0x190
cmovnel %eax, %ecx
leaq -0x168(%rbp), %r8
movl %ecx, 0x20(%r8)
movzbl %r12b, %edx
leaq -0x2d8(%rbp), %rcx
movq %r15, %rdi
movq %r14, %rsi
callq 0x1b222
movb -0x29(%rbp), %r13b
xorb $0x1, %r13b
jmp 0x1b0da
leaq -0x228(%rbp), %r13
leaq 0xa144(%rip), %rsi      # 0x2513a
leaq -0x50(%rbp), %rdi
xorl %edx, %edx
callq 0x8a70
testq %rax, %rax
movl -0x30(%rbp), %r12d
je 0x1b06c
leaq 0xa14b(%rip), %rsi      # 0x2515c
leaq -0x50(%rbp), %rdi
xorl %edx, %edx
callq 0x8a70
testq %rax, %rax
jne 0x1b07b
leaq -0x60(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0x50(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x1bcd3
testb %al, %al
je 0x1b10f
leaq -0x1d8(%rbp), %rdx
leaq -0x70(%rbp), %rdi
movq %r13, %rsi
callq 0x1bd3c
testb %al, %al
je 0x1b10f
leaq -0x70(%rbp), %rdi
callq 0x8aa8
jmp 0x1b07b
leaq -0x208(%rbp), %rsi
movq %r13, %rdi
callq 0x1bcb4
leaq -0x50(%rbp), %rdi
callq 0x8aa8
leaq -0x2d8(%rbp), %rsi
leaq -0x168(%rbp), %rdx
movq %r15, %rdi
callq 0x1c34a
movl $0x194, %r12d           # imm = 0x194
testb %al, %al
je 0x1b0b3
cmpl $-0x1, -0x148(%rbp)
jne 0x1b0ba
movl $0xc8, %r12d
movl %r12d, -0x148(%rbp)
movb $0x1, %r13b
movzbl -0x30(%rbp), %edx
leaq -0x2d8(%rbp), %rcx
leaq -0x168(%rbp), %r8
movq %r15, %rdi
movq %r14, %rsi
callq 0x1b222
leaq -0x168(%rbp), %rdi
callq 0x16cfc
leaq -0x2d8(%rbp), %rdi
callq 0x165a0
movq %rbx, %rdi
callq 0x8aa8
movl %r13d, %eax
addq $0xab8, %rsp            # imm = 0xAB8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq -0x168(%rbp), %r8
movl $0x190, 0x20(%r8)       # imm = 0x190
movzbl %r12b, %edx
leaq -0x2d8(%rbp), %rcx
movq %r15, %rdi
movq %r14, %rsi
callq 0x1b222
leaq -0x70(%rbp), %rdi
callq 0x8aa8
jmp 0x1af90
movq %rax, %r14
leaq -0x70(%rbp), %rdi
callq 0x8aa8
jmp 0x1b16c
jmp 0x1b169
jmp 0x1b169
jmp 0x1b180
jmp 0x1b180
movq %rax, %r14
leaq -0x90(%rbp), %rdi
callq 0x16248
jmp 0x1b183
movq %rax, %r14
leaq -0x50(%rbp), %rdi
callq 0x8aa8
jmp 0x1b183
jmp 0x1b180
jmp 0x1b180
movq %rax, %r14
jmp 0x1b19b
movq %rax, %r14
leaq -0x168(%rbp), %rdi
callq 0x16cfc
leaq -0x2d8(%rbp), %rdi
callq 0x165a0
movq %rbx, %rdi
callq 0x8aa8
movq %r14, %rdi
callq 0x8990
nop