// File: /workspace/github_c_makefile_star2_O0/mmcco[P]sljit/test_src/sljitTest.c
// Function: test32
static void test32(void)
{
	/* Floating point set flags. */
	executable_code code;
	struct sljit_compiler* compiler = sljit_create_compiler();

	long buf[16];
	union {
		double value;
		struct {
			int value1;
			int value2;
		} u;
	} dbuf[4];

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

	buf[0] = 5;
	buf[1] = 5;
	buf[2] = 5;
	buf[3] = 5;
	buf[4] = 5;
	buf[5] = 5;
	buf[6] = 5;
	buf[7] = 5;
	buf[8] = 5;
	buf[9] = 5;
	buf[10] = 5;
	buf[11] = 5;
	buf[12] = 5;
	buf[13] = 5;
	buf[14] = 5;
	buf[15] = 5;

	/* Two NaNs */
	dbuf[0].u.value1 = 0x7fffffff;
	dbuf[0].u.value2 = 0x7fffffff;
	dbuf[1].u.value1 = 0x7fffffff;
	dbuf[1].u.value2 = 0x7fffffff;
	dbuf[2].value = -13.0;
	dbuf[3].value = 27.0;

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

	FAILED(!compiler, "cannot create compiler\n");
	SLJIT_ASSERT(sizeof(double) == 8 && sizeof(int) == 4 && sizeof(dbuf[0]) == 8);

	sljit_emit_enter(compiler, 0, 2, 1, 2, 4, 0, 0);

	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_FR0, 0, SLJIT_MEM1(SLJIT_S1), 0);
	sljit_emit_fop1(compiler, SLJIT_DCMP | SLJIT_SET_E, SLJIT_MEM1(SLJIT_S1), 3 * sizeof(double), SLJIT_FR0, 0);
	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_FR1, 0, SLJIT_MEM1(SLJIT_S1), 2 * sizeof(double));
	cond_set(compiler, SLJIT_MEM1(SLJIT_S0), 0, SLJIT_D_UNORDERED);
	cond_set(compiler, SLJIT_MEM1(SLJIT_S0), sizeof(long), SLJIT_D_ORDERED);

	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_FR2, 0, SLJIT_MEM1(SLJIT_S1), 3 * sizeof(double));
	sljit_emit_fop1(compiler, SLJIT_DCMP | SLJIT_SET_E | SLJIT_SET_S, SLJIT_FR1, 0, SLJIT_FR2, 0);
	cond_set(compiler, SLJIT_MEM1(SLJIT_S0), 2 * sizeof(long), SLJIT_D_UNORDERED);
	cond_set(compiler, SLJIT_MEM1(SLJIT_S0), 3 * sizeof(long), SLJIT_D_ORDERED);
	cond_set(compiler, SLJIT_MEM1(SLJIT_S0), 4 * sizeof(long), SLJIT_D_LESS);
	cond_set(compiler, SLJIT_MEM1(SLJIT_S0), 5 * sizeof(long), SLJIT_D_GREATER_EQUAL);
	cond_set(compiler, SLJIT_MEM1(SLJIT_S0), 6 * sizeof(long), SLJIT_D_GREATER);
	cond_set(compiler, SLJIT_MEM1(SLJIT_S0), 7 * sizeof(long), SLJIT_D_LESS_EQUAL);
	cond_set(compiler, SLJIT_MEM1(SLJIT_S0), 8 * sizeof(long), SLJIT_D_EQUAL);
	cond_set(compiler, SLJIT_MEM1(SLJIT_S0), 9 * sizeof(long), SLJIT_D_NOT_EQUAL);

	sljit_emit_fop1(compiler, SLJIT_DCMP | SLJIT_SET_E, SLJIT_FR2, 0, SLJIT_MEM1(SLJIT_S1), 3 * sizeof(double));
	sljit_emit_fop2(compiler, SLJIT_DADD, SLJIT_FR3, 0, SLJIT_FR1, 0, SLJIT_MEM1(SLJIT_S1), sizeof(double));
	cond_set(compiler, SLJIT_MEM1(SLJIT_S0), 10 * sizeof(long), SLJIT_D_UNORDERED);
	cond_set(compiler, SLJIT_MEM1(SLJIT_S0), 11 * sizeof(long), SLJIT_D_EQUAL);

	sljit_emit_fop1(compiler, SLJIT_DCMP | SLJIT_SET_S, SLJIT_MEM1(SLJIT_S1), sizeof(double), SLJIT_FR0, 0);
	cond_set(compiler, SLJIT_MEM1(SLJIT_S0), 12 * sizeof(long), SLJIT_D_ORDERED);

	sljit_emit_fop1(compiler, SLJIT_DCMP | SLJIT_SET_S, SLJIT_FR3, 0, SLJIT_FR2, 0);
	sljit_emit_op1(compiler, SLJIT_MOV_UB, SLJIT_R0, 0, SLJIT_MEM1(SLJIT_S1), 0);
	cond_set(compiler, SLJIT_MEM1(SLJIT_S0), 13 * sizeof(long), SLJIT_D_UNORDERED);

	sljit_emit_return(compiler, SLJIT_UNUSED, 0, 0);

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

	code.func2((long)&buf, (long)&dbuf);

	FAILED(buf[0] != 1, "test32 case 1 failed\n");
	FAILED(buf[1] != 2, "test32 case 2 failed\n");
	FAILED(buf[2] != 2, "test32 case 3 failed\n");
	FAILED(buf[3] != 1, "test32 case 4 failed\n");
	FAILED(buf[4] != 1, "test32 case 5 failed\n");
	FAILED(buf[5] != 2, "test32 case 6 failed\n");
	FAILED(buf[6] != 2, "test32 case 7 failed\n");
	FAILED(buf[7] != 1, "test32 case 8 failed\n");
	FAILED(buf[8] != 2, "test32 case 9 failed\n");
	FAILED(buf[9] != 1, "test32 case 10 failed\n");
	FAILED(buf[10] != 2, "test32 case 11 failed\n");
	FAILED(buf[11] != 1, "test32 case 12 failed\n");
	FAILED(buf[12] != 2, "test32 case 13 failed\n");
	FAILED(buf[13] != 1, "test32 case 14 failed\n");

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
callq 0x18ba0
movq %rax, -0x10(%rbp)
cmpl $0x0, 0x252f9(%rip)     # 0x34354
je 0xf06b
leaq 0x1ff1a(%rip), %rdi     # 0x2ef7e
movb $0x0, %al
callq 0x2070
movq $0x5, -0x90(%rbp)
movq $0x5, -0x88(%rbp)
movq $0x5, -0x80(%rbp)
movq $0x5, -0x78(%rbp)
movq $0x5, -0x70(%rbp)
movq $0x5, -0x68(%rbp)
movq $0x5, -0x60(%rbp)
movq $0x5, -0x58(%rbp)
movq $0x5, -0x50(%rbp)
movq $0x5, -0x48(%rbp)
movq $0x5, -0x40(%rbp)
movq $0x5, -0x38(%rbp)
movq $0x5, -0x30(%rbp)
movq $0x5, -0x28(%rbp)
movq $0x5, -0x20(%rbp)
movq $0x5, -0x18(%rbp)
movl $0x7fffffff, -0xb0(%rbp) # imm = 0x7FFFFFFF
movl $0x7fffffff, -0xac(%rbp) # imm = 0x7FFFFFFF
movl $0x7fffffff, -0xa8(%rbp) # imm = 0x7FFFFFFF
movl $0x7fffffff, -0xa4(%rbp) # imm = 0x7FFFFFFF
movsd 0x1e03f(%rip), %xmm0    # 0x2d160
movsd %xmm0, -0xa0(%rbp)
movsd 0x1e027(%rip), %xmm0    # 0x2d158
movsd %xmm0, -0x98(%rbp)
callq 0x23a30
testb $0x1, %al
jne 0xf17d
cmpl $0x0, 0x2520b(%rip)     # 0x34354
je 0xf159
leaq 0x1fe38(%rip), %rdi     # 0x2ef8a
movb $0x0, %al
callq 0x2070
movl 0x251fd(%rip), %eax     # 0x3435c
addl $0x1, %eax
movl %eax, 0x251f4(%rip)     # 0x3435c
cmpq $0x0, -0x10(%rbp)
je 0xf178
movq -0x10(%rbp), %rdi
callq 0x18d90
jmp 0xf667
cmpq $0x0, -0x10(%rbp)
jne 0xf197
leaq 0x1e248(%rip), %rdi     # 0x2d3d3
movb $0x0, %al
callq 0x2070
jmp 0xf667
jmp 0xf199
jmp 0xf19b
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x2, %r8d
movl $0x1, %ecx
movl $0x4, %r9d
movl %r8d, %edx
movl $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
callq 0x19b20
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x8b, %r8d
movq %r9, %rcx
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x286, %esi            # imm = 0x286
movl $0x8b, %edx
movl $0x18, %ecx
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x2, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x8b, %r8d
movl $0x10, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x8c, %esi
xorl %eax, %eax
movl %eax, %edx
movl $0x14, %ecx
callq 0x180d0
movq -0x10(%rbp), %rdi
movl $0x8c, %esi
movl $0x8, %edx
movl $0x15, %ecx
callq 0x180d0
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x3, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x8b, %r8d
movl $0x18, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0xa86, %esi            # imm = 0xA86
movl $0x2, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x3, %r8d
movq %r9, %rcx
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x8c, %esi
movl $0x10, %edx
movl $0x14, %ecx
callq 0x180d0
movq -0x10(%rbp), %rdi
movl $0x8c, %esi
movl $0x18, %edx
movl $0x15, %ecx
callq 0x180d0
movq -0x10(%rbp), %rdi
movl $0x8c, %esi
movl $0x20, %edx
movl $0x10, %ecx
callq 0x180d0
movq -0x10(%rbp), %rdi
movl $0x8c, %esi
movl $0x28, %edx
movl $0x11, %ecx
callq 0x180d0
movq -0x10(%rbp), %rdi
movl $0x8c, %esi
movl $0x30, %edx
movl $0x12, %ecx
callq 0x180d0
movq -0x10(%rbp), %rdi
movl $0x8c, %esi
movl $0x38, %edx
movl $0x13, %ecx
callq 0x180d0
movq -0x10(%rbp), %rdi
movl $0x8c, %esi
movl $0x40, %edx
movl $0xe, %ecx
callq 0x180d0
movq -0x10(%rbp), %rdi
movl $0x8c, %esi
movl $0x48, %edx
movl $0xf, %ecx
callq 0x180d0
movq -0x10(%rbp), %rdi
movl $0x286, %esi            # imm = 0x286
movl $0x3, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x8b, %r8d
movl $0x18, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0xa0, %esi
movl $0x4, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x2, %r8d
movq %r9, %rcx
movl $0x8b, (%rsp)
movq $0x8, 0x8(%rsp)
callq 0x26fb0
movq -0x10(%rbp), %rdi
movl $0x8c, %esi
movl $0x50, %edx
movl $0x14, %ecx
callq 0x180d0
movq -0x10(%rbp), %rdi
movl $0x8c, %esi
movl $0x58, %edx
movl $0xe, %ecx
callq 0x180d0
movq -0x10(%rbp), %rdi
movl $0x886, %esi            # imm = 0x886
movl $0x8b, %edx
movl $0x8, %ecx
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x8c, %esi
movl $0x60, %edx
movl $0x15, %ecx
callq 0x180d0
movq -0x10(%rbp), %rdi
movl $0x886, %esi            # imm = 0x886
movl $0x4, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x3, %r8d
movq %r9, %rcx
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x21, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x8b, %r8d
movq %r9, %rcx
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x8c, %esi
movl $0x68, %edx
movl $0x14, %ecx
callq 0x180d0
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 0xf4cf
movq -0x10(%rbp), %rdi
callq 0x18030
movl %eax, %esi
leaq 0x1df5e(%rip), %rdi     # 0x2d418
movb $0x0, %al
callq 0x2070
movq -0x10(%rbp), %rdi
callq 0x18d90
jmp 0xf667
movq -0x10(%rbp), %rdi
callq 0x18d90
movq -0x8(%rbp), %rax
leaq -0x90(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq *%rax
cmpq $0x1, -0x90(%rbp)
je 0xf509
leaq 0x1faaf(%rip), %rdi     # 0x2efac
movb $0x0, %al
callq 0x2070
jmp 0xf667
cmpq $0x2, -0x88(%rbp)
je 0xf526
leaq 0x1faa8(%rip), %rdi     # 0x2efc2
movb $0x0, %al
callq 0x2070
jmp 0xf667
cmpq $0x2, -0x80(%rbp)
je 0xf540
leaq 0x1faa4(%rip), %rdi     # 0x2efd8
movb $0x0, %al
callq 0x2070
jmp 0xf667
cmpq $0x1, -0x78(%rbp)
je 0xf55a
leaq 0x1faa0(%rip), %rdi     # 0x2efee
movb $0x0, %al
callq 0x2070
jmp 0xf667
cmpq $0x1, -0x70(%rbp)
je 0xf574
leaq 0x1fa9c(%rip), %rdi     # 0x2f004
movb $0x0, %al
callq 0x2070
jmp 0xf667
cmpq $0x2, -0x68(%rbp)
je 0xf58e
leaq 0x1fa98(%rip), %rdi     # 0x2f01a
movb $0x0, %al
callq 0x2070
jmp 0xf667
cmpq $0x2, -0x60(%rbp)
je 0xf5a8
leaq 0x1fa94(%rip), %rdi     # 0x2f030
movb $0x0, %al
callq 0x2070
jmp 0xf667
cmpq $0x1, -0x58(%rbp)
je 0xf5c2
leaq 0x1fa90(%rip), %rdi     # 0x2f046
movb $0x0, %al
callq 0x2070
jmp 0xf667
cmpq $0x2, -0x50(%rbp)
je 0xf5dc
leaq 0x1fa8c(%rip), %rdi     # 0x2f05c
movb $0x0, %al
callq 0x2070
jmp 0xf667
cmpq $0x1, -0x48(%rbp)
je 0xf5f3
leaq 0x1fa88(%rip), %rdi     # 0x2f072
movb $0x0, %al
callq 0x2070
jmp 0xf667
cmpq $0x2, -0x40(%rbp)
je 0xf60a
leaq 0x1fa88(%rip), %rdi     # 0x2f089
movb $0x0, %al
callq 0x2070
jmp 0xf667
cmpq $0x1, -0x38(%rbp)
je 0xf621
leaq 0x1fa88(%rip), %rdi     # 0x2f0a0
movb $0x0, %al
callq 0x2070
jmp 0xf667
cmpq $0x2, -0x30(%rbp)
je 0xf638
leaq 0x1fa88(%rip), %rdi     # 0x2f0b7
movb $0x0, %al
callq 0x2070
jmp 0xf667
cmpq $0x1, -0x28(%rbp)
je 0xf64f
leaq 0x1fa88(%rip), %rdi     # 0x2f0ce
movb $0x0, %al
callq 0x2070
jmp 0xf667
movq -0x8(%rbp), %rdi
callq 0x18e10
movl 0x24cfe(%rip), %eax     # 0x3435c
addl $0x1, %eax
movl %eax, 0x24cf5(%rip)     # 0x3435c
addq $0xc0, %rsp
popq %rbp
retq