// File: attractivechaos[P]udb2/stb/./stb.h
// Function: stb_fget_varlen64
stb_uint64   stb_fget_varlen64(FILE *f)
{
   stb_uint64 z;
   unsigned char d;
   d = stb_fgetc(f);

   if (d >= 0x80) {
      if (d >= 0xc0) {
         if (d >= 0xe0) {
            if (d >= 0xf0) {
               if (d >= 0xf8) {
                  if (d >= 0xfc) {
                     if (d >= 0xfe) {
                        if (d >= 0xff)
                           z = (stb_uint64) stb_fgetc(f) << 56;
                        else
                           z = (stb_uint64) (d - 0xfe) << 56;
                        z |= (stb_uint64) stb_fgetc(f) << 48;
                     } else z = (stb_uint64) (d - 0xfc) << 48;
                     z |= (stb_uint64) stb_fgetc(f) << 40;
                  } else z = (stb_uint64) (d - 0xf8) << 40;
                  z |= (stb_uint64) stb_fgetc(f) << 32;
               } else z = (stb_uint64) (d - 0xf0) << 32;
               z |= (stb_uint) stb_fgetc(f) << 24;
            } else z = (stb_uint) (d - 0xe0) << 24;
            z |= (stb_uint) stb_fgetc(f) << 16;
         } else z = (stb_uint) (d - 0xc0) << 16;
         z |= (stb_uint) stb_fgetc(f) << 8;
      } else z = (stb_uint) (d - 0x80) << 8;
      z |= stb_fgetc(f);
   } else
      z = d;

   return (z & 1) ? ~(z >> 1) : (z >> 1);
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq 0x20(%rsp), %rdi
callq 0x2180
movb %al, 0x17(%rsp)
movzbl 0x17(%rsp), %eax
cmpl $0x80, %eax
jl 0xe8d1
movzbl 0x17(%rsp), %eax
cmpl $0xc0, %eax
jl 0xe8a4
movzbl 0x17(%rsp), %eax
cmpl $0xe0, %eax
jl 0xe872
movzbl 0x17(%rsp), %eax
cmpl $0xf0, %eax
jl 0xe840
movzbl 0x17(%rsp), %eax
cmpl $0xf8, %eax
jl 0xe80d
movzbl 0x17(%rsp), %eax
cmpl $0xfc, %eax
jl 0xe7db
movzbl 0x17(%rsp), %eax
cmpl $0xfe, %eax
jl 0xe7a9
movzbl 0x17(%rsp), %eax
cmpl $0xff, %eax
jl 0xe777
movq 0x20(%rsp), %rdi
callq 0x2180
movzbl %al, %eax
shlq $0x38, %rax
movq %rax, 0x18(%rsp)
jmp 0xe78c
movzbl 0x17(%rsp), %eax
subl $0xfe, %eax
cltq
shlq $0x38, %rax
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rdi
callq 0x2180
movzbl %al, %eax
shlq $0x30, %rax
orq 0x18(%rsp), %rax
movq %rax, 0x18(%rsp)
jmp 0xe7be
movzbl 0x17(%rsp), %eax
subl $0xfc, %eax
cltq
shlq $0x30, %rax
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rdi
callq 0x2180
movzbl %al, %eax
shlq $0x28, %rax
orq 0x18(%rsp), %rax
movq %rax, 0x18(%rsp)
jmp 0xe7f0
movzbl 0x17(%rsp), %eax
subl $0xf8, %eax
cltq
shlq $0x28, %rax
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rdi
callq 0x2180
movzbl %al, %eax
shlq $0x20, %rax
orq 0x18(%rsp), %rax
movq %rax, 0x18(%rsp)
jmp 0xe822
movzbl 0x17(%rsp), %eax
subl $0xf0, %eax
cltq
shlq $0x20, %rax
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rdi
callq 0x2180
movzbl %al, %eax
shll $0x18, %eax
movl %eax, %eax
orq 0x18(%rsp), %rax
movq %rax, 0x18(%rsp)
jmp 0xe854
movzbl 0x17(%rsp), %eax
subl $0xe0, %eax
shll $0x18, %eax
movl %eax, %eax
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rdi
callq 0x2180
movzbl %al, %eax
shll $0x10, %eax
movl %eax, %eax
orq 0x18(%rsp), %rax
movq %rax, 0x18(%rsp)
jmp 0xe886
movzbl 0x17(%rsp), %eax
subl $0xc0, %eax
shll $0x10, %eax
movl %eax, %eax
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rdi
callq 0x2180
movzbl %al, %eax
shll $0x8, %eax
movl %eax, %eax
orq 0x18(%rsp), %rax
movq %rax, 0x18(%rsp)
jmp 0xe8b8
movzbl 0x17(%rsp), %eax
subl $0x80, %eax
shll $0x8, %eax
movl %eax, %eax
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rdi
callq 0x2180
movzbl %al, %eax
orq 0x18(%rsp), %rax
movq %rax, 0x18(%rsp)
jmp 0xe8db
movzbl 0x17(%rsp), %eax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0xe8fd
movq 0x18(%rsp), %rax
shrq %rax
xorq $-0x1, %rax
movq %rax, 0x8(%rsp)
jmp 0xe90a
movq 0x18(%rsp), %rax
shrq %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)