// File: sighingnow[P]compile-pascal/pl0_parser.cpp
// Function: pl0_condition_fn(input_t*)
pair<int, pl0_ast_condtion *> pl0_condition_fn(input_t *text) {
    auto res = (spaces >> (pl0_expression + pl0_comp_op + pl0_expression) << spaces)(text);
    if (verbose) {
        cout << "parsing: Condition Expression" << endl;
    }
    return make_pair(std::get<0>(res), new pl0_ast_condtion(
        text->locate(),
        std::get<1>(res).first.first,
        std::get<1>(res).first.second,
        std::get<1>(res).second
    ));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x520, %rsp            # imm = 0x520
movq %rdi, -0x18(%rbp)
leaq 0x14c01a(%rip), %rsi    # 0x160130
movq %rsi, -0x4d0(%rbp)
leaq 0x14c294(%rip), %rdx    # 0x1603b8
leaq -0x4a8(%rbp), %rdi
movq %rdi, -0x4d8(%rbp)
callq 0x28280
movq -0x4d8(%rbp), %rsi
movq -0x4d0(%rbp), %rdx
leaq -0x418(%rbp), %rdi
callq 0x28240
jmp 0x14153
leaq 0x14b676(%rip), %rsi    # 0x15f7d0
leaq -0x340(%rbp), %rdi
leaq -0x418(%rbp), %rdx
callq 0x28200
jmp 0x1416f
leaq 0x14b65a(%rip), %rdx    # 0x15f7d0
leaq -0x200(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0x281c0
jmp 0x1418b
movq -0x18(%rbp), %rdx
leaq -0x58(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x282c0
jmp 0x141a1
leaq -0x200(%rbp), %rdi
callq 0x28630
leaq -0x340(%rbp), %rdi
callq 0x28660
leaq -0x418(%rbp), %rdi
callq 0x28690
leaq -0x4a8(%rbp), %rdi
callq 0x286c0
testb $0x1, 0x14b660(%rip)    # 0x15f838
je 0x142ae
movq 0x14adf3(%rip), %rdi    # 0x15efd8
leaq 0xdb30e(%rip), %rsi     # 0xef4fa
callq 0x5330
movq %rax, -0x4e0(%rbp)
jmp 0x141fa
movq -0x4e0(%rbp), %rdi
movq 0x14adb8(%rip), %rsi    # 0x15efc0
callq 0x53a0
jmp 0x1420f
jmp 0x142ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x4b0(%rbp)
movl %eax, -0x4b4(%rbp)
jmp 0x14286
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x4b0(%rbp)
movl %eax, -0x4b4(%rbp)
jmp 0x1427a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x4b0(%rbp)
movl %eax, -0x4b4(%rbp)
jmp 0x1426e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x4b0(%rbp)
movl %eax, -0x4b4(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x28630
leaq -0x340(%rbp), %rdi
callq 0x28660
leaq -0x418(%rbp), %rdi
callq 0x28690
leaq -0x4a8(%rbp), %rdi
callq 0x286c0
jmp 0x143de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x4b0(%rbp)
movl %eax, -0x4b4(%rbp)
jmp 0x143d5
leaq -0x58(%rbp), %rdi
callq 0x28720
movq %rax, -0x4f0(%rbp)
movl $0x20, %edi
callq 0x5340
movq %rax, -0x4e8(%rbp)
jmp 0x142d1
movq -0x18(%rbp), %rdi
callq 0x1a350
movq %rax, -0x4f8(%rbp)
jmp 0x142e3
movq -0x4f8(%rbp), %rax
movq %rax, -0x4c8(%rbp)
leaq -0x58(%rbp), %rdi
movq %rdi, -0x510(%rbp)
callq 0x28740
movq -0x510(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x508(%rbp)
callq 0x28740
movq -0x510(%rbp), %rdi
movq 0x8(%rax), %rax
movq %rax, -0x500(%rbp)
callq 0x28740
movq -0x4e8(%rbp), %rdi
movq -0x508(%rbp), %rdx
movq -0x500(%rbp), %rcx
movq 0x10(%rax), %r8
movq -0x4c8(%rbp), %rsi
callq 0x28760
jmp 0x14355
movq -0x4f0(%rbp), %rdi
movq -0x4e8(%rbp), %rax
movq %rax, -0x4c0(%rbp)
leaq -0x4c0(%rbp), %rsi
callq 0x286f0
movq %rdx, -0x520(%rbp)
movl %eax, -0x514(%rbp)
jmp 0x14385
movq -0x520(%rbp), %rax
movl -0x514(%rbp), %ecx
movl %ecx, -0x10(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x287a0
movl -0x10(%rbp), %eax
movq -0x8(%rbp), %rdx
addq $0x520, %rsp            # imm = 0x520
popq %rbp
retq
movq -0x4e8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x4b0(%rbp)
movl %eax, -0x4b4(%rbp)
movl $0x20, %esi
callq 0x5350
leaq -0x58(%rbp), %rdi
callq 0x287a0
movq -0x4b0(%rbp), %rdi
callq 0x55b0
nopw (%rax,%rax)