// File: /workspace/github_c_makefile_star2_O0/aligrudi[P]neatmkfn/otf.c
// Function: cff_op
static int cff_op(void *tab, int off, int *val)
{
	int b0 = U8(tab, off);
	int i;
	if (b0 >= 32 && b0 <= 246) {
		*val = b0 - 139;
		return 1;
	}
	if (b0 >= 247 && b0 <= 250) {
		*val = (b0 - 247) * 256 + U8(tab, off + 1) + 108;
		return 2;
	}
	if (b0 >= 251 && b0 <= 254) {
		*val = -(b0 - 251) * 256 - U8(tab, off + 1) - 108;
		return 2;
	}
	if (b0 == 28) {
		*val = (U8(tab, off + 1) << 8) | U8(tab, off + 2);
		return 3;
	}
	if (b0 == 29) {
		*val = (U8(tab, off + 1) << 24) | (U8(tab, off + 2) << 16) |
			(U8(tab, off + 3) << 8) | U8(tab, off + 4);
		return 5;
	}
	if (b0 == 30) {
		for (i = 1; i < 32; i++) {
			int nib = U8(tab, off + i);
			if ((nib & 0x0f) == 0x0f || (nib & 0xf0) == 0xf0)
				break;
		}
		*val = 0;
		return i + 1;
	}
	*val = b0;
	return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0x24(%rbp)
cmpl $0x20, -0x24(%rbp)
jl 0x41568
cmpl $0xf6, -0x24(%rbp)
jg 0x41568
movl -0x24(%rbp), %ecx
subl $0x8b, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0x41713
cmpl $0xf7, -0x24(%rbp)
jl 0x415ae
cmpl $0xfa, -0x24(%rbp)
jg 0x415ae
movl -0x24(%rbp), %ecx
subl $0xf7, %ecx
shll $0x8, %ecx
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl (%rax,%rdx), %eax
addl %eax, %ecx
addl $0x6c, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x2, -0x4(%rbp)
jmp 0x41713
cmpl $0xfb, -0x24(%rbp)
jl 0x415f7
cmpl $0xfe, -0x24(%rbp)
jg 0x415f7
movl -0x24(%rbp), %eax
subl $0xfb, %eax
xorl %ecx, %ecx
subl %eax, %ecx
shll $0x8, %ecx
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl (%rax,%rdx), %eax
subl %eax, %ecx
subl $0x6c, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x2, -0x4(%rbp)
jmp 0x41713
cmpl $0x1c, -0x24(%rbp)
jne 0x41636
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %ecx
shll $0x8, %ecx
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl (%rax,%rdx), %eax
orl %eax, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x3, -0x4(%rbp)
jmp 0x41713
cmpl $0x1d, -0x24(%rbp)
jne 0x4169e
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %ecx
shll $0x18, %ecx
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl (%rax,%rdx), %eax
shll $0x10, %eax
orl %eax, %ecx
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl (%rax,%rdx), %eax
shll $0x8, %eax
orl %eax, %ecx
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %edx
addl $0x4, %edx
movslq %edx, %rdx
movzbl (%rax,%rdx), %eax
orl %eax, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x5, -0x4(%rbp)
jmp 0x41713
cmpl $0x1e, -0x24(%rbp)
jne 0x41703
movl $0x1, -0x28(%rbp)
cmpl $0x20, -0x28(%rbp)
jge 0x416ee
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl -0x28(%rbp), %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
andl $0xf, %eax
cmpl $0xf, %eax
je 0x416df
movl -0x2c(%rbp), %eax
andl $0xf0, %eax
cmpl $0xf0, %eax
jne 0x416e1
jmp 0x416ee
jmp 0x416e3
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x416ab
movq -0x20(%rbp), %rax
movl $0x0, (%rax)
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x41713
movl -0x24(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
popq %rbp
retq
nopl (%rax,%rax)