// File: /workspace/github_c_makefile_star2_O1/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 0x1e95b
movl %esi, %r14d
testl $0xffffee00, %esi       # imm = 0xFFFFEE00
jne 0x1e998
movzbl %r14b, %ebp
cmpl $0xa, %ebp
jae 0x1e9a6
movq %rdi, %rbx
movl 0x48(%rdi), %eax
cmpl $-0x1, %eax
je 0x1e57c
movq %rcx, %r12
movl 0x4c(%rbx), %ecx
cmpl $-0x1, %ecx
je 0x1e57c
movq %r9, %r10
movl %r8d, %r13d
movl %edx, %r15d
testl %edx, %edx
setg %dl
cmpl %r15d, %eax
setge %sil
testb %sil, %dl
jne 0x1e380
movl $0xc, %edx
subl %ecx, %edx
cmpl %r15d, %edx
setge %sil
cmpl $0xd, %r15d
setge %dil
orb %sil, %dil
jne 0x1e46c
testq %r12, %r12
jne 0x1e57c
testl %r13d, %r13d
setg %dl
cmpl %r13d, %eax
setge %sil
testb %sil, %dl
jne 0x1e3b9
movl $0xc, %edx
subl %ecx, %edx
cmpl %r13d, %edx
setge %cl
cmpl $0xd, %r13d
setge %sil
orb %cl, %sil
jne 0x1e4a1
testq %r10, %r10
jne 0x1e5f0
movq 0x78(%rbx), %rdi
testq %rdi, %rdi
je 0x1e8d3
movq %r10, 0x10(%rsp)
cmpl $0x1000, %r14d          # imm = 0x1000
leaq 0x1f7e(%rip), %rax      # 0x20360
leaq 0x5138(%rip), %rdx      # 0x23521
cmovbq %rax, %rdx
btl $0x8, %r14d
leaq 0x512b(%rip), %rcx      # 0x23524
cmovaeq %rax, %rcx
movl %ebp, %eax
leaq 0x98fa(%rip), %rsi      # 0x27d00
movq (%rsi,%rax,8), %r8
leaq 0x51f0(%rip), %rsi      # 0x23601
xorl %eax, %eax
callq 0x20b0
testb $0x40, %r15b
jne 0x1e452
testb %r15b, %r15b
js 0x1e4d6
testl %r15d, %r15d
je 0x1e601
movq 0x78(%rbx), %rdi
cmpl %r15d, 0x48(%rbx)
jge 0x1e637
movl $0xc, %edx
subl %r15d, %edx
leaq 0x5085(%rip), %rsi      # 0x234d2
jmp 0x1e642
movq 0x78(%rbx), %rdi
leaq 0x4f14(%rip), %rsi      # 0x23371
movq %r12, %rdx
xorl %eax, %eax
callq 0x20b0
jmp 0x1e709
cmpl $0x40, %r15d
je 0x1e389
cmpl $0x8d, %r15d
jne 0x1e518
testq %r12, %r12
js 0x1e57c
movslq 0x80(%rbx), %rdx
cmpq %r12, %rdx
jg 0x1e389
jmp 0x1e57c
cmpl $0x40, %r13d
je 0x1e3c2
cmpl $0x8d, %r13d
jne 0x1e58d
testq %r10, %r10
js 0x1e5f0
movslq 0x80(%rbx), %rax
cmpq %r10, %rax
jg 0x1e3c2
jmp 0x1e5f0
movq %r12, 0x8(%rsp)
movl %r15d, %r12d
movq 0x78(%rbx), %rsi
andl $0x3f, %r12d
je 0x1e620
movl $0x5b, %edi
callq 0x20a0
movq 0x78(%rbx), %rdi
cmpl 0x48(%rbx), %r12d
jle 0x1e64e
movl $0xc, %edx
subl %r12d, %edx
leaq 0x4fbf(%rip), %rsi      # 0x234d2
jmp 0x1e65b
testb %r15b, %r15b
jns 0x1e57c
movl %r15d, %esi
andl $0x3f, %esi
sete %dil
cmpl %eax, %esi
setle %r8b
orb %dil, %r8b
jne 0x1e53b
cmpl $0xc, %esi
ja 0x1e57c
cmpl %edx, %esi
jle 0x1e57c
testl $0x3f00, %r15d          # imm = 0x3F00
je 0x1e56f
testl %esi, %esi
je 0x1e57c
movl %r15d, %esi
shrl $0x8, %esi
andl $0x3f, %esi
setne %dil
cmpl %eax, %esi
setle %r8b
testb %r8b, %dil
jne 0x1e569
cmpl $0xc, %esi
ja 0x1e57c
cmpl %edx, %esi
jle 0x1e57c
cmpq $0x4, %r12
jae 0x1e57c
cmpl $0x4000, %r15d          # imm = 0x4000
jb 0x1e389
leaq 0x4cec(%rip), %rdi      # 0x2326f
movl $0x530, %esi            # imm = 0x530
jmp 0x1e9b2
testb %r13b, %r13b
jns 0x1e5f0
movl %r13d, %ecx
andl $0x3f, %ecx
sete %sil
cmpl %eax, %ecx
setle %dil
orb %sil, %dil
jne 0x1e5b0
cmpl $0xc, %ecx
ja 0x1e5f0
cmpl %edx, %ecx
jle 0x1e5f0
testl $0x3f00, %r13d          # imm = 0x3F00
je 0x1e5e3
testl %ecx, %ecx
je 0x1e5f0
movl %r13d, %ecx
shrl $0x8, %ecx
andl $0x3f, %ecx
setne %sil
cmpl %eax, %ecx
setle %al
testb %al, %sil
jne 0x1e5dd
cmpl $0xc, %ecx
ja 0x1e5f0
cmpl %edx, %ecx
jle 0x1e5f0
cmpq $0x4, %r10
jae 0x1e5f0
cmpl $0x4000, %r13d          # imm = 0x4000
jb 0x1e3c2
leaq 0x4c78(%rip), %rdi      # 0x2326f
movl $0x531, %esi            # imm = 0x531
jmp 0x1e9b2
movq 0x78(%rbx), %rcx
leaq 0x4d82(%rip), %rdi      # 0x2338e
movl $0x6, %esi
movl $0x1, %edx
callq 0x2120
jmp 0x1e709
leaq 0x4d60(%rip), %rax      # 0x23387
movq %rsi, %rdi
movq %rax, %rsi
movq 0x8(%rsp), %r12
jmp 0x1e45d
leal -0x1(%r15), %edx
leaq 0x4e8b(%rip), %rsi      # 0x234cd
xorl %eax, %eax
callq 0x20b0
jmp 0x1e709
decl %r12d
leaq 0x4e75(%rip), %rsi      # 0x234cd
movl %r12d, %edx
xorl %eax, %eax
callq 0x20b0
testl $0x3f00, %r15d          # imm = 0x3F00
movq 0x8(%rsp), %r12
je 0x1e6ae
movq 0x78(%rbx), %rcx
leaq 0x4cfb(%rip), %rdi      # 0x23376
movl $0x3, %esi
movl $0x1, %edx
callq 0x2120
movl %r15d, %edx
shrl $0x8, %edx
andl $0x3f, %edx
movq 0x78(%rbx), %rdi
cmpl 0x48(%rbx), %edx
jle 0x1e6ca
movl $0xc, %eax
subl %edx, %eax
leaq 0x4e28(%rip), %rsi      # 0x234d2
movl %eax, %edx
jmp 0x1e6d3
testq %r12, %r12
je 0x1e6fb
movq 0x78(%rbx), %rdi
leaq 0x4cc2(%rip), %rsi      # 0x23380
movq %r12, %rdx
xorl %eax, %eax
callq 0x20b0
jmp 0x1e6fb
decl %edx
leaq 0x4dfa(%rip), %rsi      # 0x234cd
xorl %eax, %eax
callq 0x20b0
testq %r12, %r12
je 0x1e6fb
movq 0x78(%rbx), %rdi
movl $0x1, %edx
movl %r12d, %ecx
shll %cl, %edx
leaq 0x4c86(%rip), %rsi      # 0x2337a
xorl %eax, %eax
callq 0x20b0
movq 0x78(%rbx), %rsi
movl $0x5d, %edi
callq 0x20a0
movq 0x78(%rbx), %rcx
leaq 0x4d6f(%rip), %rdi      # 0x23483
movl $0x2, %esi
movl $0x1, %edx
callq 0x2120
testb $0x40, %r13b
jne 0x1e75a
testb %r13b, %r13b
movq 0x10(%rsp), %rdx
js 0x1e776
testl %r13d, %r13d
je 0x1e7ad
movq 0x78(%rbx), %rdi
cmpl %r13d, 0x48(%rbx)
jge 0x1e7ea
movl $0xc, %edx
subl %r13d, %edx
leaq 0x4d7d(%rip), %rsi      # 0x234d2
jmp 0x1e7f5
movq 0x78(%rbx), %rdi
leaq 0x4c0c(%rip), %rsi      # 0x23371
movq 0x10(%rsp), %rdx
xorl %eax, %eax
callq 0x20b0
jmp 0x1e8c0
movq %r12, 0x8(%rsp)
movl %r13d, %r12d
movq 0x78(%rbx), %rsi
andl $0x3f, %r12d
je 0x1e7cc
movl $0x5b, %edi
callq 0x20a0
movq 0x78(%rbx), %rdi
cmpl 0x48(%rbx), %r12d
jle 0x1e801
movl $0xc, %edx
subl %r12d, %edx
leaq 0x4d27(%rip), %rsi      # 0x234d2
jmp 0x1e80e
movq 0x78(%rbx), %rcx
leaq 0x4bd6(%rip), %rdi      # 0x2338e
movl $0x6, %esi
movl $0x1, %edx
callq 0x2120
jmp 0x1e8c0
leaq 0x4bb4(%rip), %rax      # 0x23387
movq %rsi, %rdi
movq %rax, %rsi
xorl %eax, %eax
callq 0x20b0
movq 0x8(%rsp), %r12
jmp 0x1e8c0
leal -0x1(%r13), %edx
leaq 0x4cd8(%rip), %rsi      # 0x234cd
xorl %eax, %eax
callq 0x20b0
jmp 0x1e8c0
decl %r12d
leaq 0x4cc2(%rip), %rsi      # 0x234cd
movl %r12d, %edx
xorl %eax, %eax
callq 0x20b0
testl $0x3f00, %r13d          # imm = 0x3F00
movq 0x8(%rsp), %r12
je 0x1e861
movq 0x78(%rbx), %rcx
leaq 0x4b48(%rip), %rdi      # 0x23376
movl $0x3, %esi
movl $0x1, %edx
callq 0x2120
movl %r13d, %edx
shrl $0x8, %edx
andl $0x3f, %edx
movq 0x78(%rbx), %rdi
cmpl 0x48(%rbx), %edx
jle 0x1e87f
movl $0xc, %eax
subl %edx, %eax
leaq 0x4c75(%rip), %rsi      # 0x234d2
movl %eax, %edx
jmp 0x1e888
movq 0x10(%rsp), %rdx
testq %rdx, %rdx
je 0x1e8b2
movq 0x78(%rbx), %rdi
leaq 0x4b0a(%rip), %rsi      # 0x23380
xorl %eax, %eax
callq 0x20b0
jmp 0x1e8b2
decl %edx
leaq 0x4c45(%rip), %rsi      # 0x234cd
xorl %eax, %eax
callq 0x20b0
movq 0x10(%rsp), %rcx
testq %rcx, %rcx
je 0x1e8b2
movq 0x78(%rbx), %rdi
movl $0x1, %edx
shll %cl, %edx
leaq 0x4acf(%rip), %rsi      # 0x2337a
xorl %eax, %eax
callq 0x20b0
movq 0x78(%rbx), %rsi
movl $0x5d, %edi
callq 0x20a0
movq 0x78(%rbx), %rsi
movl $0xa, %edi
callq 0x20a0
movq 0x10(%rsp), %r10
testb $0x40, %r15b
sete %al
movl %r13d, %ecx
andl $0x40, %ecx
shrl $0x6, %ecx
orb %al, %cl
jne 0x1e907
leal -0x2(%r14), %eax
cmpb $0x7, %al
ja 0x1e8fc
movzbl %al, %eax
leaq 0x4d27(%rip), %rcx      # 0x23620
movl (%rcx,%rax,4), %ebp
orl %ebp, %r14d
movl %r13d, %r8d
movq %r10, %r9
jmp 0x1e913
movl %r15d, %r8d
movq %r12, %r9
movl %r13d, %r15d
movq %r10, %r12
xorl %eax, %eax
cmpl $0x6, %ebp
setge %al
shll $0xa, %eax
addl $0x462, %eax            # imm = 0x462
cmpl $0x2, %ebp
movl $0x262, %ecx            # imm = 0x262
cmovgel %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 %r12
pushq %r15
callq 0x18025
addq $0x10, %rsp
testl %eax, %eax
je 0x1e96c
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, %ebp
movq %rbx, %rdi
movl %ebp, %esi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1cc6a
leaq 0x48d0(%rip), %rdi      # 0x2326f
movl $0x52e, %esi            # imm = 0x52E
jmp 0x1e9b2
leaq 0x48c2(%rip), %rdi      # 0x2326f
movl $0x52f, %esi            # imm = 0x52F
xorl %eax, %eax
callq 0x2080
callq 0x2040