// File: /workspace/github_c_makefile_star2_O0/mmcco[P]sljit/test_src/sljitTest.c
// Function: test52
static void test52(void)
{
	/* Test all regs provided by the CPU. */
	executable_code code;
	struct sljit_compiler* compiler;
	struct sljit_jump* jump;
	double buf[3];
	int i;

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

	/* Next test. */

	compiler = sljit_create_compiler();
	FAILED(!compiler, "cannot create compiler\n");
	buf[0] = 6.25;
	buf[1] = 17.75;

	sljit_emit_enter(compiler, 0, 1, 0, 1, SLJIT_NUM_SCRATCH_FLOAT_REGS, SLJIT_NUM_SAVED_FLOAT_REGS, 0);

	for (i = 0; i < SLJIT_NUM_FLOAT_REGS; i++)
		sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_FR(i), 0, SLJIT_MEM1(SLJIT_S0), 0);

	jump = sljit_emit_jump(compiler, SLJIT_CALL0);
	/* SLJIT_FR0 contains the first value. */
	for (i = 1; i < SLJIT_NUM_FLOAT_REGS; i++)
		sljit_emit_fop2(compiler, SLJIT_DADD, SLJIT_FR0, 0, SLJIT_FR0, 0, SLJIT_FR(i), 0);
	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_MEM1(SLJIT_S0), 2 * sizeof(double), SLJIT_FR0, 0);

	sljit_emit_return(compiler, SLJIT_UNUSED, 0, 0);

	sljit_set_label(jump, sljit_emit_label(compiler));
	sljit_emit_enter(compiler, 0, 0, 1, 0, SLJIT_NUM_FLOAT_REGS, 0, 0);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R0, 0, SLJIT_IMM, (long)&buf[1]);
	for (i = 0; i < SLJIT_NUM_FLOAT_REGS; i++)
		sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_FR(i), 0, SLJIT_MEM1(SLJIT_R0), 0);
	sljit_emit_return(compiler, SLJIT_UNUSED, 0, 0);

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

	code.func1((long)&buf);
	FAILED(buf[2] != (SLJIT_NUM_SCRATCH_FLOAT_REGS * 17.75 + SLJIT_NUM_SAVED_FLOAT_REGS * 6.25), "test52 case 1 failed\n");

	sljit_free_code(code.code);

	/* Next test. */

	compiler = sljit_create_compiler();
	FAILED(!compiler, "cannot create compiler\n");
	buf[0] = -32.5;
	buf[1] = -11.25;

	sljit_emit_enter(compiler, 0, 1, 0, 1, SLJIT_NUM_SCRATCH_FLOAT_REGS, SLJIT_NUM_SAVED_FLOAT_REGS, 0);

	for (i = 0; i < SLJIT_NUM_FLOAT_REGS; i++)
		sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_FR(i), 0, SLJIT_MEM1(SLJIT_S0), 0);

	jump = sljit_emit_jump(compiler, SLJIT_CALL0);
	/* SLJIT_FR0 contains the first value. */
	for (i = 1; i < SLJIT_NUM_FLOAT_REGS; i++)
		sljit_emit_fop2(compiler, SLJIT_DADD, SLJIT_FR0, 0, SLJIT_FR0, 0, SLJIT_FR(i), 0);
	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_MEM1(SLJIT_S0), 2 * sizeof(double), SLJIT_FR0, 0);

	sljit_emit_return(compiler, SLJIT_UNUSED, 0, 0);

	sljit_set_label(jump, sljit_emit_label(compiler));
	sljit_emit_enter(compiler, 0, 0, 1, 0, 0, SLJIT_NUM_FLOAT_REGS, 0);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R0, 0, SLJIT_IMM, (long)&buf[1]);
	for (i = 0; i < SLJIT_NUM_FLOAT_REGS; i++)
		sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_FS(i), 0, SLJIT_MEM1(SLJIT_R0), 0);
	sljit_emit_return(compiler, SLJIT_UNUSED, 0, 0);

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

	code.func1((long)&buf);
	FAILED(buf[2] != (SLJIT_NUM_SCRATCH_FLOAT_REGS * -11.25 + SLJIT_NUM_SAVED_FLOAT_REGS * -32.5), "test52 case 2 failed\n");

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
callq 0x23a30
testb $0x1, %al
jne 0x178ac
cmpl $0x0, 0x1cacc(%rip)     # 0x34354
je 0x17898
leaq 0x189b6(%rip), %rdi     # 0x30247
movb $0x0, %al
callq 0x2070
movl 0x1cabe(%rip), %eax     # 0x3435c
addl $0x1, %eax
movl %eax, 0x1cab5(%rip)     # 0x3435c
jmp 0x17d98
callq 0x18ba0
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x178cf
leaq 0x15b10(%rip), %rdi     # 0x2d3d3
movb $0x0, %al
callq 0x2070
jmp 0x17d98
movsd 0x15981(%rip), %xmm0    # 0x2d258
movsd %xmm0, -0x30(%rbp)
movsd 0x1596c(%rip), %xmm0    # 0x2d250
movsd %xmm0, -0x28(%rbp)
movq -0x10(%rbp), %rdi
xorl %ecx, %ecx
movl $0x1, %r8d
movl $0x6, %r9d
movl %ecx, %esi
movl %r8d, %edx
movl $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
callq 0x19b20
movl $0x0, -0x34(%rbp)
cmpl $0x6, -0x34(%rbp)
jge 0x1794e
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %edx
addl $0x1, %edx
movl $0x80, %esi
xorl %eax, %eax
movl %eax, %r9d
movl $0x8c, %r8d
movq %r9, %rcx
callq 0x23a40
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1791b
movq -0x10(%rbp), %rdi
movl $0x18, %esi
callq 0x283d0
movq %rax, -0x18(%rbp)
movl $0x1, -0x34(%rbp)
cmpl $0x6, -0x34(%rbp)
jge 0x179a9
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl $0xa0, %esi
movl $0x1, %r8d
xorl %ecx, %ecx
movl %ecx, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl %eax, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x26fb0
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x17967
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x8c, %edx
movl $0x10, %ecx
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
xorl %edx, %edx
xorl %eax, %eax
movl %eax, %ecx
movl %edx, %esi
callq 0x1a7c0
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
callq 0x28220
movq -0x40(%rbp), %rdi
movq %rax, %rsi
callq 0x18e30
movq -0x10(%rbp), %rdi
xorl %r8d, %r8d
movl $0x1, %ecx
movl $0x6, %r9d
movl %r8d, %esi
movl %r8d, %edx
movl $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
callq 0x19b20
movq -0x10(%rbp), %rdi
leaq -0x30(%rbp), %r9
addq $0x8, %r9
movl $0x20, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
callq 0x1d3d0
movl $0x0, -0x34(%rbp)
cmpl $0x6, -0x34(%rbp)
jge 0x17a85
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %edx
addl $0x1, %edx
movl $0x80, %esi
xorl %eax, %eax
movl %eax, %r9d
movl $0x81, %r8d
movq %r9, %rcx
callq 0x23a40
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x17a52
movq -0x10(%rbp), %rdi
xorl %edx, %edx
xorl %eax, %eax
movl %eax, %ecx
movl %edx, %esi
callq 0x1a7c0
movq -0x10(%rbp), %rdi
callq 0x19070
movq %rax, -0x8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x18030
cmpl $0x1, %eax
je 0x17ad8
movq -0x10(%rbp), %rdi
callq 0x18030
movl %eax, %esi
leaq 0x15955(%rip), %rdi     # 0x2d418
movb $0x0, %al
callq 0x2070
movq -0x10(%rbp), %rdi
callq 0x18d90
jmp 0x17d98
movq -0x10(%rbp), %rdi
callq 0x18d90
movq -0x8(%rbp), %rax
leaq -0x30(%rbp), %rdi
callq *%rax
movsd -0x20(%rbp), %xmm0
movsd 0x15768(%rip), %xmm1    # 0x2d260
ucomisd %xmm1, %xmm0
jne 0x17b02
jp 0x17b02
jmp 0x17b15
leaq 0x18760(%rip), %rdi     # 0x30269
movb $0x0, %al
callq 0x2070
jmp 0x17d98
movq -0x8(%rbp), %rdi
callq 0x18e10
callq 0x18ba0
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x17b41
leaq 0x1589e(%rip), %rdi     # 0x2d3d3
movb $0x0, %al
callq 0x2070
jmp 0x17d98
movsd 0x15727(%rip), %xmm0    # 0x2d270
movsd %xmm0, -0x30(%rbp)
movsd 0x15712(%rip), %xmm0    # 0x2d268
movsd %xmm0, -0x28(%rbp)
movq -0x10(%rbp), %rdi
xorl %ecx, %ecx
movl $0x1, %r8d
movl $0x6, %r9d
movl %ecx, %esi
movl %r8d, %edx
movl $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
callq 0x19b20
movl $0x0, -0x34(%rbp)
cmpl $0x6, -0x34(%rbp)
jge 0x17bc0
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %edx
addl $0x1, %edx
movl $0x80, %esi
xorl %eax, %eax
movl %eax, %r9d
movl $0x8c, %r8d
movq %r9, %rcx
callq 0x23a40
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x17b8d
movq -0x10(%rbp), %rdi
movl $0x18, %esi
callq 0x283d0
movq %rax, -0x18(%rbp)
movl $0x1, -0x34(%rbp)
cmpl $0x6, -0x34(%rbp)
jge 0x17c1b
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl $0xa0, %esi
movl $0x1, %r8d
xorl %ecx, %ecx
movl %ecx, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl %eax, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x26fb0
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x17bd9
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x8c, %edx
movl $0x10, %ecx
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
xorl %edx, %edx
xorl %eax, %eax
movl %eax, %ecx
movl %edx, %esi
callq 0x1a7c0
movq -0x18(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rdi
callq 0x28220
movq -0x48(%rbp), %rdi
movq %rax, %rsi
callq 0x18e30
movq -0x10(%rbp), %rdi
xorl %r9d, %r9d
movl $0x1, %ecx
movl %r9d, %esi
movl %r9d, %edx
movl %r9d, %r8d
movl $0x6, (%rsp)
movl $0x0, 0x8(%rsp)
callq 0x19b20
movq -0x10(%rbp), %rdi
leaq -0x30(%rbp), %r9
addq $0x8, %r9
movl $0x20, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
callq 0x1d3d0
movl $0x0, -0x34(%rbp)
cmpl $0x6, -0x34(%rbp)
jge 0x17cf6
movq -0x10(%rbp), %rdi
movl $0x6, %edx
subl -0x34(%rbp), %edx
movl $0x80, %esi
xorl %eax, %eax
movl %eax, %r9d
movl $0x81, %r8d
movq %r9, %rcx
callq 0x23a40
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x17cc1
movq -0x10(%rbp), %rdi
xorl %edx, %edx
xorl %eax, %eax
movl %eax, %ecx
movl %edx, %esi
callq 0x1a7c0
movq -0x10(%rbp), %rdi
callq 0x19070
movq %rax, -0x8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x18030
cmpl $0x1, %eax
je 0x17d46
movq -0x10(%rbp), %rdi
callq 0x18030
movl %eax, %esi
leaq 0x156e4(%rip), %rdi     # 0x2d418
movb $0x0, %al
callq 0x2070
movq -0x10(%rbp), %rdi
callq 0x18d90
jmp 0x17d98
movq -0x10(%rbp), %rdi
callq 0x18d90
movq -0x8(%rbp), %rax
leaq -0x30(%rbp), %rdi
callq *%rax
movsd -0x20(%rbp), %xmm0
movsd 0x15512(%rip), %xmm1    # 0x2d278
ucomisd %xmm1, %xmm0
jne 0x17d70
jp 0x17d70
jmp 0x17d80
leaq 0x18508(%rip), %rdi     # 0x3027f
movb $0x0, %al
callq 0x2070
jmp 0x17d98
movq -0x8(%rbp), %rdi
callq 0x18e10
movl 0x1c5cd(%rip), %eax     # 0x3435c
addl $0x1, %eax
movl %eax, 0x1c5c4(%rip)     # 0x3435c
addq $0x60, %rsp
popq %rbp
retq
nop