// File: /workspace/github_cpp_makefile_star2_O2/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
andl $0x0, (%rcx)
leaq 0x485fe(%rip), %rsi     # 0x5cd48
leaq 0x423fc(%rip), %rdx     # 0x56b4d
leaq 0x6ff58(%rip), %r8      # 0x846b0
leaq 0x10(%rsp), %rdi
callq 0x13a52
cmpb $0x0, 0x10(%rsp)
jne 0x147c4
movq %rsp, %rdi
callq 0x3d5f6
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x14780
movq (%rax), %r8
jmp 0x14787
leaq 0x448e3(%rip), %r8      # 0x5906a
leaq 0x42368(%rip), %rdx     # 0x56af6
leaq 0x8(%rsp), %rdi
pushq $0x1
popq %rsi
pushq $0x34
popq %rcx
callq 0x3b5b6
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x39b08
leaq 0x8(%rsp), %rdi
callq 0x3b616
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x147c4
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x18(%rsp), %rdi
callq 0x13646
movq %rsp, %rcx
andl $0x0, (%rcx)
leaq 0x4856d(%rip), %rsi     # 0x5cd48
leaq 0x4236b(%rip), %rdx     # 0x56b4d
leaq 0x6fec7(%rip), %r8      # 0x846b0
leaq 0x10(%rsp), %rdi
callq 0x13a52
cmpb $0x0, 0x10(%rsp)
jne 0x14855
movq %rsp, %rdi
callq 0x3d5f6
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x14811
movq (%rax), %r8
jmp 0x14818
leaq 0x44852(%rip), %r8      # 0x5906a
leaq 0x422d7(%rip), %rdx     # 0x56af6
leaq 0x8(%rsp), %rdi
pushq $0x1
popq %rsi
pushq $0x37
popq %rcx
callq 0x3b5b6
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x39b08
leaq 0x8(%rsp), %rdi
callq 0x3b616
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x14855
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x18(%rsp), %rdi
callq 0x13646
incl 0x6fe53(%rip)           # 0x846b8
incl 0x6fe45(%rip)           # 0x846b0
leaq 0x6fe3e(%rip), %r8      # 0x846b0
movq %rsp, %rcx
movl $0x1, (%rcx)
leaq 0x437bd(%rip), %rsi     # 0x5803f
leaq 0x422c4(%rip), %rdx     # 0x56b4d
leaq 0x10(%rsp), %rdi
callq 0x13a52
cmpb $0x0, 0x10(%rsp)
jne 0x148f5
movq %rsp, %rdi
callq 0x3d5f6
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x148b1
movq (%rax), %r8
jmp 0x148b8
leaq 0x447b2(%rip), %r8      # 0x5906a
leaq 0x42237(%rip), %rdx     # 0x56af6
leaq 0x8(%rsp), %rdi
pushq $0x1
popq %rsi
pushq $0x3a
popq %rcx
callq 0x3b5b6
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x39b08
leaq 0x8(%rsp), %rdi
callq 0x3b616
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x148f5
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x18(%rsp), %rdi
callq 0x13646
movq %rsp, %rcx
movl $0x1, (%rcx)
leaq 0x43730(%rip), %rsi     # 0x5803f
leaq 0x42240(%rip), %rdx     # 0x56b56
leaq 0x6fd9b(%rip), %r8      # 0x846b8
leaq 0x10(%rsp), %rdi
callq 0x13a52
cmpb $0x0, 0x10(%rsp)
jne 0x14989
movq %rsp, %rdi
callq 0x3d5f6
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x14945
movq (%rax), %r8
jmp 0x1494c
leaq 0x4471e(%rip), %r8      # 0x5906a
leaq 0x421a3(%rip), %rdx     # 0x56af6
leaq 0x8(%rsp), %rdi
pushq $0x1
popq %rsi
pushq $0x3b
popq %rcx
callq 0x3b5b6
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x39b08
leaq 0x8(%rsp), %rdi
callq 0x3b616
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x14989
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x18(%rsp), %rdi
callq 0x13646
movq %rsp, %rcx
andl $0x0, (%rcx)
leaq 0x483a8(%rip), %rsi     # 0x5cd48
leaq 0x421b8(%rip), %rdx     # 0x56b5f
leaq 0x6fd06(%rip), %r8      # 0x846b4
leaq 0x10(%rsp), %rdi
callq 0x13a52
cmpb $0x0, 0x10(%rsp)
jne 0x14a1a
movq %rsp, %rdi
callq 0x3d5f6
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x149d6
movq (%rax), %r8
jmp 0x149dd
leaq 0x4468d(%rip), %r8      # 0x5906a
leaq 0x42112(%rip), %rdx     # 0x56af6
leaq 0x8(%rsp), %rdi
pushq $0x1
popq %rsi
pushq $0x3c
popq %rcx
callq 0x3b5b6
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x39b08
leaq 0x8(%rsp), %rdi
callq 0x3b616
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x14a1a
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x18(%rsp), %rdi
callq 0x13646
incl 0x6fc8a(%rip)           # 0x846b4
incl 0x6fc80(%rip)           # 0x846b0
leaq 0x6fc79(%rip), %r8      # 0x846b0
movq %rsp, %rcx
movl $0x2, (%rcx)
leaq 0x435e8(%rip), %rsi     # 0x5802f
leaq 0x420ff(%rip), %rdx     # 0x56b4d
leaq 0x10(%rsp), %rdi
callq 0x13a52
cmpb $0x0, 0x10(%rsp)
jne 0x14aba
movq %rsp, %rdi
callq 0x3d5f6
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x14a76
movq (%rax), %r8
jmp 0x14a7d
leaq 0x445ed(%rip), %r8      # 0x5906a
leaq 0x42072(%rip), %rdx     # 0x56af6
leaq 0x8(%rsp), %rdi
pushq $0x1
popq %rsi
pushq $0x3f
popq %rcx
callq 0x3b5b6
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x39b08
leaq 0x8(%rsp), %rdi
callq 0x3b616
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x14aba
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x18(%rsp), %rdi
callq 0x13646
movq %rsp, %rcx
movl $0x1, (%rcx)
leaq 0x4356b(%rip), %rsi     # 0x5803f
leaq 0x4207b(%rip), %rdx     # 0x56b56
leaq 0x6fbd6(%rip), %r8      # 0x846b8
leaq 0x10(%rsp), %rdi
callq 0x13a52
cmpb $0x0, 0x10(%rsp)
jne 0x14b4e
movq %rsp, %rdi
callq 0x3d5f6
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x14b0a
movq (%rax), %r8
jmp 0x14b11
leaq 0x44559(%rip), %r8      # 0x5906a
leaq 0x41fde(%rip), %rdx     # 0x56af6
leaq 0x8(%rsp), %rdi
pushq $0x1
popq %rsi
pushq $0x40
popq %rcx
callq 0x3b5b6
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x39b08
leaq 0x8(%rsp), %rdi
callq 0x3b616
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x14b4e
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x18(%rsp), %rdi
callq 0x13646
movq %rsp, %rcx
movl $0x1, (%rcx)
leaq 0x434d7(%rip), %rsi     # 0x5803f
leaq 0x41ff0(%rip), %rdx     # 0x56b5f
leaq 0x6fb3e(%rip), %r8      # 0x846b4
leaq 0x10(%rsp), %rdi
callq 0x13a52
cmpb $0x0, 0x10(%rsp)
jne 0x14be2
movq %rsp, %rdi
callq 0x3d5f6
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x14b9e
movq (%rax), %r8
jmp 0x14ba5
leaq 0x444c5(%rip), %r8      # 0x5906a
leaq 0x41f4a(%rip), %rdx     # 0x56af6
leaq 0x8(%rsp), %rdi
pushq $0x1
popq %rsi
pushq $0x41
popq %rcx
callq 0x3b5b6
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x39b08
leaq 0x8(%rsp), %rdi
callq 0x3b616
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x14be2
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x18(%rsp), %rdi
callq 0x13646
leaq 0x6fabd(%rip), %r8      # 0x846b0
addl $-0x2, 0x6fab6(%rip)    # 0x846b0
movq %rsp, %rcx
andl $0x0, (%rcx)
leaq 0x48141(%rip), %rsi     # 0x5cd48
leaq 0x41f3f(%rip), %rdx     # 0x56b4d
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x13a52
cmpb $0x0, (%rbx)
jne 0x14c7b
movq %rsp, %rdi
callq 0x3d5f6
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x14c37
movq (%rax), %r8
jmp 0x14c3e
leaq 0x4442c(%rip), %r8      # 0x5906a
leaq 0x41eb1(%rip), %rdx     # 0x56af6
leaq 0x8(%rsp), %rdi
pushq $0x1
popq %rsi
pushq $0x43
popq %rcx
callq 0x3b5b6
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x39b08
leaq 0x8(%rsp), %rdi
callq 0x3b616
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x14c7b
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x18(%rsp), %rdi
callq 0x13646
addq $0x20, %rsp
popq %rbx
retq
jmp 0x14d1c
jmp 0x14d2b
jmp 0x14ca6
jmp 0x14d3f
jmp 0x14cb5
jmp 0x14cc9
jmp 0x14ca6
jmp 0x14cb5
jmp 0x14cc9
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x3b616
jmp 0x14cb8
movq %rax, %rbx
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x14ccc
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x14ccc
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x13646
jmp 0x14d55
jmp 0x14ce4
jmp 0x14cf3
jmp 0x14d07
jmp 0x14ce4
jmp 0x14cf3
jmp 0x14d07
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x3b616
jmp 0x14cf6
movq %rax, %rbx
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x14d0a
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x14d0a
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x13646
jmp 0x14d64
jmp 0x14d1c
jmp 0x14d2b
jmp 0x14d3f
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x3b616
jmp 0x14d2e
movq %rax, %rbx
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x14d42
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x14d42
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x13646
jmp 0x14d6a
jmp 0x14d52
jmp 0x14d52
movq %rax, %rbx
decl 0x6f955(%rip)           # 0x846b0
jmp 0x14d64
jmp 0x14d61
jmp 0x14d61
movq %rax, %rbx
decl 0x6f946(%rip)           # 0x846b0
movq %rbx, %rdi
callq 0xdaa0
jmp 0x14d74
movq %rax, %rbx
jmp 0x14d6a
nop