// File: halfflat[P]tinyopt/test/test_run.cc
// Function: run_ephemeral_Test::TestBody()
TEST(run, ephemeral) {
    int a = 0;
    int b = 0;

    to::option opts[] = {
        { a, "-a", to::ephemeral },
        { b, "-b" }
    };

    mockargs M("-a\09\0-b\08\0");
    auto r = to::run(opts, M.argc, M.argv);
    EXPECT_EQ(9, a);
    EXPECT_EQ(8, b);
    EXPECT_EQ(0, M.argc);
    ASSERT_TRUE(r);
    EXPECT_EQ((svector{"-b", "8"}), svector(r->begin(), r->end()));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x450, %rsp            # imm = 0x450
movq %rdi, -0x8(%rbp)
movl $0x0, -0xc(%rbp)
movl $0x0, -0x10(%rbp)
movb $0x1, -0x149(%rbp)
leaq -0xf0(%rbp), %rax
movq %rax, -0xf8(%rbp)
leaq -0x118(%rbp), %rdi
leaq -0xc(%rbp), %rsi
callq 0x1d5a0
jmp 0x662b4
movl $0x2, -0x128(%rbp)
leaq 0x633bb(%rip), %rdx     # 0xc9680
leaq -0xf0(%rbp), %rdi
leaq -0x118(%rbp), %rsi
leaq -0x128(%rbp), %rcx
callq 0x6df30
jmp 0x662e1
leaq -0x80(%rbp), %rax
movq %rax, -0x340(%rbp)
movq %rax, -0xf8(%rbp)
leaq -0x148(%rbp), %rdi
leaq -0x10(%rbp), %rsi
callq 0x1d5a0
jmp 0x66305
movq -0x340(%rbp), %rdi
leaq 0x63376(%rip), %rdx     # 0xc9689
leaq -0x148(%rbp), %rsi
callq 0x6e640
jmp 0x66321
movb $0x0, -0x149(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x1d540
leaq -0x118(%rbp), %rdi
callq 0x1d540
leaq 0x65743(%rip), %rsi     # 0xcba8a
leaq -0x178(%rbp), %rdi
callq 0x4bfe0
jmp 0x66355
movq -0x170(%rbp), %rax
movq %rax, -0x350(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x1b0(%rbp)
movq $0x0, -0x1a0(%rbp)
leaq -0x1b0(%rbp), %rdi
movq %rdi, -0x348(%rbp)
callq 0x611a0
movq -0x350(%rbp), %rcx
movq -0x348(%rbp), %r8
leaq -0x198(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
leaq -0x178(%rbp), %rdx
callq 0x6e040
jmp 0x663b5
leaq -0x1b0(%rbp), %rdi
callq 0x61330
movl $0x9, -0x1c4(%rbp)
leaq 0x63635(%rip), %rsi     # 0xc9a07
leaq 0x632a8(%rip), %rdx     # 0xc9681
leaq -0x1c0(%rbp), %rdi
leaq -0x1c4(%rbp), %rcx
leaq -0xc(%rbp), %r8
callq 0x1d5d0
jmp 0x663f2
leaq -0x1c0(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x351(%rbp)
jmp 0x66406
movb -0x351(%rbp), %al
testb $0x1, %al
jne 0x66415
jmp 0x66531
jmp 0x665e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x6646c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x66460
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x1d540
leaq -0x118(%rbp), %rdi
callq 0x1d540
testb $0x1, -0x149(%rbp)
jne 0x66477
jmp 0x664c4
movq -0xf8(%rbp), %rax
leaq -0xf0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x360(%rbp)
je 0x664c2
movq -0x360(%rbp), %rdi
addq $-0x70, %rdi
movq %rdi, -0x368(%rbp)
callq 0x38ed0
movq -0x368(%rbp), %rax
leaq -0xf0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x360(%rbp)
jne 0x66491
jmp 0x664c4
jmp 0x66f83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x66f35
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x61330
jmp 0x66f29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x66f1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x6664b
leaq -0x1d0(%rbp), %rdi
callq 0x84210
jmp 0x6653f
leaq -0x1c0(%rbp), %rdi
callq 0x1d620
movq %rax, -0x370(%rbp)
jmp 0x66554
movq -0x370(%rbp), %r8
leaq 0x65038(%rip), %rdx     # 0xcb59a
leaq -0x1d8(%rbp), %rdi
movl $0x1, %esi
movl $0x43, %ecx
callq 0x80580
jmp 0x6657a
leaq -0x1d8(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x7d370
jmp 0x6658f
leaq -0x1d8(%rbp), %rdi
callq 0x80600
leaq -0x1d0(%rbp), %rdi
callq 0x1d500
jmp 0x665e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x665db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x80600
leaq -0x1d0(%rbp), %rdi
callq 0x1d500
jmp 0x6664b
leaq -0x1c0(%rbp), %rdi
callq 0x1d520
movl $0x8, -0x1ec(%rbp)
leaq 0x67a36(%rip), %rsi     # 0xce03c
leaq 0x6307d(%rip), %rdx     # 0xc968a
leaq -0x1e8(%rbp), %rdi
leaq -0x1ec(%rbp), %rcx
leaq -0x10(%rbp), %r8
callq 0x1d5d0
jmp 0x66626
leaq -0x1e8(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x371(%rbp)
jmp 0x6663a
movb -0x371(%rbp), %al
testb $0x1, %al
jne 0x66646
jmp 0x66673
jmp 0x6672b
leaq -0x1c0(%rbp), %rdi
callq 0x1d520
jmp 0x66f1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x66790
leaq -0x1f8(%rbp), %rdi
callq 0x84210
jmp 0x66681
leaq -0x1e8(%rbp), %rdi
callq 0x1d620
movq %rax, -0x380(%rbp)
jmp 0x66696
movq -0x380(%rbp), %r8
leaq 0x64ef6(%rip), %rdx     # 0xcb59a
leaq -0x200(%rbp), %rdi
movl $0x1, %esi
movl $0x44, %ecx
callq 0x80580
jmp 0x666bc
leaq -0x200(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x7d370
jmp 0x666d1
leaq -0x200(%rbp), %rdi
callq 0x80600
leaq -0x1f8(%rbp), %rdi
callq 0x1d500
jmp 0x6672b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x6671d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x80600
leaq -0x1f8(%rbp), %rdi
callq 0x1d500
jmp 0x66790
leaq -0x1e8(%rbp), %rdi
callq 0x1d520
movl $0x0, -0x214(%rbp)
leaq 0x69026(%rip), %rsi     # 0xcf76e
leaq 0x63b0a(%rip), %rdx     # 0xca259
leaq -0x210(%rbp), %rdi
leaq -0x214(%rbp), %rcx
leaq -0x178(%rbp), %r8
callq 0x1d5d0
jmp 0x6676b
leaq -0x210(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x381(%rbp)
jmp 0x6677f
movb -0x381(%rbp), %al
testb $0x1, %al
jne 0x6678b
jmp 0x667b8
jmp 0x66870
leaq -0x1e8(%rbp), %rdi
callq 0x1d520
jmp 0x66f1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x668ba
leaq -0x220(%rbp), %rdi
callq 0x84210
jmp 0x667c6
leaq -0x210(%rbp), %rdi
callq 0x1d620
movq %rax, -0x390(%rbp)
jmp 0x667db
movq -0x390(%rbp), %r8
leaq 0x64db1(%rip), %rdx     # 0xcb59a
leaq -0x228(%rbp), %rdi
movl $0x1, %esi
movl $0x45, %ecx
callq 0x80580
jmp 0x66801
leaq -0x228(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7d370
jmp 0x66816
leaq -0x228(%rbp), %rdi
callq 0x80600
leaq -0x220(%rbp), %rdi
callq 0x1d500
jmp 0x66870
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x66862
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x80600
leaq -0x220(%rbp), %rdi
callq 0x1d500
jmp 0x668ba
leaq -0x210(%rbp), %rdi
callq 0x1d520
xorl %eax, %eax
movl %eax, %edx
leaq -0x238(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x6e4b0
jmp 0x66895
leaq -0x238(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x391(%rbp)
jmp 0x668a9
movb -0x391(%rbp), %al
testb $0x1, %al
jne 0x668b5
jmp 0x668e2
jmp 0x669f0
leaq -0x210(%rbp), %rdi
callq 0x1d520
jmp 0x66f1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x66c52
leaq -0x240(%rbp), %rdi
callq 0x84210
jmp 0x668f0
leaq 0x63dea(%rip), %rdx     # 0xca6e1
leaq 0x61b51(%rip), %rcx     # 0xc844f
leaq 0x61b50(%rip), %r8      # 0xc8455
leaq -0x268(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x7d210
jmp 0x6691a
leaq -0x268(%rbp), %rdi
callq 0x102c0
movq %rax, %r8
leaq 0x64c6a(%rip), %rdx     # 0xcb59a
leaq -0x248(%rbp), %rdi
movl $0x2, %esi
movl $0x46, %ecx
callq 0x80580
jmp 0x66948
leaq -0x248(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x7d370
jmp 0x6695d
leaq -0x248(%rbp), %rdi
callq 0x80600
leaq -0x268(%rbp), %rdi
callq 0x10fc8
leaq -0x240(%rbp), %rdi
callq 0x1d500
movl $0x1, -0x26c(%rbp)
jmp 0x669fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x669df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x669d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x80600
leaq -0x268(%rbp), %rdi
callq 0x10fc8
leaq -0x240(%rbp), %rdi
callq 0x1d500
jmp 0x66c52
movl $0x0, -0x26c(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x1d520
movl -0x26c(%rbp), %eax
testl %eax, %eax
jne 0x66ea4
jmp 0x66a16
movb $0x1, -0x2f3(%rbp)
leaq -0x2e8(%rbp), %rax
movq %rax, -0x3a8(%rbp)
movq %rax, -0x2f0(%rbp)
leaq -0x2f1(%rbp), %rdi
movq %rdi, -0x3a0(%rbp)
callq 0x10e10
movq -0x3a8(%rbp), %rdi
movq -0x3a0(%rbp), %rdx
leaq 0x62c2f(%rip), %rsi     # 0xc9689
callq 0x1d070
jmp 0x66a61
leaq -0x2c8(%rbp), %rax
movq %rax, -0x3b8(%rbp)
movq %rax, -0x2f0(%rbp)
leaq -0x2f2(%rbp), %rdi
movq %rdi, -0x3b0(%rbp)
callq 0x10e10
movq -0x3b8(%rbp), %rdi
movq -0x3b0(%rbp), %rdx
leaq 0x6759e(%rip), %rsi     # 0xce03c
callq 0x1d070
jmp 0x66aa5
movb $0x0, -0x2f3(%rbp)
leaq -0x2e8(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movq $0x2, -0x2a0(%rbp)
leaq -0x2f4(%rbp), %rdi
movq %rdi, -0x3c0(%rbp)
callq 0x39000
movq -0x3c0(%rbp), %rcx
movq -0x2a8(%rbp), %rsi
movq -0x2a0(%rbp), %rdx
leaq -0x298(%rbp), %rdi
callq 0x39020
jmp 0x66afb
leaq -0x198(%rbp), %rdi
movq %rdi, -0x3d0(%rbp)
callq 0x6e4f0
movq %rax, %rdi
callq 0x416b0
movq -0x3d0(%rbp), %rdi
movq %rax, -0x318(%rbp)
callq 0x6e4f0
movq %rax, %rdi
callq 0x416e0
movq %rax, -0x320(%rbp)
leaq -0x321(%rbp), %rdi
movq %rdi, -0x3c8(%rbp)
callq 0x39000
movq -0x3c8(%rbp), %rcx
movq -0x318(%rbp), %rsi
movq -0x320(%rbp), %rdx
leaq -0x310(%rbp), %rdi
callq 0x6e510
jmp 0x66b6e
leaq 0x64ae0(%rip), %rsi     # 0xcb655
leaq 0x64aee(%rip), %rdx     # 0xcb66a
leaq -0x280(%rbp), %rdi
leaq -0x298(%rbp), %rcx
leaq -0x310(%rbp), %r8
callq 0x38fb0
jmp 0x66b98
leaq -0x310(%rbp), %rdi
callq 0x390a0
leaq -0x321(%rbp), %rdi
callq 0x39100
leaq -0x298(%rbp), %rdi
callq 0x390a0
leaq -0x2f4(%rbp), %rdi
callq 0x39100
leaq -0x2e8(%rbp), %rax
movq %rax, -0x3e0(%rbp)
addq $0x40, %rax
movq %rax, -0x3d8(%rbp)
movq -0x3d8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x3e8(%rbp)
callq 0x10fc8
movq -0x3e0(%rbp), %rcx
movq -0x3e8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x3d8(%rbp)
jne 0x66be1
leaq -0x2f2(%rbp), %rdi
callq 0x10810
leaq -0x2f1(%rbp), %rdi
callq 0x10810
leaq -0x280(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x3e9(%rbp)
jmp 0x66c3e
movb -0x3e9(%rbp), %al
testb $0x1, %al
jne 0x66c4d
jmp 0x66dd3
jmp 0x66e8e
leaq -0x238(%rbp), %rdi
callq 0x1d520
jmp 0x66f1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x66d53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x66d47
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x66cef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x66cd7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x310(%rbp), %rdi
callq 0x390a0
leaq -0x321(%rbp), %rdi
callq 0x39100
leaq -0x298(%rbp), %rdi
callq 0x390a0
leaq -0x2f4(%rbp), %rdi
callq 0x39100
leaq -0x2e8(%rbp), %rax
movq %rax, -0x400(%rbp)
addq $0x40, %rax
movq %rax, -0x3f8(%rbp)
movq -0x3f8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x408(%rbp)
callq 0x10fc8
movq -0x400(%rbp), %rcx
movq -0x408(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x3f8(%rbp)
jne 0x66d14
jmp 0x66d47
leaq -0x2f2(%rbp), %rdi
callq 0x10810
leaq -0x2f1(%rbp), %rdi
callq 0x10810
testb $0x1, -0x2f3(%rbp)
jne 0x66d6a
jmp 0x66db7
movq -0x2f0(%rbp), %rax
leaq -0x2e8(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x410(%rbp)
je 0x66db5
movq -0x410(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x418(%rbp)
callq 0x10fc8
movq -0x418(%rbp), %rax
leaq -0x2e8(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x410(%rbp)
jne 0x66d84
jmp 0x66db7
jmp 0x66f1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x66f11
leaq -0x330(%rbp), %rdi
callq 0x84210
jmp 0x66de1
leaq -0x280(%rbp), %rdi
callq 0x1d620
movq %rax, -0x420(%rbp)
jmp 0x66df6
movq -0x420(%rbp), %r8
leaq 0x64796(%rip), %rdx     # 0xcb59a
leaq -0x338(%rbp), %rdi
movl $0x1, %esi
movl $0x47, %ecx
callq 0x80580
jmp 0x66e1c
leaq -0x338(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x7d370
jmp 0x66e31
leaq -0x338(%rbp), %rdi
callq 0x80600
leaq -0x330(%rbp), %rdi
callq 0x1d500
jmp 0x66e8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x66e7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x80600
leaq -0x330(%rbp), %rdi
callq 0x1d500
jmp 0x66f11
leaq -0x280(%rbp), %rdi
callq 0x1d520
movl $0x0, -0x26c(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x6e5d0
leaq -0x178(%rbp), %rdi
callq 0x4c380
leaq -0xf0(%rbp), %rax
movq %rax, -0x430(%rbp)
addq $0xe0, %rax
movq %rax, -0x428(%rbp)
movq -0x428(%rbp), %rdi
addq $-0x70, %rdi
movq %rdi, -0x438(%rbp)
callq 0x38ed0
movq -0x430(%rbp), %rcx
movq -0x438(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x428(%rbp)
jne 0x66ed7
addq $0x450, %rsp            # imm = 0x450
popq %rbp
retq
leaq -0x280(%rbp), %rdi
callq 0x1d520
leaq -0x198(%rbp), %rdi
callq 0x6e5d0
leaq -0x178(%rbp), %rdi
callq 0x4c380
leaq -0xf0(%rbp), %rax
movq %rax, -0x448(%rbp)
addq $0xe0, %rax
movq %rax, -0x440(%rbp)
movq -0x440(%rbp), %rdi
addq $-0x70, %rdi
movq %rdi, -0x450(%rbp)
callq 0x38ed0
movq -0x448(%rbp), %rcx
movq -0x450(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x440(%rbp)
jne 0x66f50
jmp 0x66f83
movq -0x120(%rbp), %rdi
callq 0x10e00
nop