// File: /workspace/github_c_makefile_star2_O1/mmcco[P]sljit/sljit_src/sljitNativeX86_common.c
// Function: sljit_emit_fop2
int sljit_emit_fop2(struct sljit_compiler *compiler, int op,
	int dst, long dstw,
	int src1, long src1w,
	int src2, long src2w)
{
	int dst_r;

	CHECK_ERROR();
	CHECK(check_sljit_emit_fop2(compiler, op, dst, dstw, src1, src1w, src2, src2w));
	ADJUST_LOCAL_OFFSET(dst, dstw);
	ADJUST_LOCAL_OFFSET(src1, src1w);
	ADJUST_LOCAL_OFFSET(src2, src2w);

#if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)
	compiler->mode32 = 1;
#endif

	if (FAST_IS_REG(dst)) {
		dst_r = dst;
		if (dst == src1)
			; /* Do nothing here. */
		else if (dst == src2 && (op == SLJIT_DADD || op == SLJIT_DMUL)) {
			/* Swap arguments. */
			src2 = src1;
			src2w = src1w;
		}
		else if (dst != src2)
			FAIL_IF(emit_sse2_load(compiler, op & SLJIT_SINGLE_OP, dst_r, src1, src1w));
		else {
			dst_r = TMP_FREG;
			FAIL_IF(emit_sse2_load(compiler, op & SLJIT_SINGLE_OP, TMP_FREG, src1, src1w));
		}
	}
	else {
		dst_r = TMP_FREG;
		FAIL_IF(emit_sse2_load(compiler, op & SLJIT_SINGLE_OP, TMP_FREG, src1, src1w));
	}

	switch (GET_OPCODE(op)) {
	case SLJIT_DADD:
		FAIL_IF(emit_sse2(compiler, ADDSD_x_xm, op & SLJIT_SINGLE_OP, dst_r, src2, src2w));
		break;

	case SLJIT_DSUB:
		FAIL_IF(emit_sse2(compiler, SUBSD_x_xm, op & SLJIT_SINGLE_OP, dst_r, src2, src2w));
		break;

	case SLJIT_DMUL:
		FAIL_IF(emit_sse2(compiler, MULSD_x_xm, op & SLJIT_SINGLE_OP, dst_r, src2, src2w));
		break;

	case SLJIT_DDIV:
		FAIL_IF(emit_sse2(compiler, DIVSD_x_xm, op & SLJIT_SINGLE_OP, dst_r, src2, src2w));
		break;
	}

	if (dst_r == TMP_FREG)
		return emit_sse2_store(compiler, op & SLJIT_SINGLE_OP, dst, dstw, TMP_FREG);
	return SLJIT_SUCCESS;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl (%rdi), %ebp
testl %ebp, %ebp
jne 0x1caf3
movl %r8d, %r12d
movl %esi, %r8d
movl %esi, %eax
andl $0xffff80fc, %eax       # imm = 0xFFFF80FC
cmpl $0xa0, %eax
jne 0x1cb65
movl %edx, %r15d
testl $0x3e00, %r8d           # imm = 0x3E00
sete %al
cmpl $0x4000, %r8d           # imm = 0x4000
setb %dl
orb %al, %dl
je 0x1cb57
cmpl $0x200, %r8d            # imm = 0x200
jae 0x1cb57
movq %r9, %r10
movq %rdi, %rbx
movl 0x50(%rdi), %r9d
cmpl $-0x1, %r9d
je 0x1c445
movl 0x54(%rbx), %eax
cmpl $-0x1, %eax
je 0x1c445
testl %r12d, %r12d
setg %dl
cmpl %r12d, %r9d
setge %sil
testb %sil, %dl
jne 0x1c1fd
movl $0x6, %edx
subl %eax, %edx
cmpl %r12d, %edx
setge %dl
cmpl $0x7, %r12d
setge %sil
orb %dl, %sil
jne 0x1c33c
testq %r10, %r10
jne 0x1c445
movq 0x58(%rsp), %r11
movl 0x50(%rsp), %r14d
testl %r14d, %r14d
setg %dl
cmpl %r14d, %r9d
setge %sil
testb %sil, %dl
jne 0x1c240
movl $0x6, %edx
subl %eax, %edx
cmpl %r14d, %edx
setge %dl
cmpl $0x7, %r14d
setge %sil
orb %dl, %sil
jne 0x1c367
testq %r11, %r11
jne 0x1c4c4
testl %r15d, %r15d
setg %dl
cmpl %r15d, %r9d
setge %sil
testb %sil, %dl
jne 0x1c277
movl $0x6, %edx
subl %eax, %edx
cmpl %r15d, %edx
setge %al
cmpl $0x7, %r15d
setge %dl
orb %al, %dl
jne 0x1c392
testq %rcx, %rcx
jne 0x1c541
movq 0x78(%rbx), %rdi
testq %rdi, %rdi
movl %r8d, 0x4(%rsp)
je 0x1c8ea
movq %rcx, 0x10(%rsp)
movq %r10, %r13
movl %r8d, %eax
andl $0xffff80ff, %eax       # imm = 0xFFFF80FF
cmpl $0x100, %r8d            # imm = 0x100
leaq 0x70ce(%rip), %rcx      # 0x2337e
leaq 0x71c1(%rip), %rdx      # 0x23478
cmovbq %rcx, %rdx
addl $0xffffff60, %eax       # imm = 0xFFFFFF60
leaq 0x6e85(%rip), %rsi      # 0x2314c
movslq (%rsi,%rax,4), %rcx
addq %rsi, %rcx
leaq 0x721d(%rip), %rsi      # 0x234f2
xorl %eax, %eax
callq 0x20b0
movq 0x78(%rbx), %rax
testb %r15b, %r15b
js 0x1c303
cmpl %r15d, 0x50(%rbx)
jge 0x1c3bd
movl $0x6, %edx
subl %r15d, %edx
leaq 0x71d3(%rip), %rsi      # 0x234d1
jmp 0x1c3c8
movl %r15d, %ebp
andl $0x3f, %ebp
je 0x1c552
movl $0x5b, %edi
movq %rax, %rsi
callq 0x20a0
movq 0x78(%rbx), %rdi
cmpl 0x48(%rbx), %ebp
jle 0x1c56d
movl $0xc, %edx
subl %ebp, %edx
leaq 0x719b(%rip), %rsi      # 0x234d2
jmp 0x1c578
cmpl $0x8d, %r12d
jne 0x1c3d7
testq %r10, %r10
js 0x1c445
movslq 0x80(%rbx), %rdx
cmpq %r10, %rdx
jg 0x1c206
jmp 0x1c445
cmpl $0x8d, %r14d
jne 0x1c456
testq %r11, %r11
js 0x1c4c4
movslq 0x80(%rbx), %rdx
cmpq %r11, %rdx
jg 0x1c249
jmp 0x1c4c4
cmpl $0x8d, %r15d
jne 0x1c4d5
testq %rcx, %rcx
js 0x1c541
movslq 0x80(%rbx), %rax
cmpq %rcx, %rax
jg 0x1c280
jmp 0x1c541
leal -0x1(%r15), %edx
leaq 0x7104(%rip), %rsi      # 0x234cc
movq %rax, %rdi
xorl %eax, %eax
callq 0x20b0
jmp 0x1c625
testb %r12b, %r12b
jns 0x1c445
movl %r12d, %esi
andl $0x3f, %esi
je 0x1c3fa
cmpl 0x48(%rbx), %esi
jle 0x1c3fa
cmpl $0xc, %esi
ja 0x1c445
movl $0xc, %edx
subl 0x4c(%rbx), %edx
cmpl %edx, %esi
jle 0x1c445
movl %r12d, %edx
andl $0x3f00, %edx           # imm = 0x3F00
je 0x1c438
testl %esi, %esi
je 0x1c445
movl %r12d, %esi
shrl $0x8, %esi
andl $0x3f, %esi
je 0x1c419
cmpl 0x48(%rbx), %esi
jle 0x1c42a
cmpl $0xc, %esi
ja 0x1c445
movl $0xc, %edi
subl 0x4c(%rbx), %edi
cmpl %edi, %esi
jle 0x1c445
cmpl $0xd00, %edx            # imm = 0xD00
je 0x1c445
cmpq $0x4, %r10
jae 0x1c445
cmpl $0x4000, %r12d          # imm = 0x4000
jb 0x1c206
leaq 0x6e23(%rip), %rdi      # 0x2326f
movl $0x4f8, %esi            # imm = 0x4F8
jmp 0x1cb71
testb %r14b, %r14b
jns 0x1c4c4
movl %r14d, %esi
andl $0x3f, %esi
je 0x1c479
cmpl 0x48(%rbx), %esi
jle 0x1c479
cmpl $0xc, %esi
ja 0x1c4c4
movl $0xc, %edx
subl 0x4c(%rbx), %edx
cmpl %edx, %esi
jle 0x1c4c4
movl %r14d, %edx
andl $0x3f00, %edx           # imm = 0x3F00
je 0x1c4b7
testl %esi, %esi
je 0x1c4c4
movl %r14d, %esi
shrl $0x8, %esi
andl $0x3f, %esi
je 0x1c498
cmpl 0x48(%rbx), %esi
jle 0x1c4a9
cmpl $0xc, %esi
ja 0x1c4c4
movl $0xc, %edi
subl 0x4c(%rbx), %edi
cmpl %edi, %esi
jle 0x1c4c4
cmpl $0xd00, %edx            # imm = 0xD00
je 0x1c4c4
cmpq $0x4, %r11
jae 0x1c4c4
cmpl $0x4000, %r14d          # imm = 0x4000
jb 0x1c249
leaq 0x6da4(%rip), %rdi      # 0x2326f
movl $0x4f9, %esi            # imm = 0x4F9
jmp 0x1cb71
testb %r15b, %r15b
jns 0x1c541
movl %r15d, %edx
andl $0x3f, %edx
je 0x1c4f8
cmpl 0x48(%rbx), %edx
jle 0x1c4f8
cmpl $0xc, %edx
ja 0x1c541
movl $0xc, %eax
subl 0x4c(%rbx), %eax
cmpl %eax, %edx
jle 0x1c541
movl %r15d, %eax
andl $0x3f00, %eax           # imm = 0x3F00
je 0x1c534
testl %edx, %edx
je 0x1c541
movl %r15d, %esi
shrl $0x8, %esi
andl $0x3f, %esi
je 0x1c516
cmpl 0x48(%rbx), %esi
jle 0x1c527
cmpl $0xc, %esi
ja 0x1c541
movl $0xc, %edx
subl 0x4c(%rbx), %edx
cmpl %edx, %esi
jle 0x1c541
cmpl $0xd00, %eax            # imm = 0xD00
je 0x1c541
cmpq $0x4, %rcx
jae 0x1c541
cmpl $0x4000, %r15d          # imm = 0x4000
jb 0x1c280
leaq 0x6d27(%rip), %rdi      # 0x2326f
movl $0x4fa, %esi            # imm = 0x4FA
jmp 0x1cb71
leaq 0x6e2e(%rip), %rsi      # 0x23387
movq %rax, %rdi
movq 0x10(%rsp), %rdx
xorl %eax, %eax
callq 0x20b0
jmp 0x1c625
decl %ebp
leaq 0x6f57(%rip), %rsi      # 0x234cd
movl %ebp, %edx
xorl %eax, %eax
callq 0x20b0
testl $0x3f00, %r15d          # imm = 0x3F00
je 0x1c5c6
movq 0x78(%rbx), %rcx
leaq 0x6de3(%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 0x1c5e4
movl $0xc, %eax
subl %edx, %eax
leaq 0x6f10(%rip), %rsi      # 0x234d2
movl %eax, %edx
jmp 0x1c5ed
movq 0x10(%rsp), %rdx
testq %rdx, %rdx
je 0x1c617
movq 0x78(%rbx), %rdi
leaq 0x6da8(%rip), %rsi      # 0x23383
xorl %eax, %eax
callq 0x20b0
jmp 0x1c617
decl %edx
leaq 0x6ee0(%rip), %rsi      # 0x234cd
xorl %eax, %eax
callq 0x20b0
movq 0x10(%rsp), %rcx
testq %rcx, %rcx
je 0x1c617
movq 0x78(%rbx), %rdi
movl $0x1, %edx
shll %cl, %edx
leaq 0x6d6d(%rip), %rsi      # 0x2337d
xorl %eax, %eax
callq 0x20b0
movq 0x78(%rbx), %rsi
movl $0x5d, %edi
callq 0x20a0
movq 0x78(%rbx), %rcx
leaq 0x6e53(%rip), %rdi      # 0x23483
movl $0x2, %esi
movl $0x1, %edx
callq 0x2120
movq 0x78(%rbx), %rax
testb %r12b, %r12b
js 0x1c65f
cmpl %r12d, 0x50(%rbx)
jge 0x1c68d
movl $0x6, %edx
subl %r12d, %edx
leaq 0x6e74(%rip), %rsi      # 0x234d1
jmp 0x1c699
movl %r12d, %ebp
andl $0x3f, %ebp
je 0x1c6a8
movl $0x5b, %edi
movq %rax, %rsi
callq 0x20a0
movq 0x78(%rbx), %rdi
cmpl 0x48(%rbx), %ebp
jle 0x1c6c1
movl $0xc, %edx
subl %ebp, %edx
leaq 0x6e47(%rip), %rsi      # 0x234d2
jmp 0x1c6cc
leal -0x1(%r12), %edx
leaq 0x6e33(%rip), %rsi      # 0x234cc
movq %rax, %rdi
xorl %eax, %eax
callq 0x20b0
jmp 0x1c775
leaq 0x6cd8(%rip), %rsi      # 0x23387
movq %rax, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x20b0
jmp 0x1c775
decl %ebp
leaq 0x6e03(%rip), %rsi      # 0x234cd
movl %ebp, %edx
xorl %eax, %eax
callq 0x20b0
testl $0x3f00, %r12d          # imm = 0x3F00
je 0x1c71a
movq 0x78(%rbx), %rcx
leaq 0x6c8f(%rip), %rdi      # 0x23376
movl $0x3, %esi
movl $0x1, %edx
callq 0x2120
movl %r12d, %edx
shrl $0x8, %edx
andl $0x3f, %edx
movq 0x78(%rbx), %rdi
cmpl 0x48(%rbx), %edx
jle 0x1c736
movl $0xc, %eax
subl %edx, %eax
leaq 0x6dbc(%rip), %rsi      # 0x234d2
movl %eax, %edx
jmp 0x1c73f
testq %r13, %r13
je 0x1c767
movq %r13, %rdx
movq 0x78(%rbx), %rdi
leaq 0x6c56(%rip), %rsi      # 0x23383
xorl %eax, %eax
callq 0x20b0
jmp 0x1c767
decl %edx
leaq 0x6d8e(%rip), %rsi      # 0x234cd
xorl %eax, %eax
callq 0x20b0
testq %r13, %r13
je 0x1c767
movq %r13, %rcx
movq 0x78(%rbx), %rdi
movl $0x1, %edx
shll %cl, %edx
leaq 0x6c1d(%rip), %rsi      # 0x2337d
xorl %eax, %eax
callq 0x20b0
movq 0x78(%rbx), %rsi
movl $0x5d, %edi
callq 0x20a0
movq 0x78(%rbx), %rcx
leaq 0x6d03(%rip), %rdi      # 0x23483
movl $0x2, %esi
movl $0x1, %edx
callq 0x2120
movq 0x78(%rbx), %rax
testb %r14b, %r14b
js 0x1c7af
cmpl %r14d, 0x50(%rbx)
jge 0x1c7dd
movl $0x6, %edx
subl %r14d, %edx
leaq 0x6d24(%rip), %rsi      # 0x234d1
jmp 0x1c7e8
movl %r14d, %ebp
andl $0x3f, %ebp
je 0x1c7f7
movl $0x5b, %edi
movq %rax, %rsi
callq 0x20a0
movq 0x78(%rbx), %rdi
cmpl 0x48(%rbx), %ebp
jle 0x1c812
movl $0xc, %edx
subl %ebp, %edx
leaq 0x6cf7(%rip), %rsi      # 0x234d2
jmp 0x1c81d
leal -0x1(%r14), %edx
leaq 0x6ce4(%rip), %rsi      # 0x234cc
movq %rax, %rdi
xorl %eax, %eax
callq 0x20b0
jmp 0x1c8ca
leaq 0x6b89(%rip), %rsi      # 0x23387
movq %rax, %rdi
movq 0x58(%rsp), %rdx
xorl %eax, %eax
callq 0x20b0
jmp 0x1c8ca
decl %ebp
leaq 0x6cb2(%rip), %rsi      # 0x234cd
movl %ebp, %edx
xorl %eax, %eax
callq 0x20b0
testl $0x3f00, %r14d          # imm = 0x3F00
je 0x1c86b
movq 0x78(%rbx), %rcx
leaq 0x6b3e(%rip), %rdi      # 0x23376
movl $0x3, %esi
movl $0x1, %edx
callq 0x2120
movl %r14d, %edx
shrl $0x8, %edx
andl $0x3f, %edx
movq 0x78(%rbx), %rdi
cmpl 0x48(%rbx), %edx
jle 0x1c889
movl $0xc, %eax
subl %edx, %eax
leaq 0x6c6b(%rip), %rsi      # 0x234d2
movl %eax, %edx
jmp 0x1c892
movq 0x58(%rsp), %rdx
testq %rdx, %rdx
je 0x1c8bc
movq 0x78(%rbx), %rdi
leaq 0x6b03(%rip), %rsi      # 0x23383
xorl %eax, %eax
callq 0x20b0
jmp 0x1c8bc
decl %edx
leaq 0x6c3b(%rip), %rsi      # 0x234cd
xorl %eax, %eax
callq 0x20b0
movq 0x58(%rsp), %rcx
testq %rcx, %rcx
je 0x1c8bc
movq 0x78(%rbx), %rdi
movl $0x1, %edx
shll %cl, %edx
leaq 0x6ac8(%rip), %rsi      # 0x2337d
xorl %eax, %eax
callq 0x20b0
movq 0x78(%rbx), %rsi
movl $0x5d, %edi
callq 0x20a0
movq 0x78(%rbx), %rsi
movl $0xa, %edi
callq 0x20a0
movl 0x4(%rsp), %r8d
movq %r13, %r10
movq 0x10(%rsp), %rcx
movq 0x58(%rsp), %r11
leaq 0x8(%rcx), %r13
movl $0x8d, %eax
cmpl %eax, %r15d
cmovneq %rcx, %r13
leaq 0x8(%r10), %r9
cmpl %eax, %r12d
cmovneq %r10, %r9
leaq 0x8(%r11), %rbp
cmpl %eax, %r14d
cmovneq %r11, %rbp
movl $0x1, 0x70(%rbx)
cmpl $0x3f, %r15d
jg 0x1c929
cmpl %r12d, %r15d
jne 0x1c96b
movq %r14, 0x8(%rsp)
jmp 0x1c990
movq %r14, 0x8(%rsp)
xorl %esi, %esi
cmpl $0x100, %r8d            # imm = 0x100
setae %sil
shll $0xb, %esi
addl $0x6802, %esi           # imm = 0x6802
xorl %r14d, %r14d
movq %rbx, %rdi
xorl %edx, %edx
xorl %ecx, %ecx
movl %r12d, %r8d
callq 0x15e07
testq %rax, %rax
je 0x1c9f0
movw $0x100f, (%rax)         # imm = 0x100F
movl 0x4(%rsp), %r8d
jmp 0x1c993
movl %r15d, %eax
xorl %r14d, %eax
movl %r8d, %ecx
andl $0x1a1, %ecx            # imm = 0x1A1
xorl $0xa0, %ecx
orl %eax, %ecx
jne 0x1cb04
movq %r12, 0x8(%rsp)
movq %r9, %rbp
movl %r15d, %r14d
movzbl %r8b, %eax
addl $0xffffff60, %eax       # imm = 0xFFFFFF60
cmpl $0x3, %eax
ja 0x1caaa
leaq 0x6744(%rip), %rcx      # 0x230f0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
xorl %esi, %esi
cmpl $0x100, %r8d            # imm = 0x100
setae %sil
shll $0xb, %esi
addl $0x6802, %esi           # imm = 0x6802
movq %rbx, %rdi
movl %r14d, %edx
xorl %ecx, %ecx
movq 0x8(%rsp), %r8
movq %rbp, %r9
callq 0x15e07
testq %rax, %rax
je 0x1cae7
movb $0x58, %cl
jmp 0x1ca9f
cmpl $0x0, (%rbx)
jne 0x1caf1
xorl %r14d, %r14d
jmp 0x1c964
xorl %esi, %esi
cmpl $0x100, %r8d            # imm = 0x100
setae %sil
shll $0xb, %esi
addl $0x6802, %esi           # imm = 0x6802
movq %rbx, %rdi
movl %r14d, %edx
xorl %ecx, %ecx
movq 0x8(%rsp), %r8
movq %rbp, %r9
callq 0x15e07
testq %rax, %rax
je 0x1cae7
movb $0x59, %cl
jmp 0x1ca9f
xorl %esi, %esi
cmpl $0x100, %r8d            # imm = 0x100
setae %sil
shll $0xb, %esi
addl $0x6802, %esi           # imm = 0x6802
movq %rbx, %rdi
movl %r14d, %edx
xorl %ecx, %ecx
movq 0x8(%rsp), %r8
movq %rbp, %r9
callq 0x15e07
testq %rax, %rax
je 0x1cae7
movb $0x5e, %cl
jmp 0x1ca9f
xorl %esi, %esi
cmpl $0x100, %r8d            # imm = 0x100
setae %sil
shll $0xb, %esi
addl $0x6802, %esi           # imm = 0x6802
movq %rbx, %rdi
movl %r14d, %edx
xorl %ecx, %ecx
movq 0x8(%rsp), %r8
movq %rbp, %r9
callq 0x15e07
testq %rax, %rax
je 0x1cae7
movb $0x5c, %cl
movl 0x4(%rsp), %r8d
movb $0xf, (%rax)
movb %cl, 0x1(%rax)
xorl %ebp, %ebp
testl %r14d, %r14d
jne 0x1caf3
xorl %esi, %esi
cmpl $0x100, %r8d            # imm = 0x100
setae %sil
shll $0xb, %esi
addl $0x6802, %esi           # imm = 0x6802
xorl %ebp, %ebp
movq %rbx, %rdi
xorl %edx, %edx
xorl %ecx, %ecx
movl %r15d, %r8d
movq %r13, %r9
callq 0x15e07
testq %rax, %rax
je 0x1caf1
movw $0x110f, (%rax)         # imm = 0x110F
jmp 0x1caf3
cmpl $0x0, (%rbx)
movl 0x4(%rsp), %r8d
je 0x1caaa
movl (%rbx), %ebp
movl %ebp, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %esi, %esi
cmpl $0x100, %r8d            # imm = 0x100
setae %sil
shll $0xb, %esi
addl $0x6802, %esi           # imm = 0x6802
cmpl %r14d, %r15d
movq %r14, 0x8(%rsp)
je 0x1c944
movq %rbx, %rdi
movl %r15d, %edx
xorl %ecx, %ecx
movl %r12d, %r8d
callq 0x15e07
testq %rax, %rax
je 0x1cb45
movl %r15d, %r14d
jmp 0x1c95f
cmpl $0x0, (%rbx)
movl %r15d, %r14d
movl 0x4(%rsp), %r8d
jne 0x1caf1
jmp 0x1c993
leaq 0x6711(%rip), %rdi      # 0x2326f
movl $0x4f7, %esi            # imm = 0x4F7
jmp 0x1cb71
leaq 0x6703(%rip), %rdi      # 0x2326f
movl $0x4f6, %esi            # imm = 0x4F6
xorl %eax, %eax
callq 0x2080
callq 0x2040