// File: /workspace/github_c_makefile_star2_O0/mmcco[P]sljit/test_src/sljitTest.c
// Function: test33
static void test33(void)
{
	/* Test keep flags. */
	executable_code code;
	struct sljit_compiler* compiler = sljit_create_compiler();
	long buf[7];
#if (defined SLJIT_64BIT_ARCHITECTURE && SLJIT_64BIT_ARCHITECTURE)
	long big_word = SLJIT_W(0x8000000000000003);
#else
	long big_word = 0x80000003;
#endif

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

	buf[0] = 3;
	buf[1] = 3;
	buf[2] = 3;
	buf[3] = 3;
	buf[4] = 3;
	buf[5] = 3;
	buf[6] = 3;

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

	sljit_emit_enter(compiler, 0, 1, 3, 3, 0, 0, 0);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R0, 0, SLJIT_IMM, big_word);
	sljit_emit_op2(compiler, SLJIT_ADD | SLJIT_SET_E | SLJIT_SET_C, SLJIT_R1, 0, SLJIT_R0, 0, SLJIT_IMM, big_word);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), 0, SLJIT_R1, 0);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R0, 0, SLJIT_IMM, 8);
	sljit_emit_op2(compiler, SLJIT_SUB | SLJIT_KEEP_FLAGS, SLJIT_R0, 0, SLJIT_R0, 0, SLJIT_IMM, 8);
	sljit_emit_op_flags(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), sizeof(long), SLJIT_UNUSED, 0, SLJIT_NOT_ZERO);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R0, 0, SLJIT_IMM, 0);
	sljit_emit_op2(compiler, SLJIT_ADDC | SLJIT_KEEP_FLAGS, SLJIT_R1, 0, SLJIT_R0, 0, SLJIT_IMM, 0);
	sljit_emit_op2(compiler, SLJIT_ADDC, SLJIT_MEM1(SLJIT_S0), 2 * sizeof(long), SLJIT_R0, 0, SLJIT_IMM, 7);

	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R0, 0, SLJIT_IMM, 8);
	sljit_emit_op2(compiler, SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, SLJIT_R0, 0, SLJIT_IMM, 8);
	sljit_emit_op2(compiler, SLJIT_SHL | SLJIT_KEEP_FLAGS, SLJIT_MEM1(SLJIT_S0), 3 * sizeof(long), SLJIT_MEM1(SLJIT_S0), 2 * sizeof(long), SLJIT_MEM1(SLJIT_S0), sizeof(long));
	sljit_emit_op_flags(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), 4 * sizeof(long), SLJIT_UNUSED, 0, SLJIT_EQUAL);

	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), 5 * sizeof(long), SLJIT_IMM, 0x124);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R0, 0, SLJIT_IMM, 2);
	sljit_emit_op2(compiler, SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, SLJIT_R0, 0, SLJIT_IMM, 1);
	sljit_emit_op2(compiler, SLJIT_SUB | SLJIT_KEEP_FLAGS, SLJIT_UNUSED, 0, SLJIT_R0, 0, SLJIT_R0, 0);
	sljit_emit_op_flags(compiler, SLJIT_OR, SLJIT_MEM1(SLJIT_S0), 5 * sizeof(long), SLJIT_MEM1(SLJIT_S0), 5 * sizeof(long), SLJIT_NOT_EQUAL);

	/* PowerPC specific test. */
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R0, 0, SLJIT_IMM, -1);
	sljit_emit_op2(compiler, SLJIT_ADD | SLJIT_SET_C, SLJIT_R0, 0, SLJIT_R0, 0, SLJIT_IMM, 2);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R0, 0, SLJIT_IMM, 0x80);
	sljit_emit_op2(compiler, SLJIT_ASHR | SLJIT_KEEP_FLAGS, SLJIT_R0, 0, SLJIT_R0, 0, SLJIT_IMM, 1);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R1, 0, SLJIT_IMM, 0);
	sljit_emit_op2(compiler, SLJIT_ADDC, SLJIT_MEM1(SLJIT_S0), 6 * sizeof(long), SLJIT_R1, 0, SLJIT_IMM, 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[0] != 6, "test33 case 1 failed\n");
	FAILED(buf[1] != 1, "test33 case 2 failed\n");
	FAILED(buf[2] != 8, "test33 case 3 failed\n");
	FAILED(buf[3] != 16, "test33 case 4 failed\n");
	FAILED(buf[4] != 1, "test33 case 5 failed\n");
	FAILED(buf[5] != 0x125, "test33 case 6 failed\n");
	FAILED(buf[6] != 1, "test33 case 7 failed\n");

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
callq 0x18ba0
movq %rax, -0x10(%rbp)
movabsq $-0x7ffffffffffffffd, %rax # imm = 0x8000000000000003
movq %rax, -0x58(%rbp)
cmpl $0x0, 0x24cbe(%rip)     # 0x34354
je 0xf6a6
leaq 0x1fa46(%rip), %rdi     # 0x2f0e5
movb $0x0, %al
callq 0x2070
movq $0x3, -0x50(%rbp)
movq $0x3, -0x48(%rbp)
movq $0x3, -0x40(%rbp)
movq $0x3, -0x38(%rbp)
movq $0x3, -0x30(%rbp)
movq $0x3, -0x28(%rbp)
movq $0x3, -0x20(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0xf6f8
leaq 0x1dce7(%rip), %rdi     # 0x2d3d3
movb $0x0, %al
callq 0x2070
jmp 0xfc2a
movq -0x10(%rbp), %rdi
xorl %r9d, %r9d
movl $0x1, %edx
movl $0x3, %r8d
movl %r9d, %esi
movl %r8d, %ecx
movl $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
callq 0x19b20
movq -0x10(%rbp), %rdi
movq -0x58(%rbp), %r9
movl $0x20, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movq -0x58(%rbp), %rax
movl $0x2260, %esi           # imm = 0x2260
movl $0x2, %edx
xorl %ecx, %ecx
movl %ecx, %r9d
movl $0x1, %r8d
movq %r9, %rcx
movl $0x40, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x1f8d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8c, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x2, %r8d
movq %r9, %rcx
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movl $0x8, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x4062, %esi           # imm = 0x4062
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl $0x40, (%rsp)
movq $0x8, 0x8(%rsp)
callq 0x1f8d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8c, %edx
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl $0x1, (%rsp)
callq 0x29010
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x40, %r8d
movq %r9, %rcx
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x4061, %esi           # imm = 0x4061
movl $0x2, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x1, %r8d
movq %r9, %rcx
movl $0x40, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x1f8d0
movq -0x10(%rbp), %rdi
movl $0x61, %esi
movl $0x8c, %edx
movl $0x10, %ecx
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl $0x40, (%rsp)
movq $0x7, 0x8(%rsp)
callq 0x1f8d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movl $0x8, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x262, %esi            # imm = 0x262
xorl %edx, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x1, %r8d
movq %r9, %rcx
movl $0x40, (%rsp)
movq $0x8, 0x8(%rsp)
callq 0x1f8d0
movq -0x10(%rbp), %rdi
movl $0x4068, %esi           # imm = 0x4068
movl $0x8c, %r8d
movl $0x18, %ecx
movl $0x10, %r9d
movl %r8d, %edx
movl $0x8c, (%rsp)
movq $0x8, 0x8(%rsp)
callq 0x1f8d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8c, %edx
movl $0x20, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl $0x0, (%rsp)
callq 0x29010
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8c, %edx
movl $0x28, %ecx
movl $0x40, %r8d
movl $0x124, %r9d            # imm = 0x124
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movl $0x2, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x262, %esi            # imm = 0x262
xorl %edx, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x1, %r8d
movq %r9, %rcx
movl $0x40, (%rsp)
movq $0x1, 0x8(%rsp)
callq 0x1f8d0
movq -0x10(%rbp), %rdi
movl $0x4062, %esi           # imm = 0x4062
xorl %edx, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x1, %r8d
movq %r9, %rcx
movl $0x1, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x1f8d0
movq -0x10(%rbp), %rdi
movl $0x66, %esi
movl $0x8c, %r8d
movl $0x28, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl $0x1, (%rsp)
callq 0x29010
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movq $-0x1, %r9
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x2060, %esi           # imm = 0x2060
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl $0x40, (%rsp)
movq $0x2, 0x8(%rsp)
callq 0x1f8d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movl $0x80, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x406a, %esi           # imm = 0x406A
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl $0x40, (%rsp)
movq $0x1, 0x8(%rsp)
callq 0x1f8d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x2, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x40, %r8d
movq %r9, %rcx
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x61, %esi
movl $0x8c, %edx
movl $0x30, %ecx
movl $0x2, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl $0x40, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x1f8d0
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 0xfb55
movq -0x10(%rbp), %rdi
callq 0x18030
movl %eax, %esi
leaq 0x1d8d8(%rip), %rdi     # 0x2d418
movb $0x0, %al
callq 0x2070
movq -0x10(%rbp), %rdi
callq 0x18d90
jmp 0xfc2a
movq -0x10(%rbp), %rdi
callq 0x18d90
movq -0x8(%rbp), %rax
leaq -0x50(%rbp), %rdi
callq *%rax
cmpq $0x6, -0x50(%rbp)
je 0xfb82
leaq 0x1f57b(%rip), %rdi     # 0x2f0f1
movb $0x0, %al
callq 0x2070
jmp 0xfc2a
cmpq $0x1, -0x48(%rbp)
je 0xfb9c
leaq 0x1f577(%rip), %rdi     # 0x2f107
movb $0x0, %al
callq 0x2070
jmp 0xfc2a
cmpq $0x8, -0x40(%rbp)
je 0xfbb3
leaq 0x1f573(%rip), %rdi     # 0x2f11d
movb $0x0, %al
callq 0x2070
jmp 0xfc2a
cmpq $0x10, -0x38(%rbp)
je 0xfbca
leaq 0x1f572(%rip), %rdi     # 0x2f133
movb $0x0, %al
callq 0x2070
jmp 0xfc2a
cmpq $0x1, -0x30(%rbp)
je 0xfbe1
leaq 0x1f571(%rip), %rdi     # 0x2f149
movb $0x0, %al
callq 0x2070
jmp 0xfc2a
cmpq $0x125, -0x28(%rbp)     # imm = 0x125
je 0xfbfb
leaq 0x1f56d(%rip), %rdi     # 0x2f15f
movb $0x0, %al
callq 0x2070
jmp 0xfc2a
cmpq $0x1, -0x20(%rbp)
je 0xfc12
leaq 0x1f56c(%rip), %rdi     # 0x2f175
movb $0x0, %al
callq 0x2070
jmp 0xfc2a
movq -0x8(%rbp), %rdi
callq 0x18e10
movl 0x2473b(%rip), %eax     # 0x3435c
addl $0x1, %eax
movl %eax, 0x24732(%rip)     # 0x3435c
addq $0x70, %rsp
popq %rbp
retq