// File: /workspace/github_cpp_makefile_star2_O3/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 $0x68, %rsp
movq %rdi, %rbx
movl $0x0, 0x8(%rdi)
leaq 0x2dae5(%rip), %rax     # 0x61b70
movq %rax, (%rdi)
movl $0x20, %edi
callq 0x92d0
movq %rax, %r14
movabsq $0x100000001, %rbp      # imm = 0x100000001
movq %rbp, 0x8(%rax)
leaq 0x2b958(%rip), %rax     # 0x5fa08
movq %rax, (%r14)
movq %r14, %rax
addq $0x10, %rax
leaq 0x2b9bf(%rip), %rcx     # 0x5fa80
movq %rcx, 0x10(%r14)
movb $0x1, 0x18(%r14)
leaq 0x2ccbf(%rip), %r15     # 0x60d90
movq %r15, 0x8(%rsp)
movq %rax, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq 0x2dec9(%rip), %rax     # 0x61fb0
cmpb $0x0, (%rax)
je 0x340f6
movl $0x2, 0x8(%r14)
jmp 0x340fb
lock
incl 0x8(%r14)
leaq 0x40(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x2ba98
leaq 0x40(%rsp), %rdi
callq 0x2bbf2
movq (%rax), %rsi
leaq 0x2d402(%rip), %rax     # 0x61520
leaq 0x30(%rsp), %rdx
movq %rax, (%rdx)
movq %rbx, %rdi
callq 0x3b5c8
leaq 0x40(%rsp), %rdi
callq 0x19b66
movq %r15, 0x8(%rsp)
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x3414c
callq 0xa946
movq %r14, %rdi
callq 0xa946
movl $0x20, %edi
callq 0x92d0
movq %rax, %r14
movq %rbp, 0x8(%rax)
leaq 0x2b97c(%rip), %r12     # 0x5fae8
movq %r12, (%rax)
leaq 0x2b9c2(%rip), %r13     # 0x5fb38
movq %r13, 0x10(%rax)
movl $0x2a, 0x18(%rax)
movl $0x20, %edi
callq 0x92d0
movq %rax, %r15
movq %r14, %rcx
addq $0x10, %rcx
movq %rbp, 0x8(%rax)
movq %r12, (%rax)
addq $0x10, %rax
movq %r13, 0x10(%r15)
movl $0x20, 0x18(%r15)
leaq 0x2cd85(%rip), %rdx     # 0x60f38
movq %rdx, 0x8(%rsp)
movq %rcx, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq 0x2dde7(%rip), %rcx     # 0x61fb0
cmpb $0x0, (%rcx)
je 0x341de
incl 0x8(%r14)
movq %rax, 0x20(%rsp)
movq %r15, 0x28(%rsp)
jmp 0x341f6
lock
incl 0x8(%r14)
cmpb $0x0, (%rcx)
movq %rax, 0x20(%rsp)
movq %r15, 0x28(%rsp)
je 0x34603
incl 0x8(%r15)
leaq 0x2cf5f(%rip), %rax     # 0x61160
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x40(%rsp), %rdi
callq 0x2ba98
leaq 0x40(%rsp), %rdi
callq 0x2bbf2
movq (%rax), %rsi
leaq 0x30(%rsp), %rdx
leaq 0x2d2f4(%rip), %rax     # 0x61520
movq %rax, (%rdx)
movq %rbx, %rdi
callq 0x3b5c8
leaq 0x40(%rsp), %rdi
callq 0x19b66
leaq 0x2ccf0(%rip), %rax     # 0x60f38
movq %rax, 0x8(%rsp)
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x3425c
callq 0xa946
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x3426b
callq 0xa946
movq %r15, %rdi
callq 0xa946
movq %r14, %rdi
callq 0xa946
movl $0x20, %edi
callq 0x92d0
movq %rax, %r14
movq %rbp, 0x8(%rax)
movq %r12, (%rax)
movq %r13, 0x10(%rax)
movl $0x20, 0x18(%rax)
movl $0x20, %edi
callq 0x92d0
movq %rax, %r15
movq %rbx, 0x38(%rsp)
movq %r14, %rcx
addq $0x10, %rcx
movq %rbp, 0x8(%rax)
movq %r12, (%rax)
addq $0x10, %rax
movq %r13, 0x10(%r15)
movl $0xc, 0x18(%r15)
leaq 0x2cc67(%rip), %rdx     # 0x60f38
movq %rdx, 0x8(%rsp)
movq %rcx, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq 0x2dcc9(%rip), %r13     # 0x61fb0
cmpb $0x0, (%r13)
je 0x34305
incl 0x8(%r14)
movq %rax, 0x20(%rsp)
movq %r15, 0x28(%rsp)
leaq 0x2d21d(%rip), %rbx     # 0x61520
jmp 0x34326
lock
incl 0x8(%r14)
cmpb $0x0, (%r13)
movq %rax, 0x20(%rsp)
movq %r15, 0x28(%rsp)
leaq 0x2d200(%rip), %rbx     # 0x61520
je 0x3460d
incl 0x8(%r15)
leaq 0x2cf4f(%rip), %rax     # 0x61280
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x40(%rsp), %rdi
callq 0x2ba98
leaq 0x40(%rsp), %rdi
callq 0x2bbf2
movq (%rax), %rsi
leaq 0x30(%rsp), %rdx
movq %rbx, (%rdx)
movq 0x38(%rsp), %rdi
callq 0x3b5c8
leaq 0x40(%rsp), %rdi
callq 0x19b66
leaq 0x2cbc5(%rip), %rax     # 0x60f38
movq %rax, 0x8(%rsp)
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x34387
callq 0xa946
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x34396
callq 0xa946
movq %r15, %rdi
callq 0xa946
movq %r14, %rdi
callq 0xa946
movl $0x20, %edi
callq 0x92d0
movq %rax, %r14
movq %rbp, 0x8(%rax)
leaq 0x2b64a(%rip), %r13     # 0x5fa08
movq %r13, (%rax)
movq %rbp, %r12
leaq 0x2b6b5(%rip), %rbp     # 0x5fa80
movq %rbp, 0x10(%rax)
movb $0x1, 0x18(%rax)
movl $0x20, %edi
callq 0x92d0
movq %rax, %r15
movq %r14, %rcx
addq $0x10, %rcx
movq %r12, %rdx
movq %r12, 0x8(%rax)
movq %r13, (%rax)
addq $0x10, %rax
movq %rbp, 0x10(%r15)
movb $0x0, 0x18(%r15)
leaq 0x2cb33(%rip), %rsi     # 0x60f38
movq %rsi, 0x8(%rsp)
movq %rcx, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq 0x2db95(%rip), %rcx     # 0x61fb0
cmpb $0x0, (%rcx)
je 0x34433
incl 0x8(%r14)
movq %rax, 0x20(%rsp)
movq %r15, 0x28(%rsp)
movq %rbx, %r12
jmp 0x3444e
lock
incl 0x8(%r14)
cmpb $0x0, (%rcx)
movq %rax, 0x20(%rsp)
movq %r15, 0x28(%rsp)
movq %rbx, %r12
je 0x34617
incl 0x8(%r15)
movq %rdx, %rbp
leaq 0x2cf44(%rip), %rax     # 0x613a0
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x40(%rsp), %rdi
callq 0x2ba98
leaq 0x40(%rsp), %rdi
callq 0x2bbf2
movq (%rax), %rsi
leaq 0x30(%rsp), %rdx
movq %r12, (%rdx)
movq 0x38(%rsp), %rdi
callq 0x3b5c8
leaq 0x40(%rsp), %rdi
callq 0x19b66
leaq 0x2ca9a(%rip), %rax     # 0x60f38
movq %rax, 0x8(%rsp)
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x344b2
callq 0xa946
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x344c1
callq 0xa946
movq %r15, %rdi
callq 0xa946
movq %r14, %rdi
callq 0xa946
movl $0x20, %edi
callq 0x92d0
movq %rax, %r14
movq %rbp, 0x8(%rax)
leaq 0x2b51f(%rip), %r13     # 0x5fa08
movq %r13, (%rax)
movq %rbp, %r12
leaq 0x2b58a(%rip), %rbp     # 0x5fa80
movq %rbp, 0x10(%rax)
movb $0x1, 0x18(%rax)
movl $0x20, %edi
callq 0x92d0
movq %rax, %r15
movq %r14, %rcx
addq $0x10, %rcx
movq %r12, 0x8(%rax)
movq %r13, (%rax)
addq $0x10, %rax
movq %rbp, 0x10(%r15)
movb $0x0, 0x18(%r15)
leaq 0x2ca0b(%rip), %rdx     # 0x60f38
movq %rdx, 0x8(%rsp)
movq %rcx, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq 0x2da6d(%rip), %rcx     # 0x61fb0
cmpb $0x0, (%rcx)
je 0x3455c
movl $0x2, 0x8(%r14)
movq %rax, 0x20(%rsp)
movq %r15, 0x28(%rsp)
jmp 0x34574
lock
incl 0x8(%r14)
cmpb $0x0, (%rcx)
movq %rax, 0x20(%rsp)
movq %r15, 0x28(%rsp)
je 0x34621
incl 0x8(%r15)
leaq 0x2d631(%rip), %rax     # 0x61bb0
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x40(%rsp), %rdi
callq 0x2ba98
leaq 0x40(%rsp), %rdi
callq 0x2bbf2
movq (%rax), %rsi
leaq 0x30(%rsp), %rdx
movq %rbx, (%rdx)
movq 0x38(%rsp), %rdi
callq 0x3b5c8
leaq 0x40(%rsp), %rdi
callq 0x19b66
leaq 0x2c977(%rip), %rax     # 0x60f38
movq %rax, 0x8(%rsp)
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x345d5
callq 0xa946
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x345e4
callq 0xa946
movq %r15, %rdi
callq 0xa946
movq %r14, %rdi
callq 0xa946
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
lock
incl 0x8(%r15)
jmp 0x341fa
lock
incl 0x8(%r15)
jmp 0x3432a
lock
incl 0x8(%r15)
jmp 0x34452
lock
incl 0x8(%r15)
jmp 0x34578
jmp 0x3464b
jmp 0x3464b
jmp 0x3465a
jmp 0x34671
jmp 0x346a5
jmp 0x3464b
jmp 0x3464b
jmp 0x3465a
jmp 0x34671
jmp 0x346a5
jmp 0x3464b
jmp 0x3464b
jmp 0x3465a
jmp 0x34671
jmp 0x346a5
jmp 0x3464b
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x19b66
jmp 0x3465d
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x276e8
movq %r15, %rdi
callq 0xa946
jmp 0x3469b
movq %rax, %rbx
jmp 0x3469b
jmp 0x346a5
jmp 0x3467a
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x19b66
jmp 0x3468c
movq %rax, %rbx
movq %r15, 0x8(%rsp)
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
jne 0x3466a
movq %r14, %rdi
callq 0xa946
jmp 0x346a8
movq %rax, %rbx
movq %rbx, %rdi
callq 0x94e0