// File: /workspace/github_c_makefile_star2_O0/excess-c64[P]lib1541img/src/lib/1541img/lynx.c
// Function: findLynxHeader
static int findLynxHeader(size_t *sigpos, uint8_t *dirblocks, size_t *dirpos,
	const uint8_t *content, size_t size)
{
    size_t pos = *sigpos;
    while (pos < size && content[pos] == 0x20) ++pos;
    if (pos == size) return -1;
    if (content[pos] < 0x31 || content[pos] > 0x39) return -1;
    uint8_t blocks = content[pos] - 0x30;
    if (++pos == size) return -1;
    if (content[pos] > 0x2f && content[pos] < 0x3a)
    {
	blocks *= 10;
	blocks += (content[pos] - 0x30);
	if (++pos == size) return -1;
    }
    if (content[pos] > 0x2f && content[pos] < 0x3a) return -1;
    while (pos < size && content[pos] == 0x20) ++pos;
    size_t sigp = pos;
    while (pos < size && content[pos] != 0x0d)
    {
	if (!content[pos]) return -1;
	++pos;
    }
    if (++pos > size - 5) return -1;
    *sigpos = sigp;
    *dirblocks = blocks;
    *dirpos = pos;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0x49(%rbp)
jae 0x112b7
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x20, %eax
sete %al
movb %al, -0x49(%rbp)
movb -0x49(%rbp), %al
testb $0x1, %al
jne 0x112c0
jmp 0x112ce
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0x11293
movq -0x38(%rbp), %rax
cmpq -0x30(%rbp), %rax
jne 0x112e4
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x114b3
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x31, %eax
jl 0x11306
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x39, %eax
jle 0x11312
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x114b3
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
movzbl (%rax,%rcx), %eax
subl $0x30, %eax
movb %al, -0x39(%rbp)
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
cmpq -0x30(%rbp), %rax
jne 0x11342
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x114b3
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x2f, %eax
jle 0x113a6
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x3a, %eax
jge 0x113a6
movzbl -0x39(%rbp), %eax
imull $0xa, %eax, %eax
movb %al, -0x39(%rbp)
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
movzbl (%rax,%rcx), %ecx
subl $0x30, %ecx
movzbl -0x39(%rbp), %eax
addl %ecx, %eax
movb %al, -0x39(%rbp)
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
cmpq -0x30(%rbp), %rax
jne 0x113a4
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x114b3
jmp 0x113a6
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x2f, %eax
jle 0x113d4
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x3a, %eax
jge 0x113d4
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x114b3
jmp 0x113d6
movq -0x38(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0x4a(%rbp)
jae 0x113fa
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x20, %eax
sete %al
movb %al, -0x4a(%rbp)
movb -0x4a(%rbp), %al
testb $0x1, %al
jne 0x11403
jmp 0x11411
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0x113d6
movq -0x38(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x38(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0x4b(%rbp)
jae 0x1143d
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0xd, %eax
setne %al
movb %al, -0x4b(%rbp)
movb -0x4b(%rbp), %al
testb $0x1, %al
jne 0x11446
jmp 0x1146b
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
jne 0x1145d
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x114b3
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0x11419
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rcx
subq $0x5, %rcx
cmpq %rcx, %rax
jbe 0x1148d
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x114b3
movq -0x48(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
movb -0x39(%rbp), %cl
movq -0x18(%rbp), %rax
movb %cl, (%rax)
movq -0x38(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
popq %rbp
retq
nopl (%rax,%rax)