// File: halfflat[P]tinyopt/test/test_maybe.cc
// Function: maybe_something_Test::TestBody()
TEST(maybe, something) {
    constexpr auto s = something;
    EXPECT_TRUE(s);
    EXPECT_TRUE(s.has_value());

    constexpr auto n = nothing;
    EXPECT_FALSE(maybe<int>(n));
    EXPECT_FALSE(maybe<int>(n).has_value());
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x190, %rsp            # imm = 0x190
movq %rdi, -0x8(%rbp)
movb $0x1, -0x9(%rbp)
xorl %eax, %eax
movl %eax, %edx
leaq -0x20(%rbp), %rdi
movq %rdi, -0x160(%rbp)
leaq -0x9(%rbp), %rsi
callq 0x29220
movq -0x160(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x151(%rbp)
jmp 0x2420f
movb -0x151(%rbp), %al
testb $0x1, %al
jne 0x2421b
jmp 0x24231
jmp 0x242f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2434b
leaq -0x38(%rbp), %rdi
callq 0x84210
jmp 0x2423c
leaq 0xa6b18(%rip), %rdx     # 0xcad5b
leaq 0xa4205(%rip), %rcx     # 0xc844f
leaq 0xa4204(%rip), %r8      # 0xc8455
leaq -0x60(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x7d210
jmp 0x24260
leaq -0x60(%rbp), %rdi
callq 0x102c0
movq %rax, %r8
leaq 0xa4918(%rip), %rdx     # 0xc8b8b
leaq -0x40(%rbp), %rdi
movl $0x1, %esi
movl $0x9, %ecx
callq 0x80580
jmp 0x24288
leaq -0x40(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x7d370
jmp 0x24297
leaq -0x40(%rbp), %rdi
callq 0x80600
leaq -0x60(%rbp), %rdi
callq 0x10fc8
leaq -0x38(%rbp), %rdi
callq 0x1d500
jmp 0x242f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x242ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x242e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x80600
leaq -0x60(%rbp), %rdi
callq 0x10fc8
leaq -0x38(%rbp), %rdi
callq 0x1d500
jmp 0x2434b
leaq -0x20(%rbp), %rdi
callq 0x1d520
leaq -0x9(%rbp), %rdi
callq 0x29260
movb %al, -0x71(%rbp)
xorl %eax, %eax
movl %eax, %edx
leaq -0x70(%rbp), %rdi
movq %rdi, -0x170(%rbp)
leaq -0x71(%rbp), %rsi
callq 0x1d4a0
movq -0x170(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x161(%rbp)
jmp 0x2433a
movb -0x161(%rbp), %al
testb $0x1, %al
jne 0x24346
jmp 0x2436a
jmp 0x2444d
leaq -0x20(%rbp), %rdi
callq 0x1d520
jmp 0x247c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x244ce
leaq -0x80(%rbp), %rdi
callq 0x84210
jmp 0x24375
leaq 0xa485d(%rip), %rdx     # 0xc8bd9
leaq 0xa40cc(%rip), %rcx     # 0xc844f
leaq 0xa40cb(%rip), %r8      # 0xc8455
leaq -0xa8(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x7d210
jmp 0x2439c
leaq -0xa8(%rbp), %rdi
callq 0x102c0
movq %rax, %r8
leaq 0xa47d9(%rip), %rdx     # 0xc8b8b
leaq -0x88(%rbp), %rdi
movl $0x1, %esi
movl $0xa, %ecx
callq 0x80580
jmp 0x243ca
leaq -0x88(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x7d370
jmp 0x243dc
leaq -0x88(%rbp), %rdi
callq 0x80600
leaq -0xa8(%rbp), %rdi
callq 0x10fc8
leaq -0x80(%rbp), %rdi
callq 0x1d500
jmp 0x2444d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2443f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x24433
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x80600
leaq -0xa8(%rbp), %rdi
callq 0x10fc8
leaq -0x80(%rbp), %rdi
callq 0x1d500
jmp 0x244ce
leaq -0x70(%rbp), %rdi
callq 0x1d520
movb $0x0, -0xa9(%rbp)
leaq -0xcc(%rbp), %rdi
movq %rdi, -0x178(%rbp)
callq 0x1fa00
movq -0x178(%rbp), %rdi
callq 0x1d690
xorb $0x1, %al
movb %al, -0xc1(%rbp)
xorl %eax, %eax
movl %eax, %edx
leaq -0xc0(%rbp), %rdi
leaq -0xc1(%rbp), %rsi
callq 0x1d4a0
jmp 0x2449d
leaq -0xcc(%rbp), %rdi
callq 0x1d710
leaq -0xc0(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x179(%rbp)
jmp 0x244bd
movb -0x179(%rbp), %al
testb $0x1, %al
jne 0x244c9
jmp 0x2450a
jmp 0x245f9
leaq -0x70(%rbp), %rdi
callq 0x1d520
jmp 0x247c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0xcc(%rbp), %rdi
callq 0x1d710
jmp 0x247c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x24676
leaq -0xd8(%rbp), %rdi
callq 0x84210
jmp 0x24518
leaq 0xa46c8(%rip), %rdx     # 0xc8be7
leaq 0xa3f2f(%rip), %rcx     # 0xc8455
leaq 0xa3f22(%rip), %r8      # 0xc844f
leaq -0x100(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x7d210
jmp 0x24542
leaq -0x100(%rbp), %rdi
callq 0x102c0
movq %rax, %r8
leaq 0xa4633(%rip), %rdx     # 0xc8b8b
leaq -0xe0(%rbp), %rdi
movl $0x1, %esi
movl $0xd, %ecx
callq 0x80580
jmp 0x24570
leaq -0xe0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x7d370
jmp 0x24585
leaq -0xe0(%rbp), %rdi
callq 0x80600
leaq -0x100(%rbp), %rdi
callq 0x10fc8
leaq -0xd8(%rbp), %rdi
callq 0x1d500
jmp 0x245f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x245eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x245df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x80600
leaq -0x100(%rbp), %rdi
callq 0x10fc8
leaq -0xd8(%rbp), %rdi
callq 0x1d500
jmp 0x24676
leaq -0xc0(%rbp), %rdi
callq 0x1d520
leaq -0x11c(%rbp), %rdi
movq %rdi, -0x188(%rbp)
callq 0x1fa00
movq -0x188(%rbp), %rdi
callq 0x29280
xorb $0x1, %al
movb %al, -0x111(%rbp)
xorl %eax, %eax
movl %eax, %edx
leaq -0x110(%rbp), %rdi
leaq -0x111(%rbp), %rsi
callq 0x1d4a0
jmp 0x24645
leaq -0x11c(%rbp), %rdi
callq 0x1d710
leaq -0x110(%rbp), %rdi
callq 0x1d4e0
movb %al, -0x189(%rbp)
jmp 0x24665
movb -0x189(%rbp), %al
testb $0x1, %al
jne 0x24671
jmp 0x246b5
jmp 0x247a4
leaq -0xc0(%rbp), %rdi
callq 0x1d520
jmp 0x247c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x11c(%rbp), %rdi
callq 0x1d710
jmp 0x247c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x247b9
leaq -0x128(%rbp), %rdi
callq 0x84210
jmp 0x246c3
leaq 0xa452b(%rip), %rdx     # 0xc8bf5
leaq 0xa3d84(%rip), %rcx     # 0xc8455
leaq 0xa3d77(%rip), %r8      # 0xc844f
leaq -0x150(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x7d210
jmp 0x246ed
leaq -0x150(%rbp), %rdi
callq 0x102c0
movq %rax, %r8
leaq 0xa4488(%rip), %rdx     # 0xc8b8b
leaq -0x130(%rbp), %rdi
movl $0x1, %esi
movl $0xe, %ecx
callq 0x80580
jmp 0x2471b
leaq -0x130(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x7d370
jmp 0x24730
leaq -0x130(%rbp), %rdi
callq 0x80600
leaq -0x150(%rbp), %rdi
callq 0x10fc8
leaq -0x128(%rbp), %rdi
callq 0x1d500
jmp 0x247a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x24796
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2478a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x80600
leaq -0x150(%rbp), %rdi
callq 0x10fc8
leaq -0x128(%rbp), %rdi
callq 0x1d500
jmp 0x247b9
leaq -0x110(%rbp), %rdi
callq 0x1d520
addq $0x190, %rsp            # imm = 0x190
popq %rbp
retq
leaq -0x110(%rbp), %rdi
callq 0x1d520
movq -0x28(%rbp), %rdi
callq 0x10e00
nop