// File: /workspace/github_c_makefile_star2_O0/azhai[P]mlite/mlite.c
// Function: pat_commit
void pat_commit(char *s, int all) {
	int	tp = 0, ta = LEFT, sp = 0, sa;
	cell	n, a1, a2, p, op;

	find_binop(s, &tp, &ta);
	while (inf_ops() != NIL) {
		find_binop(symbol_name(inf_first_op()), &sp, &sa);
		if (!all && (tp > sp || (tp == sp && ta == RIGHT)))
			break;
		a2 = inf_first_arg();
		a1 = inf_second_arg();
		if (consname_p(inf_first_op())) {		/* x :id y */
			if (inf_first_op() == S_cons) {		/* [x :: y] */
				n = cons(pat(a1), pat(a2));
			}
			else {
				n = node(pat(a2), NIL);
				n = node(pat(a1), n);
				n = node(inf_first_op(), n);
			}
			save(n);
			op = opr(a2);
			if (opr(a1) != NIL) {
				if (op == NIL) {
					op = opr(a1);
				}
				else {
					op = node(op, NIL);
					op = node(a1, op);
					op = node(S_also, op);
				}
			}
			n = node(unsave(1), op);
		}
		else {
			a2 = opr(a2) == NIL? pat(a2): opr(a2);
			n = node(a2, NIL);	/* (op (tuple arg1 arg2)) */
			a1 = opr(a1) == NIL? pat(a1): opr(a1);
			n = node(a1, n);
			n = node(S_tuple, n);
			n = node(n, NIL);
			n = node(inf_first_op(), n);
			a1 = inf_second_arg();		/* add pattern */
			a2 = inf_first_arg();
			p = symbol_p(pat(a1))? pat(a1): pat(a2);
			n = node(p, n);
		}
		inf_ops() = inf_other_ops();	/* remove op */
		inf_args() = inf_other_args();	/* remove arg2 */
		inf_first_arg() = n;		/* replace arg1 */
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl $0x0, -0x10(%rbp)
movl $0x1, -0x14(%rbp)
movl $0x0, -0x18(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x10(%rbp), %rsi
leaq -0x14(%rbp), %rdx
callq 0xc550
movq 0x19c84(%rip), %rax     # 0x28180
movq 0x19c35(%rip), %rcx     # 0x28138
cmpq $-0x1, (%rax,%rcx,8)
je 0xea2d
movq 0x1a0e3(%rip), %rdi     # 0x285f8
movq 0x1a0b4(%rip), %rax     # 0x285d0
movq 0x19c5d(%rip), %rcx     # 0x28180
movq 0x19c56(%rip), %rdx     # 0x28180
movq 0x19c07(%rip), %rsi     # 0x28138
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rax
shlq $0x3, %rax
addq %rax, %rdi
leaq -0x18(%rbp), %rsi
leaq -0x1c(%rbp), %rdx
callq 0xc550
cmpl $0x0, -0xc(%rbp)
jne 0xe572
movl -0x10(%rbp), %eax
cmpl -0x18(%rbp), %eax
jg 0xe56d
movl -0x10(%rbp), %eax
cmpl -0x18(%rbp), %eax
jne 0xe572
cmpl $0x2, -0x14(%rbp)
jne 0xe572
jmp 0xea2d
movq 0x19c07(%rip), %rax     # 0x28180
movq 0x19c00(%rip), %rcx     # 0x28180
movq 0x1a049(%rip), %rdx     # 0x285d0
movq 0x19baa(%rip), %rsi     # 0x28138
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x38(%rbp)
movq 0x19bdb(%rip), %rax     # 0x28180
movq 0x1a024(%rip), %rcx     # 0x285d0
movq 0x19bcd(%rip), %rdx     # 0x28180
movq 0x1a016(%rip), %rsi     # 0x285d0
movq 0x19b77(%rip), %rdi     # 0x28138
movq (%rsi,%rdi,8), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x30(%rbp)
movq 0x1a01c(%rip), %rax     # 0x285f8
movq 0x19fed(%rip), %rcx     # 0x285d0
movq 0x19b96(%rip), %rdx     # 0x28180
movq 0x19b8f(%rip), %rsi     # 0x28180
movq 0x19b40(%rip), %rdi     # 0x28138
movq (%rsi,%rdi,8), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movsbl (%rax,%rcx,8), %eax
cmpl $0x3a, %eax
jne 0xe78c
movq 0x19b68(%rip), %rax     # 0x28180
movq 0x19b61(%rip), %rcx     # 0x28180
movq 0x19b12(%rip), %rdx     # 0x28138
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rax
cmpq 0x1a06b(%rip), %rax     # 0x286a0
jne 0xe665
movq 0x19b42(%rip), %rax     # 0x28180
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq 0x19b33(%rip), %rax     # 0x28180
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
movl $0x8, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
jmp 0xe6d0
movq 0x19b14(%rip), %rax     # 0x28180
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
movq 0x19af3(%rip), %rax     # 0x28180
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x28(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
movq 0x19ad5(%rip), %rax     # 0x28180
movq 0x19ace(%rip), %rcx     # 0x28180
movq 0x19a7f(%rip), %rdx     # 0x28138
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x28(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movq 0x19a5d(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x19a4f(%rip)     # 0x28138
movq 0x19ee0(%rip), %rax     # 0x285d0
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x48(%rbp)
movq 0x19ecd(%rip), %rax     # 0x285d0
movq -0x30(%rbp), %rcx
cmpq $-0x1, (%rax,%rcx,8)
je 0xe76b
cmpq $-0x1, -0x48(%rbp)
jne 0xe72a
movq 0x19eb4(%rip), %rax     # 0x285d0
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x48(%rbp)
jmp 0xe769
movq -0x48(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x48(%rbp)
movq -0x30(%rbp), %rdi
movq -0x48(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x48(%rbp)
movq 0x19f9e(%rip), %rdi     # 0x286f8
movq -0x48(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x48(%rbp)
jmp 0xe76b
movl $0x1, %edi
callq 0x3950
movq %rax, %rdi
movq -0x48(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
jmp 0xe988
movq 0x19e3d(%rip), %rax     # 0x285d0
movq -0x38(%rbp), %rcx
cmpq $-0x1, (%rax,%rcx,8)
jne 0xe7b3
movq 0x199db(%rip), %rax     # 0x28180
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x50(%rbp)
jmp 0xe7c6
movq 0x19e16(%rip), %rax     # 0x285d0
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
movq 0x19de5(%rip), %rax     # 0x285d0
movq -0x30(%rbp), %rcx
cmpq $-0x1, (%rax,%rcx,8)
jne 0xe80b
movq 0x19983(%rip), %rax     # 0x28180
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x58(%rbp)
jmp 0xe81e
movq 0x19dbe(%rip), %rax     # 0x285d0
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
movq -0x28(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
movq 0x19ec0(%rip), %rdi     # 0x28700
movq -0x28(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
movq 0x19914(%rip), %rax     # 0x28180
movq 0x1990d(%rip), %rcx     # 0x28180
movq 0x198be(%rip), %rdx     # 0x28138
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x28(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
movq 0x198e8(%rip), %rax     # 0x28180
movq 0x19d31(%rip), %rcx     # 0x285d0
movq 0x198da(%rip), %rdx     # 0x28180
movq 0x19d23(%rip), %rsi     # 0x285d0
movq 0x19884(%rip), %rdi     # 0x28138
movq (%rsi,%rdi,8), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x30(%rbp)
movq 0x198b1(%rip), %rax     # 0x28180
movq 0x198aa(%rip), %rcx     # 0x28180
movq 0x19cf3(%rip), %rdx     # 0x285d0
movq 0x19854(%rip), %rsi     # 0x28138
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x38(%rbp)
movq 0x19885(%rip), %rax     # 0x28180
movq -0x30(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
jl 0xe95a
movq 0x19ce3(%rip), %rax     # 0x285f0
movq 0x1986c(%rip), %rcx     # 0x28180
movq -0x30(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movsbl (%rax,%rcx), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0xe95a
movq 0x19851(%rip), %rax     # 0x28180
movq 0x1984a(%rip), %rcx     # 0x28180
movq -0x30(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpq $-0x22, (%rax,%rcx,8)
jne 0xe95a
movq 0x19834(%rip), %rax     # 0x28180
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x60(%rbp)
jmp 0xe96d
movq 0x1981f(%rip), %rax     # 0x28180
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rdi
movq -0x28(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
movq 0x19c41(%rip), %rax     # 0x285d0
movq 0x197ea(%rip), %rcx     # 0x28180
movq 0x1979b(%rip), %rdx     # 0x28138
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rdx
movq 0x197d4(%rip), %rax     # 0x28180
movq 0x19785(%rip), %rcx     # 0x28138
movq %rdx, (%rax,%rcx,8)
movq 0x19c12(%rip), %rax     # 0x285d0
movq 0x197bb(%rip), %rcx     # 0x28180
movq 0x19c04(%rip), %rdx     # 0x285d0
movq 0x19765(%rip), %rsi     # 0x28138
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rdx
movq 0x1979a(%rip), %rax     # 0x28180
movq 0x19be3(%rip), %rcx     # 0x285d0
movq 0x19744(%rip), %rsi     # 0x28138
movq (%rcx,%rsi,8), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x28(%rbp), %rdx
movq 0x19779(%rip), %rax     # 0x28180
movq 0x19772(%rip), %rcx     # 0x28180
movq 0x19bbb(%rip), %rsi     # 0x285d0
movq 0x1971c(%rip), %rdi     # 0x28138
movq (%rsi,%rdi,8), %rsi
movq (%rcx,%rsi,8), %rcx
movq %rdx, (%rax,%rcx,8)
jmp 0xe4f5
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)