// File: /workspace/github_c_makefile_star2_O3/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 0x6b45
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)
movq 0x48(%rbx), %rax
je 0x6985
testb $0x10, (%rax)
je 0x6985
leaq 0xd0a7(%rip), %rdi      # 0x13a23
callq 0x2060
movq 0x48(%rbx), %rax
testb $0x10, (%rax)
je 0x6a83
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 0xcde0(%rip), %rdi      # 0x13792
xorl %eax, %eax
callq 0x2080
cmpq $0x0, (%rsp)
jle 0x6a6a
movq (%rsp), %rax
leaq (%r14,%rax,8), %rbx
xorl %ebp, %ebp
leaq 0xcdd7(%rip), %rdi      # 0x137ac
movq %rbp, %rsi
xorl %eax, %eax
callq 0x2080
cmpq $0x4, %r12
je 0x6a1c
cmpq $0x3, %r12
je 0x6a01
cmpq $0x2, %r12
jne 0x6a5b
cmpq $-0x1, 0x8(%r14)
je 0x6a4d
leaq 0xcdb4(%rip), %rdi      # 0x137b3
jmp 0x6a54
cmpq $-0x1, 0x8(%r14)
je 0x6a3b
movq 0x10(%r14), %rsi
leaq 0xcda8(%rip), %rdi      # 0x137bb
xorl %eax, %eax
callq 0x2080
jmp 0x6a5b
cmpq $-0x1, 0x8(%r14)
je 0x6a44
movq 0x10(%r14), %rsi
movq 0x18(%r14), %rdx
leaq 0xcd9a(%rip), %rdi      # 0x137cc
xorl %eax, %eax
callq 0x2080
jmp 0x6a5b
leaq 0xcd82(%rip), %rdi      # 0x137c4
jmp 0x6a54
leaq 0xcd8f(%rip), %rdi      # 0x137da
jmp 0x6a54
leaq 0xcd63(%rip), %rdi      # 0x137b7
xorl %eax, %eax
callq 0x2080
addq %r13, %r14
incq %rbp
cmpq %rbx, %r14
jb 0x69ce
movl $0xa, %edi
callq 0x2040
movq 0x8(%rsp), %rbx
movq 0x18(%rsp), %r14
movq 0x10(%rsp), %rbp
cmpq $0x0, (%rsp)
jle 0x6aa9
movq 0x8(%rbx), %rax
movq (%rsp), %rcx
leaq (%rax,%rcx,8), %rcx
cmpq $-0x1, 0x8(%rax)
jne 0x6b6e
addq %r13, %rax
cmpq %rcx, %rax
jb 0x6a96
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 0x6ada
xorl %edx, %edx
cmpq $-0x1, 0x8(%rax)
setne %dl
addq %rdx, %rdi
addq %r13, %rax
jmp 0x6ac3
movq 0x10(%rbx), %rcx
testq %rcx, %rcx
je 0x6b19
testq %rcx, %rcx
js 0x6b8a
cmpq %r15, %rcx
jae 0x6b8a
movq %rcx, %rax
xorl %edx, %edx
divq %r13
testq %rdx, %rdx
jne 0x6b7c
testq %rdi, %rdi
jle 0x6b98
decq %rdi
andq $-0x8, %rcx
movq 0x8(%rsi,%rcx), %rcx
jmp 0x6ade
testq %rdi, %rdi
jne 0x6bb0
cmpq $0x0, 0x38(%rbx)
jne 0x6b3c
incq %r14
leal -0x1(%rbp), %eax
cmpl $0x1, %ebp
movl %eax, %ebp
jg 0x6957
jmp 0x6b45
movq 0x48(%rbx), %rax
testb $0x10, (%rax)
jne 0x6b54
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xced5(%rip), %rdi      # 0x13a30
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2060
leaq 0xcb83(%rip), %rdi      # 0x136f8
movl $0x9f9, %esi            # imm = 0x9F9
jmp 0x6ba4
leaq 0xcb75(%rip), %rdi      # 0x136f8
movl $0xa0c, %esi            # imm = 0xA0C
jmp 0x6ba4
leaq 0xcb67(%rip), %rdi      # 0x136f8
movl $0xa0b, %esi            # imm = 0xA0B
jmp 0x6ba4
leaq 0xcb59(%rip), %rdi      # 0x136f8
movl $0xa0d, %esi            # imm = 0xA0D
xorl %eax, %eax
callq 0x2080
callq 0x2050
leaq 0xcb41(%rip), %rdi      # 0x136f8
movl $0xa11, %esi            # imm = 0xA11
jmp 0x6ba4