// File: /workspace/github_cpp_makefile_star2_O2/halfflat[P]tinyopt/test/test_maybe.cc
// Function: maybe_conditional_assign_Test::TestBody()
TEST(maybe, conditional_assign) {
    int r = 0;

    EXPECT_TRUE(r << maybe<int>(0));
    EXPECT_EQ(0, r);

    EXPECT_TRUE(r << maybe<int>(4));
    EXPECT_EQ(4, r);

    EXPECT_TRUE(r << maybe<double>(5.3));
    EXPECT_EQ(5, r);

    EXPECT_FALSE(r << maybe<int>());
    EXPECT_EQ(5, r);
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x30, %rsp
leaq 0x2c(%rsp), %rbx
andl $0x0, (%rbx)
leaq 0x20(%rsp), %rdi
movb $0x1, -0x8(%rdi)
andq $0x0, (%rdi)
callq 0x13646
leaq 0x8(%rsp), %rcx
andl $0x0, (%rcx)
leaq 0x47f9d(%rip), %rsi     # 0x5cd48
leaq 0x43697(%rip), %rdx     # 0x58449
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %r8
callq 0x13a52
cmpb $0x0, (%r14)
jne 0x14e28
leaq 0x8(%rsp), %rdi
callq 0x3d5f6
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x14de1
movq (%rax), %r8
jmp 0x14de8
leaq 0x44282(%rip), %r8      # 0x5906a
leaq 0x41d07(%rip), %rdx     # 0x56af6
leaq 0x10(%rsp), %rdi
pushq $0x1
popq %rsi
pushq $0x4a
popq %rcx
callq 0x3b5b6
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x39b08
leaq 0x10(%rsp), %rdi
callq 0x3b616
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x14e28
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rbx
movq %rbx, %rdi
callq 0x13646
pushq $0x4
popq %rbp
leaq 0x2c(%rsp), %r14
movl %ebp, (%r14)
movb $0x1, -0x8(%rbx)
leaq 0x20(%rsp), %rdi
andq $0x0, (%rdi)
callq 0x13646
leaq 0x8(%rsp), %rcx
movl %ebp, (%rcx)
leaq 0x43c75(%rip), %rsi     # 0x58ad5
leaq 0x435e2(%rip), %rdx     # 0x58449
leaq 0x18(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %r8
callq 0x13a52
cmpb $0x0, (%rbx)
jne 0x14edc
leaq 0x8(%rsp), %rdi
callq 0x3d5f6
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x14e95
movq (%rax), %r8
jmp 0x14e9c
leaq 0x441ce(%rip), %r8      # 0x5906a
leaq 0x41c53(%rip), %rdx     # 0x56af6
leaq 0x10(%rsp), %rdi
pushq $0x1
popq %rsi
pushq $0x4d
popq %rcx
callq 0x3b5b6
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x39b08
leaq 0x10(%rsp), %rdi
callq 0x3b616
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x14edc
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rbx
movq %rbx, %rdi
callq 0x13646
pushq $0x5
popq %rbp
leaq 0x2c(%rsp), %r14
movl %ebp, (%r14)
movb $0x1, -0x8(%rbx)
leaq 0x20(%rsp), %rdi
andq $0x0, (%rdi)
callq 0x13646
leaq 0x8(%rsp), %rcx
movl %ebp, (%rcx)
leaq 0x41cab(%rip), %rsi     # 0x56bbf
leaq 0x4352e(%rip), %rdx     # 0x58449
leaq 0x18(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %r8
callq 0x13a52
cmpb $0x0, (%rbx)
jne 0x14f90
leaq 0x8(%rsp), %rdi
callq 0x3d5f6
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x14f49
movq (%rax), %r8
jmp 0x14f50
leaq 0x4411a(%rip), %r8      # 0x5906a
leaq 0x41b9f(%rip), %rdx     # 0x56af6
leaq 0x10(%rsp), %rdi
pushq $0x1
popq %rsi
pushq $0x50
popq %rcx
callq 0x3b5b6
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x39b08
leaq 0x10(%rsp), %rdi
callq 0x3b616
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x14f90
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rbx
movq %rbx, %rdi
callq 0x13646
movb $0x1, -0x8(%rbx)
leaq 0x20(%rsp), %rdi
andq $0x0, (%rdi)
callq 0x13646
leaq 0x8(%rsp), %rcx
movl $0x5, (%rcx)
leaq 0x41bfe(%rip), %rsi     # 0x56bbf
leaq 0x43481(%rip), %rdx     # 0x58449
leaq 0x18(%rsp), %rbx
leaq 0x2c(%rsp), %r8
movq %rbx, %rdi
callq 0x13a52
cmpb $0x0, (%rbx)
jne 0x1503f
leaq 0x8(%rsp), %rdi
callq 0x3d5f6
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x14ff8
movq (%rax), %r8
jmp 0x14fff
leaq 0x4406b(%rip), %r8      # 0x5906a
leaq 0x41af0(%rip), %rdx     # 0x56af6
leaq 0x10(%rsp), %rdi
pushq $0x1
popq %rsi
pushq $0x53
popq %rcx
callq 0x3b5b6
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x39b08
leaq 0x10(%rsp), %rdi
callq 0x3b616
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1503f
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rdi
callq 0x13646
addq $0x30, %rsp
popq %rbx
popq %r14
popq %rbp
retq
jmp 0x15062
jmp 0x15073
jmp 0x15062
jmp 0x15088
jmp 0x15073
jmp 0x15062
jmp 0x15088
jmp 0x15073
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x3b616
jmp 0x15076
jmp 0x15088
movq %rax, %rbx
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1508b
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x1508b
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x13646
movq %rbx, %rdi
callq 0xdaa0
nop