// File: Joke-Shi[P]astrunc/sample/../include/astrunc.chars.h
// Function: astrunc::chars::next(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>>&)
bool astrunc::chars::next( const std::string &__s, std::string &__cs)
{
    bool rc = false;
    __cs.clear();

    if ( !__s.empty() && (this->pos__ < __s.size())) {
        std::size_t i      = this->pos__;
        std::size_t c_size = 0;

        unsigned char c = (unsigned char )__s[ i];

        if ( (0x00 <= c) && (0xC0 > c)) {
            c_size = 1;

        } else if ( (0xC0 <= c) && (0xE0 > c)) {
            c_size = 2;

        } else if ( (0xe0 <= c) && (0xF0 > c)) {
            c_size = 3;

        } else if ( (0xF0 <= c) && (0xF8 > c)) {
            c_size = 4;

        } else if ( (0xF8 <= c) && (0xFC > c)) {
            c_size = 5;

        } else if ( (0xFE <= c) && (0xFE > c)) {
            c_size = 6;

        } else {
            c_size = 7;
        }

        for ( std::size_t j = 0; j < c_size; j++) {
            __cs.push_back( __s[ i + j]);
        }

        this->pos__ += c_size;

        rc = true;
    }

    return rc;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x48(%rbp)
movb $0x0, -0x19(%rbp)
movq -0x18(%rbp), %rdi
callq 0x2230
movq -0x10(%rbp), %rdi
callq 0x2290
testb $0x1, %al
jne 0x4737
movq -0x48(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rdi
callq 0x20e0
movq %rax, %rcx
movq -0x50(%rbp), %rax
cmpq %rcx, %rax
jae 0x4737
movq -0x48(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq $0x0, -0x30(%rbp)
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x21e0
movb (%rax), %al
movb %al, -0x31(%rbp)
movzbl -0x31(%rbp), %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jg 0x4617
movzbl -0x31(%rbp), %ecx
movl $0xc0, %eax
cmpl %ecx, %eax
jle 0x4617
movq $0x1, -0x30(%rbp)
jmp 0x46e0
movzbl -0x31(%rbp), %ecx
movl $0xc0, %eax
cmpl %ecx, %eax
jg 0x463e
movzbl -0x31(%rbp), %ecx
movl $0xe0, %eax
cmpl %ecx, %eax
jle 0x463e
movq $0x2, -0x30(%rbp)
jmp 0x46de
movzbl -0x31(%rbp), %ecx
movl $0xe0, %eax
cmpl %ecx, %eax
jg 0x4662
movzbl -0x31(%rbp), %ecx
movl $0xf0, %eax
cmpl %ecx, %eax
jle 0x4662
movq $0x3, -0x30(%rbp)
jmp 0x46dc
movzbl -0x31(%rbp), %ecx
movl $0xf0, %eax
cmpl %ecx, %eax
jg 0x4686
movzbl -0x31(%rbp), %ecx
movl $0xf8, %eax
cmpl %ecx, %eax
jle 0x4686
movq $0x4, -0x30(%rbp)
jmp 0x46da
movzbl -0x31(%rbp), %ecx
movl $0xf8, %eax
cmpl %ecx, %eax
jg 0x46aa
movzbl -0x31(%rbp), %ecx
movl $0xfc, %eax
cmpl %ecx, %eax
jle 0x46aa
movq $0x5, -0x30(%rbp)
jmp 0x46d8
movzbl -0x31(%rbp), %ecx
movl $0xfe, %eax
cmpl %ecx, %eax
jg 0x46ce
movzbl -0x31(%rbp), %ecx
movl $0xfe, %eax
cmpl %ecx, %eax
jle 0x46ce
movq $0x6, -0x30(%rbp)
jmp 0x46d6
movq $0x7, -0x30(%rbp)
jmp 0x46d8
jmp 0x46da
jmp 0x46dc
jmp 0x46de
jmp 0x46e0
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x30(%rbp), %rax
jae 0x4725
movq -0x18(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
addq -0x40(%rbp), %rsi
callq 0x21e0
movq -0x58(%rbp), %rdi
movsbl (%rax), %esi
callq 0x2140
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x46e8
movq -0x48(%rbp), %rax
movq -0x30(%rbp), %rcx
addq (%rax), %rcx
movq %rcx, (%rax)
movb $0x1, -0x19(%rbp)
movb -0x19(%rbp), %al
andb $0x1, %al
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)