// File: /workspace/github_c_makefile_star2_O2/mmcco[P]sljit/sljit_src/sljitLir.c
// Function: sljit_emit_cmp
struct sljit_jump* sljit_emit_cmp(struct sljit_compiler *compiler, int type,
	int src1, long src1w,
	int src2, long src2w)
{
	/* Default compare for most architectures. */
	int flags, tmp_src, condition;
	long tmp_srcw;

	CHECK_ERROR_PTR();
	CHECK_PTR(check_sljit_emit_cmp(compiler, type, src1, src1w, src2, src2w));

	condition = type & 0xff;
#if (defined SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64)
	if ((condition == SLJIT_EQUAL || condition == SLJIT_NOT_EQUAL)) {
		if ((src1 & SLJIT_IMM) && !src1w) {
			src1 = src2;
			src1w = src2w;
			src2 = SLJIT_IMM;
			src2w = 0;
		}
		if ((src2 & SLJIT_IMM) && !src2w)
			return emit_cmp_to0(compiler, type, src1, src1w);
	}
#endif

	if ((src1 & SLJIT_IMM) && !(src2 & SLJIT_IMM)) {
		/* Immediate is prefered as second argument by most architectures. */
		switch (condition) {
		case SLJIT_LESS:
			condition = SLJIT_GREATER;
			break;
		case SLJIT_GREATER_EQUAL:
			condition = SLJIT_LESS_EQUAL;
			break;
		case SLJIT_GREATER:
			condition = SLJIT_LESS;
			break;
		case SLJIT_LESS_EQUAL:
			condition = SLJIT_GREATER_EQUAL;
			break;
		case SLJIT_SIG_LESS:
			condition = SLJIT_SIG_GREATER;
			break;
		case SLJIT_SIG_GREATER_EQUAL:
			condition = SLJIT_SIG_LESS_EQUAL;
			break;
		case SLJIT_SIG_GREATER:
			condition = SLJIT_SIG_LESS;
			break;
		case SLJIT_SIG_LESS_EQUAL:
			condition = SLJIT_SIG_GREATER_EQUAL;
			break;
		}
		type = condition | (type & (SLJIT_INT_OP | SLJIT_REWRITABLE_JUMP));
		tmp_src = src1;
		src1 = src2;
		src2 = tmp_src;
		tmp_srcw = src1w;
		src1w = src2w;
		src2w = tmp_srcw;
	}

	if (condition <= SLJIT_NOT_ZERO)
		flags = SLJIT_SET_E;
	else if (condition <= SLJIT_LESS_EQUAL)
		flags = SLJIT_SET_U;
	else
		flags = SLJIT_SET_S;

#if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) \
		|| (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS)
	compiler->skip_checks = 1;
#endif
	if (sljit_emit_op2(compiler, SLJIT_SUB | flags | (type & SLJIT_INT_OP),
	    SLJIT_UNUSED, 0, src1, src1w, src2, src2w))
		return NULL;
#if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) \
		|| (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS)
	compiler->skip_checks = 1;
#endif
	return sljit_emit_jump(compiler, condition | (type & SLJIT_REWRITABLE_JUMP));
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
cmpl $0x0, (%rdi)
jne 0x1c72d
movl %esi, %r14d
testl $0xffffee00, %esi       # imm = 0xFFFFEE00
jne 0x1c76b
movzbl %r14b, %r12d
cmpl $0xa, %r12d
jae 0x1c779
movq %rdi, %rbx
movl 0x48(%rdi), %eax
cmpl $-0x1, %eax
je 0x1c482
movq %rcx, %rbp
movl 0x4c(%rbx), %ecx
cmpl $-0x1, %ecx
je 0x1c482
movq %r9, %r11
movl %r8d, %r13d
movl %edx, %r15d
testl %edx, %edx
setg %dl
cmpl %r15d, %eax
setge %sil
pushq $0xc
popq %r9
testb %sil, %dl
jne 0x1c117
movl %r9d, %edx
subl %ecx, %edx
cmpl %r15d, %edx
setge %sil
cmpl $0xd, %r15d
setge %dil
orb %sil, %dil
jne 0x1c21b
testq %rbp, %rbp
jne 0x1c482
testl %r13d, %r13d
setg %dl
cmpl %r13d, %eax
setge %sil
testb %sil, %dl
jne 0x1c14e
movl %r9d, %edx
subl %ecx, %edx
cmpl %r13d, %edx
setge %cl
cmpl $0xd, %r13d
setge %sil
orb %cl, %sil
jne 0x1c250
testq %r11, %r11
jne 0x1c4a8
movq 0x78(%rbx), %rdi
testq %rdi, %rdi
movq %rbp, 0x8(%rsp)
je 0x1c1f0
movq %r11, (%rsp)
cmpl $0x1000, %r14d          # imm = 0x1000
leaq 0x227d(%rip), %rax      # 0x1e3f8
leaq 0x542f(%rip), %rdx      # 0x215b1
cmovbq %rax, %rdx
btl $0x8, %r14d
leaq 0x5422(%rip), %rcx      # 0x215b4
cmovaeq %rax, %rcx
movl %r12d, %eax
leaq 0xdb60(%rip), %rsi      # 0x29d00
movq (%rsi,%rax,8), %r8
leaq 0x54e6(%rip), %rsi      # 0x21691
xorl %eax, %eax
callq 0x20c0
movl %r15d, %eax
andl $0x40, %eax
movl %eax, 0x14(%rsp)
jne 0x1c201
testb %r15b, %r15b
js 0x1c285
testl %r15d, %r15d
je 0x1c39c
movq 0x78(%rbx), %rdi
cmpl %r15d, 0x48(%rbx)
jge 0x1c3d8
pushq $0xc
popq %rdx
subl %r15d, %edx
leaq 0x5377(%rip), %rsi      # 0x21562
jmp 0x1c3e3
movl %r15d, %eax
andl $0x40, %eax
movl %r13d, %ebp
andl $0x40, %ebp
jmp 0x1c6a3
movq 0x78(%rbx), %rdi
leaq 0x51f5(%rip), %rsi      # 0x21401
movq %rbp, %rdx
xorl %eax, %eax
callq 0x20c0
jmp 0x1c4f3
cmpl $0x40, %r15d
je 0x1c120
cmpl $0x8d, %r15d
jne 0x1c2c1
testq %rbp, %rbp
js 0x1c482
movslq 0x80(%rbx), %rdx
cmpq %rbp, %rdx
jg 0x1c120
jmp 0x1c482
cmpl $0x40, %r13d
je 0x1c157
cmpl $0x8d, %r13d
jne 0x1c32f
testq %r11, %r11
js 0x1c4a8
movslq 0x80(%rbx), %rax
cmpq %r11, %rax
jg 0x1c157
jmp 0x1c4a8
movl %r12d, %ebp
movl %r15d, %r12d
movq 0x78(%rbx), %rsi
andl $0x3f, %r12d
je 0x1c3b7
pushq $0x5b
popq %rdi
callq 0x20a0
movq 0x78(%rbx), %rdi
cmpl 0x48(%rbx), %r12d
jle 0x1c3ef
pushq $0xc
popq %rdx
subl %r12d, %edx
leaq 0x52a6(%rip), %rsi      # 0x21562
jmp 0x1c3fc
testb %r15b, %r15b
jns 0x1c482
movl %r15d, %esi
andl $0x3f, %esi
je 0x1c46d
cmpl %eax, %esi
jle 0x1c2eb
cmpl $0xc, %esi
ja 0x1c482
cmpl %edx, %esi
jle 0x1c482
testw $0x3f00, %r15w          # imm = 0x3F00
je 0x1c475
movl %r15d, %esi
shrl $0x8, %esi
andl $0x3f, %esi
setne %dil
cmpl %eax, %esi
setle %r8b
testb %r8b, %dil
jne 0x1c320
cmpl $0xc, %esi
ja 0x1c482
cmpl %edx, %esi
jle 0x1c482
cmpq $0x4, %rbp
jb 0x1c475
jmp 0x1c482
testb %r13b, %r13b
jns 0x1c4a8
movl %r13d, %ecx
andl $0x3f, %ecx
je 0x1c493
cmpl %eax, %ecx
jle 0x1c359
cmpl $0xc, %ecx
ja 0x1c4a8
cmpl %edx, %ecx
jle 0x1c4a8
testw $0x3f00, %r13w          # imm = 0x3F00
je 0x1c49b
movl %r13d, %ecx
shrl $0x8, %ecx
andl $0x3f, %ecx
setne %sil
cmpl %eax, %ecx
setle %al
testb %al, %sil
jne 0x1c38d
cmpl $0xc, %ecx
ja 0x1c4a8
cmpl %edx, %ecx
jle 0x1c4a8
cmpq $0x4, %r11
jb 0x1c49b
jmp 0x1c4a8
movq 0x78(%rbx), %rcx
leaq 0x5077(%rip), %rdi      # 0x2141e
pushq $0x6
popq %rsi
pushq $0x1
popq %rdx
callq 0x2130
jmp 0x1c4f3
leaq 0x5059(%rip), %rax      # 0x21417
movq %rsi, %rdi
movq %rax, %rsi
movq 0x8(%rsp), %rdx
xorl %eax, %eax
callq 0x20c0
movl %ebp, %r12d
jmp 0x1c4f3
leal -0x1(%r15), %edx
leaq 0x517a(%rip), %rsi      # 0x2155d
xorl %eax, %eax
callq 0x20c0
jmp 0x1c4f3
decl %r12d
leaq 0x5164(%rip), %rsi      # 0x2155d
movl %r12d, %edx
xorl %eax, %eax
callq 0x20c0
testw $0x3f00, %r15w          # imm = 0x3F00
movl %ebp, %r12d
je 0x1c44b
movq 0x78(%rbx), %rcx
leaq 0x4fed(%rip), %rdi      # 0x21406
pushq $0x3
popq %rsi
pushq $0x1
popq %rdx
callq 0x2130
movl %r15d, %edx
shrl $0x8, %edx
andl $0x3f, %edx
movq 0x78(%rbx), %rdi
cmpl 0x48(%rbx), %edx
movq 0x8(%rsp), %rbp
jle 0x1c4b9
pushq $0xc
popq %rax
subl %edx, %eax
leaq 0x511b(%rip), %rsi      # 0x21562
movl %eax, %edx
jmp 0x1c4c2
movq 0x8(%rsp), %rdx
testq %rdx, %rdx
je 0x1c4e7
movq 0x78(%rbx), %rdi
leaq 0x4fac(%rip), %rsi      # 0x21410
xorl %eax, %eax
callq 0x20c0
jmp 0x1c4e7
testw $0x3f00, %r15w          # imm = 0x3F00
jne 0x1c482
cmpl $0x4000, %r15d          # imm = 0x4000
jb 0x1c120
leaq 0x4e76(%rip), %rdi      # 0x212ff
movl $0x530, %esi            # imm = 0x530
jmp 0x1c785
testw $0x3f00, %r13w          # imm = 0x3F00
jne 0x1c4a8
cmpl $0x4000, %r13d          # imm = 0x4000
jb 0x1c157
leaq 0x4e50(%rip), %rdi      # 0x212ff
movl $0x531, %esi            # imm = 0x531
jmp 0x1c785
decl %edx
leaq 0x509b(%rip), %rsi      # 0x2155d
xorl %eax, %eax
callq 0x20c0
testq %rbp, %rbp
je 0x1c4e7
movq 0x78(%rbx), %rdi
pushq $0x1
popq %rdx
movl %ebp, %ecx
shll %cl, %edx
leaq 0x4f2a(%rip), %rsi      # 0x2140a
xorl %eax, %eax
callq 0x20c0
movq 0x78(%rbx), %rsi
pushq $0x5d
popq %rdi
callq 0x20a0
movq 0x78(%rbx), %rcx
leaq 0x5015(%rip), %rdi      # 0x21513
pushq $0x2
popq %rsi
pushq $0x1
popq %rdx
callq 0x2130
movl %r13d, %ebp
andl $0x40, %ebp
jne 0x1c53f
testb %r13b, %r13b
movq (%rsp), %rdx
js 0x1c55a
testl %r13d, %r13d
je 0x1c58d
movq 0x78(%rbx), %rdi
cmpl %r13d, 0x48(%rbx)
jge 0x1c5c6
pushq $0xc
popq %rdx
subl %r13d, %edx
leaq 0x5028(%rip), %rsi      # 0x21562
jmp 0x1c5d1
movq 0x78(%rbx), %rdi
leaq 0x4eb7(%rip), %rsi      # 0x21401
movq (%rsp), %rdx
xorl %eax, %eax
callq 0x20c0
jmp 0x1c68f
movl %r12d, 0x10(%rsp)
movl %r13d, %r12d
movq 0x78(%rbx), %rsi
andl $0x3f, %r12d
je 0x1c5a8
pushq $0x5b
popq %rdi
callq 0x20a0
movq 0x78(%rbx), %rdi
cmpl 0x48(%rbx), %r12d
jle 0x1c5dd
pushq $0xc
popq %rdx
subl %r12d, %edx
leaq 0x4fd7(%rip), %rsi      # 0x21562
jmp 0x1c5ea
movq 0x78(%rbx), %rcx
leaq 0x4e86(%rip), %rdi      # 0x2141e
pushq $0x6
popq %rsi
pushq $0x1
popq %rdx
callq 0x2130
jmp 0x1c68f
leaq 0x4e68(%rip), %rax      # 0x21417
movq %rsi, %rdi
movq %rax, %rsi
xorl %eax, %eax
callq 0x20c0
movl 0x10(%rsp), %r12d
jmp 0x1c68f
leal -0x1(%r13), %edx
leaq 0x4f8c(%rip), %rsi      # 0x2155d
xorl %eax, %eax
callq 0x20c0
jmp 0x1c68f
decl %r12d
leaq 0x4f76(%rip), %rsi      # 0x2155d
movl %r12d, %edx
xorl %eax, %eax
callq 0x20c0
testw $0x3f00, %r13w          # imm = 0x3F00
movl 0x10(%rsp), %r12d
je 0x1c636
movq 0x78(%rbx), %rcx
leaq 0x4dfd(%rip), %rdi      # 0x21406
pushq $0x3
popq %rsi
pushq $0x1
popq %rdx
callq 0x2130
movl %r13d, %edx
shrl $0x8, %edx
andl $0x3f, %edx
movq 0x78(%rbx), %rdi
cmpl 0x48(%rbx), %edx
jle 0x1c653
pushq $0xc
popq %rax
subl %edx, %eax
leaq 0x4f30(%rip), %rsi      # 0x21562
movl %eax, %edx
jmp 0x1c65c
movq (%rsp), %rdx
testq %rdx, %rdx
je 0x1c683
movq 0x78(%rbx), %rdi
leaq 0x4dc6(%rip), %rsi      # 0x21410
xorl %eax, %eax
callq 0x20c0
jmp 0x1c683
decl %edx
leaq 0x4f01(%rip), %rsi      # 0x2155d
xorl %eax, %eax
callq 0x20c0
movq (%rsp), %rcx
testq %rcx, %rcx
je 0x1c683
movq 0x78(%rbx), %rdi
pushq $0x1
popq %rdx
shll %cl, %edx
leaq 0x4d8e(%rip), %rsi      # 0x2140a
xorl %eax, %eax
callq 0x20c0
movq 0x78(%rbx), %rsi
pushq $0x5d
popq %rdi
callq 0x20a0
movq 0x78(%rbx), %rsi
pushq $0xa
popq %rdi
callq 0x20a0
movq (%rsp), %r11
movl 0x14(%rsp), %eax
testl %eax, %eax
sete %al
testl %ebp, %ebp
setne %cl
orb %al, %cl
jne 0x1c6d7
leal -0x2(%r14), %eax
cmpb $0x7, %al
movq 0x8(%rsp), %r10
ja 0x1c6cc
movzbl %al, %eax
leaq 0x4fe8(%rip), %rcx      # 0x216b0
movl (%rcx,%rax,4), %r12d
orl %r12d, %r14d
movl %r13d, %r8d
movq %r11, %r9
jmp 0x1c6e5
movl %r15d, %r8d
movq 0x8(%rsp), %r9
movl %r13d, %r15d
movq %r11, %r10
xorl %eax, %eax
cmpl $0x6, %r12d
setae %al
shll $0xa, %eax
addl $0x462, %eax            # imm = 0x462
cmpl $0x2, %r12d
movl $0x262, %ecx            # imm = 0x262
cmovael %eax, %ecx
movl $0x1, 0x84(%rbx)
movl %r14d, %esi
andl $0x100, %esi            # imm = 0x100
orl %ecx, %esi
movq %rbx, %rdi
xorl %edx, %edx
xorl %ecx, %ecx
pushq %r10
pushq %r15
callq 0x16183
popq %rcx
popq %rdx
testl %eax, %eax
je 0x1c73e
xorl %eax, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x1, 0x84(%rbx)
andl $0x1000, %r14d          # imm = 0x1000
orl %r14d, %r12d
movq %rbx, %rdi
movl %r12d, %esi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1ab24
leaq 0x4b8d(%rip), %rdi      # 0x212ff
movl $0x52e, %esi            # imm = 0x52E
jmp 0x1c785
leaq 0x4b7f(%rip), %rdi      # 0x212ff
movl $0x52f, %esi            # imm = 0x52F
xorl %eax, %eax
callq 0x2080
callq 0x2040