// File: /workspace/github_c_makefile_star2_O0/mmcco[P]sljit/test_src/sljitTest.c
// Function: test37
static void test37(void)
{
	/* Test count leading zeroes. */
	executable_code code;
	struct sljit_compiler* compiler = sljit_create_compiler();
	long buf[15];
	int ibuf[2];
	int i;

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

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

	for (i = 0; i < 15; i++)
		buf[i] = -1;
	buf[3] = 0;
	buf[7] = BITN(13);
	ibuf[0] = -1;
	ibuf[1] = -1;
	sljit_emit_enter(compiler, 0, 2, 1, 2, 0, 0, 0);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R0, 0, SLJIT_IMM, BITN(27));
	sljit_emit_op1(compiler, SLJIT_CLZ, SLJIT_MEM1(SLJIT_S0), 0, SLJIT_R0, 0);
	sljit_emit_op1(compiler, SLJIT_CLZ | SLJIT_SET_E, SLJIT_R0, 0, SLJIT_IMM, BITN(47));
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), sizeof(long), SLJIT_R0, 0);
	sljit_emit_op_flags(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), 2 * sizeof(long), SLJIT_UNUSED, 0, SLJIT_ZERO);
	sljit_emit_op1(compiler, SLJIT_CLZ, SLJIT_MEM1(SLJIT_S0), 3 * sizeof(long), SLJIT_MEM1(SLJIT_S0), 3 * sizeof(long));
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R0, 0, SLJIT_IMM, -1);
	sljit_emit_op1(compiler, SLJIT_CLZ | SLJIT_SET_E, SLJIT_R0, 0, SLJIT_R0, 0);
	sljit_emit_op_flags(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), 4 * sizeof(long), SLJIT_UNUSED, 0, SLJIT_ZERO);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), 5 * sizeof(long), SLJIT_R0, 0);
	sljit_emit_op1(compiler, SLJIT_IMOV, SLJIT_R0, 0, SLJIT_IMM, 0);
	sljit_emit_op1(compiler, SLJIT_ICLZ, SLJIT_MEM1(SLJIT_S1), 0, SLJIT_R0, 0);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R0, 0, SLJIT_IMM, -1);
	sljit_emit_op1(compiler, SLJIT_CLZ | SLJIT_SET_E, SLJIT_UNUSED, 0, SLJIT_R0, 0);
	sljit_emit_op_flags(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), 6 * sizeof(long), SLJIT_UNUSED, 0, SLJIT_ZERO);
	sljit_emit_op1(compiler, SLJIT_CLZ | SLJIT_KEEP_FLAGS, SLJIT_R0, 0, SLJIT_MEM1(SLJIT_S0), 7 * sizeof(long));
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), 7 * sizeof(long), SLJIT_R0, 0);
	sljit_emit_op_flags(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), 8 * sizeof(long), SLJIT_UNUSED, 0, SLJIT_NOT_ZERO);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R0, 0, SLJIT_IMM, BITN(58));
	sljit_emit_op1(compiler, SLJIT_CLZ, SLJIT_MEM1(SLJIT_S0), 9 * sizeof(long), SLJIT_R0, 0);
	sljit_emit_op1(compiler, SLJIT_CLZ | SLJIT_SET_E, SLJIT_UNUSED, 0, SLJIT_MEM1(SLJIT_S0), 10 * sizeof(long));
	sljit_emit_op_flags(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), 10 * sizeof(long), SLJIT_UNUSED, 0, SLJIT_NOT_ZERO);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R0, 0, SLJIT_IMM, 0);
	sljit_emit_op1(compiler, SLJIT_CLZ, SLJIT_MEM1(SLJIT_S0), 11 * sizeof(long), SLJIT_R0, 0);
#if (defined SLJIT_64BIT_ARCHITECTURE && SLJIT_64BIT_ARCHITECTURE)
	sljit_emit_op1(compiler, SLJIT_IMOV, SLJIT_R0, 0, SLJIT_IMM, SLJIT_W(0xff08a00000));
#else
	sljit_emit_op1(compiler, SLJIT_IMOV, SLJIT_R0, 0, SLJIT_IMM, 0x08a00000);
#endif
	sljit_emit_op1(compiler, SLJIT_ICLZ, SLJIT_MEM1(SLJIT_S1), sizeof(int), SLJIT_R0, 0);
	sljit_emit_op1(compiler, SLJIT_ICLZ, SLJIT_R0, 0, SLJIT_R0, 0);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), 12 * sizeof(long), SLJIT_R0, 0);
#if (defined SLJIT_64BIT_ARCHITECTURE && SLJIT_64BIT_ARCHITECTURE)
	sljit_emit_op1(compiler, SLJIT_IMOV, SLJIT_R0, 0, SLJIT_IMM, SLJIT_W(0xffc8a00000));
#else
	sljit_emit_op1(compiler, SLJIT_IMOV, SLJIT_R0, 0, SLJIT_IMM, 0xc8a00000);
#endif
	sljit_emit_op1(compiler, SLJIT_ICLZ | SLJIT_SET_E, SLJIT_UNUSED, 0, SLJIT_R0, 0);
	sljit_emit_op_flags(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), 13 * sizeof(long), SLJIT_UNUSED, 0, SLJIT_I_ZERO);
	sljit_emit_op1(compiler, SLJIT_ICLZ | SLJIT_SET_E, SLJIT_R0, 0, SLJIT_R0, 0);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_MEM1(SLJIT_S0), 14 * sizeof(long), SLJIT_R0, 0);

	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)&ibuf);
	FAILED(buf[0] != RESN(27), "test37 case 1 failed\n");
	FAILED(buf[1] != RESN(47), "test37 case 2 failed\n");
	FAILED(buf[2] != 0, "test37 case 3 failed\n");
#if (defined SLJIT_64BIT_ARCHITECTURE && SLJIT_64BIT_ARCHITECTURE)
	FAILED(buf[3] != 64, "test37 case 4 failed\n");
#else
	FAILED(buf[3] != 32, "test37 case 4 failed\n");
#endif
	FAILED(buf[4] != 1, "test37 case 5 failed\n");
	FAILED(buf[5] != 0, "test37 case 6 failed\n");
	FAILED(ibuf[0] != 32, "test37 case 7 failed\n");
	FAILED(buf[6] != 1, "test37 case 8 failed\n");
	FAILED(buf[7] != RESN(13), "test37 case 9 failed\n");
#if !(defined SLJIT_CONFIG_SPARC_32 && SLJIT_CONFIG_SPARC_32)
	FAILED(buf[8] != 0, "test37 case 10 failed\n");
#endif
	FAILED(buf[9] != RESN(58), "test37 case 11 failed\n");
	FAILED(buf[10] != 0, "test37 case 12 failed\n");
#if (defined SLJIT_64BIT_ARCHITECTURE && SLJIT_64BIT_ARCHITECTURE)
	FAILED(buf[11] != 64, "test37 case 13 failed\n");
#else
	FAILED(buf[11] != 32, "test37 case 13 failed\n");
#endif
	FAILED(ibuf[1] != 4, "test37 case 14 failed\n");
	FAILED((buf[12] & 0xffffffff) != 4, "test37 case 15 failed\n");
	FAILED(buf[13] != 1, "test37 case 16 failed\n");
	FAILED((buf[14] & 0xffffffff) != 0, "test37 case 17 failed\n");

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
callq 0x18ba0
movq %rax, -0x10(%rbp)
cmpl $0x0, 0x23299(%rip)     # 0x34354
je 0x110cb
leaq 0x1e15a(%rip), %rdi     # 0x2f21e
movb $0x0, %al
callq 0x2070
cmpq $0x0, -0x10(%rbp)
jne 0x110e5
leaq 0x1c2fa(%rip), %rdi     # 0x2d3d3
movb $0x0, %al
callq 0x2070
jmp 0x11851
movl $0x0, -0x9c(%rbp)
cmpl $0xf, -0x9c(%rbp)
jge 0x1111c
movslq -0x9c(%rbp), %rax
movq $-0x1, -0x90(%rbp,%rax,8)
movl -0x9c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x9c(%rbp)
jmp 0x110ef
movq $0x0, -0x78(%rbp)
movabsq $0x4000000000000, %rax  # imm = 0x4000000000000
movq %rax, -0x58(%rbp)
movl $0xffffffff, -0x98(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x94(%rbp) # imm = 0xFFFFFFFF
movq -0x10(%rbp), %rdi
xorl %r9d, %r9d
movl $0x2, %r8d
movl $0x1, %ecx
movl %r9d, %esi
movl %r8d, %edx
movl $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
callq 0x19b20
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movabsq $0x1000000000, %r9      # imm = 0x1000000000
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x32, %esi
movl $0x8c, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x1, %r8d
movq %r9, %rcx
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x232, %esi            # imm = 0x232
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movl $0x10000, %r9d          # imm = 0x10000
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8c, %edx
movl $0x8, %ecx
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8c, %edx
movl $0x10, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl $0x0, (%rsp)
callq 0x29010
movq -0x10(%rbp), %rdi
movl $0x32, %esi
movl $0x8c, %r8d
movl $0x18, %r9d
movl %r8d, %edx
movq %r9, %rcx
callq 0x1d3d0
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 $0x232, %esi            # imm = 0x232
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
movq %r9, %rcx
callq 0x1d3d0
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 $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x126, %esi            # imm = 0x126
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x40, %r8d
movq %r9, %rcx
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x132, %esi            # imm = 0x132
movl $0x8b, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x1, %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
movq $-0x1, %r9
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x232, %esi            # imm = 0x232
xorl %edx, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x1, %r8d
movq %r9, %rcx
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8c, %edx
movl $0x30, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl $0x0, (%rsp)
callq 0x29010
movq -0x10(%rbp), %rdi
movl $0x4032, %esi           # imm = 0x4032
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x8c, %r8d
movl $0x38, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8c, %edx
movl $0x38, %ecx
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8c, %edx
movl $0x40, %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, %ecx
movl $0x40, %r8d
movl $0x20, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x32, %esi
movl $0x8c, %edx
movl $0x48, %ecx
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x232, %esi            # imm = 0x232
xorl %edx, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x8c, %r8d
movl $0x50, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8c, %edx
movl $0x50, %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 $0x32, %esi
movl $0x8c, %edx
movl $0x58, %ecx
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x126, %esi            # imm = 0x126
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movabsq $0xff08a00000, %r9      # imm = 0xFF08A00000
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x132, %esi            # imm = 0x132
movl $0x8b, %edx
movl $0x4, %ecx
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x132, %esi            # imm = 0x132
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
movq %r9, %rcx
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8c, %edx
movl $0x60, %ecx
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x126, %esi            # imm = 0x126
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movabsq $0xffc8a00000, %r9      # imm = 0xFFC8A00000
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x332, %esi            # imm = 0x332
xorl %edx, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x1, %r8d
movq %r9, %rcx
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8c, %edx
movl $0x68, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl $0x100, (%rsp)          # imm = 0x100
callq 0x29010
movq -0x10(%rbp), %rdi
movl $0x332, %esi            # imm = 0x332
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
movq %r9, %rcx
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x8c, %edx
movl $0x70, %ecx
movl $0x1, %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 0x1164a
movq -0x10(%rbp), %rdi
callq 0x18030
movl %eax, %esi
leaq 0x1bde3(%rip), %rdi     # 0x2d418
movb $0x0, %al
callq 0x2070
movq -0x10(%rbp), %rdi
callq 0x18d90
jmp 0x11851
movq -0x10(%rbp), %rdi
callq 0x18d90
movq -0x8(%rbp), %rax
leaq -0x90(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq *%rax
cmpq $0x1b, -0x90(%rbp)
je 0x11684
leaq 0x1dbb2(%rip), %rdi     # 0x2f22a
movb $0x0, %al
callq 0x2070
jmp 0x11851
cmpq $0x2f, -0x88(%rbp)
je 0x116a1
leaq 0x1dbab(%rip), %rdi     # 0x2f240
movb $0x0, %al
callq 0x2070
jmp 0x11851
cmpq $0x0, -0x80(%rbp)
je 0x116bb
leaq 0x1dba7(%rip), %rdi     # 0x2f256
movb $0x0, %al
callq 0x2070
jmp 0x11851
cmpq $0x40, -0x78(%rbp)
je 0x116d5
leaq 0x1dba3(%rip), %rdi     # 0x2f26c
movb $0x0, %al
callq 0x2070
jmp 0x11851
cmpq $0x1, -0x70(%rbp)
je 0x116ef
leaq 0x1db9f(%rip), %rdi     # 0x2f282
movb $0x0, %al
callq 0x2070
jmp 0x11851
cmpq $0x0, -0x68(%rbp)
je 0x11709
leaq 0x1db9b(%rip), %rdi     # 0x2f298
movb $0x0, %al
callq 0x2070
jmp 0x11851
cmpl $0x20, -0x98(%rbp)
je 0x11725
leaq 0x1db95(%rip), %rdi     # 0x2f2ae
movb $0x0, %al
callq 0x2070
jmp 0x11851
cmpq $0x1, -0x60(%rbp)
je 0x1173f
leaq 0x1db91(%rip), %rdi     # 0x2f2c4
movb $0x0, %al
callq 0x2070
jmp 0x11851
cmpq $0xd, -0x58(%rbp)
je 0x11759
leaq 0x1db8d(%rip), %rdi     # 0x2f2da
movb $0x0, %al
callq 0x2070
jmp 0x11851
cmpq $0x0, -0x50(%rbp)
je 0x11773
leaq 0x1db89(%rip), %rdi     # 0x2f2f0
movb $0x0, %al
callq 0x2070
jmp 0x11851
cmpq $0x3a, -0x48(%rbp)
je 0x1178d
leaq 0x1db86(%rip), %rdi     # 0x2f307
movb $0x0, %al
callq 0x2070
jmp 0x11851
cmpq $0x0, -0x40(%rbp)
je 0x117a7
leaq 0x1db83(%rip), %rdi     # 0x2f31e
movb $0x0, %al
callq 0x2070
jmp 0x11851
cmpq $0x40, -0x38(%rbp)
je 0x117c1
leaq 0x1db80(%rip), %rdi     # 0x2f335
movb $0x0, %al
callq 0x2070
jmp 0x11851
cmpl $0x4, -0x94(%rbp)
je 0x117da
leaq 0x1db7b(%rip), %rdi     # 0x2f34c
movb $0x0, %al
callq 0x2070
jmp 0x11851
movabsq $0xffffffff, %rax       # imm = 0xFFFFFFFF
andq -0x30(%rbp), %rax
cmpq $0x4, %rax
je 0x117fe
leaq 0x1db6e(%rip), %rdi     # 0x2f363
movb $0x0, %al
callq 0x2070
jmp 0x11851
cmpq $0x1, -0x28(%rbp)
je 0x11815
leaq 0x1db6e(%rip), %rdi     # 0x2f37a
movb $0x0, %al
callq 0x2070
jmp 0x11851
movabsq $0xffffffff, %rax       # imm = 0xFFFFFFFF
andq -0x20(%rbp), %rax
cmpq $0x0, %rax
je 0x11839
leaq 0x1db61(%rip), %rdi     # 0x2f391
movb $0x0, %al
callq 0x2070
jmp 0x11851
movq -0x8(%rbp), %rdi
callq 0x18e10
movl 0x22b14(%rip), %eax     # 0x3435c
addl $0x1, %eax
movl %eax, 0x22b0b(%rip)     # 0x3435c
addq $0xb0, %rsp
popq %rbp
retq
nopw (%rax,%rax)