// File: /workspace/github_c_makefile_star2_O0/mmcco[P]sljit/test_src/sljitTest.c
// Function: test50
static void test50(void)
{
	/* Test stack and floating point operations. */
	executable_code code;
	struct sljit_compiler* compiler = sljit_create_compiler();
#if !(defined SLJIT_CONFIG_X86 && SLJIT_CONFIG_X86)
	unsigned long size1, size2, size3;
	int result;
#endif
	float sbuf[7];

	if (verbose)
		printf("Run test50\n");

	if (!sljit_is_fpu_available()) {
		if (verbose)
			printf("no fpu available, test50 skipped\n");
		successful_tests++;
		if (compiler)
			sljit_free_compiler(compiler);
		return;
	}

	FAILED(!compiler, "cannot create compiler\n");

	sbuf[0] = 245.5;
	sbuf[1] = -100.25;
	sbuf[2] = 713.75;

	sljit_emit_enter(compiler, 0, 1, 3, 3, 6, 0, 8 * sizeof(float));

	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_SP), 0, SLJIT_MEM1(SLJIT_S0), 0);
	sljit_emit_fop1(compiler, SLJIT_SMOV, SLJIT_MEM1(SLJIT_SP), sizeof(float), SLJIT_MEM1(SLJIT_SP), 0);
	/* sbuf[3] */
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), 3 * sizeof(float), SLJIT_MEM1(SLJIT_SP), sizeof(float));
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_SP), sizeof(float), SLJIT_MEM1(SLJIT_S0), sizeof(float));
	sljit_emit_fop2(compiler, SLJIT_SADD, SLJIT_MEM1(SLJIT_SP), 2 * sizeof(float), SLJIT_MEM1(SLJIT_SP), 0, SLJIT_MEM1(SLJIT_SP), sizeof(float));
	/* sbuf[4] */
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), 4 * sizeof(float), SLJIT_MEM1(SLJIT_SP), 2 * sizeof(float));
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_SP), 2 * sizeof(float), SLJIT_IMM, 5934);
	sljit_emit_fop1(compiler, SLJIT_CONVS_FROMW, SLJIT_MEM1(SLJIT_SP), 3 * sizeof(float), SLJIT_MEM1(SLJIT_SP), 2 * sizeof(float));
	/* sbuf[5] */
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), 5 * sizeof(float), SLJIT_MEM1(SLJIT_SP), 3 * sizeof(float));

#if !(defined SLJIT_CONFIG_X86 && SLJIT_CONFIG_X86)
	size1 = compiler->size;
#endif
	sljit_emit_fop1(compiler, SLJIT_SMOV, SLJIT_FR2, 0, SLJIT_MEM1(SLJIT_S0), 2 * sizeof(float));
#if !(defined SLJIT_CONFIG_X86 && SLJIT_CONFIG_X86)
	size2 = compiler->size;
#endif
	sljit_emit_fop1(compiler, SLJIT_SMOV, SLJIT_FR5, 0, SLJIT_FR2, 0);
#if !(defined SLJIT_CONFIG_X86 && SLJIT_CONFIG_X86)
	size3 = compiler->size;
#endif
	/* sbuf[6] */
	sljit_emit_fop1(compiler, SLJIT_SMOV, SLJIT_MEM1(SLJIT_S0), 6 * sizeof(float), SLJIT_FR5, 0);
#if !(defined SLJIT_CONFIG_X86 && SLJIT_CONFIG_X86)
	result = (compiler->size - size3) == (size3 - size2) && (size3 - size2) == (size2 - size1);
#endif

	sljit_emit_return(compiler, SLJIT_MOV, SLJIT_RETURN_REG, 0);

	code.code = sljit_generate_code(compiler);
	CHECK(compiler);
	sljit_free_compiler(compiler);

	code.func1((long)&sbuf);

	FAILED(sbuf[3] != 245.5, "test50 case 1 failed\n");
	FAILED(sbuf[4] != 145.25, "test50 case 2 failed\n");
	FAILED(sbuf[5] != 5934, "test50 case 3 failed\n");
	FAILED(sbuf[6] != 713.75, "test50 case 4 failed\n");
#if !(defined SLJIT_CONFIG_X86 && SLJIT_CONFIG_X86)
	FAILED(!result, "test50 case 5 failed\n");
#endif

	sljit_free_code(code.code);
	successful_tests++;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
callq 0x18ba0
movq %rax, -0x10(%rbp)
cmpl $0x0, 0x1d72c(%rip)     # 0x34354
je 0x16c38
leaq 0x1954e(%rip), %rdi     # 0x3017f
movb $0x0, %al
callq 0x2070
callq 0x23a30
testb $0x1, %al
jne 0x16c7c
cmpl $0x0, 0x1d70c(%rip)     # 0x34354
je 0x16c58
leaq 0x1953a(%rip), %rdi     # 0x3018b
movb $0x0, %al
callq 0x2070
movl 0x1d6fe(%rip), %eax     # 0x3435c
addl $0x1, %eax
movl %eax, 0x1d6f5(%rip)     # 0x3435c
cmpq $0x0, -0x10(%rbp)
je 0x16c77
movq -0x10(%rbp), %rdi
callq 0x18d90
jmp 0x16fc7
cmpq $0x0, -0x10(%rbp)
jne 0x16c96
leaq 0x16749(%rip), %rdi     # 0x2d3d3
movb $0x0, %al
callq 0x2070
jmp 0x16fc7
movss 0x16622(%rip), %xmm0    # 0x2d2c0
movss %xmm0, -0x30(%rbp)
movss 0x16611(%rip), %xmm0    # 0x2d2bc
movss %xmm0, -0x2c(%rbp)
movss 0x16600(%rip), %xmm0    # 0x2d2b8
movss %xmm0, -0x28(%rbp)
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x1, %edx
movl $0x3, %r8d
movl $0x6, %r9d
movl %r8d, %ecx
movl $0x0, (%rsp)
movl $0x20, 0x8(%rsp)
callq 0x19b20
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8d, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x8c, %r8d
movq %r9, %rcx
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x180, %esi            # imm = 0x180
movl $0x8d, %r8d
movl $0x4, %ecx
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8c, %edx
movl $0xc, %ecx
movl $0x8d, %r8d
movl $0x4, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8d, %edx
movl $0x4, %r9d
movl $0x8c, %r8d
movq %r9, %rcx
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x1a0, %esi            # imm = 0x1A0
movl $0x8d, %r8d
movl $0x8, %ecx
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
movl $0x8d, (%rsp)
movq $0x4, 0x8(%rsp)
callq 0x26fb0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8c, %edx
movl $0x10, %ecx
movl $0x8d, %r8d
movl $0x8, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8d, %edx
movl $0x8, %ecx
movl $0x40, %r8d
movl $0x172e, %r9d           # imm = 0x172E
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x184, %esi            # imm = 0x184
movl $0x8d, %r8d
movl $0xc, %ecx
movl $0x8, %r9d
movl %r8d, %edx
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8c, %edx
movl $0x14, %ecx
movl $0x8d, %r8d
movl $0xc, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x180, %esi            # imm = 0x180
movl $0x3, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x8c, %r8d
movl $0x8, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x180, %esi            # imm = 0x180
movl $0x6, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x3, %r8d
movq %r9, %rcx
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x180, %esi            # imm = 0x180
movl $0x8c, %edx
movl $0x18, %ecx
movl $0x6, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
callq 0x1a7c0
movq -0x10(%rbp), %rdi
callq 0x19070
movq %rax, -0x8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x18030
cmpl $0x1, %eax
je 0x16ef2
movq -0x10(%rbp), %rdi
callq 0x18030
movl %eax, %esi
leaq 0x1653b(%rip), %rdi     # 0x2d418
movb $0x0, %al
callq 0x2070
movq -0x10(%rbp), %rdi
callq 0x18d90
jmp 0x16fc7
movq -0x10(%rbp), %rdi
callq 0x18d90
movq -0x8(%rbp), %rax
leaq -0x30(%rbp), %rdi
callq *%rax
movss -0x24(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x16322(%rip), %xmm1    # 0x2d238
ucomisd %xmm1, %xmm0
jne 0x16f20
jp 0x16f20
jmp 0x16f33
leaq 0x19286(%rip), %rdi     # 0x301ad
movb $0x0, %al
callq 0x2070
jmp 0x16fc7
movss -0x20(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x162fc(%rip), %xmm1    # 0x2d240
ucomisd %xmm1, %xmm0
jne 0x16f4e
jp 0x16f4e
jmp 0x16f5e
leaq 0x1926e(%rip), %rdi     # 0x301c3
movb $0x0, %al
callq 0x2070
jmp 0x16fc7
movss -0x1c(%rbp), %xmm0
movss 0x16359(%rip), %xmm1    # 0x2d2c4
ucomiss %xmm1, %xmm0
jne 0x16f74
jp 0x16f74
jmp 0x16f84
leaq 0x1925e(%rip), %rdi     # 0x301d9
movb $0x0, %al
callq 0x2070
jmp 0x16fc7
movss -0x18(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x162b3(%rip), %xmm1    # 0x2d248
ucomisd %xmm1, %xmm0
jne 0x16f9f
jp 0x16f9f
jmp 0x16faf
leaq 0x19249(%rip), %rdi     # 0x301ef
movb $0x0, %al
callq 0x2070
jmp 0x16fc7
movq -0x8(%rbp), %rdi
callq 0x18e10
movl 0x1d39e(%rip), %eax     # 0x3435c
addl $0x1, %eax
movl %eax, 0x1d395(%rip)     # 0x3435c
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)