int slam_encode(unsigned char **ptr, unsigned char *end, unsigned long value) {
  unsigned char *data = *ptr;
  int bytes;
  bytes = sizeof(value);
  while ((bytes > 0) && ((0xff & (value >> ((bytes - 1) << 3))) == 0)) {
    bytes--;
  }
  if (bytes <= 0) {
    bytes = 1;
  }
  if (data + bytes >= end) {
    return -1;
  }
  if ((0xe0 & (value >> ((bytes - 1) << 3))) == 0) {
    *data = (bytes << 5) | (value >> ((bytes - 1) << 3));
  } else {
    bytes++;
    *data = (bytes << 5);
  }
  bytes--;
  data++;
  while (bytes) {
    *(data++) = 0xff & (value >> ((bytes - 1) << 3));
    bytes--;
  }
  *ptr = data;
  return 0;
}


x86 assembly (clang, -O0):
<slam_encode>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x28(%rbp)
movl   $0x8,-0x2c(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x2c(%rbp)
mov    %al,-0x2d(%rbp)
jle    1153 <slam_encode+0x53>
mov    -0x20(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x3,%ecx
mov    %ecx,%ecx
shr    %cl,%rax
and    $0xff,%rax
cmp    $0x0,%rax
sete   %al
mov    %al,-0x2d(%rbp)
mov    -0x2d(%rbp),%al
test   $0x1,%al
jne    1163 <slam_encode+0x63>
jmp    1171 <slam_encode+0x71>
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    1122 <slam_encode+0x22>
cmpl   $0x0,-0x2c(%rbp)
jg     1182 <slam_encode+0x82>
movl   $0x1,-0x2c(%rbp)
mov    -0x28(%rbp),%rax
movslq -0x2c(%rbp),%rcx
add    %rcx,%rax
cmp    -0x18(%rbp),%rax
jb     11a3 <slam_encode+0xa3>
movl   $0xffffffff,-0x4(%rbp)
jmp    1273 <slam_encode+0x173>
mov    -0x20(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x3,%ecx
mov    %ecx,%ecx
shr    %cl,%rax
and    $0xe0,%rax
cmp    $0x0,%rax
jne    11f2 <slam_encode+0xf2>
mov    -0x2c(%rbp),%eax
shl    $0x5,%eax
cltq
mov    -0x20(%rbp),%rdx
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x3,%ecx
mov    %ecx,%ecx
shr    %cl,%rdx
mov    %rdx,%rcx
or     %rcx,%rax
mov    %al,%cl
mov    -0x28(%rbp),%rax
mov    %cl,(%rax)
jmp    1209 <slam_encode+0x109>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
shl    $0x5,%eax
mov    %al,%cl
mov    -0x28(%rbp),%rax
mov    %cl,(%rax)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
cmpl   $0x0,-0x2c(%rbp)
je     1261 <slam_encode+0x161>
mov    -0x20(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x3,%ecx
mov    %ecx,%ecx
shr    %cl,%rax
and    $0xff,%rax
mov    %al,%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    121e <slam_encode+0x11e>
mov    -0x28(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<slam_encode>:
push   %r14
push   %rbx
mov    (%rdi),%r11
mov    %rdx,%rax
shr    $0x38,%rax
mov    $0x8,%r8d
jne    1185 <slam_encode+0x85>
mov    $0x7,%r8d
movabs $0xff000000000000,%rax
test   %rax,%rdx
jne    1185 <slam_encode+0x85>
mov    $0x6,%r8d
movabs $0xff0000000000,%rax
test   %rax,%rdx
jne    1185 <slam_encode+0x85>
mov    $0x5,%r8d
movabs $0xff00000000,%rax
test   %rax,%rdx
jne    1185 <slam_encode+0x85>
mov    $0x4,%r8d
test   $0xff000000,%edx
jne    1185 <slam_encode+0x85>
mov    $0x3,%r8d
test   $0xff0000,%edx
jne    1185 <slam_encode+0x85>
mov    %edx,%eax
and    $0xff00,%eax
cmp    $0x1,%rax
mov    $0x2,%r8d
sbb    $0x0,%r8d
mov    %r8d,%ecx
add    %r11,%rcx
mov    $0xffffffff,%eax
cmp    %rsi,%rcx
jae    186e <slam_encode+0x76e>
lea    0x0(,%r8,8),%ecx
add    $0xf8,%cl
mov    %rdx,%rax
shr    %cl,%rax
lea    0x1(%r8),%ecx
mov    %ecx,%r9d
shl    $0x5,%r9b
mov    %r8d,%esi
shl    $0x5,%esi
mov    %eax,%ebx
or     %esi,%ebx
test   $0xe0,%al
movzbl %r9b,%eax
cmove  %ebx,%eax
cmove  %r8d,%ecx
mov    %al,(%r11)
lea    0x1(%r11),%rax
mov    %ecx,%esi
add    $0xffffffff,%esi
je     1869 <slam_encode+0x769>
mov    %esi,%esi
lea    -0x2(%rcx),%r8d
cmp    $0xf,%r8d
jb     1850 <slam_encode+0x750>
add    $0x1,%r8
mov    %r8,%r9
and    $0xfffffffffffffff0,%r9
movd   %ecx,%xmm0
pshufd $0x0,%xmm0,%xmm6
movdqa 0xdf6(%rip),%xmm4
paddd  %xmm6,%xmm4
movdqa 0xdf9(%rip),%xmm10
paddd  %xmm6,%xmm10
movdqa 0xdfc(%rip),%xmm3
paddd  %xmm6,%xmm3
paddd  0xe00(%rip),%xmm6
movq   %rdx,%xmm0
pshufd $0x44,%xmm0,%xmm12
lea    -0x10(%r9),%rbx
mov    %rbx,%r14
shr    $0x4,%r14
add    $0x1,%r14
test   %rbx,%rbx
je     1872 <slam_encode+0x772>
mov    %r14,%rbx
and    $0xfffffffffffffffe,%rbx
xor    %r10d,%r10d
nopl   (%rax)
movdqa %xmm4,-0x68(%rsp)
movdqa %xmm10,-0x38(%rsp)
movdqa %xmm3,-0x28(%rsp)
movdqa %xmm6,-0x18(%rsp)
movdqa %xmm6,%xmm5
pslld  $0x3,%xmm5
movdqa %xmm5,-0x48(%rsp)
movdqa %xmm3,%xmm13
pslld  $0x3,%xmm13
pslld  $0x3,%xmm10
movdqa -0x68(%rsp),%xmm4
pslld  $0x3,%xmm4
movdqa %xmm4,%xmm2
movdqa 0xd90(%rip),%xmm0
paddd  %xmm0,%xmm2
movdqa %xmm10,%xmm14
paddd  %xmm0,%xmm14
movdqa %xmm13,%xmm6
paddd  %xmm0,%xmm6
paddd  %xmm0,%xmm5
movdqa %xmm5,%xmm1
pxor   %xmm0,%xmm0
punpckhdq %xmm0,%xmm1
movdqa %xmm1,-0x58(%rsp)
movdqa %xmm6,%xmm11
punpckhdq %xmm0,%xmm11
pxor   %xmm9,%xmm9
xorps  %xmm15,%xmm15
movss  %xmm6,%xmm15
pxor   %xmm3,%xmm3
movss  %xmm14,%xmm3
pxor   %xmm0,%xmm0
movdqa %xmm2,%xmm1
punpckhdq %xmm9,%xmm1
movdqa %xmm12,%xmm7
psrlq  %xmm1,%xmm7
movss  %xmm2,%xmm0
movdqa %xmm2,%xmm8
psrldq $0xc,%xmm8
movdqa %xmm12,%xmm1
psrlq  %xmm8,%xmm1
movsd  %xmm7,%xmm1
movdqa %xmm12,%xmm7
psrlq  %xmm0,%xmm7
psrlq  $0x20,%xmm2
movdqa %xmm12,%xmm0
psrlq  %xmm2,%xmm0
movdqa %xmm12,%xmm8
psrlq  %xmm3,%xmm8
movdqa %xmm14,%xmm3
psrlq  $0x20,%xmm3
movdqa %xmm12,%xmm2
psrlq  %xmm3,%xmm2
movdqa %xmm14,%xmm3
punpckhdq %xmm9,%xmm3
movsd  %xmm7,%xmm0
movdqa %xmm12,%xmm9
psrlq  %xmm3,%xmm9
psrldq $0xc,%xmm14
movdqa %xmm12,%xmm3
psrlq  %xmm14,%xmm3
movdqa %xmm12,%xmm14
psrlq  %xmm15,%xmm14
movsd  %xmm8,%xmm2
movdqa %xmm6,%xmm8
psrlq  $0x20,%xmm8
movdqa %xmm12,%xmm15
psrlq  %xmm8,%xmm15
movdqa %xmm12,%xmm8
psrlq  %xmm11,%xmm8
pxor   %xmm11,%xmm11
movss  %xmm5,%xmm11
movsd  %xmm9,%xmm3
psrldq $0xc,%xmm6
movdqa %xmm12,%xmm9
psrlq  %xmm6,%xmm9
movsd  %xmm14,%xmm15
movdqa %xmm12,%xmm14
psrlq  %xmm11,%xmm14
movdqa %xmm5,%xmm11
psrlq  $0x20,%xmm11
movdqa %xmm12,%xmm6
psrlq  %xmm11,%xmm6
movdqa %xmm12,%xmm11
psrlq  -0x58(%rsp),%xmm11
movsd  %xmm8,%xmm9
psrldq $0xc,%xmm5
movdqa %xmm12,%xmm7
psrlq  %xmm5,%xmm7
movsd  %xmm14,%xmm6
movsd  %xmm11,%xmm7
movapd 0xc21(%rip),%xmm8
andpd  %xmm8,%xmm7
andpd  %xmm8,%xmm6
packuswb %xmm7,%xmm6
andpd  %xmm8,%xmm9
andpd  %xmm8,%xmm15
packuswb %xmm9,%xmm15
packuswb %xmm15,%xmm6
andpd  %xmm8,%xmm3
andpd  %xmm8,%xmm2
packuswb %xmm3,%xmm2
andpd  %xmm8,%xmm0
andpd  %xmm8,%xmm1
packuswb %xmm1,%xmm0
packuswb %xmm0,%xmm2
packuswb %xmm2,%xmm6
movdqu %xmm6,0x1(%r11,%r10,1)
movdqa 0xbdc(%rip),%xmm0
paddd  %xmm0,%xmm4
paddd  %xmm0,%xmm10
paddd  %xmm0,%xmm13
movdqa -0x48(%rsp),%xmm8
paddd  %xmm0,%xmm8
movdqa %xmm8,%xmm15
pxor   %xmm0,%xmm0
punpckhdq %xmm0,%xmm15
movdqa %xmm13,%xmm9
punpckhdq %xmm0,%xmm9
pxor   %xmm5,%xmm5
pxor   %xmm6,%xmm6
movss  %xmm13,%xmm6
xorpd  %xmm3,%xmm3
movss  %xmm10,%xmm3
pxor   %xmm0,%xmm0
movdqa %xmm4,%xmm1
punpckhdq %xmm5,%xmm1
movdqa %xmm12,%xmm7
psrlq  %xmm1,%xmm7
movss  %xmm4,%xmm0
movdqa %xmm4,%xmm2
psrldq $0xc,%xmm2
movdqa %xmm12,%xmm11
psrlq  %xmm2,%xmm11
movsd  %xmm7,%xmm11
movdqa %xmm12,%xmm2
psrlq  %xmm0,%xmm2
psrlq  $0x20,%xmm4
movdqa %xmm12,%xmm14
psrlq  %xmm4,%xmm14
movdqa %xmm12,%xmm7
psrlq  %xmm3,%xmm7
movdqa %xmm10,%xmm3
psrlq  $0x20,%xmm3
movdqa %xmm12,%xmm4
psrlq  %xmm3,%xmm4
movdqa %xmm10,%xmm3
punpckhdq %xmm5,%xmm3
movsd  %xmm2,%xmm14
movdqa %xmm12,%xmm2
psrlq  %xmm3,%xmm2
psrldq $0xc,%xmm10
movdqa %xmm12,%xmm3
psrlq  %xmm10,%xmm3
movdqa %xmm12,%xmm5
psrlq  %xmm6,%xmm5
movsd  %xmm7,%xmm4
movdqa %xmm13,%xmm7
psrlq  $0x20,%xmm7
movdqa %xmm12,%xmm6
psrlq  %xmm7,%xmm6
movdqa %xmm12,%xmm10
psrlq  %xmm9,%xmm10
pxor   %xmm1,%xmm1
movss  %xmm8,%xmm1
movsd  %xmm2,%xmm3
psrldq $0xc,%xmm13
movdqa %xmm12,%xmm2
psrlq  %xmm13,%xmm2
movsd  %xmm5,%xmm6
movdqa %xmm12,%xmm7
psrlq  %xmm1,%xmm7
movdqa %xmm8,%xmm1
psrlq  $0x20,%xmm1
movdqa %xmm12,%xmm5
psrlq  %xmm1,%xmm5
movdqa %xmm12,%xmm1
psrlq  %xmm15,%xmm1
movsd  %xmm10,%xmm2
psrldq $0xc,%xmm8
movdqa %xmm12,%xmm0
psrlq  %xmm8,%xmm0
movsd  %xmm7,%xmm5
movsd  %xmm1,%xmm0
movapd 0xa62(%rip),%xmm1
andpd  %xmm1,%xmm0
andpd  %xmm1,%xmm5
packuswb %xmm0,%xmm5
andpd  %xmm1,%xmm2
andpd  %xmm1,%xmm6
packuswb %xmm2,%xmm6
packuswb %xmm6,%xmm5
andpd  %xmm1,%xmm3
andpd  %xmm1,%xmm4
packuswb %xmm3,%xmm4
andpd  %xmm1,%xmm14
andpd  %xmm1,%xmm11
packuswb %xmm11,%xmm14
movdqa -0x18(%rsp),%xmm6
packuswb %xmm14,%xmm4
movdqa -0x28(%rsp),%xmm3
packuswb %xmm4,%xmm5
movdqa -0x68(%rsp),%xmm4
movdqu %xmm5,0x11(%r11,%r10,1)
add    $0x20,%r10
movdqa 0xa1d(%rip),%xmm0
paddd  %xmm0,%xmm6
paddd  %xmm0,%xmm3
movdqa -0x38(%rsp),%xmm10
paddd  %xmm0,%xmm10
paddd  %xmm0,%xmm4
add    $0xfffffffffffffffe,%rbx
jne    1260 <slam_encode+0x160>
test   $0x1,%r14b
je     183c <slam_encode+0x73c>
pslld  $0x3,%xmm6
pslld  $0x3,%xmm3
movdqa %xmm10,%xmm7
pslld  $0x3,%xmm7
pslld  $0x3,%xmm4
movdqa 0x9a0(%rip),%xmm0
paddd  %xmm0,%xmm4
paddd  %xmm0,%xmm7
paddd  %xmm0,%xmm3
paddd  %xmm0,%xmm6
pxor   %xmm0,%xmm0
movdqa %xmm6,%xmm8
punpckhdq %xmm0,%xmm8
pxor   %xmm9,%xmm9
movss  %xmm6,%xmm9
movdqa %xmm3,%xmm13
punpckhdq %xmm0,%xmm13
pxor   %xmm14,%xmm14
movss  %xmm3,%xmm14
movdqa %xmm7,%xmm15
punpckhdq %xmm0,%xmm15
xorpd  %xmm2,%xmm2
movss  %xmm7,%xmm2
movdqa %xmm4,%xmm1
punpckhdq %xmm0,%xmm1
movdqa %xmm4,%xmm5
movdqa %xmm12,%xmm4
psrlq  %xmm1,%xmm4
movss  %xmm5,%xmm0
movdqa %xmm5,%xmm1
psrldq $0xc,%xmm1
movdqa %xmm12,%xmm10
psrlq  %xmm1,%xmm10
movsd  %xmm4,%xmm10
movdqa %xmm12,%xmm4
psrlq  %xmm0,%xmm4
psrlq  $0x20,%xmm5
movdqa %xmm12,%xmm11
psrlq  %xmm5,%xmm11
movdqa %xmm12,%xmm5
psrlq  %xmm2,%xmm5
movsd  %xmm4,%xmm11
movdqa %xmm7,%xmm4
psrlq  $0x20,%xmm4
movdqa %xmm12,%xmm2
psrlq  %xmm4,%xmm2
movsd  %xmm5,%xmm2
movdqa %xmm12,%xmm4
psrlq  %xmm15,%xmm4
psrldq $0xc,%xmm7
movdqa %xmm12,%xmm0
psrlq  %xmm7,%xmm0
movdqa %xmm12,%xmm5
psrlq  %xmm14,%xmm5
movsd  %xmm4,%xmm0
movdqa %xmm3,%xmm4
psrlq  $0x20,%xmm4
movdqa %xmm12,%xmm7
psrlq  %xmm4,%xmm7
movsd  %xmm5,%xmm7
movdqa %xmm12,%xmm4
psrlq  %xmm13,%xmm4
psrldq $0xc,%xmm3
movdqa %xmm12,%xmm5
psrlq  %xmm3,%xmm5
movdqa %xmm12,%xmm1
psrlq  %xmm9,%xmm1
movsd  %xmm4,%xmm5
movdqa %xmm6,%xmm4
psrlq  $0x20,%xmm4
movdqa %xmm12,%xmm3
psrlq  %xmm4,%xmm3
movsd  %xmm1,%xmm3
movdqa %xmm12,%xmm1
psrlq  %xmm8,%xmm1
psrldq $0xc,%xmm6
psrlq  %xmm6,%xmm12
movsd  %xmm1,%xmm12
movapd 0x85c(%rip),%xmm1
andpd  %xmm1,%xmm12
andpd  %xmm1,%xmm3
packuswb %xmm12,%xmm3
andpd  %xmm1,%xmm5
andpd  %xmm1,%xmm7
packuswb %xmm5,%xmm7
packuswb %xmm7,%xmm3
andpd  %xmm1,%xmm0
andpd  %xmm1,%xmm2
packuswb %xmm0,%xmm2
andpd  %xmm1,%xmm11
andpd  %xmm1,%xmm10
packuswb %xmm10,%xmm11
packuswb %xmm11,%xmm2
packuswb %xmm2,%xmm3
movdqu %xmm3,(%rax,%r10,1)
add    %r9,%rax
cmp    %r9,%r8
je     1869 <slam_encode+0x769>
sub    %r9,%rsi
sub    %r9d,%ecx
nopw   0x0(%rax,%rax,1)
shl    $0x3,%ecx
add    $0xf0,%cl
mov    %rdx,%rbx
shr    %cl,%rbx
mov    %bl,(%rax)
add    $0x1,%rax
mov    %esi,%ecx
add    $0xffffffff,%esi
jne    1850 <slam_encode+0x750>
mov    %rax,(%rdi)
xor    %eax,%eax
pop    %rbx
pop    %r14
ret
xor    %r10d,%r10d
test   $0x1,%r14b
jne    167f <slam_encode+0x57f>
jmp    183c <slam_encode+0x73c>

LLVM IR (-O0):
define i32 @slam_encode(i8** %0, i8* %1, i64 %2) {
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i8*
%7 = alloca i64
%8 = alloca i8*
%9 = alloca i32
store i8** %0, i8*** %5
store i8* %1, i8** %6
store i64 %2, i64* %7
%10 = load i8**, i8*** %5
%11 = load i8*, i8** %10
store i8* %11, i8** %8
store i32 8, i32* %9
br label %12
12: ; preds = %26, %3
%13 = load i32, i32* %9
%14 = icmp sgt i32 %13, 0
br i1 %14, label %15, label %24
15: ; preds = %12
%16 = load i64, i64* %7
%17 = load i32, i32* %9
%18 = sub nsw i32 %17, 1
%19 = shl i32 %18, 3
%20 = zext i32 %19 to i64
%21 = lshr i64 %16, %20
%22 = and i64 255, %21
%23 = icmp eq i64 %22, 0
br label %24
24: ; preds = %15, %12
%25 = phi i1 [ false, %12 ], [ %23, %15 ]
br i1 %25, label %26, label %29
26: ; preds = %24
%27 = load i32, i32* %9
%28 = add nsw i32 %27, -1
store i32 %28, i32* %9
br label %12
29: ; preds = %24
%30 = load i32, i32* %9
%31 = icmp sle i32 %30, 0
br i1 %31, label %32, label %33
32: ; preds = %29
store i32 1, i32* %9
br label %33
33: ; preds = %32, %29
%34 = load i8*, i8** %8
%35 = load i32, i32* %9
%36 = sext i32 %35 to i64
%37 = getelementptr inbounds i8, i8* %34, i64 %36
%38 = load i8*, i8** %6
%39 = icmp uge i8* %37, %38
br i1 %39, label %40, label %41
40: ; preds = %33
store i32 -1, i32* %4
br label %94
41: ; preds = %33
%42 = load i64, i64* %7
%43 = load i32, i32* %9
%44 = sub nsw i32 %43, 1
%45 = shl i32 %44, 3
%46 = zext i32 %45 to i64
%47 = lshr i64 %42, %46
%48 = and i64 224, %47
%49 = icmp eq i64 %48, 0
br i1 %49, label %50, label %63
50: ; preds = %41
%51 = load i32, i32* %9
%52 = shl i32 %51, 5
%53 = sext i32 %52 to i64
%54 = load i64, i64* %7
%55 = load i32, i32* %9
%56 = sub nsw i32 %55, 1
%57 = shl i32 %56, 3
%58 = zext i32 %57 to i64
%59 = lshr i64 %54, %58
%60 = or i64 %53, %59
%61 = trunc i64 %60 to i8
%62 = load i8*, i8** %8
store i8 %61, i8* %62
br label %70
63: ; preds = %41
%64 = load i32, i32* %9
%65 = add nsw i32 %64, 1
store i32 %65, i32* %9
%66 = load i32, i32* %9
%67 = shl i32 %66, 5
%68 = trunc i32 %67 to i8
%69 = load i8*, i8** %8
store i8 %68, i8* %69
br label %70
70: ; preds = %63, %50
%71 = load i32, i32* %9
%72 = add nsw i32 %71, -1
store i32 %72, i32* %9
%73 = load i8*, i8** %8
%74 = getelementptr inbounds i8, i8* %73, i32 1
store i8* %74, i8** %8
br label %75
75: ; preds = %78, %70
%76 = load i32, i32* %9
%77 = icmp ne i32 %76, 0
br i1 %77, label %78, label %91
78: ; preds = %75
%79 = load i64, i64* %7
%80 = load i32, i32* %9
%81 = sub nsw i32 %80, 1
%82 = shl i32 %81, 3
%83 = zext i32 %82 to i64
%84 = lshr i64 %79, %83
%85 = and i64 255, %84
%86 = trunc i64 %85 to i8
%87 = load i8*, i8** %8
%88 = getelementptr inbounds i8, i8* %87, i32 1
store i8* %88, i8** %8
store i8 %86, i8* %87
%89 = load i32, i32* %9
%90 = add nsw i32 %89, -1
store i32 %90, i32* %9
br label %75
91: ; preds = %75
%92 = load i8*, i8** %8
%93 = load i8**, i8*** %5
store i8* %92, i8** %93
store i32 0, i32* %4
br label %94
94: ; preds = %91, %40
%95 = load i32, i32* %4
ret i32 %95
}

LLVM IR (-O2):
define i32 @slam_encode(i8** nocapture %0, i8* readnone %1, i64 %2) {
%4 = load i8*, i8** %0
%5 = icmp ult i64 %2, 72057594037927936
br i1 %5, label %6, label %25
6: ; preds = %3
%7 = and i64 %2, 71776119061217280
%8 = icmp eq i64 %7, 0
br i1 %8, label %9, label %25
9: ; preds = %6
%10 = and i64 %2, 280375465082880
%11 = icmp eq i64 %10, 0
br i1 %11, label %12, label %25
12: ; preds = %9
%13 = and i64 %2, 1095216660480
%14 = icmp eq i64 %13, 0
br i1 %14, label %15, label %25
15: ; preds = %12
%16 = and i64 %2, 4278190080
%17 = icmp eq i64 %16, 0
br i1 %17, label %18, label %25
18: ; preds = %15
%19 = and i64 %2, 16711680
%20 = icmp eq i64 %19, 0
br i1 %20, label %21, label %25
21: ; preds = %18
%22 = and i64 %2, 65280
%23 = icmp eq i64 %22, 0
%24 = select i1 %23, i32 1, i32 2
br label %25
25: ; preds = %21, %18, %15, %12, %9, %6, %3
%26 = phi i32 [ 3, %18 ], [ 4, %15 ], [ 5, %12 ], [ 6, %9 ], [ 7, %6 ], [ 8, %3 ], [ %24, %21 ]
%27 = zext i32 %26 to i64
%28 = getelementptr inbounds i8, i8* %4, i64 %27
%29 = icmp ult i8* %28, %1
br i1 %29, label %30, label %130
30: ; preds = %25
%31 = shl nuw nsw i32 %26, 3
%32 = add nsw i32 %31, -8
%33 = zext i32 %32 to i64
%34 = lshr i64 %2, %33
%35 = and i64 %34, 224
%36 = icmp eq i64 %35, 0
%37 = add nuw nsw i32 %26, 1
%38 = trunc i32 %37 to i8
%39 = shl i8 %38, 5
%40 = shl nuw nsw i32 %26, 5
%41 = zext i32 %40 to i64
%42 = or i64 %34, %41
%43 = trunc i64 %42 to i8
%44 = select i1 %36, i8 %43, i8 %39
%45 = select i1 %36, i32 %26, i32 %37
store i8 %44, i8* %4
%46 = getelementptr inbounds i8, i8* %4, i64 1
%47 = add nsw i32 %45, -1
%48 = icmp eq i32 %47, 0
br i1 %48, label %128, label %49
49: ; preds = %30
%50 = zext i32 %47 to i64
%51 = add nsw i32 %45, -2
%52 = zext i32 %51 to i64
%53 = add nuw nsw i64 %52, 1
%54 = icmp ult i32 %51, 15
br i1 %54, label %110, label %55
55: ; preds = %49
%56 = and i64 %53, 8589934576
%57 = sub nsw i64 %50, %56
%58 = getelementptr i8, i8* %46, i64 %56
%59 = trunc i64 %56 to i32
%60 = sub i32 %45, %59
%61 = insertelement <16 x i32> poison, i32 %45, i64 0
%62 = shufflevector <16 x i32> %61, <16 x i32> poison, <16 x i32> zeroinitializer
%63 = add nsw <16 x i32> %62, <i32 0, i32 -1, i32 -2, i32 -3, i32 -4, i32 -5, i32 -6, i32 -7, i32 -8, i32 -9, i32 -10, i32 -11, i32 -12, i32 -13, i32 -14, i32 -15>
%64 = insertelement <16 x i64> poison, i64 %2, i64 0
%65 = shufflevector <16 x i64> %64, <16 x i64> poison, <16 x i32> zeroinitializer
%66 = add nsw i64 %56, -16
%67 = lshr exact i64 %66, 4
%68 = add nuw nsw i64 %67, 1
%69 = and i64 %68, 1
%70 = icmp eq i64 %66, 0
br i1 %70, label %96, label %71
71: ; preds = %55
%72 = and i64 %68, 2305843009213693950
br label %73
73: ; preds = %73, %71
%74 = phi i64 [ 0, %71 ], [ %92, %73 ]
%75 = phi <16 x i32> [ %63, %71 ], [ %93, %73 ]
%76 = phi i64 [ 0, %71 ], [ %94, %73 ]
%77 = getelementptr i8, i8* %46, i64 %74
%78 = shl <16 x i32> %75, <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>
%79 = add <16 x i32> %78, <i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16>
%80 = zext <16 x i32> %79 to <16 x i64>
%81 = lshr <16 x i64> %65, %80
%82 = trunc <16 x i64> %81 to <16 x i8>
%83 = bitcast i8* %77 to <16 x i8>*
store <16 x i8> %82, <16 x i8>* %83
%84 = or i64 %74, 16
%85 = getelementptr i8, i8* %46, i64 %84
%86 = shl <16 x i32> %75, <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>
%87 = add <16 x i32> %86, <i32 -144, i32 -144, i32 -144, i32 -144, i32 -144, i32 -144, i32 -144, i32 -144, i32 -144, i32 -144, i32 -144, i32 -144, i32 -144, i32 -144, i32 -144, i32 -144>
%88 = zext <16 x i32> %87 to <16 x i64>
%89 = lshr <16 x i64> %65, %88
%90 = trunc <16 x i64> %89 to <16 x i8>
%91 = bitcast i8* %85 to <16 x i8>*
store <16 x i8> %90, <16 x i8>* %91
%92 = add nuw i64 %74, 32
%93 = add <16 x i32> %75, <i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32>
%94 = add i64 %76, 2
%95 = icmp eq i64 %94, %72
br i1 %95, label %96, label %73
96: ; preds = %73, %55
%97 = phi i64 [ 0, %55 ], [ %92, %73 ]
%98 = phi <16 x i32> [ %63, %55 ], [ %93, %73 ]
%99 = icmp eq i64 %69, 0
br i1 %99, label %108, label %100
100: ; preds = %96
%101 = getelementptr i8, i8* %46, i64 %97
%102 = shl <16 x i32> %98, <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>
%103 = add <16 x i32> %102, <i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16>
%104 = zext <16 x i32> %103 to <16 x i64>
%105 = lshr <16 x i64> %65, %104
%106 = trunc <16 x i64> %105 to <16 x i8>
%107 = bitcast i8* %101 to <16 x i8>*
store <16 x i8> %106, <16 x i8>* %107
br label %108
108: ; preds = %96, %100
%109 = icmp eq i64 %53, %56
br i1 %109, label %128, label %110
110: ; preds = %49, %108
%111 = phi i64 [ %50, %49 ], [ %57, %108 ]
%112 = phi i8* [ %46, %49 ], [ %58, %108 ]
%113 = phi i32 [ %45, %49 ], [ %60, %108 ]
br label %114
114: ; preds = %110, %114
%115 = phi i64 [ %124, %114 ], [ %111, %110 ]
%116 = phi i8* [ %123, %114 ], [ %112, %110 ]
%117 = phi i32 [ %127, %114 ], [ %113, %110 ]
%118 = shl i32 %117, 3
%119 = add i32 %118, -16
%120 = zext i32 %119 to i64
%121 = lshr i64 %2, %120
%122 = trunc i64 %121 to i8
store i8 %122, i8* %116
%123 = getelementptr inbounds i8, i8* %116, i64 1
%124 = add nsw i64 %115, -1
%125 = trunc i64 %124 to i32
%126 = icmp eq i32 %125, 0
%127 = trunc i64 %115 to i32
br i1 %126, label %128, label %114
128: ; preds = %114, %108, %30
%129 = phi i8* [ %46, %30 ], [ %58, %108 ], [ %123, %114 ]
store i8* %129, i8** %0
br label %130
130: ; preds = %25, %128
%131 = phi i32 [ 0, %128 ], [ -1, %25 ]
ret i32 %131
}