// File: /workspace/github_c_makefile_star2_O0/mmcco[P]sljit/test_src/sljitTest.c
// Function: test3
static void test3(void)
{
	/* Test not. */
	executable_code code;
	struct sljit_compiler* compiler = sljit_create_compiler();
	long buf[5];

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

	FAILED(!compiler, "cannot create compiler\n");
	buf[0] = 1234;
	buf[1] = 0;
	buf[2] = 9876;
	buf[3] = 0;
	buf[4] = 0x12345678;

	sljit_emit_enter(compiler, 0, 1, 3, 1, 0, 0, 0);
	sljit_emit_op1(compiler, SLJIT_NOT, SLJIT_UNUSED, 0, SLJIT_MEM0(), (long)&buf);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), sizeof(long), SLJIT_MEM1(SLJIT_S0), 0);
	sljit_emit_op1(compiler, SLJIT_NOT, SLJIT_MEM0(), (long)&buf[1], SLJIT_MEM0(), (long)&buf[1]);
	sljit_emit_op1(compiler, SLJIT_NOT, SLJIT_RETURN_REG, 0, SLJIT_MEM1(SLJIT_S0), 0);
	sljit_emit_op1(compiler, SLJIT_NOT, SLJIT_MEM1(SLJIT_S0), sizeof(long) * 3, SLJIT_MEM1(SLJIT_S0), sizeof(long) * 2);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R1, 0, SLJIT_IMM, (long)&buf[4] - 0xff0000 - 0x20);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R2, 0, SLJIT_IMM, (long)&buf[4] - 0xff0000);
	sljit_emit_op1(compiler, SLJIT_NOT, SLJIT_MEM1(SLJIT_R1), 0xff0000 + 0x20, SLJIT_MEM1(SLJIT_R2), 0xff0000);
	sljit_emit_return(compiler, SLJIT_MOV, SLJIT_RETURN_REG, 0);

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

	FAILED(code.func1((long)&buf) != ~1234, "test3 case 1 failed\n");
	FAILED(buf[1] != ~1234, "test3 case 2 failed\n");
	FAILED(buf[3] != ~9876, "test3 case 3 failed\n");
	FAILED(buf[4] != ~0x12345678, "test3 case 4 failed\n");

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
callq 0x18ba0
movq %rax, -0x10(%rbp)
cmpl $0x0, 0x3135c(%rip)     # 0x34354
je 0x3008
leaq 0x2a4de(%rip), %rdi     # 0x2d4df
movb $0x0, %al
callq 0x2070
cmpq $0x0, -0x10(%rbp)
jne 0x3022
leaq 0x2a3bd(%rip), %rdi     # 0x2d3d3
movb $0x0, %al
callq 0x2070
jmp 0x3289
movq $0x4d2, -0x40(%rbp)     # imm = 0x4D2
movq $0x0, -0x38(%rbp)
movq $0x2694, -0x30(%rbp)    # imm = 0x2694
movq $0x0, -0x28(%rbp)
movq $0x12345678, -0x20(%rbp) # imm = 0x12345678
movq -0x10(%rbp), %rdi
xorl %r9d, %r9d
movl $0x1, %r8d
movl $0x3, %ecx
movl %r9d, %esi
movl %r8d, %edx
movl $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
callq 0x19b20
movq -0x10(%rbp), %rdi
leaq -0x40(%rbp), %r9
movl $0x30, %esi
xorl %edx, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x80, %r8d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8c, %r8d
movl $0x8, %ecx
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
callq 0x1d3d0
movq -0x10(%rbp), %rdi
leaq -0x40(%rbp), %rcx
addq $0x8, %rcx
leaq -0x40(%rbp), %r9
addq $0x8, %r9
movl $0x30, %esi
movl $0x80, %r8d
movl %r8d, %edx
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x30, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x8c, %r8d
movq %r9, %rcx
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x30, %esi
movl $0x8c, %r8d
movl $0x18, %ecx
movl $0x10, %r9d
movl %r8d, %edx
callq 0x1d3d0
movq -0x10(%rbp), %rdi
leaq -0x40(%rbp), %r9
addq $0x20, %r9
subq $0xff0000, %r9          # imm = 0xFF0000
subq $0x20, %r9
movl $0x20, %esi
movl $0x2, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
leaq -0x40(%rbp), %r9
addq $0x20, %r9
subq $0xff0000, %r9          # imm = 0xFF0000
movl $0x20, %esi
movl $0x3, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x30, %esi
movl $0x82, %edx
movl $0xff0020, %ecx         # imm = 0xFF0020
movl $0x83, %r8d
movl $0xff0000, %r9d         # imm = 0xFF0000
callq 0x1d3d0
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 0x31f8
movq -0x10(%rbp), %rdi
callq 0x18030
movl %eax, %esi
leaq 0x2a235(%rip), %rdi     # 0x2d418
movb $0x0, %al
callq 0x2070
movq -0x10(%rbp), %rdi
callq 0x18d90
jmp 0x3289
movq -0x10(%rbp), %rdi
callq 0x18d90
movq -0x8(%rbp), %rax
leaq -0x40(%rbp), %rdi
callq *%rax
cmpq $-0x4d3, %rax           # imm = 0xFB2D
je 0x3223
leaq 0x2a2d0(%rip), %rdi     # 0x2d4ea
movb $0x0, %al
callq 0x2070
jmp 0x3289
cmpq $-0x4d3, -0x38(%rbp)    # imm = 0xFB2D
je 0x323d
leaq 0x2a2cb(%rip), %rdi     # 0x2d4ff
movb $0x0, %al
callq 0x2070
jmp 0x3289
cmpq $-0x2695, -0x28(%rbp)   # imm = 0xD96B
je 0x3257
leaq 0x2a2c6(%rip), %rdi     # 0x2d514
movb $0x0, %al
callq 0x2070
jmp 0x3289
cmpq $-0x12345679, -0x20(%rbp) # imm = 0xEDCBA987
je 0x3271
leaq 0x2a2c1(%rip), %rdi     # 0x2d529
movb $0x0, %al
callq 0x2070
jmp 0x3289
movq -0x8(%rbp), %rdi
callq 0x18e10
movl 0x310dc(%rip), %eax     # 0x3435c
addl $0x1, %eax
movl %eax, 0x310d3(%rip)     # 0x3435c
addq $0x50, %rsp
popq %rbp
retq
nop