// File: /workspace/github_cpp_makefile_star2_O1/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 $0x58, %rsp
movq %rdi, %r13
movl $0x0, 0x8(%rdi)
leaq 0x2e515(%rip), %rax     # 0x62b70
movq %rax, (%rdi)
movl $0x20, %edi
callq 0x92d0
movq %rax, %r14
movabsq $0x100000001, %rax      # imm = 0x100000001
movq %rax, 0x8(%r14)
leaq 0x2c328(%rip), %rax     # 0x609a8
movq %rax, (%r14)
movq %r14, %rax
addq $0x10, %rax
leaq 0x2c3c7(%rip), %rcx     # 0x60a58
movq %rcx, 0x10(%r14)
movb $0x1, 0x18(%r14)
leaq 0x2d6c7(%rip), %r15     # 0x61d68
movq %r15, (%rsp)
movq %rax, 0x8(%rsp)
movq %r14, 0x10(%rsp)
movq 0x2e8fa(%rip), %rax     # 0x62fb0
cmpb $0x0, (%rax)
je 0x346c5
movl $0x2, 0x8(%r14)
jmp 0x346ca
lock
incl 0x8(%r14)
leaq 0x30(%rsp), %rdi
movq %rsp, %rsi
callq 0x2bc40
leaq 0x30(%rsp), %rdi
callq 0x2bd94
movq (%rax), %rsi
leaq 0x2de0d(%rip), %rax     # 0x624f8
leaq 0x28(%rsp), %rdx
movq %rax, (%rdx)
movq %r13, %rdi
callq 0x3be00
leaq 0x30(%rsp), %rdi
callq 0x19d96
movq %r15, (%rsp)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x34718
callq 0xaa12
movq %r14, %rdi
callq 0xaa12
movl $0x20, %edi
callq 0x92d0
movq %rax, %r14
movabsq $0x100000001, %rbx      # imm = 0x100000001
movq %rbx, 0x8(%rax)
leaq 0x2c37e(%rip), %r12     # 0x60ac0
movq %r12, (%rax)
leaq 0x2c3c4(%rip), %rbp     # 0x60b10
movq %rbp, 0x10(%rax)
movl $0x2a, 0x18(%rax)
movl $0x20, %edi
callq 0x92d0
movq %rax, %r15
movq %r14, %rcx
addq $0x10, %rcx
movq %rbx, 0x8(%rax)
movq %r12, (%rax)
addq $0x10, %rax
movq %rbp, 0x10(%r15)
movl $0x20, 0x18(%r15)
leaq 0x2d787(%rip), %rdx     # 0x61f10
movq %rdx, (%rsp)
movq %rcx, 0x8(%rsp)
movq %r14, 0x10(%rsp)
movq 0x2e812(%rip), %rcx     # 0x62fb0
cmpb $0x0, (%rcx)
je 0x347a9
incl 0x8(%r14)
jmp 0x347ae
lock
incl 0x8(%r14)
movq %r13, %rbx
movq %rax, 0x18(%rsp)
movq %r15, 0x20(%rsp)
movq 0x2e7ee(%rip), %rax     # 0x62fb0
cmpb $0x0, (%rax)
je 0x347cd
incl 0x8(%r15)
jmp 0x347d2
lock
incl 0x8(%r15)
leaq 0x2d95f(%rip), %rax     # 0x62138
movq %rsp, %rsi
movq %rax, (%rsi)
leaq 0x30(%rsp), %rdi
callq 0x2bc40
leaq 0x30(%rsp), %rdi
callq 0x2bd94
movq (%rax), %rsi
leaq 0x28(%rsp), %rdx
leaq 0x2dcf6(%rip), %rax     # 0x624f8
movq %rax, (%rdx)
movq %rbx, %rdi
callq 0x3be00
leaq 0x30(%rsp), %rdi
callq 0x19d96
leaq 0x2d6f2(%rip), %rax     # 0x61f10
movq %rax, (%rsp)
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x34831
callq 0xaa12
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x34840
callq 0xaa12
movq %r15, %rdi
callq 0xaa12
movq %r14, %rdi
callq 0xaa12
movl $0x20, %edi
callq 0x92d0
movq %rax, %r14
movabsq $0x100000001, %rbx      # imm = 0x100000001
movq %rbx, 0x8(%rax)
movq %r12, (%rax)
movq %rbp, 0x10(%rax)
movl $0x20, 0x18(%rax)
movl $0x20, %edi
callq 0x92d0
movq %rax, %r15
movq %r14, %rcx
addq $0x10, %rcx
movq %rbx, 0x8(%rax)
movq %r12, (%rax)
addq $0x10, %rax
movq %rbp, 0x10(%r15)
movl $0xc, 0x18(%r15)
leaq 0x2d665(%rip), %rdx     # 0x61f10
movq %rdx, (%rsp)
movq %rcx, 0x8(%rsp)
movq %r14, 0x10(%rsp)
movq 0x2e6f0(%rip), %rcx     # 0x62fb0
cmpb $0x0, (%rcx)
je 0x348cb
incl 0x8(%r14)
jmp 0x348d0
lock
incl 0x8(%r14)
leaq 0x2dc21(%rip), %r12     # 0x624f8
movq %r13, %rbx
movq %rax, 0x18(%rsp)
movq %r15, 0x20(%rsp)
cmpb $0x0, (%rcx)
movabsq $0x100000001, %rbp      # imm = 0x100000001
leaq 0x2c0b0(%rip), %r13     # 0x609a8
je 0x34900
incl 0x8(%r15)
jmp 0x34905
lock
incl 0x8(%r15)
leaq 0x2d94c(%rip), %rax     # 0x62258
movq %rsp, %rsi
movq %rax, (%rsi)
leaq 0x30(%rsp), %rdi
callq 0x2bc40
leaq 0x30(%rsp), %rdi
callq 0x2bd94
movq (%rax), %rsi
leaq 0x28(%rsp), %rdx
movq %r12, (%rdx)
movq %rbx, %rdi
callq 0x3be00
leaq 0x30(%rsp), %rdi
callq 0x19d96
leaq 0x2d5c6(%rip), %rax     # 0x61f10
movq %rax, (%rsp)
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x3495d
callq 0xaa12
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x3496c
callq 0xaa12
movq %rbx, %r12
movq %r15, %rdi
callq 0xaa12
movq %r14, %rdi
callq 0xaa12
movl $0x20, %edi
callq 0x92d0
movq %rax, %r14
movq %rbp, 0x8(%rax)
movq %r13, (%rax)
movq %r13, %rbx
leaq 0x2c0bb(%rip), %r13     # 0x60a58
movq %r13, 0x10(%rax)
movb $0x1, 0x18(%rax)
movl $0x20, %edi
callq 0x92d0
movq %rax, %r15
movq %r14, %rcx
addq $0x10, %rcx
movq %rbp, %rdi
movq %rbp, 0x8(%rax)
movq %rbx, %rsi
movq %rbx, (%rax)
addq $0x10, %rax
movq %r13, 0x10(%r15)
movb $0x0, 0x18(%r15)
leaq 0x2d536(%rip), %rdx     # 0x61f10
movq %rdx, (%rsp)
movq %rcx, 0x8(%rsp)
movq %r14, 0x10(%rsp)
movq 0x2e5c1(%rip), %rcx     # 0x62fb0
cmpb $0x0, (%rcx)
je 0x349fa
incl 0x8(%r14)
jmp 0x349ff
lock
incl 0x8(%r14)
movq %r12, %rbx
movq %rax, 0x18(%rsp)
movq %r15, 0x20(%rsp)
cmpb $0x0, (%rcx)
movq %rsi, %r13
movq %rdi, %rbp
je 0x34a1d
incl 0x8(%r15)
jmp 0x34a22
lock
incl 0x8(%r15)
leaq 0x2d94f(%rip), %rax     # 0x62378
movq %rsp, %rsi
movq %rax, (%rsi)
leaq 0x30(%rsp), %rdi
callq 0x2bc40
leaq 0x30(%rsp), %rdi
callq 0x2bd94
movq (%rax), %rsi
leaq 0x28(%rsp), %rdx
leaq 0x2daa6(%rip), %rax     # 0x624f8
movq %rax, (%rdx)
movq %rbx, %rdi
callq 0x3be00
leaq 0x30(%rsp), %rdi
callq 0x19d96
leaq 0x2d4a2(%rip), %rax     # 0x61f10
movq %rax, (%rsp)
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x34a81
callq 0xaa12
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x34a90
callq 0xaa12
movq %r15, %rdi
callq 0xaa12
movq %r14, %rdi
callq 0xaa12
movl $0x20, %edi
callq 0x92d0
movq %rax, %r14
movq %rbp, 0x8(%rax)
movq %r13, (%rax)
movq %rbp, %rbx
movq %r13, %rbp
leaq 0x2bf97(%rip), %r13     # 0x60a58
movq %r13, 0x10(%rax)
movb $0x1, 0x18(%rax)
movl $0x20, %edi
callq 0x92d0
movq %rax, %r15
movq %r14, %rcx
addq $0x10, %rcx
movq %rbx, 0x8(%rax)
movq %rbp, (%rax)
addq $0x10, %rax
movq %r13, 0x10(%r15)
movb $0x0, 0x18(%r15)
leaq 0x2d418(%rip), %rdx     # 0x61f10
movq %rdx, (%rsp)
movq %rcx, 0x8(%rsp)
movq %r14, 0x10(%rsp)
movq 0x2e4a3(%rip), %rcx     # 0x62fb0
cmpb $0x0, (%rcx)
je 0x34b18
incl 0x8(%r14)
jmp 0x34b1d
lock
incl 0x8(%r14)
movq %r12, %rbx
movq %rax, 0x18(%rsp)
movq %r15, 0x20(%rsp)
cmpb $0x0, (%rcx)
leaq 0x2d9c4(%rip), %r12     # 0x624f8
je 0x34b3c
incl 0x8(%r15)
jmp 0x34b41
lock
incl 0x8(%r15)
leaq 0x2e068(%rip), %rax     # 0x62bb0
movq %rsp, %rsi
movq %rax, (%rsi)
leaq 0x30(%rsp), %rdi
callq 0x2bc40
leaq 0x30(%rsp), %rdi
callq 0x2bd94
movq (%rax), %rsi
leaq 0x28(%rsp), %rdx
movq %r12, (%rdx)
movq %rbx, %rdi
callq 0x3be00
leaq 0x30(%rsp), %rdi
callq 0x19d96
leaq 0x2d38a(%rip), %rax     # 0x61f10
movq %rax, (%rsp)
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x34b99
callq 0xaa12
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x34ba8
callq 0xaa12
movq %r15, %rdi
callq 0xaa12
movq %r14, %rdi
callq 0xaa12
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x34be7
jmp 0x34be7
jmp 0x34bf6
jmp 0x34c0b
jmp 0x34c3e
jmp 0x34be7
jmp 0x34be7
jmp 0x34bf6
jmp 0x34c0b
jmp 0x34c3e
jmp 0x34be7
jmp 0x34be7
jmp 0x34bf6
jmp 0x34c0b
jmp 0x34c3e
jmp 0x34be7
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x19d96
jmp 0x34bf9
movq %rax, %rbx
movq %rsp, %rdi
callq 0x27888
movq %r15, %rdi
callq 0xaa12
jmp 0x34c34
movq %rax, %rbx
jmp 0x34c34
jmp 0x34c3e
jmp 0x34c14
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x19d96
jmp 0x34c26
movq %rax, %rbx
movq %r15, (%rsp)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
jne 0x34c04
movq %r14, %rdi
callq 0xaa12
jmp 0x34c41
movq %rax, %rbx
movq %rbx, %rdi
callq 0x94e0
nop