// File: /workspace/github_c_makefile_star2_O1/mmcco[P]sljit/regex_src/regexJIT.c
// Function: regex_continue_match_debug
void regex_continue_match_debug(struct regex_match *match, const regex_char_t *input_string, int length)
{
	long *ptr;
	long *end;
	long count;
#if (defined SLJIT_DEBUG && SLJIT_DEBUG)
	long current;
#endif
	long no_states = match->machine->no_states;
	long len = match->machine->size;

	while (length > 0) {
		match->u.call_continue(match, input_string, 1);

		if (match->fast_forward) {
			if (match->machine->flags & REGEX_MATCH_VERBOSE)
				printf("fast forward\n");
		}

		/* Verbose (first). */
		if (match->machine->flags & REGEX_MATCH_VERBOSE) {
			ptr = match->current;
			end = ptr + len;
			count = 0;
			printf("'%c' (%3ld->%3ld [%3ld]) ", *input_string, (long)match->best_begin, (long)match->best_end, (long)match->best_id);
			while (ptr < end) {
				printf("[%3ld:", (long)count++);
				switch (no_states) {
				case 2:
					if (ptr[1] != -1)
						printf("+] ");
					else
						printf(" ] ");
					break;

				case 3:
					if (ptr[1] != -1)
						printf("+,%3ld] ", (long)ptr[2]);
					else
						printf(" ,XXX] ");
					break;

				case 4:
					if (ptr[1] != -1)
						printf("+,%3ld,%3ld] ", (long)ptr[2], (long)ptr[3]);
					else
						printf(" ,XXX,XXX] ");
					break;
				}
				ptr += no_states;
			}
			printf("\n");
		}

#if (defined SLJIT_DEBUG && SLJIT_DEBUG)
		/* Sanity check (later). */
		ptr = match->next;
		end = ptr + len;
		while (ptr < end) {
			SLJIT_ASSERT(ptr[1] == -1);
			ptr += no_states;
		}

		/* Check number of active elements. */
		ptr = match->current + no_states;
		end = ptr + len - no_states;
		count = 0;
		while (ptr < end) {
			if (ptr[1] != -1)
				count++;
			ptr += no_states;
		}

		/* Check chain list. */
		current = match->head;
		ptr = match->current;
		while (current != 0) {
			SLJIT_ASSERT(current >= 0 && current < len * sizeof(long));
			SLJIT_ASSERT((current % (no_states * sizeof(long))) == 0);
			SLJIT_ASSERT(count > 0);
			current = ptr[(current / sizeof(long)) + 1];
			count--;
		}
		SLJIT_ASSERT(count == 0);
#endif

		if (match->fast_quit) {
			/* the machine has stopped working. */
			if (match->machine->flags & REGEX_MATCH_VERBOSE)
				printf("Best match has found\n");
			break;
		}

		input_string++;
		length--;
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
testl %edx, %edx
jle 0x6bea
movl %edx, %ebp
movq %rsi, %r14
movq %rdi, %rbx
movq 0x48(%rdi), %rax
movq 0x8(%rax), %r12
movq 0x10(%rax), %rax
movq %r12, %rcx
negq %rcx
movq %rcx, 0x20(%rsp)
movq %rax, (%rsp)
leaq (,%rax,8), %r15
leaq (,%r12,8), %r13
movq %rdi, 0x8(%rsp)
movq %rbx, %rdi
movq %r14, %rsi
movl $0x1, %edx
callq *0x50(%rbx)
cmpq $0x0, 0x40(%rbx)
je 0x6a26
movq 0x48(%rbx), %rax
testb $0x10, (%rax)
je 0x6a26
leaq 0xcfe6(%rip), %rdi      # 0x13a07
callq 0x2060
movq 0x48(%rbx), %rax
testb $0x10, (%rax)
je 0x6b28
movq %rbp, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movsbl (%r14), %esi
movq (%rbx), %r14
movq 0x20(%rbx), %rdx
movq 0x28(%rbx), %rcx
movq 0x30(%rbx), %r8
leaq 0xcd1f(%rip), %rdi      # 0x13776
xorl %eax, %eax
callq 0x2080
cmpq $0x0, (%rsp)
jle 0x6b0f
movq (%rsp), %rax
leaq (%r14,%rax,8), %rbx
xorl %ebp, %ebp
leaq 0xcd16(%rip), %rdi      # 0x13790
movq %rbp, %rsi
xorl %eax, %eax
callq 0x2080
cmpq $0x4, %r12
je 0x6ac1
cmpq $0x3, %r12
je 0x6aa6
cmpq $0x2, %r12
jne 0x6b00
cmpq $-0x1, 0x8(%r14)
je 0x6af2
leaq 0xccf3(%rip), %rdi      # 0x13797
jmp 0x6af9
cmpq $-0x1, 0x8(%r14)
je 0x6ae0
movq 0x10(%r14), %rsi
leaq 0xcce7(%rip), %rdi      # 0x1379f
xorl %eax, %eax
callq 0x2080
jmp 0x6b00
cmpq $-0x1, 0x8(%r14)
je 0x6ae9
movq 0x10(%r14), %rsi
movq 0x18(%r14), %rdx
leaq 0xccd9(%rip), %rdi      # 0x137b0
xorl %eax, %eax
callq 0x2080
jmp 0x6b00
leaq 0xccc1(%rip), %rdi      # 0x137a8
jmp 0x6af9
leaq 0xccce(%rip), %rdi      # 0x137be
jmp 0x6af9
leaq 0xcca2(%rip), %rdi      # 0x1379b
xorl %eax, %eax
callq 0x2080
addq %r13, %r14
incq %rbp
cmpq %rbx, %r14
jb 0x6a73
movl $0xa, %edi
callq 0x2040
movq 0x8(%rsp), %rbx
movq 0x18(%rsp), %r14
movq 0x10(%rsp), %rbp
cmpq $0x0, (%rsp)
jle 0x6b4e
movq 0x8(%rbx), %rax
movq (%rsp), %rcx
leaq (%rax,%rcx,8), %rcx
cmpq $-0x1, 0x8(%rax)
jne 0x6c13
addq %r13, %rax
cmpq %rcx, %rax
jb 0x6b3b
movq (%rbx), %rsi
leaq (%rsi,%r12,8), %rax
movq (%rsp), %rcx
leaq (%rax,%rcx,8), %rcx
movq 0x20(%rsp), %rdx
leaq (%rcx,%rdx,8), %rcx
xorl %edi, %edi
cmpq %rcx, %rax
jae 0x6b7f
xorl %edx, %edx
cmpq $-0x1, 0x8(%rax)
setne %dl
addq %rdx, %rdi
addq %r13, %rax
jmp 0x6b68
movq 0x10(%rbx), %rcx
testq %rcx, %rcx
je 0x6bbe
testq %rcx, %rcx
js 0x6c2f
cmpq %r15, %rcx
jae 0x6c2f
movq %rcx, %rax
xorl %edx, %edx
divq %r13
testq %rdx, %rdx
jne 0x6c21
testq %rdi, %rdi
jle 0x6c3d
decq %rdi
andq $-0x8, %rcx
movq 0x8(%rsi,%rcx), %rcx
jmp 0x6b83
testq %rdi, %rdi
jne 0x6c55
cmpq $0x0, 0x38(%rbx)
jne 0x6be1
incq %r14
leal -0x1(%rbp), %eax
cmpl $0x1, %ebp
movl %eax, %ebp
jg 0x69fc
jmp 0x6bea
movq 0x48(%rbx), %rax
testb $0x10, (%rax)
jne 0x6bf9
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xce14(%rip), %rdi      # 0x13a14
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2060
leaq 0xcac2(%rip), %rdi      # 0x136dc
movl $0x9f9, %esi            # imm = 0x9F9
jmp 0x6c49
leaq 0xcab4(%rip), %rdi      # 0x136dc
movl $0xa0c, %esi            # imm = 0xA0C
jmp 0x6c49
leaq 0xcaa6(%rip), %rdi      # 0x136dc
movl $0xa0b, %esi            # imm = 0xA0B
jmp 0x6c49
leaq 0xca98(%rip), %rdi      # 0x136dc
movl $0xa0d, %esi            # imm = 0xA0D
xorl %eax, %eax
callq 0x2080
callq 0x2050
leaq 0xca80(%rip), %rdi      # 0x136dc
movl $0xa11, %esi            # imm = 0xA11
jmp 0x6c49