// File: /workspace/github_cpp_makefile_star2_O2/pfnet-research[P]pml/src/test.cpp
// Function: simple_type_logical::simple_type_logical()
PML_TEST(simple_type_logical) {
    assert_eq(
        *simty::simple_typing(ast::neg_expr_t{
            make<ast::bool_expr_t>(true)}).ok(),
        simty::bool_type_t{});

    assert_eq(
        *simty::simple_typing(ast::eq_expr_t{
            make<ast::int_expr_t>(42),
            make<ast::int_expr_t>(32)}).ok(),
        simty::bool_type_t{});

    assert_eq(
        *simty::simple_typing(ast::leq_expr_t {
            make<ast::int_expr_t>(32),
            make<ast::int_expr_t>(12)}).ok(),
        simty::bool_type_t{});

    assert_eq(
        *simty::simple_typing(ast::and_expr_t {
            make<ast::bool_expr_t>(true),
            make<ast::bool_expr_t>(false)}).ok(),
        simty::bool_type_t{});

    assert_eq(
        *simty::simple_typing(ast::or_expr_t {
            make<ast::bool_expr_t>(true),
            make<ast::bool_expr_t>(false)}).ok(),
        simty::bool_type_t{});
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x128, %rsp            # imm = 0x128
movq %rdi, %rbx
andl $0x0, 0x8(%rdi)
leaq 0x331d7(%rip), %rax     # 0x5bb60
movq %rax, (%rdi)
leaq 0x28(%rsp), %rsi
movb $0x1, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0xbaf2
leaq 0x118(%rsp), %r15
leaq 0x18(%rsp), %r14
movaps -0x8(%r14), %xmm0
movaps %xmm0, -0x8(%r15)
xorps %xmm0, %xmm0
movaps %xmm0, -0x8(%r14)
leaq 0x68(%rsp), %r12
leaq 0x110(%rsp), %rsi
movq %r12, %rdi
callq 0x1d776
leaq 0x40(%rsp), %rdi
movq %r12, %rsi
callq 0x222d4
leaq 0x40(%rsp), %rdi
callq 0x223e4
movq (%rax), %rsi
leaq 0x32b1d(%rip), %rax     # 0x5b510
leaq 0x30(%rsp), %rdx
movq %rax, (%rdx)
movq %rbx, %rdi
callq 0x2f370
leaq 0x40(%rsp), %rdi
callq 0x13c86
leaq 0x68(%rsp), %rdi
callq 0x1d78e
movq %r15, %rdi
callq 0xa248
movq %r14, %rdi
callq 0xa248
leaq 0xc(%rsp), %rsi
movl $0x2a, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0xbc7c
leaq 0x108(%rsp), %r15
leaq 0x18(%rsp), %r14
movaps -0x8(%r14), %xmm0
movaps %xmm0, -0x8(%r15)
xorps %xmm0, %xmm0
movaps %xmm0, -0x8(%r14)
leaq 0x8(%rsp), %rsi
movl $0x20, (%rsi)
leaq 0x30(%rsp), %rdi
callq 0xbc7c
leaq 0xf8(%rsp), %r13
leaq 0x38(%rsp), %r12
movaps -0x8(%r12), %xmm0
movaps %xmm0, -0x8(%r13)
xorps %xmm0, %xmm0
movaps %xmm0, -0x8(%r12)
leaq 0x68(%rsp), %rbp
leaq 0x100(%rsp), %rsi
leaq 0xf0(%rsp), %rdx
movq %rbp, %rdi
callq 0x1e8d2
leaq 0x40(%rsp), %rdi
movq %rbp, %rsi
callq 0x222d4
leaq 0x40(%rsp), %rdi
callq 0x223e4
movq (%rax), %rsi
leaq 0x28(%rsp), %rdx
leaq 0x32a3c(%rip), %rax     # 0x5b510
movq %rax, (%rdx)
movq %rbx, %rdi
callq 0x2f370
leaq 0x40(%rsp), %rdi
callq 0x13c86
leaq 0x68(%rsp), %rdi
callq 0x1f1c4
movq %r13, %rdi
callq 0xa248
movq %r12, %rdi
callq 0xa248
movq %r15, %rdi
callq 0xa248
movq %r14, %rdi
callq 0xa248
leaq 0xc(%rsp), %rsi
movl $0x20, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0xbc7c
leaq 0xe8(%rsp), %r15
leaq 0x18(%rsp), %r14
movaps -0x8(%r14), %xmm0
movaps %xmm0, -0x8(%r15)
xorps %xmm0, %xmm0
movaps %xmm0, -0x8(%r14)
leaq 0x8(%rsp), %rsi
movl $0xc, (%rsi)
leaq 0x30(%rsp), %rdi
callq 0xbc7c
leaq 0xd8(%rsp), %r13
leaq 0x38(%rsp), %r12
movaps -0x8(%r12), %xmm0
movaps %xmm0, -0x8(%r13)
xorps %xmm0, %xmm0
movaps %xmm0, -0x8(%r12)
leaq 0x68(%rsp), %rbp
leaq 0xe0(%rsp), %rsi
leaq 0xd0(%rsp), %rdx
movq %rbp, %rdi
callq 0x1ed3e
leaq 0x40(%rsp), %rdi
movq %rbp, %rsi
callq 0x222d4
leaq 0x40(%rsp), %rdi
callq 0x223e4
movq (%rax), %rsi
leaq 0x28(%rsp), %rdx
leaq 0x32950(%rip), %rax     # 0x5b510
movq %rax, (%rdx)
movq %rbx, %rdi
callq 0x2f370
leaq 0x40(%rsp), %rdi
callq 0x13c86
leaq 0x68(%rsp), %rdi
callq 0x1f1c4
movq %r13, %rdi
callq 0xa248
movq %r12, %rdi
callq 0xa248
movq %r15, %rdi
callq 0xa248
movq %r14, %rdi
callq 0xa248
leaq 0xc(%rsp), %rsi
movb $0x1, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0xbaf2
leaq 0xc8(%rsp), %r15
leaq 0x18(%rsp), %r14
movaps -0x8(%r14), %xmm0
movaps %xmm0, -0x8(%r15)
xorps %xmm0, %xmm0
movaps %xmm0, -0x8(%r14)
leaq 0x8(%rsp), %rsi
movb $0x0, (%rsi)
leaq 0x30(%rsp), %rdi
callq 0xbaf2
leaq 0xb8(%rsp), %r13
leaq 0x38(%rsp), %r12
movaps -0x8(%r12), %xmm0
movaps %xmm0, -0x8(%r13)
xorps %xmm0, %xmm0
movaps %xmm0, -0x8(%r12)
leaq 0x68(%rsp), %rbp
leaq 0xc0(%rsp), %rsi
leaq 0xb0(%rsp), %rdx
movq %rbp, %rdi
callq 0x1f1aa
leaq 0x40(%rsp), %rdi
movq %rbp, %rsi
callq 0x222d4
leaq 0x40(%rsp), %rdi
callq 0x223e4
movq (%rax), %rsi
leaq 0x28(%rsp), %rdx
leaq 0x3286a(%rip), %rax     # 0x5b510
movq %rax, (%rdx)
movq %rbx, %rdi
callq 0x2f370
leaq 0x40(%rsp), %rdi
callq 0x13c86
leaq 0x68(%rsp), %rdi
callq 0x1f1c4
movq %r13, %rdi
callq 0xa248
movq %r12, %rdi
callq 0xa248
movq %r15, %rdi
callq 0xa248
movq %r14, %rdi
callq 0xa248
leaq 0xc(%rsp), %rsi
movb $0x1, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0xbaf2
leaq 0xa8(%rsp), %r15
leaq 0x18(%rsp), %r14
movaps -0x8(%r14), %xmm0
movaps %xmm0, -0x8(%r15)
xorps %xmm0, %xmm0
movaps %xmm0, -0x8(%r14)
leaq 0x8(%rsp), %rsi
movb $0x0, (%rsi)
leaq 0x30(%rsp), %rdi
callq 0xbaf2
leaq 0x98(%rsp), %r13
leaq 0x38(%rsp), %r12
movaps -0x8(%r12), %xmm0
movaps %xmm0, -0x8(%r13)
xorps %xmm0, %xmm0
movaps %xmm0, -0x8(%r12)
leaq 0x68(%rsp), %rbp
leaq 0xa0(%rsp), %rsi
leaq 0x90(%rsp), %rdx
movq %rbp, %rdi
callq 0x2f4c2
leaq 0x40(%rsp), %rdi
movq %rbp, %rsi
callq 0x222d4
leaq 0x40(%rsp), %rdi
callq 0x223e4
movq (%rax), %rsi
leaq 0x28(%rsp), %rdx
leaq 0x32784(%rip), %rax     # 0x5b510
movq %rax, (%rdx)
movq %rbx, %rdi
callq 0x2f370
leaq 0x40(%rsp), %rdi
callq 0x13c86
leaq 0x68(%rsp), %rdi
callq 0x1f1c4
movq %r13, %rdi
callq 0xa248
movq %r12, %rdi
callq 0xa248
movq %r15, %rdi
callq 0xa248
movq %r14, %rdi
callq 0xa248
addq $0x128, %rsp            # imm = 0x128
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x28dfd
jmp 0x28dfd
jmp 0x28e0c
jmp 0x28e2b
jmp 0x28e62
jmp 0x28dfd
jmp 0x28dfd
jmp 0x28e0c
jmp 0x28e2b
jmp 0x28e62
jmp 0x28dfd
jmp 0x28dfd
jmp 0x28e0c
jmp 0x28e2b
jmp 0x28e62
jmp 0x28dfd
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x13c86
jmp 0x28e0f
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x1f1c4
movq %r13, %rdi
callq 0xa248
movq %r12, %rdi
callq 0xa248
jmp 0x28e50
movq %rax, %rbx
jmp 0x28e50
jmp 0x28e62
jmp 0x28e34
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x13c86
jmp 0x28e46
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x1d78e
movq %r15, %rdi
callq 0xa248
movq %r14, %rdi
callq 0xa248
jmp 0x28e65
movq %rax, %rbx
movq %rbx, %rdi
callq 0x94d0
nop