// File: halfflat[P]tinyopt/test/test_parsers.cc
// Function: tinyopt_delimited_Test::TestBody()
TEST(tinyopt, delimited) {
    using ivector = std::vector<int>;
    auto parser = to::delimited<int>('/');

    auto p1 = parser("1/2/3");
    ASSERT_TRUE(p1);
    EXPECT_EQ((ivector{1, 2, 3}),*p1);

    auto p2 = parser("");
    ASSERT_TRUE(p2);
    EXPECT_EQ((ivector{}),*p2);

    EXPECT_FALSE(parser("/2"));
    EXPECT_FALSE(parser("1/"));
    EXPECT_FALSE(parser("1a/2"));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x310, %rsp            # imm = 0x310
movq %rdi, -0x8(%rbp)
movl $0x2f, %edi
callq 0x5a120
movb %al, -0xa(%rbp)
leaq 0x73db3(%rip), %rdx     # 0xcadf6
leaq -0x30(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
leaq -0xa(%rbp), %rsi
callq 0x5a150
movq -0x2c0(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
leaq -0x40(%rbp), %rdi
callq 0x5a440
jmp 0x5706d
leaq -0x40(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x2c1(%rbp)
jmp 0x5707e
movb -0x2c1(%rbp), %al
testb $0x1, %al
jne 0x5708a
jmp 0x570b1
jmp 0x57186
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x57c1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x57282
leaq -0x58(%rbp), %rdi
callq 0x84210
jmp 0x570bc
leaq 0x73c9b(%rip), %rdx     # 0xcad5e
leaq 0x71385(%rip), %rcx     # 0xc844f
leaq 0x71384(%rip), %r8      # 0xc8455
leaq -0x80(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x7d210
jmp 0x570e0
leaq -0x80(%rbp), %rdi
callq 0x102c0
movq %rax, %r8
leaq 0x73bd6(%rip), %rdx     # 0xcacc9
leaq -0x60(%rbp), %rdi
movl $0x2, %esi
movl $0x45, %ecx
callq 0x80580
jmp 0x57108
leaq -0x60(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x7d370
jmp 0x57117
leaq -0x60(%rbp), %rdi
callq 0x80600
leaq -0x80(%rbp), %rdi
callq 0x10fc8
leaq -0x58(%rbp), %rdi
callq 0x1d500
movl $0x1, -0x84(%rbp)
jmp 0x57190
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x57178
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5716f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x80600
leaq -0x80(%rbp), %rdi
callq 0x10fc8
leaq -0x58(%rbp), %rdi
callq 0x1d500
jmp 0x57282
movl $0x0, -0x84(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x1d520
movl -0x84(%rbp), %eax
testl %eax, %eax
jne 0x57bf0
jmp 0x571a9
movl $0x1, -0xcc(%rbp)
movl $0x2, -0xc8(%rbp)
movl $0x3, -0xc4(%rbp)
leaq -0xcc(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq $0x3, -0xb8(%rbp)
leaq -0xcd(%rbp), %rdi
movq %rdi, -0x2d0(%rbp)
callq 0x5a4d0
movq -0x2d0(%rbp), %rcx
movq -0xc0(%rbp), %rsi
movq -0xb8(%rbp), %rdx
leaq -0xb0(%rbp), %rdi
callq 0x5a4f0
jmp 0x57216
leaq -0x30(%rbp), %rdi
callq 0x5a570
movq %rax, %r8
leaq 0x73bd3(%rip), %rsi     # 0xcadfc
leaq 0x73b2d(%rip), %rdx     # 0xcad5d
leaq -0x98(%rbp), %rdi
leaq -0xb0(%rbp), %rcx
callq 0x5a480
jmp 0x57245
leaq -0xb0(%rbp), %rdi
callq 0x5a590
leaq -0xcd(%rbp), %rdi
callq 0x5a5f0
leaq -0x98(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x2d1(%rbp)
jmp 0x57271
movb -0x2d1(%rbp), %al
testb $0x1, %al
jne 0x5727d
jmp 0x572d8
jmp 0x57384
leaq -0x40(%rbp), %rdi
callq 0x1d520
jmp 0x57c1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x572b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x5a590
leaq -0xcd(%rbp), %rdi
callq 0x5a5f0
jmp 0x57c1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x573e7
leaq -0xd8(%rbp), %rdi
callq 0x84210
jmp 0x572e6
leaq -0x98(%rbp), %rdi
callq 0x1d620
movq %rax, -0x2e0(%rbp)
jmp 0x572fb
movq -0x2e0(%rbp), %r8
leaq 0x739c0(%rip), %rdx     # 0xcacc9
leaq -0xe0(%rbp), %rdi
movl $0x1, %esi
movl $0x46, %ecx
callq 0x80580
jmp 0x57321
leaq -0xe0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x7d370
jmp 0x57336
leaq -0xe0(%rbp), %rdi
callq 0x80600
leaq -0xd8(%rbp), %rdi
callq 0x1d500
jmp 0x57384
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x57376
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x80600
leaq -0xd8(%rbp), %rdi
callq 0x1d500
jmp 0x573e7
leaq -0x98(%rbp), %rdi
callq 0x1d520
leaq 0x73f70(%rip), %rdx     # 0xcb307
leaq -0x100(%rbp), %rdi
leaq -0xa(%rbp), %rsi
callq 0x5a150
jmp 0x573a9
xorl %eax, %eax
movl %eax, %edx
leaq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x5a440
jmp 0x573c2
leaq -0x110(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x2e1(%rbp)
jmp 0x573d6
movb -0x2e1(%rbp), %al
testb $0x1, %al
jne 0x573e2
jmp 0x5741a
jmp 0x57516
leaq -0x98(%rbp), %rdi
callq 0x1d520
jmp 0x57c1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x57c0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x575c7
leaq -0x118(%rbp), %rdi
callq 0x84210
jmp 0x57428
leaq 0x7396f(%rip), %rdx     # 0xcad9e
leaq 0x71019(%rip), %rcx     # 0xc844f
leaq 0x71018(%rip), %r8      # 0xc8455
leaq -0x140(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x7d210
jmp 0x57452
leaq -0x140(%rbp), %rdi
callq 0x102c0
movq %rax, %r8
leaq 0x73861(%rip), %rdx     # 0xcacc9
leaq -0x120(%rbp), %rdi
movl $0x2, %esi
movl $0x49, %ecx
callq 0x80580
jmp 0x57480
leaq -0x120(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x7d370
jmp 0x57495
leaq -0x120(%rbp), %rdi
callq 0x80600
leaq -0x140(%rbp), %rdi
callq 0x10fc8
leaq -0x118(%rbp), %rdi
callq 0x1d500
movl $0x1, -0x84(%rbp)
jmp 0x57520
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x57505
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x574f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x80600
leaq -0x140(%rbp), %rdi
callq 0x10fc8
leaq -0x118(%rbp), %rdi
callq 0x1d500
jmp 0x575c7
movl $0x0, -0x84(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x1d520
movl -0x84(%rbp), %eax
testl %eax, %eax
jne 0x57be4
jmp 0x5753c
xorps %xmm0, %xmm0
movaps %xmm0, -0x170(%rbp)
movq $0x0, -0x160(%rbp)
leaq -0x170(%rbp), %rdi
movq %rdi, -0x2f0(%rbp)
callq 0x5a610
leaq -0x100(%rbp), %rdi
callq 0x5a570
movq -0x2f0(%rbp), %rcx
movq %rax, %r8
leaq 0x7388e(%rip), %rsi     # 0xcae0f
leaq 0x73815(%rip), %rdx     # 0xcad9d
leaq -0x150(%rbp), %rdi
callq 0x5a480
jmp 0x57596
leaq -0x170(%rbp), %rdi
callq 0x5a590
leaq -0x150(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x2f1(%rbp)
jmp 0x575b6
movb -0x2f1(%rbp), %al
testb $0x1, %al
jne 0x575c2
jmp 0x57606
jmp 0x576b5
leaq -0x110(%rbp), %rdi
callq 0x1d520
jmp 0x57c0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x5a590
jmp 0x57c0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x57738
leaq -0x178(%rbp), %rdi
callq 0x84210
jmp 0x57614
leaq -0x150(%rbp), %rdi
callq 0x1d620
movq %rax, -0x300(%rbp)
jmp 0x57629
movq -0x300(%rbp), %r8
leaq 0x73692(%rip), %rdx     # 0xcacc9
leaq -0x180(%rbp), %rdi
movl $0x1, %esi
movl $0x4a, %ecx
callq 0x80580
jmp 0x5764f
leaq -0x180(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x7d370
jmp 0x57664
leaq -0x180(%rbp), %rdi
callq 0x80600
leaq -0x178(%rbp), %rdi
callq 0x1d500
jmp 0x576b5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x576a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x80600
leaq -0x178(%rbp), %rdi
callq 0x1d500
jmp 0x57738
leaq -0x150(%rbp), %rdi
callq 0x1d520
leaq 0x73772(%rip), %rdx     # 0xcae3a
leaq -0x1b8(%rbp), %rdi
leaq -0xa(%rbp), %rsi
callq 0x5a150
jmp 0x576da
leaq -0x1b8(%rbp), %rdi
callq 0x5a630
xorb $0x1, %al
movb %al, -0x191(%rbp)
xorl %eax, %eax
movl %eax, %edx
leaq -0x190(%rbp), %rdi
leaq -0x191(%rbp), %rsi
callq 0x1d4a0
jmp 0x57707
leaq -0x1b8(%rbp), %rdi
callq 0x5a650
leaq -0x190(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x301(%rbp)
jmp 0x57727
movb -0x301(%rbp), %al
testb $0x1, %al
jne 0x57733
jmp 0x57777
jmp 0x57869
leaq -0x150(%rbp), %rdi
callq 0x1d520
jmp 0x57c0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x5a650
jmp 0x57c0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x578ec
leaq -0x1c0(%rbp), %rdi
callq 0x84210
jmp 0x57785
leaq 0x7368f(%rip), %rdx     # 0xcae1b
leaq 0x70cc2(%rip), %rcx     # 0xc8455
leaq 0x70cb5(%rip), %r8      # 0xc844f
leaq -0x1e8(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0x7d210
jmp 0x577af
leaq -0x1e8(%rbp), %rdi
callq 0x102c0
movq %rax, %r8
leaq 0x73504(%rip), %rdx     # 0xcacc9
leaq -0x1c8(%rbp), %rdi
movl $0x1, %esi
movl $0x4c, %ecx
callq 0x80580
jmp 0x577dd
leaq -0x1c8(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x7d370
jmp 0x577f2
leaq -0x1c8(%rbp), %rdi
callq 0x80600
leaq -0x1e8(%rbp), %rdi
callq 0x10fc8
leaq -0x1c0(%rbp), %rdi
callq 0x1d500
jmp 0x57869
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x57858
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5784c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x80600
leaq -0x1e8(%rbp), %rdi
callq 0x10fc8
leaq -0x1c0(%rbp), %rdi
callq 0x1d500
jmp 0x578ec
leaq -0x190(%rbp), %rdi
callq 0x1d520
leaq 0x735ac(%rip), %rdx     # 0xcae28
leaq -0x220(%rbp), %rdi
leaq -0xa(%rbp), %rsi
callq 0x5a150
jmp 0x5788e
leaq -0x220(%rbp), %rdi
callq 0x5a630
xorb $0x1, %al
movb %al, -0x1f9(%rbp)
xorl %eax, %eax
movl %eax, %edx
leaq -0x1f8(%rbp), %rdi
leaq -0x1f9(%rbp), %rsi
callq 0x1d4a0
jmp 0x578bb
leaq -0x220(%rbp), %rdi
callq 0x5a650
leaq -0x1f8(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x302(%rbp)
jmp 0x578db
movb -0x302(%rbp), %al
testb $0x1, %al
jne 0x578e7
jmp 0x5792b
jmp 0x57a1d
leaq -0x190(%rbp), %rdi
callq 0x1d520
jmp 0x57c0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x5a650
jmp 0x57c0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x57aa0
leaq -0x228(%rbp), %rdi
callq 0x84210
jmp 0x57939
leaq 0x734eb(%rip), %rdx     # 0xcae2b
leaq 0x70b0e(%rip), %rcx     # 0xc8455
leaq 0x70b01(%rip), %r8      # 0xc844f
leaq -0x250(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x7d210
jmp 0x57963
leaq -0x250(%rbp), %rdi
callq 0x102c0
movq %rax, %r8
leaq 0x73350(%rip), %rdx     # 0xcacc9
leaq -0x230(%rbp), %rdi
movl $0x1, %esi
movl $0x4d, %ecx
callq 0x80580
jmp 0x57991
leaq -0x230(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x7d370
jmp 0x579a6
leaq -0x230(%rbp), %rdi
callq 0x80600
leaq -0x250(%rbp), %rdi
callq 0x10fc8
leaq -0x228(%rbp), %rdi
callq 0x1d500
jmp 0x57a1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x57a0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x57a00
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x80600
leaq -0x250(%rbp), %rdi
callq 0x10fc8
leaq -0x228(%rbp), %rdi
callq 0x1d500
jmp 0x57aa0
leaq -0x1f8(%rbp), %rdi
callq 0x1d520
leaq 0x73408(%rip), %rdx     # 0xcae38
leaq -0x288(%rbp), %rdi
leaq -0xa(%rbp), %rsi
callq 0x5a150
jmp 0x57a42
leaq -0x288(%rbp), %rdi
callq 0x5a630
xorb $0x1, %al
movb %al, -0x261(%rbp)
xorl %eax, %eax
movl %eax, %edx
leaq -0x260(%rbp), %rdi
leaq -0x261(%rbp), %rsi
callq 0x1d4a0
jmp 0x57a6f
leaq -0x288(%rbp), %rdi
callq 0x5a650
leaq -0x260(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x303(%rbp)
jmp 0x57a8f
movb -0x303(%rbp), %al
testb $0x1, %al
jne 0x57a9b
jmp 0x57adf
jmp 0x57bce
leaq -0x1f8(%rbp), %rdi
callq 0x1d520
jmp 0x57c0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x5a650
jmp 0x57c0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x57c02
leaq -0x290(%rbp), %rdi
callq 0x84210
jmp 0x57aed
leaq 0x73349(%rip), %rdx     # 0xcae3d
leaq 0x7095a(%rip), %rcx     # 0xc8455
leaq 0x7094d(%rip), %r8      # 0xc844f
leaq -0x2b8(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x7d210
jmp 0x57b17
leaq -0x2b8(%rbp), %rdi
callq 0x102c0
movq %rax, %r8
leaq 0x7319c(%rip), %rdx     # 0xcacc9
leaq -0x298(%rbp), %rdi
movl $0x1, %esi
movl $0x4e, %ecx
callq 0x80580
jmp 0x57b45
leaq -0x298(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x7d370
jmp 0x57b5a
leaq -0x298(%rbp), %rdi
callq 0x80600
leaq -0x2b8(%rbp), %rdi
callq 0x10fc8
leaq -0x290(%rbp), %rdi
callq 0x1d500
jmp 0x57bce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x57bc0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x57bb4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x80600
leaq -0x2b8(%rbp), %rdi
callq 0x10fc8
leaq -0x290(%rbp), %rdi
callq 0x1d500
jmp 0x57c02
leaq -0x260(%rbp), %rdi
callq 0x1d520
movl $0x0, -0x84(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x5a650
leaq -0x30(%rbp), %rdi
callq 0x5a650
addq $0x310, %rsp            # imm = 0x310
popq %rbp
retq
leaq -0x260(%rbp), %rdi
callq 0x1d520
leaq -0x100(%rbp), %rdi
callq 0x5a650
leaq -0x30(%rbp), %rdi
callq 0x5a650
movq -0x48(%rbp), %rdi
callq 0x10e00
nopl (%rax)