// File: /workspace/github_cpp_makefile_star2_O3/halfflat[P]tinyopt/test/test_run.cc
// Function: run_mandatory_Test::TestBody()
TEST(run, mandatory) {
    bool m = false, a = false;
    to::option opts[] = {
        { to::set(m), "-m", to::flag, to::mandatory },
        { to::set(a), "-a", to::flag }
    };

    mockargs M1("-a\0-m\0");
    auto r1 = to::run(opts, M1.argc, M1.argv);
    EXPECT_TRUE(r1);
    EXPECT_TRUE(a);
    EXPECT_TRUE(m);

    mockargs M2("-a\0");
    EXPECT_THROW(to::run(opts, M2.argc, M2.argv), to::missing_mandatory_option);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x210, %rsp            # imm = 0x210
xorl %eax, %eax
leaq 0x1f(%rsp), %rcx
movb %al, (%rcx)
movb %al, 0xf(%rsp)
leaq 0xf0(%rsp), %rsi
movq $0x1, 0x8(%rsi)
movq %rcx, (%rsi)
leaq 0x5543(%rip), %rbx      # 0x3d248
movq %rbx, 0x18(%rsi)
leaq 0x5544(%rip), %r15      # 0x3d254
movq %r15, 0x10(%rsi)
leaq 0xa8(%rsp), %rcx
movl $0x1, (%rcx)
leaq 0x60(%rsp), %r8
movl $0x8, (%r8)
leaq 0x3764c(%rip), %rdx     # 0x6f381
leaq 0x130(%rsp), %r14
movq %r14, %rdi
callq 0x3c0ee
leaq 0x1a0(%rsp), %r14
leaq 0xd0(%rsp), %rsi
movq $0x1, 0x8(%rsi)
leaq 0xf(%rsp), %rax
movq %rax, (%rsi)
movq %rbx, 0x18(%rsi)
movq %r15, 0x10(%rsi)
leaq 0x88(%rsp), %rcx
movl $0x1, (%rcx)
leaq 0x3523a(%rip), %rdx     # 0x6cfbc
movq %r14, %rdi
callq 0x3bbc4
movq 0xe0(%rsp), %rax
testq %rax, %rax
je 0x37da9
leaq 0xd0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x100(%rsp), %rax
testq %rax, %rax
je 0x37dc8
leaq 0xf0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x379c6(%rip), %rsi     # 0x6f795
leaq 0xa8(%rsp), %rdi
callq 0x29a42
leaq 0xa8(%rsp), %rdx
movq 0x8(%rdx), %rcx
xorps %xmm0, %xmm0
leaq 0x60(%rsp), %r8
movaps %xmm0, (%r8)
movq $0x0, 0x10(%r8)
leaq 0x88(%rsp), %rdi
leaq 0x130(%rsp), %rsi
callq 0x3bccd
leaq 0x60(%rsp), %rdi
callq 0x20770
movb 0x88(%rsp), %al
movb %al, 0x20(%rsp)
movq $0x0, 0x28(%rsp)
testb %al, %al
jne 0x37ee0
leaq 0x28(%rsp), %r14
leaq 0x40(%rsp), %rdi
callq 0x4ca86
leaq 0x37476(%rip), %rdx     # 0x6f2c3
leaq 0x342b2(%rip), %rcx     # 0x6c106
leaq 0x342b1(%rip), %r8      # 0x6c10c
leaq 0x60(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x46893
movq 0x60(%rsp), %r8
leaq 0x373f0(%rip), %rdx     # 0x6f266
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0x7b, %ecx
callq 0x4902a
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x46a1c
leaq 0x10(%rsp), %rdi
callq 0x49096
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37ebe
movq 0x70(%rsp), %rsi
incq %rsi
callq 0xd530
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x37ece
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x28(%rsp), %rsi
testq %rsi, %rsi
je 0x37ee0
movq %r14, %rdi
callq 0x153ca
movb 0xf(%rsp), %al
movb %al, 0x20(%rsp)
movq $0x0, 0x28(%rsp)
testb %al, %al
jne 0x37fa2
leaq 0x28(%rsp), %r14
leaq 0x40(%rsp), %rdi
callq 0x4ca86
leaq 0x350ae(%rip), %rdx     # 0x6cfbd
leaq 0x341f0(%rip), %rcx     # 0x6c106
leaq 0x341ef(%rip), %r8      # 0x6c10c
leaq 0x60(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x46893
movq 0x60(%rsp), %r8
leaq 0x3732e(%rip), %rdx     # 0x6f266
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0x7c, %ecx
callq 0x4902a
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x46a1c
leaq 0x10(%rsp), %rdi
callq 0x49096
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37f80
movq 0x70(%rsp), %rsi
incq %rsi
callq 0xd530
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x37f90
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x28(%rsp), %rsi
testq %rsi, %rsi
je 0x37fa2
movq %r14, %rdi
callq 0x153ca
movb 0x1f(%rsp), %al
movb %al, 0x20(%rsp)
movq $0x0, 0x28(%rsp)
testb %al, %al
jne 0x38064
leaq 0x28(%rsp), %r14
leaq 0x40(%rsp), %rdi
callq 0x4ca86
leaq 0x373b1(%rip), %rdx     # 0x6f382
leaq 0x3412e(%rip), %rcx     # 0x6c106
leaq 0x3412d(%rip), %r8      # 0x6c10c
leaq 0x60(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x46893
movq 0x60(%rsp), %r8
leaq 0x3726c(%rip), %rdx     # 0x6f266
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0x7d, %ecx
callq 0x4902a
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x46a1c
leaq 0x10(%rsp), %rdi
callq 0x49096
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38042
movq 0x70(%rsp), %rsi
incq %rsi
callq 0xd530
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x38052
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x28(%rsp), %rsi
testq %rsi, %rsi
je 0x38064
movq %r14, %rdi
callq 0x153ca
leaq 0x3784c(%rip), %rsi     # 0x6f8b7
leaq 0x60(%rsp), %rdi
callq 0x29a42
leaq 0x30(%rsp), %r15
xorps %xmm0, %xmm0
movups %xmm0, (%r15)
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
callq 0x4ca83
testb %al, %al
je 0x380f1
leaq 0x60(%rsp), %rdx
movq 0x8(%rdx), %rcx
xorps %xmm0, %xmm0
leaq 0x40(%rsp), %r8
movaps %xmm0, (%r8)
movq $0x0, 0x10(%r8)
leaq 0x110(%rsp), %rdi
leaq 0x130(%rsp), %rsi
callq 0x3bccd
cmpb $0x1, 0x110(%rsp)
jne 0x380df
leaq 0x118(%rsp), %rdi
callq 0x20770
movb $0x0, 0x110(%rsp)
leaq 0x40(%rsp), %rdi
callq 0x20770
leaq 0x20(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x37386(%rip), %rcx     # 0x6f487
movl $0x80, %r8d
xorl %esi, %esi
callq 0xd960
leaq 0x40(%rsp), %rdi
callq 0x4ca86
movq 0x20(%rsp), %r8
leaq 0x37142(%rip), %rdx     # 0x6f266
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0x80, %ecx
callq 0x4902a
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x46a1c
leaq 0x10(%rsp), %rdi
callq 0x49096
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x38161
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
je 0x38178
movq 0x30(%rsp), %rsi
incq %rsi
callq 0xd530
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x38192
movq 0x80(%rsp), %rsi
subq %rdi, %rsi
callq 0xd530
cmpb $0x1, 0x88(%rsp)
jne 0x381a9
leaq 0x90(%rsp), %rdi
callq 0x20770
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x381c6
movq 0xc8(%rsp), %rsi
subq %rdi, %rsi
callq 0xd530
movl $0xe0, %r14d
leaq (%rsp,%r14), %rdi
addq $0x110, %rdi            # imm = 0x110
callq 0x2145a
leaq (%rsp,%r14), %rdi
addq $0xf8, %rdi
callq 0x2148a
leaq (%rsp,%r14), %rbx
addq $0xe0, %rbx
movq %rbx, %rdi
callq 0x214ba
movq -0x10(%rbx), %rax
testq %rax, %rax
je 0x3821d
leaq (%rsp,%r14), %rdi
addq $0xc0, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
addq $-0x70, %r14
jne 0x381cc
addq $0x210, %rsp            # imm = 0x210
popq %rbx
popq %r14
popq %r15
retq
movq %rdx, %r14
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x20770
jmp 0x382f7
jmp 0x38253
jmp 0x38264
jmp 0x38284
jmp 0x38253
jmp 0x38299
jmp 0x38264
jmp 0x38284
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x49096
jmp 0x38267
jmp 0x38299
movq %rax, %rbx
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38287
movq 0x70(%rsp), %rsi
incq %rsi
callq 0xd530
jmp 0x38287
movq %rax, %rbx
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x3829c
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x3829c
movq %rax, %rbx
movq 0x28(%rsp), %rsi
testq %rsi, %rsi
je 0x38447
movq %r14, %rdi
callq 0x153ca
jmp 0x38447
jmp 0x3851c
jmp 0x3851c
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x49096
jmp 0x382d3
movq %rax, %rbx
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x38411
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x38411
jmp 0x3840e
movq %rdx, %r14
movq %rax, %rbx
movq %rbx, %rdi
cmpl $0x3, %r14d
jne 0x3830f
callq 0xd200
callq 0xd9e0
jmp 0x38161
callq 0xd200
cmpl $0x2, %r14d
jne 0x383b4
movq %rax, %rbx
leaq 0x370e6(%rip), %rsi     # 0x6f40e
leaq 0x20(%rsp), %rdi
callq 0xd800
movq (%rbx), %rax
movq -0x8(%rax), %rsi
leaq 0x40(%rsp), %rdi
callq 0x21030
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
leaq 0x20(%rsp), %rdi
callq 0xd180
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38372
movq 0x50(%rsp), %rsi
incq %rsi
callq 0xd530
leaq 0x3b2ae(%rip), %rsi     # 0x73627
leaq 0x20(%rsp), %rdi
callq 0xdb40
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0xdb40
leaq 0x3501e(%rip), %rsi     # 0x6d3be
leaq 0x20(%rsp), %rdi
callq 0xdb40
callq 0xd9e0
jmp 0x3810e
leaq 0x36fc9(%rip), %rsi     # 0x6f384
leaq 0x20(%rsp), %rdi
callq 0xd800
callq 0xd9e0
jmp 0x3810e
movq %rax, %rbx
callq 0xd9e0
jmp 0x38411
jmp 0x3840e
movq %rax, %rbx
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38402
movq 0x50(%rsp), %rsi
incq %rsi
callq 0xd530
jmp 0x38402
jmp 0x383ff
jmp 0x3840e
movq %rax, %rbx
callq 0xd9e0
jmp 0x38411
jmp 0x3851c
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
je 0x38428
movq 0x30(%rsp), %rsi
incq %rsi
callq 0xd530
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x38447
movq 0x80(%rsp), %rsi
subq %rdi, %rsi
callq 0xd530
jmp 0x38447
movq %rax, %rbx
cmpb $0x1, 0x88(%rsp)
jne 0x3845e
leaq 0x90(%rsp), %rdi
callq 0x20770
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x3847b
movq 0xc8(%rsp), %rsi
subq %rdi, %rsi
callq 0xd530
movl $0x70, %r14d
leaq (%rsp,%r14), %rdi
addq $0x130, %rdi            # imm = 0x130
callq 0x206e8
addq $-0x70, %r14
cmpq $-0x70, %r14
jne 0x38481
movq %rbx, %rdi
callq 0xda70
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
jmp 0x38459
movq %rax, %rbx
jmp 0x3847b
movq %rax, %rbx
movq 0xe0(%rsp), %rax
testq %rax, %rax
je 0x384db
leaq 0xd0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x384db
jmp 0x3851c
movq %rax, %rbx
movq 0x100(%rsp), %rax
testq %rax, %rax
je 0x384fa
leaq 0xf0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x130(%rsp), %r15
cmpq %r14, %r15
je 0x3849b
addq $-0x70, %r14
movq %r14, %rdi
callq 0x206e8
cmpq %r15, %r14
jne 0x38507
jmp 0x3849b
jmp 0x3851c
movq %rax, %rdi
callq 0x1536f