// File: /workspace/github_c_makefile_star2_O0/mmcco[P]sljit/test_src/sljitTest.c
// Function: test34
static void test34(void)
{
	/* Test fast calls. */
	executable_code codeA;
	executable_code codeB;
	executable_code codeC;
	executable_code codeD;
	executable_code codeE;
	executable_code codeF;
	struct sljit_compiler* compiler;
	struct sljit_jump *jump;
	struct sljit_label* label;
	unsigned long addr;
	uintptr_t buf[2];

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

	buf[0] = 0;
	buf[1] = 0;

	/* A */
	compiler = sljit_create_compiler();
	FAILED(!compiler, "cannot create compiler\n");
	sljit_set_context(compiler, 0, 1, 5, 5, 0, 0, 2 * sizeof(uintptr_t));

	sljit_emit_fast_enter(compiler, SLJIT_R1, 0);
	sljit_emit_op2(compiler, SLJIT_ADD, SLJIT_R0, 0, SLJIT_R0, 0, SLJIT_IMM, 4);
	sljit_emit_fast_return(compiler, SLJIT_R1, 0);

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

	/* B */
	compiler = sljit_create_compiler();
	FAILED(!compiler, "cannot create compiler\n");
	sljit_set_context(compiler, 0, 1, 5, 5, 0, 0, 2 * sizeof(uintptr_t));

	sljit_emit_fast_enter(compiler, SLJIT_R4, 0);
	sljit_emit_op2(compiler, SLJIT_ADD, SLJIT_R0, 0, SLJIT_R0, 0, SLJIT_IMM, 6);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R1, 0, SLJIT_IMM, SLJIT_FUNC_OFFSET(codeA.code));
	sljit_emit_ijump(compiler, SLJIT_FAST_CALL, SLJIT_R1, 0);
	sljit_emit_fast_return(compiler, SLJIT_R4, 0);

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

	/* C */
	compiler = sljit_create_compiler();
	FAILED(!compiler, "cannot create compiler\n");
	sljit_set_context(compiler, 0, 1, 5, 5, 0, 0, 2 * sizeof(uintptr_t));

	sljit_emit_fast_enter(compiler, SLJIT_MEM1(SLJIT_SP), sizeof(uintptr_t));
	sljit_emit_op2(compiler, SLJIT_ADD, SLJIT_R0, 0, SLJIT_R0, 0, SLJIT_IMM, 8);
	jump = sljit_emit_jump(compiler, SLJIT_REWRITABLE_JUMP | SLJIT_FAST_CALL);
	sljit_set_target(jump, SLJIT_FUNC_OFFSET(codeB.code));
	sljit_emit_fast_return(compiler, SLJIT_MEM1(SLJIT_SP), sizeof(uintptr_t));

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

	/* D */
	compiler = sljit_create_compiler();
	FAILED(!compiler, "cannot create compiler\n");
	sljit_set_context(compiler, 0, 1, 5, 5, 0, 0, 2 * sizeof(uintptr_t));

	sljit_emit_fast_enter(compiler, SLJIT_MEM1(SLJIT_SP), 0);
	sljit_emit_op2(compiler, SLJIT_ADD, SLJIT_R0, 0, SLJIT_R0, 0, SLJIT_IMM, 10);
	sljit_emit_ijump(compiler, SLJIT_FAST_CALL, SLJIT_IMM, SLJIT_FUNC_OFFSET(codeC.code));
	sljit_emit_fast_return(compiler, SLJIT_MEM1(SLJIT_SP), 0);

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

	/* E */
	compiler = sljit_create_compiler();
	FAILED(!compiler, "cannot create compiler\n");
	sljit_set_context(compiler, 0, 1, 5, 5, 0, 0, 2 * sizeof(uintptr_t));

	sljit_emit_fast_enter(compiler, SLJIT_MEM1(SLJIT_S0), 0);
	sljit_emit_op2(compiler, SLJIT_ADD, SLJIT_R0, 0, SLJIT_R0, 0, SLJIT_IMM, 12);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), sizeof(uintptr_t), SLJIT_IMM, SLJIT_FUNC_OFFSET(codeD.code));
	sljit_emit_ijump(compiler, SLJIT_FAST_CALL, SLJIT_MEM1(SLJIT_S0), sizeof(uintptr_t));
	sljit_emit_fast_return(compiler, SLJIT_MEM1(SLJIT_S0), 0);

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

	/* F */
	compiler = sljit_create_compiler();
	FAILED(!compiler, "cannot create compiler\n");

	sljit_emit_enter(compiler, 0, 1, 5, 5, 0, 0, 2 * sizeof(uintptr_t));
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R0, 0, SLJIT_IMM, 0);
	sljit_emit_ijump(compiler, SLJIT_FAST_CALL, SLJIT_IMM, SLJIT_FUNC_OFFSET(codeE.code));
	label = sljit_emit_label(compiler);
	sljit_emit_return(compiler, SLJIT_MOV, SLJIT_R0, 0);

	codeF.code = sljit_generate_code(compiler);
	CHECK(compiler);
	addr = sljit_get_label_addr(label);
	sljit_free_compiler(compiler);

	FAILED(codeF.func1((long)&buf) != 40, "test34 case 1 failed\n");
	FAILED(buf[0] != addr - SLJIT_RETURN_ADDRESS_OFFSET, "test34 case 2 failed\n");

	sljit_free_code(codeA.code);
	sljit_free_code(codeB.code);
	sljit_free_code(codeC.code);
	sljit_free_code(codeD.code);
	sljit_free_code(codeE.code);
	sljit_free_code(codeF.code);
	successful_tests++;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
cmpl $0x0, 0x24715(%rip)     # 0x34354
je 0xfc4f
leaq 0x1f543(%rip), %rdi     # 0x2f18b
movb $0x0, %al
callq 0x2070
movq $0x0, -0x60(%rbp)
movq $0x0, -0x58(%rbp)
callq 0x18ba0
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0xfc82
leaq 0x1d75d(%rip), %rdi     # 0x2d3d3
movb $0x0, %al
callq 0x2070
jmp 0x10333
movq -0x38(%rbp), %rdi
xorl %r9d, %r9d
movl $0x1, %edx
movl $0x5, %r8d
movl %r9d, %esi
movl %r8d, %ecx
movl $0x0, (%rsp)
movl $0x10, 0x8(%rsp)
callq 0x1a430
movq -0x38(%rbp), %rdi
movl $0x2, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x1b220
movq -0x38(%rbp), %rdi
movl $0x60, %esi
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl $0x40, (%rsp)
movq $0x4, 0x8(%rsp)
callq 0x1f8d0
movq -0x38(%rbp), %rdi
movl $0x2, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x1c2f0
movq -0x38(%rbp), %rdi
callq 0x19070
movq %rax, -0x8(%rbp)
movq -0x38(%rbp), %rdi
callq 0x18030
cmpl $0x1, %eax
je 0xfd43
movq -0x38(%rbp), %rdi
callq 0x18030
movl %eax, %esi
leaq 0x1d6ea(%rip), %rdi     # 0x2d418
movb $0x0, %al
callq 0x2070
movq -0x38(%rbp), %rdi
callq 0x18d90
jmp 0x10333
movq -0x38(%rbp), %rdi
callq 0x18d90
callq 0x18ba0
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0xfd6f
leaq 0x1d670(%rip), %rdi     # 0x2d3d3
movb $0x0, %al
callq 0x2070
jmp 0x10333
movq -0x38(%rbp), %rdi
xorl %r9d, %r9d
movl $0x1, %edx
movl $0x5, %r8d
movl %r9d, %esi
movl %r8d, %ecx
movl $0x0, (%rsp)
movl $0x10, 0x8(%rsp)
callq 0x1a430
movq -0x38(%rbp), %rdi
movl $0x5, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x1b220
movq -0x38(%rbp), %rdi
movl $0x60, %esi
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl $0x40, (%rsp)
movq $0x6, 0x8(%rsp)
callq 0x1f8d0
movq -0x38(%rbp), %rdi
movq -0x8(%rbp), %r9
movl $0x20, %esi
movl $0x2, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
callq 0x1d3d0
movq -0x38(%rbp), %rdi
movl $0x17, %esi
movl $0x2, %edx
xorl %eax, %eax
movl %eax, %ecx
callq 0x288b0
movq -0x38(%rbp), %rdi
movl $0x5, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x1c2f0
movq -0x38(%rbp), %rdi
callq 0x19070
movq %rax, -0x10(%rbp)
movq -0x38(%rbp), %rdi
callq 0x18030
cmpl $0x1, %eax
je 0xfe68
movq -0x38(%rbp), %rdi
callq 0x18030
movl %eax, %esi
leaq 0x1d5c5(%rip), %rdi     # 0x2d418
movb $0x0, %al
callq 0x2070
movq -0x38(%rbp), %rdi
callq 0x18d90
jmp 0x10333
movq -0x38(%rbp), %rdi
callq 0x18d90
callq 0x18ba0
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0xfe94
leaq 0x1d54b(%rip), %rdi     # 0x2d3d3
movb $0x0, %al
callq 0x2070
jmp 0x10333
movq -0x38(%rbp), %rdi
xorl %r9d, %r9d
movl $0x1, %edx
movl $0x5, %r8d
movl %r9d, %esi
movl %r8d, %ecx
movl $0x0, (%rsp)
movl $0x10, 0x8(%rsp)
callq 0x1a430
movq -0x38(%rbp), %rdi
movl $0x8d, %esi
movl $0x8, %edx
callq 0x1b220
movq -0x38(%rbp), %rdi
movl $0x60, %esi
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 -0x38(%rbp), %rdi
movl $0x1017, %esi           # imm = 0x1017
callq 0x283d0
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x18e80
movq -0x38(%rbp), %rdi
movl $0x8d, %esi
movl $0x8, %edx
callq 0x1c2f0
movq -0x38(%rbp), %rdi
callq 0x19070
movq %rax, -0x18(%rbp)
movq -0x38(%rbp), %rdi
callq 0x18030
cmpl $0x1, %eax
je 0xff76
movq -0x38(%rbp), %rdi
callq 0x18030
movl %eax, %esi
leaq 0x1d4b7(%rip), %rdi     # 0x2d418
movb $0x0, %al
callq 0x2070
movq -0x38(%rbp), %rdi
callq 0x18d90
jmp 0x10333
movq -0x38(%rbp), %rdi
callq 0x18d90
callq 0x18ba0
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0xffa2
leaq 0x1d43d(%rip), %rdi     # 0x2d3d3
movb $0x0, %al
callq 0x2070
jmp 0x10333
movq -0x38(%rbp), %rdi
xorl %r9d, %r9d
movl $0x1, %edx
movl $0x5, %r8d
movl %r9d, %esi
movl %r8d, %ecx
movl $0x0, (%rsp)
movl $0x10, 0x8(%rsp)
callq 0x1a430
movq -0x38(%rbp), %rdi
movl $0x8d, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x1b220
movq -0x38(%rbp), %rdi
movl $0x60, %esi
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl $0x40, (%rsp)
movq $0xa, 0x8(%rsp)
callq 0x1f8d0
movq -0x38(%rbp), %rdi
movq -0x18(%rbp), %rcx
movl $0x17, %esi
movl $0x40, %edx
callq 0x288b0
movq -0x38(%rbp), %rdi
movl $0x8d, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x1c2f0
movq -0x38(%rbp), %rdi
callq 0x19070
movq %rax, -0x20(%rbp)
movq -0x38(%rbp), %rdi
callq 0x18030
cmpl $0x1, %eax
je 0x1007a
movq -0x38(%rbp), %rdi
callq 0x18030
movl %eax, %esi
leaq 0x1d3b3(%rip), %rdi     # 0x2d418
movb $0x0, %al
callq 0x2070
movq -0x38(%rbp), %rdi
callq 0x18d90
jmp 0x10333
movq -0x38(%rbp), %rdi
callq 0x18d90
callq 0x18ba0
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0x100a6
leaq 0x1d339(%rip), %rdi     # 0x2d3d3
movb $0x0, %al
callq 0x2070
jmp 0x10333
movq -0x38(%rbp), %rdi
xorl %r9d, %r9d
movl $0x1, %edx
movl $0x5, %r8d
movl %r9d, %esi
movl %r8d, %ecx
movl $0x0, (%rsp)
movl $0x10, 0x8(%rsp)
callq 0x1a430
movq -0x38(%rbp), %rdi
movl $0x8c, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x1b220
movq -0x38(%rbp), %rdi
movl $0x60, %esi
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl $0x40, (%rsp)
movq $0xc, 0x8(%rsp)
callq 0x1f8d0
movq -0x38(%rbp), %rdi
movq -0x20(%rbp), %r9
movl $0x20, %esi
movl $0x8c, %edx
movl $0x8, %ecx
movl $0x40, %r8d
callq 0x1d3d0
movq -0x38(%rbp), %rdi
movl $0x17, %esi
movl $0x8c, %edx
movl $0x8, %ecx
callq 0x288b0
movq -0x38(%rbp), %rdi
movl $0x8c, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x1c2f0
movq -0x38(%rbp), %rdi
callq 0x19070
movq %rax, -0x28(%rbp)
movq -0x38(%rbp), %rdi
callq 0x18030
cmpl $0x1, %eax
je 0x101a1
movq -0x38(%rbp), %rdi
callq 0x18030
movl %eax, %esi
leaq 0x1d28c(%rip), %rdi     # 0x2d418
movb $0x0, %al
callq 0x2070
movq -0x38(%rbp), %rdi
callq 0x18d90
jmp 0x10333
movq -0x38(%rbp), %rdi
callq 0x18d90
callq 0x18ba0
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0x101cd
leaq 0x1d212(%rip), %rdi     # 0x2d3d3
movb $0x0, %al
callq 0x2070
jmp 0x10333
movq -0x38(%rbp), %rdi
xorl %r9d, %r9d
movl $0x1, %edx
movl $0x5, %r8d
movl %r9d, %esi
movl %r8d, %ecx
movl $0x0, (%rsp)
movl $0x10, 0x8(%rsp)
callq 0x19b20
movq -0x38(%rbp), %rdi
movl $0x20, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x40, %r8d
movq %r9, %rcx
callq 0x1d3d0
movq -0x38(%rbp), %rdi
movq -0x28(%rbp), %rcx
movl $0x17, %esi
movl $0x40, %edx
callq 0x288b0
movq -0x38(%rbp), %rdi
callq 0x28220
movq %rax, -0x48(%rbp)
movq -0x38(%rbp), %rdi
movl $0x20, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
callq 0x1a7c0
movq -0x38(%rbp), %rdi
callq 0x19070
movq %rax, -0x30(%rbp)
movq -0x38(%rbp), %rdi
callq 0x18030
cmpl $0x1, %eax
je 0x10297
movq -0x38(%rbp), %rdi
callq 0x18030
movl %eax, %esi
leaq 0x1d196(%rip), %rdi     # 0x2d418
movb $0x0, %al
callq 0x2070
movq -0x38(%rbp), %rdi
callq 0x18d90
jmp 0x10333
movq -0x48(%rbp), %rdi
callq 0x18080
movq %rax, -0x50(%rbp)
movq -0x38(%rbp), %rdi
callq 0x18d90
movq -0x30(%rbp), %rax
leaq -0x60(%rbp), %rdi
callq *%rax
cmpq $0x28, %rax
je 0x102cd
leaq 0x1eed3(%rip), %rdi     # 0x2f197
movb $0x0, %al
callq 0x2070
jmp 0x10333
movq -0x60(%rbp), %rax
movq -0x50(%rbp), %rcx
subq $0x0, %rcx
cmpq %rcx, %rax
je 0x102ee
leaq 0x1eec8(%rip), %rdi     # 0x2f1ad
movb $0x0, %al
callq 0x2070
jmp 0x10333
movq -0x8(%rbp), %rdi
callq 0x18e10
movq -0x10(%rbp), %rdi
callq 0x18e10
movq -0x18(%rbp), %rdi
callq 0x18e10
movq -0x20(%rbp), %rdi
callq 0x18e10
movq -0x28(%rbp), %rdi
callq 0x18e10
movq -0x30(%rbp), %rdi
callq 0x18e10
movl 0x24032(%rip), %eax     # 0x3435c
addl $0x1, %eax
movl %eax, 0x24029(%rip)     # 0x3435c
addq $0x70, %rsp
popq %rbp
retq
nopl (%rax)