// File: /workspace/github_c_makefile_star2_O0/LemonBoy[P]autobahn/xdiff/xutils.c
// Function: xdl_recmatch
int xdl_recmatch(const char *l1, long s1, const char *l2, long s2, long flags)
{
	int i1, i2;

	if (s1 == s2 && !memcmp(l1, l2, s1))
		return 1;
	if (!(flags & XDF_WHITESPACE_FLAGS))
		return 0;

	i1 = 0;
	i2 = 0;

	/*
	 * -w matches everything that matches with -b, and -b in turn
	 * matches everything that matches with --ignore-space-at-eol.
	 *
	 * Each flavor of ignoring needs different logic to skip whitespaces
	 * while we have both sides to compare.
	 */
	if (flags & XDF_IGNORE_WHITESPACE) {
		goto skip_ws;
		while (i1 < s1 && i2 < s2) {
			if (l1[i1++] != l2[i2++])
				return 0;
		skip_ws:
			while (i1 < s1 && XDL_ISSPACE(l1[i1]))
				i1++;
			while (i2 < s2 && XDL_ISSPACE(l2[i2]))
				i2++;
		}
	} else if (flags & XDF_IGNORE_WHITESPACE_CHANGE) {
		while (i1 < s1 && i2 < s2) {
			if (XDL_ISSPACE(l1[i1]) && XDL_ISSPACE(l2[i2])) {
				/* Skip matching spaces and try again */
				while (i1 < s1 && XDL_ISSPACE(l1[i1]))
					i1++;
				while (i2 < s2 && XDL_ISSPACE(l2[i2]))
					i2++;
				continue;
			}
			if (l1[i1++] != l2[i2++])
				return 0;
		}
	} else if (flags & XDF_IGNORE_WHITESPACE_AT_EOL) {
		while (i1 < s1 && i2 < s2 && l1[i1] == l2[i2]) {
			i1++;
			i2++;
		}
	}

	/*
	 * After running out of one side, the remaining side must have
	 * nothing but whitespace for the lines to match.  Note that
	 * ignore-whitespace-at-eol case may break out of the loop
	 * while there still are characters remaining on both lines.
	 */
	if (i1 < s1) {
		while (i1 < s1 && XDL_ISSPACE(l1[i1]))
			i1++;
		if (s1 != i1)
			return 0;
	}
	if (i2 < s2) {
		while (i2 < s2 && XDL_ISSPACE(l2[i2]))
			i2++;
		return (s2 == i2);
	}
	return 1;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x38(%rsp)
movq %rsi, 0x30(%rsp)
movq %rdx, 0x28(%rsp)
movq %rcx, 0x20(%rsp)
movq %r8, 0x18(%rsp)
movq 0x30(%rsp), %rax
cmpq 0x20(%rsp), %rax
jne 0x71df
movq 0x38(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
callq 0x10b0
cmpl $0x0, %eax
jne 0x71df
movl $0x1, 0x44(%rsp)
jmp 0x7671
movq 0x18(%rsp), %rax
andq $0x1c, %rax
cmpq $0x0, %rax
jne 0x71fb
movl $0x0, 0x44(%rsp)
jmp 0x7671
movl $0x0, 0x14(%rsp)
movl $0x0, 0x10(%rsp)
movq 0x18(%rsp), %rax
andq $0x4, %rax
cmpq $0x0, %rax
je 0x734d
jmp 0x7295
movslq 0x14(%rsp), %rcx
xorl %eax, %eax
cmpq 0x30(%rsp), %rcx
movb %al, 0xf(%rsp)
jge 0x7243
movslq 0x10(%rsp), %rax
cmpq 0x20(%rsp), %rax
setl %al
movb %al, 0xf(%rsp)
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0x7250
jmp 0x7348
movq 0x38(%rsp), %rax
movl 0x14(%rsp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, 0x14(%rsp)
movslq %ecx, %rcx
movsbl (%rax,%rcx), %eax
movq 0x28(%rsp), %rcx
movl 0x10(%rsp), %edx
movl %edx, %esi
addl $0x1, %esi
movl %esi, 0x10(%rsp)
movslq %edx, %rdx
movsbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
je 0x7293
movl $0x0, 0x44(%rsp)
jmp 0x7671
jmp 0x7295
jmp 0x7297
movslq 0x14(%rsp), %rcx
xorl %eax, %eax
cmpq 0x30(%rsp), %rcx
movb %al, 0xe(%rsp)
jge 0x72d5
callq 0x1140
movq (%rax), %rax
movq 0x38(%rsp), %rcx
movslq 0x14(%rsp), %rdx
movzbl (%rcx,%rdx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
setne %al
movb %al, 0xe(%rsp)
movb 0xe(%rsp), %al
testb $0x1, %al
jne 0x72df
jmp 0x72ec
movl 0x14(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x14(%rsp)
jmp 0x7297
jmp 0x72ee
movslq 0x10(%rsp), %rcx
xorl %eax, %eax
cmpq 0x20(%rsp), %rcx
movb %al, 0xd(%rsp)
jge 0x732c
callq 0x1140
movq (%rax), %rax
movq 0x28(%rsp), %rcx
movslq 0x10(%rsp), %rdx
movzbl (%rcx,%rdx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
setne %al
movb %al, 0xd(%rsp)
movb 0xd(%rsp), %al
testb $0x1, %al
jne 0x7336
jmp 0x7343
movl 0x10(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x10(%rsp)
jmp 0x72ee
jmp 0x7220
jmp 0x756a
movq 0x18(%rsp), %rax
andq $0x8, %rax
cmpq $0x0, %rax
je 0x74e8
jmp 0x7362
movslq 0x14(%rsp), %rcx
xorl %eax, %eax
cmpq 0x30(%rsp), %rcx
movb %al, 0xc(%rsp)
jge 0x7385
movslq 0x10(%rsp), %rax
cmpq 0x20(%rsp), %rax
setl %al
movb %al, 0xc(%rsp)
movb 0xc(%rsp), %al
testb $0x1, %al
jne 0x7392
jmp 0x74e3
callq 0x1140
movq (%rax), %rax
movq 0x38(%rsp), %rcx
movslq 0x14(%rsp), %rdx
movzbl (%rcx,%rdx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
je 0x749b
callq 0x1140
movq (%rax), %rax
movq 0x28(%rsp), %rcx
movslq 0x10(%rsp), %rdx
movzbl (%rcx,%rdx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
je 0x749b
jmp 0x73ea
movslq 0x14(%rsp), %rcx
xorl %eax, %eax
cmpq 0x30(%rsp), %rcx
movb %al, 0xb(%rsp)
jge 0x7428
callq 0x1140
movq (%rax), %rax
movq 0x38(%rsp), %rcx
movslq 0x14(%rsp), %rdx
movzbl (%rcx,%rdx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
setne %al
movb %al, 0xb(%rsp)
movb 0xb(%rsp), %al
testb $0x1, %al
jne 0x7432
jmp 0x743f
movl 0x14(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x14(%rsp)
jmp 0x73ea
jmp 0x7441
movslq 0x10(%rsp), %rcx
xorl %eax, %eax
cmpq 0x20(%rsp), %rcx
movb %al, 0xa(%rsp)
jge 0x747f
callq 0x1140
movq (%rax), %rax
movq 0x28(%rsp), %rcx
movslq 0x10(%rsp), %rdx
movzbl (%rcx,%rdx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
setne %al
movb %al, 0xa(%rsp)
movb 0xa(%rsp), %al
testb $0x1, %al
jne 0x7489
jmp 0x7496
movl 0x10(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x10(%rsp)
jmp 0x7441
jmp 0x7362
movq 0x38(%rsp), %rax
movl 0x14(%rsp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, 0x14(%rsp)
movslq %ecx, %rcx
movsbl (%rax,%rcx), %eax
movq 0x28(%rsp), %rcx
movl 0x10(%rsp), %edx
movl %edx, %esi
addl $0x1, %esi
movl %esi, 0x10(%rsp)
movslq %edx, %rdx
movsbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
je 0x74de
movl $0x0, 0x44(%rsp)
jmp 0x7671
jmp 0x7362
jmp 0x7568
movq 0x18(%rsp), %rax
andq $0x10, %rax
cmpq $0x0, %rax
je 0x7566
jmp 0x74f9
movslq 0x14(%rsp), %rcx
xorl %eax, %eax
cmpq 0x30(%rsp), %rcx
movb %al, 0x9(%rsp)
jge 0x7542
movslq 0x10(%rsp), %rcx
xorl %eax, %eax
cmpq 0x20(%rsp), %rcx
movb %al, 0x9(%rsp)
jge 0x7542
movq 0x38(%rsp), %rax
movslq 0x14(%rsp), %rcx
movsbl (%rax,%rcx), %eax
movq 0x28(%rsp), %rcx
movslq 0x10(%rsp), %rdx
movsbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
sete %al
movb %al, 0x9(%rsp)
movb 0x9(%rsp), %al
testb $0x1, %al
jne 0x754c
jmp 0x7564
movl 0x14(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x14(%rsp)
movl 0x10(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x10(%rsp)
jmp 0x74f9
jmp 0x7566
jmp 0x7568
jmp 0x756a
movslq 0x14(%rsp), %rax
cmpq 0x30(%rsp), %rax
jge 0x75eb
jmp 0x7578
movslq 0x14(%rsp), %rcx
xorl %eax, %eax
cmpq 0x30(%rsp), %rcx
movb %al, 0x8(%rsp)
jge 0x75b6
callq 0x1140
movq (%rax), %rax
movq 0x38(%rsp), %rcx
movslq 0x14(%rsp), %rdx
movzbl (%rcx,%rdx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
setne %al
movb %al, 0x8(%rsp)
movb 0x8(%rsp), %al
testb $0x1, %al
jne 0x75c0
jmp 0x75cd
movl 0x14(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x14(%rsp)
jmp 0x7578
movq 0x30(%rsp), %rax
movslq 0x14(%rsp), %rcx
cmpq %rcx, %rax
je 0x75e9
movl $0x0, 0x44(%rsp)
jmp 0x7671
jmp 0x75eb
movslq 0x10(%rsp), %rax
cmpq 0x20(%rsp), %rax
jge 0x7669
jmp 0x75f9
movslq 0x10(%rsp), %rcx
xorl %eax, %eax
cmpq 0x20(%rsp), %rcx
movb %al, 0x7(%rsp)
jge 0x7637
callq 0x1140
movq (%rax), %rax
movq 0x28(%rsp), %rcx
movslq 0x10(%rsp), %rdx
movzbl (%rcx,%rdx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
setne %al
movb %al, 0x7(%rsp)
movb 0x7(%rsp), %al
testb $0x1, %al
jne 0x7641
jmp 0x764e
movl 0x10(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x10(%rsp)
jmp 0x75f9
movq 0x20(%rsp), %rax
movslq 0x10(%rsp), %rcx
cmpq %rcx, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x44(%rsp)
jmp 0x7671
movl $0x1, 0x44(%rsp)
movl 0x44(%rsp), %eax
addq $0x48, %rsp
retq
nopw (%rax,%rax)