// File: /workspace/github_cpp_makefile_star2_O3/halfflat[P]tinyopt/test/test_maybe.cc
// Function: maybe_ctor_Test::TestBody()
TEST(maybe, ctor) {
    {
        maybe<count> m1;
        EXPECT_EQ(0, count::i);

        maybe<count> m2(nothing);
        EXPECT_EQ(0, count::i);

        maybe<count> m3(count{});
        EXPECT_EQ(1, count::i);
        EXPECT_EQ(1, count::m);
        EXPECT_EQ(0, count::c);

        maybe<count> m4(m3);
        EXPECT_EQ(2, count::i);
        EXPECT_EQ(1, count::m);
        EXPECT_EQ(1, count::c);
    }
    EXPECT_EQ(0, count::i);
}

// Assembly:
pushq %rbx
subq $0x20, %rsp
movq %rsp, %rcx
movl $0x0, (%rcx)
leaq 0x5c8af(%rip), %rsi     # 0x72d08
leaq 0x56696(%rip), %rdx     # 0x6caf6
leaq 0x7e219(%rip), %r8      # 0x94680
leaq 0x10(%rsp), %rdi
callq 0x157b7
cmpb $0x0, 0x10(%rsp)
jne 0x164d7
movq %rsp, %rdi
callq 0x4ca86
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x1648f
movq (%rax), %r8
jmp 0x16496
leaq 0x58b3f(%rip), %r8      # 0x6efd5
leaq 0x56602(%rip), %rdx     # 0x6ca9f
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
movl $0x34, %ecx
callq 0x4902a
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x46a1c
leaq 0x8(%rsp), %rdi
callq 0x49096
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x164d7
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x164eb
leaq 0x18(%rsp), %rdi
callq 0x153ca
movq %rsp, %rcx
movl $0x0, (%rcx)
leaq 0x5c80d(%rip), %rsi     # 0x72d08
leaq 0x565f4(%rip), %rdx     # 0x6caf6
leaq 0x7e177(%rip), %r8      # 0x94680
leaq 0x10(%rsp), %rdi
callq 0x157b7
cmpb $0x0, 0x10(%rsp)
jne 0x16579
movq %rsp, %rdi
callq 0x4ca86
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x16531
movq (%rax), %r8
jmp 0x16538
leaq 0x58a9d(%rip), %r8      # 0x6efd5
leaq 0x56560(%rip), %rdx     # 0x6ca9f
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
movl $0x37, %ecx
callq 0x4902a
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x46a1c
leaq 0x8(%rsp), %rdi
callq 0x49096
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16579
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x1658d
leaq 0x18(%rsp), %rdi
callq 0x153ca
incl 0x7e0f5(%rip)           # 0x94688
incl 0x7e0e7(%rip)           # 0x94680
leaq 0x7e0e0(%rip), %r8      # 0x94680
movq %rsp, %rcx
movl $0x1, (%rcx)
leaq 0x579ff(%rip), %rsi     # 0x6dfaf
leaq 0x5653f(%rip), %rdx     # 0x6caf6
leaq 0x10(%rsp), %rdi
callq 0x157b7
cmpb $0x0, 0x10(%rsp)
jne 0x16627
movq %rsp, %rdi
callq 0x4ca86
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x165df
movq (%rax), %r8
jmp 0x165e6
leaq 0x589ef(%rip), %r8      # 0x6efd5
leaq 0x564b2(%rip), %rdx     # 0x6ca9f
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
movl $0x3a, %ecx
callq 0x4902a
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x46a1c
leaq 0x8(%rsp), %rdi
callq 0x49096
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16627
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x1663b
leaq 0x18(%rsp), %rdi
callq 0x153ca
movq %rsp, %rcx
movl $0x1, (%rcx)
leaq 0x57964(%rip), %rsi     # 0x6dfaf
leaq 0x564ad(%rip), %rdx     # 0x6caff
leaq 0x7e02f(%rip), %r8      # 0x94688
leaq 0x10(%rsp), %rdi
callq 0x157b7
cmpb $0x0, 0x10(%rsp)
jne 0x166c9
movq %rsp, %rdi
callq 0x4ca86
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x16681
movq (%rax), %r8
jmp 0x16688
leaq 0x5894d(%rip), %r8      # 0x6efd5
leaq 0x56410(%rip), %rdx     # 0x6ca9f
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
movl $0x3b, %ecx
callq 0x4902a
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x46a1c
leaq 0x8(%rsp), %rdi
callq 0x49096
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x166c9
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x166dd
leaq 0x18(%rsp), %rdi
callq 0x153ca
movq %rsp, %rcx
movl $0x0, (%rcx)
leaq 0x5c61b(%rip), %rsi     # 0x72d08
leaq 0x56414(%rip), %rdx     # 0x6cb08
leaq 0x7df89(%rip), %r8      # 0x94684
leaq 0x10(%rsp), %rdi
callq 0x157b7
cmpb $0x0, 0x10(%rsp)
jne 0x1676b
movq %rsp, %rdi
callq 0x4ca86
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x16723
movq (%rax), %r8
jmp 0x1672a
leaq 0x588ab(%rip), %r8      # 0x6efd5
leaq 0x5636e(%rip), %rdx     # 0x6ca9f
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
movl $0x3c, %ecx
callq 0x4902a
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x46a1c
leaq 0x8(%rsp), %rdi
callq 0x49096
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x1676b
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x1677f
leaq 0x18(%rsp), %rdi
callq 0x153ca
incl 0x7deff(%rip)           # 0x94684
incl 0x7def5(%rip)           # 0x94680
leaq 0x7deee(%rip), %r8      # 0x94680
movq %rsp, %rcx
movl $0x2, (%rcx)
leaq 0x577fd(%rip), %rsi     # 0x6df9f
leaq 0x5634d(%rip), %rdx     # 0x6caf6
leaq 0x10(%rsp), %rdi
callq 0x157b7
cmpb $0x0, 0x10(%rsp)
jne 0x16819
movq %rsp, %rdi
callq 0x4ca86
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x167d1
movq (%rax), %r8
jmp 0x167d8
leaq 0x587fd(%rip), %r8      # 0x6efd5
leaq 0x562c0(%rip), %rdx     # 0x6ca9f
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
movl $0x3f, %ecx
callq 0x4902a
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x46a1c
leaq 0x8(%rsp), %rdi
callq 0x49096
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16819
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x1682d
leaq 0x18(%rsp), %rdi
callq 0x153ca
movq %rsp, %rcx
movl $0x1, (%rcx)
leaq 0x57772(%rip), %rsi     # 0x6dfaf
leaq 0x562bb(%rip), %rdx     # 0x6caff
leaq 0x7de3d(%rip), %r8      # 0x94688
leaq 0x10(%rsp), %rdi
callq 0x157b7
cmpb $0x0, 0x10(%rsp)
jne 0x168bb
movq %rsp, %rdi
callq 0x4ca86
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x16873
movq (%rax), %r8
jmp 0x1687a
leaq 0x5875b(%rip), %r8      # 0x6efd5
leaq 0x5621e(%rip), %rdx     # 0x6ca9f
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
movl $0x40, %ecx
callq 0x4902a
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x46a1c
leaq 0x8(%rsp), %rdi
callq 0x49096
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x168bb
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x168cf
leaq 0x18(%rsp), %rdi
callq 0x153ca
movq %rsp, %rcx
movl $0x1, (%rcx)
leaq 0x576d0(%rip), %rsi     # 0x6dfaf
leaq 0x56222(%rip), %rdx     # 0x6cb08
leaq 0x7dd97(%rip), %r8      # 0x94684
leaq 0x10(%rsp), %rdi
callq 0x157b7
cmpb $0x0, 0x10(%rsp)
jne 0x1695d
movq %rsp, %rdi
callq 0x4ca86
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x16915
movq (%rax), %r8
jmp 0x1691c
leaq 0x586b9(%rip), %r8      # 0x6efd5
leaq 0x5617c(%rip), %rdx     # 0x6ca9f
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
movl $0x41, %ecx
callq 0x4902a
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x46a1c
leaq 0x8(%rsp), %rdi
callq 0x49096
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x1695d
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x16971
leaq 0x18(%rsp), %rdi
callq 0x153ca
addl $-0x2, 0x7dd08(%rip)    # 0x94680
leaq 0x7dd01(%rip), %r8      # 0x94680
movq %rsp, %rcx
movl $0x0, (%rcx)
leaq 0x5c379(%rip), %rsi     # 0x72d08
leaq 0x56160(%rip), %rdx     # 0x6caf6
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x157b7
cmpb $0x0, (%rbx)
jne 0x16a07
movq %rsp, %rdi
callq 0x4ca86
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x169bf
movq (%rax), %r8
jmp 0x169c6
leaq 0x5860f(%rip), %r8      # 0x6efd5
leaq 0x560d2(%rip), %rdx     # 0x6ca9f
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
movl $0x43, %ecx
callq 0x4902a
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x46a1c
leaq 0x8(%rsp), %rdi
callq 0x49096
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16a07
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x16a1b
leaq 0x18(%rsp), %rdi
callq 0x153ca
addq $0x20, %rsp
popq %rbx
retq
jmp 0x16acd
jmp 0x16adc
jmp 0x16a3c
jmp 0x16af0
jmp 0x16a4b
jmp 0x16a5f
jmp 0x16a3c
jmp 0x16a4b
jmp 0x16a5f
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x49096
jmp 0x16a4e
movq %rax, %rbx
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16a62
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x16a62
movq %rax, %rbx
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x16b10
leaq 0x18(%rsp), %rdi
callq 0x153ca
jmp 0x16b10
jmp 0x16a8b
jmp 0x16a9a
jmp 0x16aae
jmp 0x16a8b
jmp 0x16a9a
jmp 0x16aae
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x49096
jmp 0x16a9d
movq %rax, %rbx
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16ab1
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x16ab1
movq %rax, %rbx
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x16b1f
leaq 0x18(%rsp), %rdi
callq 0x153ca
jmp 0x16b1f
jmp 0x16acd
jmp 0x16adc
jmp 0x16af0
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x49096
jmp 0x16adf
movq %rax, %rbx
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16af3
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x16af3
movq %rax, %rbx
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x16b25
leaq 0x18(%rsp), %rdi
callq 0x153ca
jmp 0x16b25
jmp 0x16b0d
jmp 0x16b0d
movq %rax, %rbx
decl 0x7db6a(%rip)           # 0x94680
jmp 0x16b1f
jmp 0x16b1c
jmp 0x16b1c
movq %rax, %rbx
decl 0x7db5b(%rip)           # 0x94680
movq %rbx, %rdi
callq 0xda70
jmp 0x16b2f
movq %rax, %rbx
jmp 0x16b25