// File: /workspace/github_c_makefile_star2_O0/LemonBoy[P]autobahn/xdiff/xprepare.c
// Function: xdl_classify_record
static int xdl_classify_record(unsigned int pass, xdlclassifier_t *cf, xrecord_t **rhash,
			       unsigned int hbits, xrecord_t *rec) {
	long hi;
	char const *line;
	xdlclass_t *rcrec;
	xdlclass_t **rcrecs;

	line = rec->ptr;
	hi = (long) XDL_HASHLONG(rec->ha, cf->hbits);
	for (rcrec = cf->rchash[hi]; rcrec; rcrec = rcrec->next)
		if (rcrec->ha == rec->ha &&
				xdl_recmatch(rcrec->line, rcrec->size,
					rec->ptr, rec->size, cf->flags))
			break;

	if (!rcrec) {
		if (!(rcrec = xdl_cha_alloc(&cf->ncha))) {

			return -1;
		}
		rcrec->idx = cf->count++;
		if (cf->count > cf->alloc) {
			cf->alloc *= 2;
			if (!(rcrecs = (xdlclass_t **) xdl_realloc(cf->rcrecs, cf->alloc * sizeof(xdlclass_t *)))) {

				return -1;
			}
			cf->rcrecs = rcrecs;
		}
		cf->rcrecs[rcrec->idx] = rcrec;
		rcrec->line = line;
		rcrec->size = rec->size;
		rcrec->ha = rec->ha;
		rcrec->len1 = rcrec->len2 = 0;
		rcrec->next = cf->rchash[hi];
		cf->rchash[hi] = rcrec;
	}

	(pass == 1) ? rcrec->len1++ : rcrec->len2++;

	rec->ha = (unsigned long) rcrec->idx;

	hi = (long) XDL_HASHLONG(rec->ha, hbits);
	rec->next = rhash[hi];
	rhash[hi] = rec;

	return 0;
}

// Assembly:
subq $0x48, %rsp
movl %edi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
movl %ecx, 0x2c(%rsp)
movq %r8, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x20(%rsp), %rax
movq 0x18(%rax), %rax
movq 0x20(%rsp), %rcx
movq 0x18(%rcx), %rdx
movq 0x38(%rsp), %rcx
movl (%rcx), %ecx
shrq %cl, %rdx
movq %rdx, %rcx
addq %rcx, %rax
movq 0x38(%rsp), %rcx
movl (%rcx), %ecx
movl $0x1, %edx
shlq %cl, %rdx
movq %rdx, %rcx
subq $0x1, %rcx
andq %rcx, %rax
movq %rax, 0x18(%rsp)
movq 0x38(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
je 0x6186
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x20(%rsp), %rcx
cmpq 0x18(%rcx), %rax
jne 0x6175
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rsi
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rdx
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x38(%rsp), %rax
movq 0x68(%rax), %r8
callq 0x7190
cmpl $0x0, %eax
je 0x6175
jmp 0x6186
jmp 0x6177
movq 0x8(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x8(%rsp)
jmp 0x6120
cmpq $0x0, 0x8(%rsp)
jne 0x62d0
movq 0x38(%rsp), %rdi
addq $0x18, %rdi
callq 0x6e80
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
jne 0x61b8
movl $0xffffffff, 0x44(%rsp) # imm = 0xFFFFFFFF
jmp 0x6378
movq 0x38(%rsp), %rax
movq 0x60(%rax), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, 0x60(%rax)
movq 0x8(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x38(%rsp), %rax
movq 0x60(%rax), %rax
movq 0x38(%rsp), %rcx
cmpq 0x58(%rcx), %rax
jle 0x6238
movq 0x38(%rsp), %rax
movq 0x58(%rax), %rcx
shlq %rcx
movq %rcx, 0x58(%rax)
movq 0x38(%rsp), %rax
movq 0x50(%rax), %rdi
movq 0x38(%rsp), %rax
movq 0x58(%rax), %rsi
shlq $0x3, %rsi
callq 0x1100
movq %rax, (%rsp)
cmpq $0x0, %rax
jne 0x622b
movl $0xffffffff, 0x44(%rsp) # imm = 0xFFFFFFFF
jmp 0x6378
movq (%rsp), %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x50(%rax)
movq 0x8(%rsp), %rdx
movq 0x38(%rsp), %rax
movq 0x50(%rax), %rax
movq 0x8(%rsp), %rcx
movq 0x20(%rcx), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x20(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rax
movq $0x0, 0x30(%rax)
movq 0x8(%rsp), %rax
movq $0x0, 0x28(%rax)
movq 0x38(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rsp), %rcx
movq (%rax,%rcx,8), %rcx
movq 0x8(%rsp), %rax
movq %rcx, (%rax)
movq 0x8(%rsp), %rdx
movq 0x38(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
cmpl $0x1, 0x40(%rsp)
jne 0x62ea
movq 0x8(%rsp), %rax
movq 0x28(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x28(%rax)
jmp 0x62fb
movq 0x8(%rsp), %rax
movq 0x30(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x30(%rax)
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x20(%rsp), %rax
movq 0x18(%rax), %rax
movq 0x20(%rsp), %rcx
movq 0x18(%rcx), %rdx
movl 0x2c(%rsp), %ecx
shrq %cl, %rdx
movq %rdx, %rcx
addq %rcx, %rax
movl 0x2c(%rsp), %ecx
movl $0x1, %edx
shlq %cl, %rdx
movq %rdx, %rcx
subq $0x1, %rcx
andq %rcx, %rax
movq %rax, 0x18(%rsp)
movq 0x30(%rsp), %rax
movq 0x18(%rsp), %rcx
movq (%rax,%rcx,8), %rcx
movq 0x20(%rsp), %rax
movq %rcx, (%rax)
movq 0x20(%rsp), %rdx
movq 0x30(%rsp), %rax
movq 0x18(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
movl $0x0, 0x44(%rsp)
movl 0x44(%rsp), %eax
addq $0x48, %rsp
retq
nopw %cs:(%rax,%rax)