// File: sighingnow[P]compile-pascal/./libparsec/combinator.hpp
// Function: times<parser_t<char>, char>::operator()[abi:cxx11](input_t*) const
tuple<int, parser_type const, string const> operator () (input_t *text) const {
        int cnt = 0, offset = 0;
        parser_type actual;
        string expected;
        while (cnt < maxt) {
            auto res = pa(text);
            if (get<0>(res) == -1) {
                if (cnt < mint) {
                    offset = -1; // failed.
                }
                break;
            }
            cnt = cnt + 1; // update counter.
            offset = offset + std::get<0>(res); // update length.
            actual.push_back(std::get<1>(res));
            expected += std::get<2>(res) + ", ";
            text = text->drop(std::get<0>(res)); // update text stream.
            if (cnt >= maxt) {
                break;
            }
        }
        return make_tuple(offset, actual, expected);
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x130, %rsp            # imm = 0x130
movq %rdi, -0x108(%rbp)
movq %rdi, %rax
movq %rax, -0x100(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xf8(%rbp)
movl $0x0, -0x1c(%rbp)
movl $0x0, -0x20(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x45830
leaq -0x58(%rbp), %rdi
callq 0x5490
movq -0xf8(%rbp), %rcx
movl -0x1c(%rbp), %eax
cmpl 0x4c(%rcx), %eax
jge 0x45789
movq -0xf8(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x80(%rbp), %rdi
callq 0x1b270
jmp 0x455fc
leaq -0x80(%rbp), %rdi
callq 0x1b380
cmpl $-0x1, (%rax)
jne 0x45648
movq -0xf8(%rbp), %rcx
movl -0x1c(%rbp), %eax
cmpl 0x48(%rcx), %eax
jge 0x45639
movl $0xffffffff, -0x20(%rbp) # imm = 0xFFFFFFFF
jmp 0x45639
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x457ee
movl $0x3, -0x90(%rbp)
jmp 0x45762
movl -0x1c(%rbp), %eax
incl %eax
movl %eax, -0x1c(%rbp)
movl -0x20(%rbp), %eax
movl %eax, -0x10c(%rbp)
leaq -0x80(%rbp), %rdi
movq %rdi, -0x118(%rbp)
callq 0x1b380
movq -0x118(%rbp), %rdi
movq %rax, %rcx
movl -0x10c(%rbp), %eax
movl (%rcx), %ecx
addl %ecx, %eax
movl %eax, -0x20(%rbp)
callq 0x1b3a0
movq %rax, %rsi
leaq -0x38(%rbp), %rdi
callq 0x45850
jmp 0x45693
leaq -0x80(%rbp), %rdi
callq 0x45940
movq %rax, %rsi
leaq 0xabe1f(%rip), %rdx     # 0xf14c5
leaq -0xb0(%rbp), %rdi
callq 0x458c0
jmp 0x456b4
leaq -0x58(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x5440
jmp 0x456c6
leaq -0xb0(%rbp), %rdi
callq 0x5200
movq -0x18(%rbp), %rax
movq %rax, -0x128(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x1b380
movq -0x128(%rbp), %rdi
movq %rax, %rsi
callq 0x1cb50
movq %rax, -0x120(%rbp)
jmp 0x456fe
movq -0xf8(%rbp), %rcx
movq -0x120(%rbp), %rax
movq %rax, -0x18(%rbp)
movl -0x1c(%rbp), %eax
cmpl 0x4c(%rcx), %eax
jl 0x45758
movl $0x3, -0x90(%rbp)
jmp 0x45762
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4577e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x5200
jmp 0x4577e
movl $0x0, -0x90(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x1b3f0
movl -0x90(%rbp), %eax
testl %eax, %eax
je 0x45779
jmp 0x45777
jmp 0x45789
jmp 0x455d3
leaq -0x80(%rbp), %rdi
callq 0x1b3f0
jmp 0x457ee
leaq -0xf0(%rbp), %rdi
leaq -0x20(%rbp), %rsi
leaq -0x38(%rbp), %rdx
leaq -0x58(%rbp), %rcx
callq 0x45960
jmp 0x457a3
movq -0x108(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x459a0
leaq -0xf0(%rbp), %rdi
callq 0x459d0
movl $0x1, -0x90(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x5200
leaq -0x38(%rbp), %rdi
callq 0x454b0
movq -0x100(%rbp), %rax
addq $0x130, %rsp            # imm = 0x130
popq %rbp
retq
leaq -0x58(%rbp), %rdi
callq 0x5200
leaq -0x38(%rbp), %rdi
callq 0x454b0
movq -0x88(%rbp), %rdi
callq 0x55b0
nopl (%rax)