// File: /workspace/github_cpp_makefile_star2_O1/pfnet-research[P]pml/src/test.cpp
// Function: subst_formula_test::subst_formula_test()
PML_TEST(subst_formula_test) {
    // [true/hoge]hoge == true
    assert_eq(
            *logic::subst(
                make<logic::var_formula_t>("hoge"),
                "hoge", make<logic::top_formula_t>()),
            logic::top_formula_t{});
    // [true/neko](Prob(neko) >= 2/3) == Prob(true) >= 2/3
    assert_eq(
            *logic::subst(
                make<logic::geq_formula_t>(
                    make<logic::prob_term_t>(
                        make<logic::var_formula_t>("neko")),
                    make<logic::div_term_t>(
                        make<logic::int_term_t>(2),
                        make<logic::int_term_t>(3))),
                "neko", make<logic::top_formula_t>()),
            logic::geq_formula_t(
                make<logic::prob_term_t>(
                    make<logic::top_formula_t>()),
                make<logic::div_term_t>(
                    make<logic::int_term_t>(2),
                    make<logic::int_term_t>(3))));
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x138, %rsp            # imm = 0x138
movq %rdi, %rbx
movl $0x0, 0x8(%rdi)
leaq 0x2f4c4(%rip), %rax     # 0x62af0
movq %rax, (%rdi)
leaq 0x10(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x179e3(%rip), %rcx     # 0x4b026
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
callq 0x3b71c
movups 0x8(%rsp), %xmm0
movups %xmm0, 0x60(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rsp)
leaq 0x38(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x179b2(%rip), %rsi     # 0x4b026
leaq 0x179af(%rip), %rdx     # 0x4b02a
leaq 0x28(%rsp), %rdi
callq 0x11866
movl $0x18, %edi
callq 0x92d0
movabsq $0x100000001, %rbp      # imm = 0x100000001
movq %rbp, 0x8(%rax)
leaq 0x2e284(%rip), %rcx     # 0x61928
movq %rcx, (%rax)
movq %rax, %rdx
addq $0x10, %rdx
leaq 0x2e2c3(%rip), %r14     # 0x61978
movq %r14, 0x10(%rax)
leaq 0x18(%rsp), %rcx
movq %rdx, (%rcx)
movq %rax, 0x8(%rcx)
leaq 0x80(%rsp), %rdi
leaq 0x60(%rsp), %rsi
leaq 0x28(%rsp), %rdx
callq 0x129a0
movq 0x80(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
movq %r14, (%rdx)
movq %rbx, %rdi
callq 0x3b378
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0x33709
callq 0xaa12
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x33718
callq 0xaa12
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x3372f
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x92e0
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0x3373e
callq 0xaa12
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x3374d
callq 0xaa12
leaq 0xe8(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x178c7(%rip), %rcx     # 0x4b02b
leaq 0xe0(%rsp), %rsi
leaq 0x28(%rsp), %rdx
callq 0x3b71c
leaq 0xc8(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0xc0(%rsp), %rsi
leaq 0x28(%rsp), %rdx
leaq 0xe0(%rsp), %rcx
callq 0x3b196
movq $0x0, 0xb0(%rsp)
movl $0x20, %edi
callq 0x92d0
movq %rbp, 0x8(%rax)
leaq 0x2e0ef(%rip), %r13     # 0x618b0
movq %r13, (%rax)
movq %rax, %rcx
addq $0x10, %rcx
leaq 0x2e12e(%rip), %r12     # 0x61900
movq %r12, 0x10(%rax)
movl $0x2, 0x18(%rax)
movq %rax, 0xb8(%rsp)
movq %rcx, 0xb0(%rsp)
movq $0x0, 0x118(%rsp)
movl $0x20, %edi
callq 0x92d0
movq %rbp, 0x8(%rax)
movq %r13, (%rax)
movq %rax, %rcx
addq $0x10, %rcx
movq %r12, 0x10(%rax)
movl $0x3, 0x18(%rax)
leaq 0x118(%rsp), %r8
movq %rax, 0x8(%r8)
movq %rcx, (%r8)
leaq 0xd8(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0xd0(%rsp), %rsi
leaq 0x28(%rsp), %rdx
leaq 0xb0(%rsp), %rcx
callq 0x3b942
leaq 0x20(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x18(%rsp), %rsi
leaq 0x28(%rsp), %rdx
leaq 0xc0(%rsp), %rcx
leaq 0xd0(%rsp), %r8
callq 0x3b83c
movups 0x18(%rsp), %xmm0
movups %xmm0, 0x8(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%rsp)
leaq 0x90(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x17785(%rip), %rsi     # 0x4b02b
leaq 0x17782(%rip), %rdx     # 0x4b02f
leaq 0x80(%rsp), %rdi
callq 0x11866
movl $0x18, %edi
callq 0x92d0
movq %rbp, 0x8(%rax)
leaq 0x2e059(%rip), %rcx     # 0x61928
movq %rcx, (%rax)
movq %rax, %rdx
addq $0x10, %rdx
movq %r14, 0x10(%rax)
leaq 0x128(%rsp), %rcx
movq %rdx, (%rcx)
movq %rax, 0x8(%rcx)
leaq 0x60(%rsp), %rdi
leaq 0x8(%rsp), %rsi
leaq 0x80(%rsp), %rdx
callq 0x129a0
movq 0x60(%rsp), %rax
movq %rax, 0xf0(%rsp)
movq $0x0, 0x108(%rsp)
movl $0x18, %edi
callq 0x92d0
movq %rbx, %r15
movq %rbp, 0x8(%rax)
leaq 0x2dff4(%rip), %rcx     # 0x61928
movq %rcx, (%rax)
movq %rax, %rdx
addq $0x10, %rdx
movq %r14, 0x10(%rax)
leaq 0x108(%rsp), %rcx
movq %rax, 0x8(%rcx)
movq %rdx, (%rcx)
leaq 0x78(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0x3ba48
movq 0x70(%rsp), %rbx
movq 0x78(%rsp), %r14
xorps %xmm0, %xmm0
movaps %xmm0, 0x70(%rsp)
movq $0x0, 0xa0(%rsp)
movl $0x20, %edi
callq 0x92d0
movq %rbp, 0x8(%rax)
movq %r13, (%rax)
movq %rax, %rcx
addq $0x10, %rcx
movq %r12, 0x10(%rax)
movl $0x2, 0x18(%rax)
movq %rax, 0xa8(%rsp)
movq %rcx, 0xa0(%rsp)
movq $0x0, 0xf8(%rsp)
movl $0x20, %edi
callq 0x92d0
movq %rbp, 0x8(%rax)
movq %r13, (%rax)
movq %rax, %rcx
addq $0x10, %rcx
movq %r12, 0x10(%rax)
movl $0x3, 0x18(%rax)
leaq 0xf8(%rsp), %r8
movq %rax, 0x8(%r8)
movq %rcx, (%r8)
leaq 0x58(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x50(%rsp), %rsi
leaq 0x7(%rsp), %rdx
leaq 0xa0(%rsp), %rcx
callq 0x3b942
movq 0x50(%rsp), %rax
movq 0x58(%rsp), %r12
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%rsp)
leaq 0x2d897(%rip), %r13     # 0x612d0
movq %r13, 0x28(%rsp)
movq %rbx, 0x30(%rsp)
movq %r14, 0x38(%rsp)
testq %r14, %r14
je 0x33a64
movq 0x2f55c(%rip), %rcx     # 0x62fb0
cmpb $0x0, (%rcx)
je 0x33a5f
incl 0x8(%r14)
jmp 0x33a64
lock
incl 0x8(%r14)
movq %rax, 0x40(%rsp)
movq %r12, 0x48(%rsp)
testq %r12, %r12
je 0x33a8c
movq 0x2f536(%rip), %rax     # 0x62fb0
cmpb $0x0, (%rax)
je 0x33a86
incl 0x8(%r12)
jmp 0x33a8c
lock
incl 0x8(%r12)
leaq 0x2d9d5(%rip), %rax     # 0x61468
leaq 0x28(%rsp), %rdx
movq %rax, (%rdx)
movq %r15, %rdi
movq 0xf0(%rsp), %rsi
callq 0x3b52c
movq %r13, 0x28(%rsp)
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
leaq 0x90(%rsp), %rbx
je 0x33ac7
callq 0xaa12
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x33ad6
callq 0xaa12
testq %r12, %r12
je 0x33ae3
movq %r12, %rdi
callq 0xaa12
movq 0x58(%rsp), %rdi
testq %rdi, %rdi
je 0x33af2
callq 0xaa12
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0x33b04
callq 0xaa12
movq 0xa8(%rsp), %rdi
testq %rdi, %rdi
je 0x33b16
callq 0xaa12
testq %r14, %r14
je 0x33b23
movq %r14, %rdi
callq 0xaa12
movq 0x78(%rsp), %rdi
testq %rdi, %rdi
je 0x33b32
callq 0xaa12
movq 0x110(%rsp), %rdi
testq %rdi, %rdi
je 0x33b44
callq 0xaa12
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0x33b53
callq 0xaa12
movq 0x130(%rsp), %rdi
testq %rdi, %rdi
je 0x33b65
callq 0xaa12
movq 0x80(%rsp), %rdi
cmpq %rbx, %rdi
je 0x33b82
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x92e0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x33b91
callq 0xaa12
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x33ba0
callq 0xaa12
movq 0xd8(%rsp), %rdi
testq %rdi, %rdi
je 0x33bb2
callq 0xaa12
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0x33bc4
callq 0xaa12
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x33bd6
callq 0xaa12
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x33be8
callq 0xaa12
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0x33bfa
callq 0xaa12
addq $0x138, %rsp            # imm = 0x138
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x1951c
testq %r12, %r12
je 0x33c26
movq %r12, %rdi
callq 0xaa12
movq 0x58(%rsp), %rdi
testq %rdi, %rdi
je 0x33c3a
callq 0xaa12
jmp 0x33c3a
movq %rax, %rbx
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0x33c51
callq 0xaa12
jmp 0x33c51
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
testq %rdi, %rdi
je 0x33c68
callq 0xaa12
jmp 0x33c68
movq %rax, %rbx
testq %r14, %r14
je 0x33c75
movq %r14, %rdi
callq 0xaa12
movq 0x78(%rsp), %rdi
testq %rdi, %rdi
je 0x33c89
callq 0xaa12
jmp 0x33c89
movq %rax, %rbx
movq 0x110(%rsp), %rdi
testq %rdi, %rdi
je 0x33ca0
callq 0xaa12
jmp 0x33ca0
movq %rax, %rbx
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0x33cb4
callq 0xaa12
jmp 0x33cb4
movq %rax, %rbx
movq 0x130(%rsp), %rdi
testq %rdi, %rdi
je 0x33ccb
callq 0xaa12
jmp 0x33ccb
movq %rax, %rbx
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x33cf5
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x92e0
jmp 0x33cf5
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x33d04
callq 0xaa12
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x33d13
callq 0xaa12
movq 0xd8(%rsp), %rdi
testq %rdi, %rdi
je 0x33d25
callq 0xaa12
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0x33d37
callq 0xaa12
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x33d49
callq 0xaa12
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x33d5b
callq 0xaa12
movq 0xe8(%rsp), %rdi
jmp 0x33dde
movq %rax, %rbx
jmp 0x33d13
movq %rax, %rbx
jmp 0x33d25
movq %rax, %rbx
jmp 0x33d37
movq %rax, %rbx
jmp 0x33d49
movq %rax, %rbx
jmp 0x33d5b
jmp 0x33df0
movq %rax, %rbx
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0x33d9a
callq 0xaa12
jmp 0x33d9a
movq %rax, %rbx
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x33dae
callq 0xaa12
jmp 0x33dae
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x33dca
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x92e0
jmp 0x33dca
movq %rax, %rbx
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0x33dd9
callq 0xaa12
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x33de8
callq 0xaa12
movq %rbx, %rdi
callq 0x94e0
movq %rax, %rbx
jmp 0x33de8
nop