// File: /workspace/github_c_makefile_star2_O3/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 0x1eecf
movl %esi, %r14d
testl $0xffffee00, %esi       # imm = 0xFFFFEE00
jne 0x1ef0d
movzbl %r14b, %r12d
cmpl $0xa, %r12d
jae 0x1ef1b
movq %rdi, %rbx
movl 0x48(%rdi), %eax
cmpl $-0x1, %eax
je 0x1ec02
movq %rcx, %rbp
movl 0x4c(%rbx), %ecx
cmpl $-0x1, %ecx
je 0x1ec02
movq %r9, %r11
movl %r8d, %r13d
movl %edx, %r15d
testl %edx, %edx
setg %dl
cmpl %r15d, %eax
setge %sil
testb %sil, %dl
jne 0x1e87d
movl $0xc, %edx
subl %ecx, %edx
cmpl %r15d, %edx
setge %sil
cmpl $0xd, %r15d
setge %dil
orb %sil, %dil
jne 0x1e985
testq %rbp, %rbp
jne 0x1ec02
testl %r13d, %r13d
setg %dl
cmpl %r13d, %eax
setge %sil
testb %sil, %dl
jne 0x1e8b6
movl $0xc, %edx
subl %ecx, %edx
cmpl %r13d, %edx
setge %cl
cmpl $0xd, %r13d
setge %sil
orb %cl, %sil
jne 0x1e9ba
testq %r11, %r11
jne 0x1ec29
movq 0x78(%rbx), %rdi
testq %rdi, %rdi
movq %rbp, 0x8(%rsp)
je 0x1e95a
movq %r11, (%rsp)
cmpl $0x1000, %r14d          # imm = 0x1000
leaq 0x1b55(%rip), %rax      # 0x20438
leaq 0x4d07(%rip), %rdx      # 0x235f1
cmovbq %rax, %rdx
btl $0x8, %r14d
leaq 0x4cfa(%rip), %rcx      # 0x235f4
cmovaeq %rax, %rcx
movl %r12d, %eax
leaq 0x93f8(%rip), %rsi      # 0x27d00
movq (%rsi,%rax,8), %r8
leaq 0x4dbe(%rip), %rsi      # 0x236d1
xorl %eax, %eax
callq 0x20c0
movl %r15d, %eax
andl $0x40, %eax
movl %eax, 0x14(%rsp)
jne 0x1e96b
testb %r15b, %r15b
js 0x1e9ef
testl %r15d, %r15d
je 0x1eb0c
movq 0x78(%rbx), %rdi
cmpl %r15d, 0x48(%rbx)
jge 0x1eb4c
movl $0xc, %edx
subl %r15d, %edx
leaq 0x4c4d(%rip), %rsi      # 0x235a2
jmp 0x1eb57
movl %r15d, %eax
andl $0x40, %eax
movl %r13d, %ebp
andl $0x40, %ebp
jmp 0x1ee43
movq 0x78(%rbx), %rdi
leaq 0x4acb(%rip), %rsi      # 0x23441
movq %rbp, %rdx
xorl %eax, %eax
callq 0x20c0
jmp 0x1ec78
cmpl $0x40, %r15d
je 0x1e886
cmpl $0x8d, %r15d
jne 0x1ea2f
testq %rbp, %rbp
js 0x1ec02
movslq 0x80(%rbx), %rdx
cmpq %rbp, %rdx
jg 0x1e886
jmp 0x1ec02
cmpl $0x40, %r13d
je 0x1e8bf
cmpl $0x8d, %r13d
jne 0x1ea9e
testq %r11, %r11
js 0x1ec29
movslq 0x80(%rbx), %rax
cmpq %r11, %rax
jg 0x1e8bf
jmp 0x1ec29
movl %r12d, %ebp
movl %r15d, %r12d
movq 0x78(%rbx), %rsi
andl $0x3f, %r12d
je 0x1eb2b
movl $0x5b, %edi
callq 0x20a0
movq 0x78(%rbx), %rdi
cmpl 0x48(%rbx), %r12d
jle 0x1eb63
movl $0xc, %edx
subl %r12d, %edx
leaq 0x4b78(%rip), %rsi      # 0x235a2
jmp 0x1eb70
testb %r15b, %r15b
jns 0x1ec02
movl %r15d, %esi
andl $0x3f, %esi
je 0x1ebec
cmpl %eax, %esi
jle 0x1ea59
cmpl $0xc, %esi
ja 0x1ec02
cmpl %edx, %esi
jle 0x1ec02
testl $0x3f00, %r15d          # imm = 0x3F00
je 0x1ebf5
movl %r15d, %esi
shrl $0x8, %esi
andl $0x3f, %esi
setne %dil
cmpl %eax, %esi
setle %r8b
testb %r8b, %dil
jne 0x1ea8f
cmpl $0xc, %esi
ja 0x1ec02
cmpl %edx, %esi
jle 0x1ec02
cmpq $0x4, %rbp
jb 0x1ebf5
jmp 0x1ec02
testb %r13b, %r13b
jns 0x1ec29
movl %r13d, %ecx
andl $0x3f, %ecx
je 0x1ec13
cmpl %eax, %ecx
jle 0x1eac8
cmpl $0xc, %ecx
ja 0x1ec29
cmpl %edx, %ecx
jle 0x1ec29
testl $0x3f00, %r13d          # imm = 0x3F00
je 0x1ec1c
movl %r13d, %ecx
shrl $0x8, %ecx
andl $0x3f, %ecx
setne %sil
cmpl %eax, %ecx
setle %al
testb %al, %sil
jne 0x1eafd
cmpl $0xc, %ecx
ja 0x1ec29
cmpl %edx, %ecx
jle 0x1ec29
cmpq $0x4, %r11
jb 0x1ec1c
jmp 0x1ec29
movq 0x78(%rbx), %rcx
leaq 0x4947(%rip), %rdi      # 0x2345e
movl $0x6, %esi
movl $0x1, %edx
callq 0x2130
jmp 0x1ec78
leaq 0x4925(%rip), %rax      # 0x23457
movq %rsi, %rdi
movq %rax, %rsi
movq 0x8(%rsp), %rdx
xorl %eax, %eax
callq 0x20c0
movl %ebp, %r12d
jmp 0x1ec78
leal -0x1(%r15), %edx
leaq 0x4a46(%rip), %rsi      # 0x2359d
xorl %eax, %eax
callq 0x20c0
jmp 0x1ec78
decl %r12d
leaq 0x4a30(%rip), %rsi      # 0x2359d
movl %r12d, %edx
xorl %eax, %eax
callq 0x20c0
testl $0x3f00, %r15d          # imm = 0x3F00
movl %ebp, %r12d
je 0x1ebca
movq 0x78(%rbx), %rcx
leaq 0x48b8(%rip), %rdi      # 0x23446
movl $0x3, %esi
movl $0x1, %edx
callq 0x2130
movl %r15d, %edx
shrl $0x8, %edx
andl $0x3f, %edx
movq 0x78(%rbx), %rdi
cmpl 0x48(%rbx), %edx
movq 0x8(%rsp), %rbp
jle 0x1ec3a
movl $0xc, %eax
subl %edx, %eax
leaq 0x49dc(%rip), %rsi      # 0x235a2
movl %eax, %edx
jmp 0x1ec43
movq 0x8(%rsp), %rdx
testq %rdx, %rdx
je 0x1ec6a
movq 0x78(%rbx), %rdi
leaq 0x486d(%rip), %rsi      # 0x23450
xorl %eax, %eax
callq 0x20c0
jmp 0x1ec6a
testl $0x3f00, %r15d          # imm = 0x3F00
jne 0x1ec02
cmpl $0x4000, %r15d          # imm = 0x4000
jb 0x1e886
leaq 0x4736(%rip), %rdi      # 0x2333f
movl $0x530, %esi            # imm = 0x530
jmp 0x1ef27
testl $0x3f00, %r13d          # imm = 0x3F00
jne 0x1ec29
cmpl $0x4000, %r13d          # imm = 0x4000
jb 0x1e8bf
leaq 0x470f(%rip), %rdi      # 0x2333f
movl $0x531, %esi            # imm = 0x531
jmp 0x1ef27
decl %edx
leaq 0x495a(%rip), %rsi      # 0x2359d
xorl %eax, %eax
callq 0x20c0
testq %rbp, %rbp
je 0x1ec6a
movq 0x78(%rbx), %rdi
movl $0x1, %edx
movl %ebp, %ecx
shll %cl, %edx
leaq 0x47e7(%rip), %rsi      # 0x2344a
xorl %eax, %eax
callq 0x20c0
movq 0x78(%rbx), %rsi
movl $0x5d, %edi
callq 0x20a0
movq 0x78(%rbx), %rcx
leaq 0x48d0(%rip), %rdi      # 0x23553
movl $0x2, %esi
movl $0x1, %edx
callq 0x2130
movl %r13d, %ebp
andl $0x40, %ebp
jne 0x1ecca
testb %r13b, %r13b
movq (%rsp), %rdx
js 0x1ece5
testl %r13d, %r13d
je 0x1ed1c
movq 0x78(%rbx), %rdi
cmpl %r13d, 0x48(%rbx)
jge 0x1ed59
movl $0xc, %edx
subl %r13d, %edx
leaq 0x48dd(%rip), %rsi      # 0x235a2
jmp 0x1ed64
movq 0x78(%rbx), %rdi
leaq 0x476c(%rip), %rsi      # 0x23441
movq (%rsp), %rdx
xorl %eax, %eax
callq 0x20c0
jmp 0x1ee2d
movl %r12d, 0x10(%rsp)
movl %r13d, %r12d
movq 0x78(%rbx), %rsi
andl $0x3f, %r12d
je 0x1ed3b
movl $0x5b, %edi
callq 0x20a0
movq 0x78(%rbx), %rdi
cmpl 0x48(%rbx), %r12d
jle 0x1ed70
movl $0xc, %edx
subl %r12d, %edx
leaq 0x4888(%rip), %rsi      # 0x235a2
jmp 0x1ed7d
movq 0x78(%rbx), %rcx
leaq 0x4737(%rip), %rdi      # 0x2345e
movl $0x6, %esi
movl $0x1, %edx
callq 0x2130
jmp 0x1ee2d
leaq 0x4715(%rip), %rax      # 0x23457
movq %rsi, %rdi
movq %rax, %rsi
xorl %eax, %eax
callq 0x20c0
movl 0x10(%rsp), %r12d
jmp 0x1ee2d
leal -0x1(%r13), %edx
leaq 0x4839(%rip), %rsi      # 0x2359d
xorl %eax, %eax
callq 0x20c0
jmp 0x1ee2d
decl %r12d
leaq 0x4823(%rip), %rsi      # 0x2359d
movl %r12d, %edx
xorl %eax, %eax
callq 0x20c0
testl $0x3f00, %r13d          # imm = 0x3F00
movl 0x10(%rsp), %r12d
je 0x1edd0
movq 0x78(%rbx), %rcx
leaq 0x46a9(%rip), %rdi      # 0x23446
movl $0x3, %esi
movl $0x1, %edx
callq 0x2130
movl %r13d, %edx
shrl $0x8, %edx
andl $0x3f, %edx
movq 0x78(%rbx), %rdi
cmpl 0x48(%rbx), %edx
jle 0x1eded
movl $0xc, %eax
subl %edx, %eax
leaq 0x47d6(%rip), %rsi      # 0x235a2
movl %eax, %edx
jmp 0x1edf6
movq (%rsp), %rdx
testq %rdx, %rdx
je 0x1ee1f
movq 0x78(%rbx), %rdi
leaq 0x466c(%rip), %rsi      # 0x23450
xorl %eax, %eax
callq 0x20c0
jmp 0x1ee1f
decl %edx
leaq 0x47a7(%rip), %rsi      # 0x2359d
xorl %eax, %eax
callq 0x20c0
movq (%rsp), %rcx
testq %rcx, %rcx
je 0x1ee1f
movq 0x78(%rbx), %rdi
movl $0x1, %edx
shll %cl, %edx
leaq 0x4632(%rip), %rsi      # 0x2344a
xorl %eax, %eax
callq 0x20c0
movq 0x78(%rbx), %rsi
movl $0x5d, %edi
callq 0x20a0
movq 0x78(%rbx), %rsi
movl $0xa, %edi
callq 0x20a0
movq (%rsp), %r11
movl 0x14(%rsp), %eax
testl %eax, %eax
sete %al
testl %ebp, %ebp
setne %cl
orb %al, %cl
jne 0x1ee77
leal -0x2(%r14), %eax
cmpb $0x7, %al
movq 0x8(%rsp), %r10
ja 0x1ee6c
movzbl %al, %eax
leaq 0x4888(%rip), %rcx      # 0x236f0
movl (%rcx,%rax,4), %r12d
orl %r12d, %r14d
movl %r13d, %r8d
movq %r11, %r9
jmp 0x1ee85
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 0x1804b
addq $0x10, %rsp
testl %eax, %eax
je 0x1eee0
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 0x1d10b
leaq 0x442b(%rip), %rdi      # 0x2333f
movl $0x52e, %esi            # imm = 0x52E
jmp 0x1ef27
leaq 0x441d(%rip), %rdi      # 0x2333f
movl $0x52f, %esi            # imm = 0x52F
xorl %eax, %eax
callq 0x2080
callq 0x2040