// File: cybozu[P]yrmcds/src/memcache/memcache.cpp
// Function: yrmcds::memcache::text_request::parse_flushall(char const*, char const*)
inline void
text_request::parse_flushall(const char* b, const char* e) noexcept {
    m_exptime = g_current_time.load(relaxed);

    while( *b == SP ) ++b;
    if( b == e ) {
        m_valid = true;
        return;
    }

    if( '0' <= *b && *b <= '9' ) {
        const char* exp_end = cfind(b, SP, e-b);
        if( exp_end == nullptr ) exp_end = e;
        bool result;
        std::time_t t = to_uint<std::time_t>(b, result);
        if( ! result ) return;
        m_exptime = (t > EXPTIME_THRESHOLD) ? t :
            (g_current_time.load(relaxed) + t);
        b = exp_end;
    }

    while( *b == SP ) ++b;
    if( b != e ) {
        // noreply ?
        const char* we = cfind(b, SP, e-b);
        std::size_t noreply_len = (we != nullptr) ? (we - b) : (e - b);
        if( noreply_len != 7 ) return;
        if( std::memcmp(b, "noreply", 7) != 0 ) return;
        m_no_reply = true;
        b = (we != nullptr) ? we : e;
    }

    while( *b == SP ) ++b;
    if( b != e ) return; // garbage left

    m_valid = true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x38(%rbp)
movq %rsi, -0x40(%rbp)
movq %rdx, -0x48(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x88(%rbp)
leaq 0x3ad67(%rip), %rax     # 0xaffc0
movq %rax, -0x8(%rbp)
movl $0x0, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x80(%rbp)
movl -0xc(%rbp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x104e0
movl %eax, -0x10(%rbp)
movl -0xc(%rbp), %eax
movl %eax, -0x74(%rbp)
decl %eax
subl $0x2, %eax
jb 0x752a2
jmp 0x7528b
movl -0x74(%rbp), %eax
subl $0x5, %eax
je 0x752af
jmp 0x75295
movq -0x80(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x752ba
movq -0x80(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x752ba
movq -0x80(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x88(%rbp), %rax
movq -0x18(%rbp), %rcx
movq %rcx, 0x38(%rax)
movq -0x40(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x20, %eax
jne 0x752e3
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x752c9
movq -0x40(%rbp), %rax
cmpq -0x48(%rbp), %rax
jne 0x752fd
movq -0x88(%rbp), %rax
movb $0x1, 0x1c(%rax)
jmp 0x75545
movq -0x40(%rbp), %rax
movsbl (%rax), %ecx
movl $0x30, %eax
cmpl %ecx, %eax
jg 0x75436
movq -0x40(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x39, %eax
jg 0x75436
movq -0x40(%rbp), %rdi
movq -0x48(%rbp), %rdx
movq -0x40(%rbp), %rax
subq %rax, %rdx
movl $0x20, %esi
callq 0x63090
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x50(%rbp)
jne 0x7534d
movq -0x48(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x40(%rbp), %rdi
leaq -0x51(%rbp), %rsi
callq 0x74d40
movq %rax, -0x90(%rbp)
jmp 0x75363
movq -0x90(%rbp), %rax
movq %rax, -0x60(%rbp)
testb $0x1, -0x51(%rbp)
jne 0x75379
jmp 0x75545
cmpq $0x278d00, -0x60(%rbp)  # imm = 0x278D00
jle 0x75393
movq -0x60(%rbp), %rax
movq %rax, -0x98(%rbp)
jmp 0x7541c
leaq 0x3ac26(%rip), %rax     # 0xaffc0
movq %rax, -0x20(%rbp)
movl $0x0, -0x24(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0xa8(%rbp)
movl -0x24(%rbp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x104e0
movl %eax, -0x28(%rbp)
movl -0x24(%rbp), %eax
movl %eax, -0x9c(%rbp)
decl %eax
subl $0x2, %eax
jb 0x753ef
jmp 0x753d2
movl -0x9c(%rbp), %eax
subl $0x5, %eax
je 0x753ff
jmp 0x753df
movq -0xa8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x7540d
movq -0xa8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x7540d
movq -0xa8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
addq -0x60(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x88(%rbp), %rax
movq -0x98(%rbp), %rcx
movq %rcx, 0x38(%rax)
movq -0x50(%rbp), %rax
movq %rax, -0x40(%rbp)
jmp 0x75438
movq -0x40(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x20, %eax
jne 0x75452
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x75438
movq -0x40(%rbp), %rax
cmpq -0x48(%rbp), %rax
je 0x75512
movq -0x40(%rbp), %rdi
movq -0x48(%rbp), %rdx
movq -0x40(%rbp), %rax
subq %rax, %rdx
movl $0x20, %esi
callq 0x63090
movq %rax, -0x68(%rbp)
cmpq $0x0, -0x68(%rbp)
je 0x75498
movq -0x68(%rbp), %rax
movq -0x40(%rbp), %rcx
subq %rcx, %rax
movq %rax, -0xb0(%rbp)
jmp 0x754aa
movq -0x48(%rbp), %rax
movq -0x40(%rbp), %rcx
subq %rcx, %rax
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rax
movq %rax, -0x70(%rbp)
cmpq $0x7, -0x70(%rbp)
je 0x754c1
jmp 0x75545
movq -0x40(%rbp), %rdi
leaq 0x8bdd(%rip), %rsi      # 0x7e0a9
movl $0x7, %edx
callq 0x8280
cmpl $0x0, %eax
je 0x754dd
jmp 0x75545
movq -0x88(%rbp), %rax
movb $0x1, 0x1d(%rax)
cmpq $0x0, -0x68(%rbp)
je 0x754fc
movq -0x68(%rbp), %rax
movq %rax, -0xb8(%rbp)
jmp 0x75507
movq -0x48(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rax
movq %rax, -0x40(%rbp)
jmp 0x75514
movq -0x40(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x20, %eax
jne 0x7552e
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x75514
movq -0x40(%rbp), %rax
cmpq -0x48(%rbp), %rax
je 0x7553a
jmp 0x75545
movq -0x88(%rbp), %rax
movb $0x1, 0x1c(%rax)
addq $0xc0, %rsp
popq %rbp
retq
movq %rax, %rdi
callq 0xa7e0
nopw %cs:(%rax,%rax)