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

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

	buf[0] = 39;

	sljit_emit_enter(compiler, 0, 0, SLJIT_NUM_REGS, 0, 0, 0, 0);

	for (i = 0; i < SLJIT_NUM_REGS; i++)
		sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R(i), 0, SLJIT_IMM, 32);

	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R0, 0, SLJIT_IMM, (long)buf);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R1, 0, SLJIT_IMM, 0);

	for (i = 2; i < SLJIT_NUM_REGS; i++) {
		if (sljit_get_reg_index(SLJIT_R(i)) >= 0) {
			sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R(i), 0, SLJIT_R0, 0);
			sljit_emit_op2(compiler, SLJIT_ADD, SLJIT_R1, 0, SLJIT_R1, 0, SLJIT_MEM1(SLJIT_R(i)), 0);
		} else
			sljit_emit_op2(compiler, SLJIT_ADD, SLJIT_R1, 0, SLJIT_R1, 0, SLJIT_IMM, buf[0]);
	}

	sljit_emit_op2(compiler, SLJIT_SUB, SLJIT_R0, 0, SLJIT_R0, 0, SLJIT_IMM, 32);
	for (i = 2; i < SLJIT_NUM_REGS; i++) {
		if (sljit_get_reg_index(SLJIT_R(i)) >= 0) {
			sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R(i), 0, SLJIT_R0, 0);
			sljit_emit_op2(compiler, SLJIT_ADD, SLJIT_R1, 0, SLJIT_R1, 0, SLJIT_MEM1(SLJIT_R(i)), 32);
		} else
			sljit_emit_op2(compiler, SLJIT_ADD, SLJIT_R1, 0, SLJIT_R1, 0, SLJIT_IMM, buf[0]);
	}

	for (i = 2; i < SLJIT_NUM_REGS; i++) {
		if (sljit_get_reg_index(SLJIT_R(i)) >= 0) {
			sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R(i), 0, SLJIT_IMM, 32);
			sljit_emit_op2(compiler, SLJIT_ADD, SLJIT_R1, 0, SLJIT_R1, 0, SLJIT_MEM2(SLJIT_R(i), SLJIT_R0), 0);
			sljit_emit_op2(compiler, SLJIT_ADD, SLJIT_R1, 0, SLJIT_R1, 0, SLJIT_MEM2(SLJIT_R0, SLJIT_R(i)), 0);
			sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R(i), 0, SLJIT_IMM, 8);
			sljit_emit_op2(compiler, SLJIT_ADD, SLJIT_R1, 0, SLJIT_R1, 0, SLJIT_MEM2(SLJIT_R0, SLJIT_R(i)), 2);
		} else
			sljit_emit_op2(compiler, SLJIT_ADD, SLJIT_R1, 0, SLJIT_R1, 0, SLJIT_IMM, 3 * buf[0]);
	}

	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_R0), 32 + sizeof(long), SLJIT_R1, 0);

	sljit_emit_return(compiler, SLJIT_UNUSED, 0, 0);

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

	code.func0();

	FAILED(buf[1] != (39 * 5 * (SLJIT_NUM_REGS - 2)), "test51 case 1 failed\n");

	sljit_free_code(code.code);

	/* Next test. */

	compiler = sljit_create_compiler();

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

	sljit_emit_enter(compiler, 0, 0, SLJIT_NUM_SCRATCH_REGS, SLJIT_NUM_SAVED_REGS, 0, 0, 0);

	for (i = 0; i < SLJIT_NUM_REGS; i++)
		sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R(i), 0, SLJIT_IMM, 17);

	jump = sljit_emit_jump(compiler, SLJIT_CALL0);
	/* SLJIT_R0 contains the first value. */
	for (i = 1; i < SLJIT_NUM_REGS; i++)
		sljit_emit_op2(compiler, SLJIT_ADD, SLJIT_R0, 0, SLJIT_R0, 0, SLJIT_R(i), 0);

	sljit_emit_return(compiler, SLJIT_MOV, SLJIT_R0, 0);

	sljit_set_label(jump, sljit_emit_label(compiler));
	sljit_emit_enter(compiler, 0, 0, SLJIT_NUM_REGS, 0, 0, 0, 0);
	for (i = 0; i < SLJIT_NUM_REGS; i++)
		sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R(i), 0, SLJIT_IMM, 35);
	sljit_emit_return(compiler, SLJIT_UNUSED, 0, 0);

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

	FAILED(code.func0() != (SLJIT_NUM_SCRATCH_REGS * 35 + SLJIT_NUM_SAVED_REGS * 17), "test51 case 2 failed\n");

	sljit_free_code(code.code);

	/* Next test. */

	compiler = sljit_create_compiler();

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

	sljit_emit_enter(compiler, 0, 0, SLJIT_NUM_SCRATCH_REGS, SLJIT_NUM_SAVED_REGS, 0, 0, 0);

	for (i = 0; i < SLJIT_NUM_REGS; i++)
		sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R(i), 0, SLJIT_IMM, 68);

	jump = sljit_emit_jump(compiler, SLJIT_CALL0);
	/* SLJIT_R0 contains the first value. */
	for (i = 1; i < SLJIT_NUM_REGS; i++)
		sljit_emit_op2(compiler, SLJIT_ADD, SLJIT_R0, 0, SLJIT_R0, 0, SLJIT_R(i), 0);

	sljit_emit_return(compiler, SLJIT_MOV, SLJIT_R0, 0);

	sljit_set_label(jump, sljit_emit_label(compiler));
	sljit_emit_enter(compiler, 0, 0, 0, SLJIT_NUM_REGS, 0, 0, 0);
	for (i = 0; i < SLJIT_NUM_REGS; i++)
		sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_S(i), 0, SLJIT_IMM, 43);
	sljit_emit_return(compiler, SLJIT_UNUSED, 0, 0);

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

	FAILED(code.func0() != (SLJIT_NUM_SCRATCH_REGS * 43 + SLJIT_NUM_SAVED_REGS * 68), "test51 case 3 failed\n");

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
callq 0x18ba0
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x16ffb
leaq 0x163e4(%rip), %rdi     # 0x2d3d3
movb $0x0, %al
callq 0x2070
jmp 0x1785d
movq $0x27, -0x30(%rbp)
movq -0x10(%rbp), %rdi
xorl %r9d, %r9d
movl $0xc, %ecx
movl %r9d, %esi
movl %r9d, %edx
movl %r9d, %r8d
movl $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
callq 0x19b20
movl $0x0, -0x34(%rbp)
cmpl $0xc, -0x34(%rbp)
jge 0x17068
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %edx
addl $0x1, %edx
movl $0x20, %esi
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movl $0x20, %r9d
callq 0x1d3d0
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x17033
movq -0x10(%rbp), %rdi
leaq -0x30(%rbp), %r9
movl $0x20, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x2, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x40, %r8d
movq %r9, %rcx
callq 0x1d3d0
movl $0x2, -0x34(%rbp)
cmpl $0xc, -0x34(%rbp)
jge 0x17164
movl -0x34(%rbp), %edi
addl $0x1, %edi
callq 0x237d0
cmpl $0x0, %eax
jl 0x17125
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %edx
addl $0x1, %edx
movl $0x20, %esi
xorl %eax, %eax
movl %eax, %r9d
movl $0x1, %r8d
movq %r9, %rcx
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %eax
addl $0x1, %eax
orl $0x80, %eax
movl $0x60, %esi
movl $0x2, %r8d
xorl %ecx, %ecx
movl %ecx, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl %eax, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x1f8d0
jmp 0x17154
movq -0x10(%rbp), %rdi
movq -0x30(%rbp), %rax
movl $0x60, %esi
movl $0x2, %r8d
xorl %ecx, %ecx
movl %ecx, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl $0x40, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x1f8d0
jmp 0x17156
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x170b1
movq -0x10(%rbp), %rdi
movl $0x62, %esi
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl $0x40, (%rsp)
movq $0x20, 0x8(%rsp)
callq 0x1f8d0
movl $0x2, -0x34(%rbp)
cmpl $0xc, -0x34(%rbp)
jge 0x1724d
movl -0x34(%rbp), %edi
addl $0x1, %edi
callq 0x237d0
cmpl $0x0, %eax
jl 0x1720e
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %edx
addl $0x1, %edx
movl $0x20, %esi
xorl %eax, %eax
movl %eax, %r9d
movl $0x1, %r8d
movq %r9, %rcx
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %eax
addl $0x1, %eax
orl $0x80, %eax
movl $0x60, %esi
movl $0x2, %r8d
xorl %ecx, %ecx
movl %ecx, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl %eax, (%rsp)
movq $0x20, 0x8(%rsp)
callq 0x1f8d0
jmp 0x1723d
movq -0x10(%rbp), %rdi
movq -0x30(%rbp), %rax
movl $0x60, %esi
movl $0x2, %r8d
xorl %ecx, %ecx
movl %ecx, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl $0x40, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x1f8d0
jmp 0x1723f
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1719a
movl $0x2, -0x34(%rbp)
cmpl $0xc, -0x34(%rbp)
jge 0x173a9
movl -0x34(%rbp), %edi
addl $0x1, %edi
callq 0x237d0
cmpl $0x0, %eax
jl 0x17369
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %edx
addl $0x1, %edx
movl $0x20, %esi
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movl $0x20, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %eax
addl $0x1, %eax
orl $0x80, %eax
orl $0x100, %eax            # imm = 0x100
movl $0x60, %esi
movl $0x2, %r8d
xorl %ecx, %ecx
movl %ecx, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl %eax, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x1f8d0
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %eax
addl $0x1, %eax
shll $0x8, %eax
orl $0x81, %eax
movl $0x60, %esi
movl $0x2, %r8d
xorl %ecx, %ecx
movl %ecx, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl %eax, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x1f8d0
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %edx
addl $0x1, %edx
movl $0x20, %esi
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movl $0x8, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %eax
addl $0x1, %eax
shll $0x8, %eax
orl $0x81, %eax
movl $0x60, %esi
movl $0x2, %r8d
xorl %ecx, %ecx
movl %ecx, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl %eax, (%rsp)
movq $0x2, 0x8(%rsp)
callq 0x1f8d0
jmp 0x17399
movq -0x10(%rbp), %rdi
imulq $0x3, -0x30(%rbp), %rax
movl $0x60, %esi
movl $0x2, %r8d
xorl %ecx, %ecx
movl %ecx, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl $0x40, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x1f8d0
jmp 0x1739b
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x17254
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x81, %edx
movl $0x28, %ecx
movl $0x2, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x1d3d0
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 0x1741f
movq -0x10(%rbp), %rdi
callq 0x18030
movl %eax, %esi
leaq 0x1600e(%rip), %rdi     # 0x2d418
movb $0x0, %al
callq 0x2070
movq -0x10(%rbp), %rdi
callq 0x18d90
jmp 0x1785d
movq -0x10(%rbp), %rdi
callq 0x18d90
callq *-0x8(%rbp)
cmpq $0x79e, -0x28(%rbp)     # imm = 0x79E
je 0x17448
leaq 0x18dc9(%rip), %rdi     # 0x30205
movb $0x0, %al
callq 0x2070
jmp 0x1785d
movq -0x8(%rbp), %rdi
callq 0x18e10
callq 0x18ba0
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x17474
leaq 0x15f6b(%rip), %rdi     # 0x2d3d3
movb $0x0, %al
callq 0x2070
jmp 0x1785d
movq -0x10(%rbp), %rdi
xorl %r9d, %r9d
movl $0x6, %r8d
movl %r9d, %esi
movl %r9d, %edx
movl %r8d, %ecx
movl $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
callq 0x19b20
movl $0x0, -0x34(%rbp)
cmpl $0xc, -0x34(%rbp)
jge 0x174da
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %edx
addl $0x1, %edx
movl $0x20, %esi
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movl $0x11, %r9d
callq 0x1d3d0
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x174a5
movq -0x10(%rbp), %rdi
movl $0x18, %esi
callq 0x283d0
movq %rax, -0x18(%rbp)
movl $0x1, -0x34(%rbp)
cmpl $0xc, -0x34(%rbp)
jge 0x17535
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl $0x60, %esi
movl $0x1, %r8d
xorl %ecx, %ecx
movl %ecx, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl %eax, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x1f8d0
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x174f3
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
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 %r9d, %r9d
movl $0xc, %ecx
movl %r9d, %esi
movl %r9d, %edx
movl %r9d, %r8d
movl $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
callq 0x19b20
movl $0x0, -0x34(%rbp)
cmpl $0xc, -0x34(%rbp)
jge 0x175ce
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %edx
addl $0x1, %edx
movl $0x20, %esi
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movl $0x23, %r9d
callq 0x1d3d0
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x17599
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 0x17621
movq -0x10(%rbp), %rdi
callq 0x18030
movl %eax, %esi
leaq 0x15e0c(%rip), %rdi     # 0x2d418
movb $0x0, %al
callq 0x2070
movq -0x10(%rbp), %rdi
callq 0x18d90
jmp 0x1785d
movq -0x10(%rbp), %rdi
callq 0x18d90
callq *-0x8(%rbp)
cmpq $0x138, %rax            # imm = 0x138
je 0x17648
leaq 0x18bdf(%rip), %rdi     # 0x3021b
movb $0x0, %al
callq 0x2070
jmp 0x1785d
movq -0x8(%rbp), %rdi
callq 0x18e10
callq 0x18ba0
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x17674
leaq 0x15d6b(%rip), %rdi     # 0x2d3d3
movb $0x0, %al
callq 0x2070
jmp 0x1785d
movq -0x10(%rbp), %rdi
xorl %r9d, %r9d
movl $0x6, %r8d
movl %r9d, %esi
movl %r9d, %edx
movl %r8d, %ecx
movl $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
callq 0x19b20
movl $0x0, -0x34(%rbp)
cmpl $0xc, -0x34(%rbp)
jge 0x176da
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %edx
addl $0x1, %edx
movl $0x20, %esi
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movl $0x44, %r9d
callq 0x1d3d0
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x176a5
movq -0x10(%rbp), %rdi
movl $0x18, %esi
callq 0x283d0
movq %rax, -0x18(%rbp)
movl $0x1, -0x34(%rbp)
cmpl $0xc, -0x34(%rbp)
jge 0x17735
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl $0x60, %esi
movl $0x1, %r8d
xorl %ecx, %ecx
movl %ecx, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl %eax, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x1f8d0
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x176f3
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
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 $0xc, %r8d
movl %r9d, %esi
movl %r9d, %edx
movl %r9d, %ecx
movl $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
callq 0x19b20
movl $0x0, -0x34(%rbp)
cmpl $0xc, -0x34(%rbp)
jge 0x177d1
movq -0x10(%rbp), %rdi
movl $0xc, %edx
subl -0x34(%rbp), %edx
movl $0x20, %esi
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movl $0x2b, %r9d
callq 0x1d3d0
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1779a
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 0x17821
movq -0x10(%rbp), %rdi
callq 0x18030
movl %eax, %esi
leaq 0x15c09(%rip), %rdi     # 0x2d418
movb $0x0, %al
callq 0x2070
movq -0x10(%rbp), %rdi
callq 0x18d90
jmp 0x1785d
movq -0x10(%rbp), %rdi
callq 0x18d90
callq *-0x8(%rbp)
cmpq $0x29a, %rax            # imm = 0x29A
je 0x17845
leaq 0x189f5(%rip), %rdi     # 0x30231
movb $0x0, %al
callq 0x2070
jmp 0x1785d
movq -0x8(%rbp), %rdi
callq 0x18e10
movl 0x1cb08(%rip), %eax     # 0x3435c
addl $0x1, %eax
movl %eax, 0x1caff(%rip)     # 0x3435c
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)