// File: /workspace/github_c_makefile_star2_O2/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 $0x38, %rsp
movl %edx, %r14d
movq %rsi, %r13
movq %rdi, %r12
movq 0x48(%rdi), %rax
movq 0x8(%rax), %rbp
movq 0x10(%rax), %rax
movq %rbp, %rcx
negq %rcx
movq %rcx, 0x30(%rsp)
leaq 0x10(%rdi), %rcx
movq %rcx, 0x28(%rsp)
movq %rax, 0x8(%rsp)
leaq (,%rax,8), %rbx
leaq (,%rbp,8), %r15
movq %rdi, 0x18(%rsp)
testl %r14d, %r14d
jle 0x672f
movq %r12, %rdi
movq %r13, %rsi
pushq $0x1
popq %rdx
callq *0x50(%r12)
cmpq $0x0, 0x40(%r12)
movq 0x48(%r12), %rax
je 0x6576
testb $0x10, (%rax)
je 0x6576
leaq 0xc4b7(%rip), %rdi      # 0x12a23
callq 0x2060
movq 0x48(%r12), %rax
testb $0x10, (%rax)
je 0x6675
movl %r14d, 0x14(%rsp)
movq %r13, %rax
movq (%r12), %r13
movq 0x20(%r12), %rdx
movq 0x8(%rsp), %rcx
leaq (%r13,%rcx,8), %r14
movq %rax, 0x20(%rsp)
movsbl (%rax), %esi
movq 0x28(%r12), %rcx
movq 0x30(%r12), %r8
leaq 0xc1df(%rip), %rdi      # 0x12792
xorl %eax, %eax
callq 0x2080
xorl %r12d, %r12d
cmpq %r14, %r13
jae 0x665e
leaq 0xc1df(%rip), %rdi      # 0x127ac
movq %r12, %rsi
xorl %eax, %eax
callq 0x2080
cmpq $0x4, %rbp
je 0x6614
cmpq $0x3, %rbp
je 0x65f9
cmpq $0x2, %rbp
jne 0x6653
cmpq $-0x1, 0x8(%r13)
je 0x6645
leaq 0xc1bc(%rip), %rdi      # 0x127b3
jmp 0x664c
cmpq $-0x1, 0x8(%r13)
je 0x6633
movq 0x10(%r13), %rsi
leaq 0xc1b0(%rip), %rdi      # 0x127bb
xorl %eax, %eax
callq 0x2080
jmp 0x6653
cmpq $-0x1, 0x8(%r13)
je 0x663c
movq 0x10(%r13), %rsi
movq 0x18(%r13), %rdx
leaq 0xc1a2(%rip), %rdi      # 0x127cc
xorl %eax, %eax
callq 0x2080
jmp 0x6653
leaq 0xc18a(%rip), %rdi      # 0x127c4
jmp 0x664c
leaq 0xc197(%rip), %rdi      # 0x127da
jmp 0x664c
leaq 0xc16b(%rip), %rdi      # 0x127b7
xorl %eax, %eax
callq 0x2080
addq %r15, %r13
incq %r12
jmp 0x65bd
pushq $0xa
popq %rdi
callq 0x2040
movl 0x14(%rsp), %r14d
movq 0x18(%rsp), %r12
movq 0x20(%rsp), %r13
movq 0x8(%r12), %rax
movq 0x8(%rsp), %rcx
leaq (%rax,%rcx,8), %rcx
cmpq %rcx, %rax
jae 0x6698
cmpq $-0x1, 0x8(%rax)
jne 0x6758
addq %r15, %rax
jmp 0x6683
movq (%r12), %rsi
leaq (%rsi,%rbp,8), %rax
movq 0x8(%rsp), %rcx
leaq (%rax,%rcx,8), %rcx
movq 0x30(%rsp), %rdx
leaq (%rcx,%rdx,8), %rcx
xorl %edi, %edi
cmpq %rcx, %rax
jae 0x66cb
xorl %edx, %edx
cmpq $-0x1, 0x8(%rax)
setne %dl
addq %rdx, %rdi
addq %r15, %rax
jmp 0x66b4
addq $0x8, %rsi
movq 0x28(%rsp), %rcx
movq (%rcx), %rcx
testq %rcx, %rcx
je 0x6709
js 0x6782
cmpq %rbx, %rcx
jae 0x6782
movq %rcx, %rax
xorl %edx, %edx
divq %r15
testq %rdx, %rdx
jne 0x6774
testq %rdi, %rdi
jle 0x6766
andq $-0x8, %rcx
addq %rsi, %rcx
decq %rdi
jmp 0x66d4
testq %rdi, %rdi
jne 0x679a
cmpq $0x0, 0x38(%r12)
jne 0x6725
incq %r13
decl %r14d
jmp 0x653c
movq 0x48(%r12), %rax
testb $0x10, (%rax)
jne 0x673e
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xc2eb(%rip), %rdi      # 0x12a30
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2060
leaq 0xbf99(%rip), %rdi      # 0x126f8
movl $0x9f9, %esi            # imm = 0x9F9
jmp 0x678e
leaq 0xbf8b(%rip), %rdi      # 0x126f8
movl $0xa0d, %esi            # imm = 0xA0D
jmp 0x678e
leaq 0xbf7d(%rip), %rdi      # 0x126f8
movl $0xa0c, %esi            # imm = 0xA0C
jmp 0x678e
leaq 0xbf6f(%rip), %rdi      # 0x126f8
movl $0xa0b, %esi            # imm = 0xA0B
xorl %eax, %eax
callq 0x2080
callq 0x2050
leaq 0xbf57(%rip), %rdi      # 0x126f8
movl $0xa11, %esi            # imm = 0xA11
jmp 0x678e