// File: sighingnow[P]compile-pascal/./libparsec/combinator.hpp
// Function: skip<compose<mapfn<many<parser_t<char>, char>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<char, std::allocator<char>>>, joint<joint<optional<parser_t<pl0_ast_const_stmt*>, pl0_ast_const_stmt*>, optional<parser_t<pl0_ast_var_stmt*>, pl0_ast_var_stmt*>, pl0_ast_const_stmt*, pl0_ast_var_stmt*>, joint<many<parser_t<pl0_ast_executable*>, pl0_ast_executable*>, parser_t<pl0_ast_compound_stmt*>, std::vector<pl0_ast_executable*, std::allocator<pl0_ast_executable*>>, pl0_ast_compound_stmt*>, std::pair<pl0_ast_const_stmt*, pl0_ast_var_stmt*>, std::pair<std::vector<pl0_ast_executable*, std::allocator<pl0_ast_executable*>>, pl0_ast_compound_stmt*>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::pair<std::pair<pl0_ast_const_stmt*, pl0_ast_var_stmt*>, std::pair<std::vector<pl0_ast_executable*, std::allocator<pl0_ast_executable*>>, pl0_ast_compound_stmt*>>>, mapfn<many<parser_t<char>, char>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<char, std::allocator<char>>>, std::pair<std::pair<pl0_ast_const_stmt*, pl0_ast_var_stmt*>, std::pair<std::vector<pl0_ast_executable*, std::allocator<pl0_ast_executable*>>, pl0_ast_compound_stmt*>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>::operator()(input_t*) const
tuple<int, parser_type const, string const> operator () (input_t *text) const {
        auto res1 = pa(text);
        if (std::get<0>(res1) == -1) {
            return make_tuple(-1, parser_type(), name());
        }
        auto res2 = pb(text->drop(std::get<0>(res1)));
        if (std::get<0>(res2) == -1) {
            return make_tuple(-1, parser_type(), name());
        }
        // the `skip` combinator DOES consume the end flag. see also `ends_with` combinator.
        return make_tuple(std::get<0>(res1) + std::get<0>(res2), std::get<1>(res1), name());
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x300, %rsp            # imm = 0x300
movq %rdi, -0x2c8(%rbp)
movq %rdi, %rax
movq %rax, -0x2c0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rsi
movq %rsi, -0x2b8(%rbp)
movq -0x18(%rbp), %rdx
leaq -0x70(%rbp), %rdi
callq 0x47030
leaq -0x70(%rbp), %rdi
callq 0x1b180
cmpl $-0x1, (%rax)
jne 0x1ae62
movl $0xffffffff, -0xcc(%rbp) # imm = 0xFFFFFFFF
leaq -0x100(%rbp), %rdi
callq 0x47440
jmp 0x1ad8a
movq -0x2b8(%rbp), %rsi
leaq -0x130(%rbp), %rdi
callq 0x47470
jmp 0x1ad9f
leaq -0xc8(%rbp), %rdi
leaq -0xcc(%rbp), %rsi
leaq -0x100(%rbp), %rdx
leaq -0x130(%rbp), %rcx
callq 0x47400
jmp 0x1adc2
movq -0x2c8(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x474e0
leaq -0xc8(%rbp), %rdi
callq 0x47510
leaq -0x130(%rbp), %rdi
callq 0x5200
leaq -0x100(%rbp), %rdi
callq 0x2e8b0
movl $0x1, -0x134(%rbp)
jmp 0x1b0b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x1b0d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x1ae51
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x5200
leaq -0x100(%rbp), %rdi
callq 0x2e8b0
jmp 0x1b0d1
movq -0x2b8(%rbp), %rax
addq $0x188, %rax            # imm = 0x188
movq %rax, -0x2e0(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x2d8(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x1b180
movq -0x2d8(%rbp), %rdi
movq %rax, %rsi
callq 0x1cb50
movq %rax, -0x2d0(%rbp)
jmp 0x1aea2
movq -0x2d0(%rbp), %rdx
movq -0x2e0(%rbp), %rsi
leaq -0x180(%rbp), %rdi
callq 0x44390
jmp 0x1aebe
leaq -0x180(%rbp), %rdi
callq 0x1c110
cmpl $-0x1, (%rax)
jne 0x1afc3
movl $0xffffffff, -0x1dc(%rbp) # imm = 0xFFFFFFFF
leaq -0x210(%rbp), %rdi
callq 0x47440
jmp 0x1aeeb
movq -0x2b8(%rbp), %rsi
leaq -0x230(%rbp), %rdi
callq 0x47470
jmp 0x1af00
leaq -0x1d8(%rbp), %rdi
leaq -0x1dc(%rbp), %rsi
leaq -0x210(%rbp), %rdx
leaq -0x230(%rbp), %rcx
callq 0x47400
jmp 0x1af23
movq -0x2c8(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
callq 0x474e0
leaq -0x1d8(%rbp), %rdi
callq 0x47510
leaq -0x230(%rbp), %rdi
callq 0x5200
leaq -0x210(%rbp), %rdi
callq 0x2e8b0
movl $0x1, -0x134(%rbp)
jmp 0x1b09c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x1b0aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x1afb2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x5200
leaq -0x210(%rbp), %rdi
callq 0x2e8b0
jmp 0x1b0aa
leaq -0x70(%rbp), %rdi
movq %rdi, -0x2f8(%rbp)
callq 0x1b180
movl (%rax), %eax
movl %eax, -0x2ec(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x1c110
movq -0x2f8(%rbp), %rdi
movq %rax, %rcx
movl -0x2ec(%rbp), %eax
movl (%rcx), %ecx
addl %ecx, %eax
movl %eax, -0x28c(%rbp)
callq 0x1b1a0
movq -0x2b8(%rbp), %rsi
movq %rax, -0x2e8(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x47470
jmp 0x1b022
movq -0x2e8(%rbp), %rdx
leaq -0x288(%rbp), %rdi
leaq -0x28c(%rbp), %rsi
leaq -0x2b0(%rbp), %rcx
callq 0x47530
jmp 0x1b045
movq -0x2c8(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x474e0
leaq -0x288(%rbp), %rdi
callq 0x47510
leaq -0x2b0(%rbp), %rdi
callq 0x5200
movl $0x1, -0x134(%rbp)
jmp 0x1b09c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x5200
jmp 0x1b0aa
leaq -0x180(%rbp), %rdi
callq 0x1c190
jmp 0x1b0b8
leaq -0x180(%rbp), %rdi
callq 0x1c190
jmp 0x1b0d1
leaq -0x70(%rbp), %rdi
callq 0x1b220
movq -0x2c0(%rbp), %rax
addq $0x300, %rsp            # imm = 0x300
popq %rbp
retq
leaq -0x70(%rbp), %rdi
callq 0x1b220
movq -0x108(%rbp), %rdi
callq 0x55b0
nopw %cs:(%rax,%rax)