// File: /workspace/github_cpp_makefile_star2_O1/joncampbell123[P]haxcc/haxpp.cpp
// Function: parse_expr_ltr(expression&, __gnu_cxx::__normal_iterator<token*, std::vector<token, std::allocator<token>>>&, __gnu_cxx::__normal_iterator<token*, std::vector<token, std::allocator<token>>> const&, unsigned int, tokenlist_entry const*, unsigned long)
expression::node::node_t parse_expr_ltr(expression &expr,token_string::iterator &ti,const token_string::iterator &tie,unsigned int min_prec,const tokenlist_entry *match_token,expression::node::node_t headnode) {
    token::token_t repl;
    unsigned int prec;

    while (ti != tie && match_token_list(repl,*ti,match_token) && (prec=token::precedence(*ti,false)) <= min_prec) {
        const expression::node::node_t opnode = expr.newnode(*(ti++),repl);

        if (ti != tie) {
            expr.getnode(opnode).children.resize(2);
            expr.getnode(opnode).children[0] = headnode;
            expr.getnode(opnode).children[1] = parse_expr(expr,ti,tie,prec-1u);
            headnode = opnode;
        }
        else {
            throw invalid_argument("missing rvalue");
        }
    }

    return headnode;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %r9, %rbp
movl %ecx, (%rsp)
movq (%rsi), %rbx
cmpq (%rdx), %rbx
je 0xba77
movq %rsi, %r13
movq %rdi, %r15
movabsq $-0x71c71c71c71c71c7, %r12 # imm = 0x8E38E38E38E38E39
movq %r8, 0x10(%rsp)
movq %rdx, 0x8(%rsp)
movl (%r8), %r9d
testl %r9d, %r9d
setne %al
je 0xb95a
movl (%rbx), %ecx
movb $0x1, %al
movq %r8, %rdi
cmpl %r9d, %ecx
je 0xb953
movl 0x8(%rdi), %r9d
testl %r9d, %r9d
setne %al
je 0xb95a
addq $0x8, %rdi
jmp 0xb93c
movl 0x4(%rdi), %ecx
movl %ecx, 0x4(%rsp)
testb %al, %al
je 0xba77
movq %rbx, %rdi
xorl %esi, %esi
callq 0x291e
cmpl (%rsp), %eax
ja 0xba77
movl %eax, %r14d
movq %rbp, 0x20(%rsp)
movq %r12, %rbp
leaq 0x70(%rbx), %rax
movq %rax, (%r13)
movq %r15, %rdi
movq %rbx, %rsi
movl 0x4(%rsp), %edx
callq 0xae96
movq (%r13), %rdx
movq 0x8(%rsp), %rcx
cmpq (%rcx), %rdx
je 0xbaf4
movq (%r15), %rdx
movq 0x8(%r15), %rcx
subq %rdx, %rcx
sarq $0x4, %rcx
imulq %rbp, %rcx
cmpq %rcx, %rax
jae 0xba8c
leaq (%rax,%rax,8), %rbx
shlq $0x4, %rbx
leaq (%rdx,%rbx), %rdi
addq $0x70, %rdi
movl $0x2, %esi
movq %rax, %r12
callq 0xf1be
movq (%r15), %rax
movq 0x8(%r15), %rcx
subq %rax, %rcx
sarq $0x4, %rcx
imulq %rbp, %rcx
movq %r12, 0x18(%rsp)
cmpq %rcx, %r12
jae 0xbaaa
movq 0x70(%rax,%rbx), %rax
movq 0x20(%rsp), %rcx
movq %rcx, (%rax)
decl %r14d
movq %r15, %rdi
movq %r15, %r12
movq %r13, %r15
movq %r13, %rsi
movq 0x8(%rsp), %r13
movq %r13, %rdx
movl %r14d, %ecx
callq 0xb0e4
movq (%r12), %rcx
movq 0x8(%r12), %rdx
subq %rcx, %rdx
sarq $0x4, %rdx
imulq %rbp, %rdx
movq 0x18(%rsp), %r9
cmpq %rdx, %r9
jae 0xbac8
movq %r12, %rdi
movq %rbp, %r12
movq 0x70(%rcx,%rbx), %rcx
movq %rax, 0x8(%rcx)
movq (%r15), %rbx
movq %r9, %rbp
cmpq (%r13), %rbx
movq 0x10(%rsp), %r8
movq %r15, %r13
movq %rdi, %r15
jne 0xb92a
jmp 0xba7a
movq %rbp, %r9
movq %r9, %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x10, %edi
callq 0x20e0
movq %rax, %rbx
leaq 0x8c17(%rip), %rsi      # 0x146b7
movq %rax, %rdi
callq 0x20b0
jmp 0xbae4
movl $0x10, %edi
callq 0x20e0
movq %rax, %rbx
leaq 0x8bf9(%rip), %rsi      # 0x146b7
movq %rax, %rdi
callq 0x20b0
jmp 0xbae4
movl $0x10, %edi
callq 0x20e0
movq %rax, %rbx
leaq 0x8bdb(%rip), %rsi      # 0x146b7
movq %rax, %rdi
callq 0x20b0
movq 0xe50d(%rip), %rsi      # 0x19ff8
movq 0xe4be(%rip), %rdx      # 0x19fb0
jmp 0xbb1e
movl $0x10, %edi
callq 0x20e0
movq %rax, %rbx
leaq 0x867c(%rip), %rsi      # 0x14184
movq %rax, %rdi
callq 0x23a0
movq 0xe4c1(%rip), %rsi      # 0x19fd8
movq 0xe4a2(%rip), %rdx      # 0x19fc0
movq %rbx, %rdi
callq 0x2330
jmp 0xbb2c
jmp 0xbb2c
jmp 0xbb2c
movq %rax, %r14
movq %rbx, %rdi
callq 0x2160
movq %r14, %rdi
callq 0x2360