// File: /workspace/github_cpp_makefile_star2_O1/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 0x5e543(%rip), %rsi     # 0x74cf8
leaq 0x5833a(%rip), %rdx     # 0x6eaf6
leaq 0x7febd(%rip), %r8      # 0x96680
leaq 0x10(%rsp), %rdi
callq 0x15aba
cmpb $0x0, 0x10(%rsp)
jne 0x16833
movq %rsp, %rdi
callq 0x4e2e8
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x167eb
movq (%rax), %r8
jmp 0x167f2
leaq 0x5a806(%rip), %r8      # 0x70ff8
leaq 0x582a6(%rip), %rdx     # 0x6ea9f
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
movl $0x34, %ecx
callq 0x4a84c
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x481aa
leaq 0x8(%rsp), %rdi
callq 0x4a8b8
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16833
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x16847
leaq 0x18(%rsp), %rdi
callq 0x156d0
movq %rsp, %rcx
movl $0x0, (%rcx)
leaq 0x5e4a1(%rip), %rsi     # 0x74cf8
leaq 0x58298(%rip), %rdx     # 0x6eaf6
leaq 0x7fe1b(%rip), %r8      # 0x96680
leaq 0x10(%rsp), %rdi
callq 0x15aba
cmpb $0x0, 0x10(%rsp)
jne 0x168d5
movq %rsp, %rdi
callq 0x4e2e8
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x1688d
movq (%rax), %r8
jmp 0x16894
leaq 0x5a764(%rip), %r8      # 0x70ff8
leaq 0x58204(%rip), %rdx     # 0x6ea9f
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
movl $0x37, %ecx
callq 0x4a84c
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x481aa
leaq 0x8(%rsp), %rdi
callq 0x4a8b8
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x168d5
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x168e9
leaq 0x18(%rsp), %rdi
callq 0x156d0
incl 0x7fd91(%rip)           # 0x96680
incl 0x7fd93(%rip)           # 0x96688
leaq 0x7fd84(%rip), %r8      # 0x96680
movq %rsp, %rcx
movl $0x1, (%rcx)
leaq 0x596c3(%rip), %rsi     # 0x6ffcf
leaq 0x581e3(%rip), %rdx     # 0x6eaf6
leaq 0x10(%rsp), %rdi
callq 0x15aba
cmpb $0x0, 0x10(%rsp)
jne 0x16983
movq %rsp, %rdi
callq 0x4e2e8
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x1693b
movq (%rax), %r8
jmp 0x16942
leaq 0x5a6b6(%rip), %r8      # 0x70ff8
leaq 0x58156(%rip), %rdx     # 0x6ea9f
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
movl $0x3a, %ecx
callq 0x4a84c
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x481aa
leaq 0x8(%rsp), %rdi
callq 0x4a8b8
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16983
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x16997
leaq 0x18(%rsp), %rdi
callq 0x156d0
movq %rsp, %rcx
movl $0x1, (%rcx)
leaq 0x59628(%rip), %rsi     # 0x6ffcf
leaq 0x58151(%rip), %rdx     # 0x6eaff
leaq 0x7fcd3(%rip), %r8      # 0x96688
leaq 0x10(%rsp), %rdi
callq 0x15aba
cmpb $0x0, 0x10(%rsp)
jne 0x16a25
movq %rsp, %rdi
callq 0x4e2e8
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x169dd
movq (%rax), %r8
jmp 0x169e4
leaq 0x5a614(%rip), %r8      # 0x70ff8
leaq 0x580b4(%rip), %rdx     # 0x6ea9f
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
movl $0x3b, %ecx
callq 0x4a84c
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x481aa
leaq 0x8(%rsp), %rdi
callq 0x4a8b8
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16a25
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x16a39
leaq 0x18(%rsp), %rdi
callq 0x156d0
movq %rsp, %rcx
movl $0x0, (%rcx)
leaq 0x5e2af(%rip), %rsi     # 0x74cf8
leaq 0x580b8(%rip), %rdx     # 0x6eb08
leaq 0x7fc2d(%rip), %r8      # 0x96684
leaq 0x10(%rsp), %rdi
callq 0x15aba
cmpb $0x0, 0x10(%rsp)
jne 0x16ac7
movq %rsp, %rdi
callq 0x4e2e8
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x16a7f
movq (%rax), %r8
jmp 0x16a86
leaq 0x5a572(%rip), %r8      # 0x70ff8
leaq 0x58012(%rip), %rdx     # 0x6ea9f
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
movl $0x3c, %ecx
callq 0x4a84c
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x481aa
leaq 0x8(%rsp), %rdi
callq 0x4a8b8
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16ac7
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x16adb
leaq 0x18(%rsp), %rdi
callq 0x156d0
incl 0x7fba3(%rip)           # 0x96684
incl 0x7fb99(%rip)           # 0x96680
leaq 0x7fb92(%rip), %r8      # 0x96680
movq %rsp, %rcx
movl $0x2, (%rcx)
leaq 0x594c1(%rip), %rsi     # 0x6ffbf
leaq 0x57ff1(%rip), %rdx     # 0x6eaf6
leaq 0x10(%rsp), %rdi
callq 0x15aba
cmpb $0x0, 0x10(%rsp)
jne 0x16b75
movq %rsp, %rdi
callq 0x4e2e8
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x16b2d
movq (%rax), %r8
jmp 0x16b34
leaq 0x5a4c4(%rip), %r8      # 0x70ff8
leaq 0x57f64(%rip), %rdx     # 0x6ea9f
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
movl $0x3f, %ecx
callq 0x4a84c
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x481aa
leaq 0x8(%rsp), %rdi
callq 0x4a8b8
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16b75
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x16b89
leaq 0x18(%rsp), %rdi
callq 0x156d0
movq %rsp, %rcx
movl $0x1, (%rcx)
leaq 0x59436(%rip), %rsi     # 0x6ffcf
leaq 0x57f5f(%rip), %rdx     # 0x6eaff
leaq 0x7fae1(%rip), %r8      # 0x96688
leaq 0x10(%rsp), %rdi
callq 0x15aba
cmpb $0x0, 0x10(%rsp)
jne 0x16c17
movq %rsp, %rdi
callq 0x4e2e8
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x16bcf
movq (%rax), %r8
jmp 0x16bd6
leaq 0x5a422(%rip), %r8      # 0x70ff8
leaq 0x57ec2(%rip), %rdx     # 0x6ea9f
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
movl $0x40, %ecx
callq 0x4a84c
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x481aa
leaq 0x8(%rsp), %rdi
callq 0x4a8b8
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16c17
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x16c2b
leaq 0x18(%rsp), %rdi
callq 0x156d0
movq %rsp, %rcx
movl $0x1, (%rcx)
leaq 0x59394(%rip), %rsi     # 0x6ffcf
leaq 0x57ec6(%rip), %rdx     # 0x6eb08
leaq 0x7fa3b(%rip), %r8      # 0x96684
leaq 0x10(%rsp), %rdi
callq 0x15aba
cmpb $0x0, 0x10(%rsp)
jne 0x16cb9
movq %rsp, %rdi
callq 0x4e2e8
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x16c71
movq (%rax), %r8
jmp 0x16c78
leaq 0x5a380(%rip), %r8      # 0x70ff8
leaq 0x57e20(%rip), %rdx     # 0x6ea9f
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
movl $0x41, %ecx
callq 0x4a84c
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x481aa
leaq 0x8(%rsp), %rdi
callq 0x4a8b8
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16cb9
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x16ccd
leaq 0x18(%rsp), %rdi
callq 0x156d0
addl $-0x2, 0x7f9ac(%rip)    # 0x96680
leaq 0x7f9a5(%rip), %r8      # 0x96680
movq %rsp, %rcx
movl $0x0, (%rcx)
leaq 0x5e00d(%rip), %rsi     # 0x74cf8
leaq 0x57e04(%rip), %rdx     # 0x6eaf6
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x15aba
cmpb $0x0, (%rbx)
jne 0x16d63
movq %rsp, %rdi
callq 0x4e2e8
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x16d1b
movq (%rax), %r8
jmp 0x16d22
leaq 0x5a2d6(%rip), %r8      # 0x70ff8
leaq 0x57d76(%rip), %rdx     # 0x6ea9f
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
movl $0x43, %ecx
callq 0x4a84c
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x481aa
leaq 0x8(%rsp), %rdi
callq 0x4a8b8
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16d63
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x16d77
leaq 0x18(%rsp), %rdi
callq 0x156d0
addq $0x20, %rsp
popq %rbx
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x4a8b8
jmp 0x16d8f
movq %rax, %rbx
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16d9e
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, (%rsp)
jmp 0x16dad
jmp 0x16dd4
movq %rax, %rbx
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x16eec
leaq 0x18(%rsp), %rdi
callq 0x156d0
jmp 0x16eec
jmp 0x16de3
jmp 0x16dff
jmp 0x16dd4
jmp 0x16de3
jmp 0x16dff
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x4a8b8
jmp 0x16de6
movq %rax, %rbx
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16df5
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, (%rsp)
jmp 0x16e02
movq %rax, %rbx
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x16e16
leaq 0x18(%rsp), %rdi
callq 0x156d0
movq $0x0, 0x18(%rsp)
jmp 0x16ed7
jmp 0x16e30
jmp 0x16e3f
jmp 0x16e5b
jmp 0x16e30
jmp 0x16e3f
jmp 0x16e5b
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x4a8b8
jmp 0x16e42
movq %rax, %rbx
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16e51
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, (%rsp)
jmp 0x16e5e
movq %rax, %rbx
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x16e72
leaq 0x18(%rsp), %rdi
callq 0x156d0
movq $0x0, 0x18(%rsp)
jmp 0x16ee6
jmp 0x16e83
jmp 0x16e92
jmp 0x16eae
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x4a8b8
jmp 0x16e95
movq %rax, %rbx
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x16ea4
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, (%rsp)
jmp 0x16eb1
movq %rax, %rbx
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x16ec5
leaq 0x18(%rsp), %rdi
callq 0x156d0
movq $0x0, 0x18(%rsp)
jmp 0x16eec
jmp 0x16ed4
jmp 0x16ed4
movq %rax, %rbx
decl 0x7f7a3(%rip)           # 0x96680
jmp 0x16ee6
jmp 0x16ee3
jmp 0x16ee3
movq %rax, %rbx
decl 0x7f794(%rip)           # 0x96680
movq %rbx, %rdi
callq 0xda70
jmp 0x16ef6
movq %rax, %rbx
jmp 0x16eec
nop