// File: /workspace/github_c_makefile_star2_O0/LemonBoy[P]autobahn/xdiff/xutils.c
// Function: xdl_hash_record_with_whitespace
static unsigned long xdl_hash_record_with_whitespace(char const **data,
		char const *top, long flags) {
	unsigned long ha = 5381;
	char const *ptr = *data;

	for (; ptr < top && *ptr != '\n'; ptr++) {
		if (XDL_ISSPACE(*ptr)) {
			const char *ptr2 = ptr;
			int at_eol;
			while (ptr + 1 < top && XDL_ISSPACE(ptr[1])
					&& ptr[1] != '\n')
				ptr++;
			at_eol = (top <= ptr + 1 || ptr[1] == '\n');
			if (flags & XDF_IGNORE_WHITESPACE)
				; /* already handled */
			else if (flags & XDF_IGNORE_WHITESPACE_CHANGE
				 && !at_eol) {
				ha += (ha << 5);
				ha ^= (unsigned long) ' ';
			}
			else if (flags & XDF_IGNORE_WHITESPACE_AT_EOL
				 && !at_eol) {
				while (ptr2 != ptr + 1) {
					ha += (ha << 5);
					ha ^= (unsigned long) *ptr2;
					ptr2++;
				}
			}
			continue;
		}
		ha += (ha << 5);
		ha ^= (unsigned long) *ptr;
	}
	*data = ptr < top ? ptr + 1: ptr;

	return ha;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
movq $0x1505, 0x28(%rsp)     # imm = 0x1505
movq 0x40(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rcx
xorl %eax, %eax
cmpq 0x38(%rsp), %rcx
movb %al, 0x13(%rsp)
jae 0x77dd
movq 0x20(%rsp), %rax
movsbl (%rax), %eax
cmpl $0xa, %eax
setne %al
movb %al, 0x13(%rsp)
movb 0x13(%rsp), %al
testb $0x1, %al
jne 0x77ea
jmp 0x79ad
callq 0x1140
movq (%rax), %rax
movq 0x20(%rsp), %rcx
movzbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
je 0x7974
movq 0x20(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rcx
addq $0x1, %rcx
xorl %eax, %eax
cmpq 0x38(%rsp), %rcx
movb %al, 0x12(%rsp)
jae 0x786b
callq 0x1140
movq (%rax), %rax
movq 0x20(%rsp), %rcx
movzbl 0x1(%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %ecx
andl $0x2000, %ecx           # imm = 0x2000
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0x12(%rsp)
je 0x786b
movq 0x20(%rsp), %rax
movsbl 0x1(%rax), %eax
cmpl $0xa, %eax
setne %al
movb %al, 0x12(%rsp)
movb 0x12(%rsp), %al
testb $0x1, %al
jne 0x7875
jmp 0x7885
movq 0x20(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x20(%rsp)
jmp 0x7819
movq 0x38(%rsp), %rcx
movq 0x20(%rsp), %rdx
addq $0x1, %rdx
movb $0x1, %al
cmpq %rdx, %rcx
movb %al, 0x11(%rsp)
jbe 0x78b1
movq 0x20(%rsp), %rax
movsbl 0x1(%rax), %eax
cmpl $0xa, %eax
sete %al
movb %al, 0x11(%rsp)
movb 0x11(%rsp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x14(%rsp)
movq 0x30(%rsp), %rax
andq $0x4, %rax
cmpq $0x0, %rax
je 0x78d2
jmp 0x7972
movq 0x30(%rsp), %rax
andq $0x8, %rax
cmpq $0x0, %rax
je 0x790b
cmpl $0x0, 0x14(%rsp)
jne 0x790b
movq 0x28(%rsp), %rax
shlq $0x5, %rax
addq 0x28(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rax
xorq $0x20, %rax
movq %rax, 0x28(%rsp)
jmp 0x7970
movq 0x30(%rsp), %rax
andq $0x10, %rax
cmpq $0x0, %rax
je 0x796e
cmpl $0x0, 0x14(%rsp)
jne 0x796e
jmp 0x7923
movq 0x18(%rsp), %rax
movq 0x20(%rsp), %rcx
addq $0x1, %rcx
cmpq %rcx, %rax
je 0x796c
movq 0x28(%rsp), %rax
shlq $0x5, %rax
addq 0x28(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x18(%rsp), %rax
movsbq (%rax), %rax
xorq 0x28(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0x7923
jmp 0x796e
jmp 0x7970
jmp 0x7972
jmp 0x799a
movq 0x28(%rsp), %rax
shlq $0x5, %rax
addq 0x28(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x20(%rsp), %rax
movsbq (%rax), %rax
xorq 0x28(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x20(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x20(%rsp)
jmp 0x77b9
movq 0x20(%rsp), %rax
cmpq 0x38(%rsp), %rax
jae 0x79c9
movq 0x20(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x8(%rsp)
jmp 0x79d3
movq 0x20(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rcx
movq 0x40(%rsp), %rax
movq %rcx, (%rax)
movq 0x28(%rsp), %rax
addq $0x48, %rsp
retq
nopw (%rax,%rax)