// File: /workspace/github_c_makefile_star2_O3/mmcco[P]sljit/sljit_src/sljitNativeX86_common.c
// Function: sljit_emit_jump
struct sljit_jump* sljit_emit_jump(struct sljit_compiler *compiler, int type)
{
	u_char *inst;
	struct sljit_jump *jump;

	CHECK_ERROR_PTR();
	CHECK_PTR(check_sljit_emit_jump(compiler, type));

	if (compiler->flags_saved) {
		if ((type & 0xff) <= SLJIT_JUMP) {
			if (emit_restore_flags(compiler, 0))
				return NULL;
		}
		compiler->flags_saved = 0;
	}

	jump = ensure_abuf(compiler, sizeof(struct sljit_jump));
	PTR_FAIL_IF_NULL(jump);
	set_jump(jump, compiler, type & SLJIT_REWRITABLE_JUMP);
	type &= 0xff;

	if (type >= SLJIT_CALL1) {
		if (call_with_args(compiler, type))
			return NULL;
	}

	/* Worst case size. */
#if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32)
	compiler->size += (type >= SLJIT_JUMP) ? 5 : 6;
#else
	compiler->size += (type >= SLJIT_JUMP) ? (10 + 3) : (2 + 10 + 3);
#endif

	inst = ensure_buf(compiler, 2);
	PTR_FAIL_IF_NULL(inst);

	*inst++ = 0;
	*inst++ = type + 4;
	return jump;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
cmpl $0x0, (%rdi)
jne 0x1d2f7
movl %esi, %ebx
movq %rdi, %r14
cmpl $0x0, 0x84(%rdi)
je 0x1d13a
movl $0x0, 0x84(%r14)
jmp 0x1d1d2
testl $0xffffee00, %ebx       # imm = 0xFFFFEE00
jne 0x1d306
movzbl %bl, %eax
cmpl $0x1c, %eax
jae 0x1d314
cmpl $0x16, %eax
setb %cl
btl $0x8, %ebx
setae %dl
orb %cl, %dl
je 0x1d322
movq 0x78(%r14), %rdi
testq %rdi, %rdi
je 0x1d1d2
cmpl $0x1000, %ebx           # imm = 0x1000
leaq 0x32bb(%rip), %rsi      # 0x20438
leaq 0x646d(%rip), %rdx      # 0x235f1
cmovbq %rsi, %rdx
btl $0x8, %ebx
leaq 0x6461(%rip), %r8       # 0x235f4
cmovaeq %rsi, %r8
leaq 0x645c(%rip), %r9       # 0x235fa
leaq 0x6452(%rip), %rcx      # 0x235f7
cmovaeq %r9, %rcx
cmpl $0x16, %eax
cmovaeq %rsi, %rcx
cmpl $0xe, %eax
cmovbq %r8, %rcx
movl %eax, %eax
leaq 0xab40(%rip), %rsi      # 0x27d00
movq (%rsi,%rax,8), %r8
leaq 0x6417(%rip), %rsi      # 0x235e2
xorl %eax, %eax
callq 0x20c0
cmpl $0x0, 0x74(%r14)
je 0x1d214
movzbl %bl, %eax
cmpl $0x16, %eax
ja 0x1d20c
movl $0x7, %esi
movq %r14, %rdi
callq 0x15218
testq %rax, %rax
je 0x1d29f
movb $0x6, (%rax)
addq $0x6, 0x60(%r14)
movl $0x648d489d, 0x1(%rax)  # imm = 0x648D489D
movw $0xf824, 0x5(%rax)      # imm = 0xF824
movl $0x0, 0x74(%r14)
movl $0x20, %esi
movq %r14, %rdi
callq 0x14955
testq %rax, %rax
je 0x1d2f0
movq %rax, %r15
movl %ebx, %eax
andl $0x1000, %eax           # imm = 0x1000
movq $0x0, (%r15)
movq %rax, 0x10(%r15)
movq 0x28(%r14), %rax
leaq 0x10(%r14), %rcx
testq %rax, %rax
cmovneq %rax, %rcx
movq %r15, (%rcx)
movq %r15, 0x28(%r14)
movzbl %bl, %ebp
cmpl $0x19, %ebp
jb 0x1d2be
xorl %r12d, %r12d
cmpl $0x1b, %ebp
setae %r12b
leal (%r12,%r12,2), %esi
addl $0x4, %esi
movq %r14, %rdi
callq 0x15218
testq %rax, %rax
je 0x1d2aa
leal (%r12,%r12,2), %ecx
addl $0x3, %ecx
movb %cl, (%rax)
movl %ecx, %ecx
addq %rcx, 0x60(%r14)
cmpl $0x1b, %ebp
jb 0x1d2b2
movw $0x8b48, 0x1(%rax)      # imm = 0x8B48
movb $-0x2f, 0x3(%rax)
addq $0x4, %rax
jmp 0x1d2b5
cmpl $0x0, (%r14)
jne 0x1d2f7
jmp 0x1d20c
cmpl $0x0, (%r14)
jne 0x1d2f7
jmp 0x1d2be
incq %rax
movw $0x8b48, (%rax)         # imm = 0x8B48
movb $-0x8, 0x2(%rax)
xorl %eax, %eax
cmpl $0x16, %ebp
setb %al
movq 0x60(%r14), %rcx
leaq 0xd(%rcx,%rax,2), %rax
movq %rax, 0x60(%r14)
movl $0x2, %esi
movq %r14, %rdi
callq 0x15218
testq %rax, %rax
je 0x1d2f0
movb $0x0, (%rax)
addb $0x4, %bl
movb %bl, 0x1(%rax)
jmp 0x1d2fa
movl $0x2, (%r14)
xorl %r15d, %r15d
movq %r15, %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x6032(%rip), %rdi      # 0x2333f
movl $0x51d, %esi            # imm = 0x51D
jmp 0x1d32e
leaq 0x6024(%rip), %rdi      # 0x2333f
movl $0x51e, %esi            # imm = 0x51E
jmp 0x1d32e
leaq 0x6016(%rip), %rdi      # 0x2333f
movl $0x51f, %esi            # imm = 0x51F
xorl %eax, %eax
callq 0x2080
callq 0x2040