#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
float scale(float, unsigned long long, int);
float scale_time(float, unsigned long long);
void obixNormalizer(unsigned long long int *vib, float *value) {
  if ((*vib & ~(0x07)) == (0x00)) {
    *value = scale(*value, (*vib & (0x07)), (3));
    *vib = (0x00) + (3);
    return;
  };
  if ((*vib & ~(0x07)) == (0x08)) {
    *value = scale(*value, (*vib & (0x07)), (0));
    *vib = (0x08) + (0);
    return;
  };
  if ((*vib & ~(0x07)) == (0x10)) {
    *value = scale(*value, (*vib & (0x07)), (6));
    *vib = (0x10) + (6);
    return;
  };
  if ((*vib & ~(0x07)) == (0x18)) {
    *value = scale(*value, (*vib & (0x07)), (3));
    *vib = (0x18) + (3);
    return;
  };
  if ((*vib & ~0x03) == (0x20)) {
    *value = scale_time(*value, (*vib & 0x03));
    *vib = (0x20);
    return;
  };
  if ((*vib & ~0x03) == (0x24)) {
    *value = scale_time(*value, (*vib & 0x03));
    *vib = (0x24);
    return;
  };
  if ((*vib & ~(0x07)) == (0x28)) {
    *value = scale(*value, (*vib & (0x07)), (3));
    *vib = (0x28) + (3);
    return;
  };
  if ((*vib & ~(0x07)) == (0x30)) {
    *value = scale(*value, (*vib & (0x07)), (0));
    *vib = (0x30) + (0);
    return;
  };
  if ((*vib & ~(0x07)) == (0x38)) {
    *value = scale(*value, (*vib & (0x07)), (6));
    *vib = (0x38) + (6);
    return;
  };
  if ((*vib & ~(0x07)) == (0x40)) {
    *value = scale(*value, (*vib & (0x07)), (7));
    *vib = (0x40) + (7);
    return;
  };
  if ((*vib & ~(0x07)) == (0x48)) {
    *value = scale(*value, (*vib & (0x07)), (9));
    *vib = (0x48) + (9);
    return;
  };
  if ((*vib & ~(0x07)) == (0x50)) {
    *value = scale(*value, (*vib & (0x07)), (3));
    *vib = (0x50) + (3);
    return;
  };
  if ((*vib & ~(0x03)) == (0x58)) {
    *value = scale(*value, (*vib & (0x03)), (3));
    *vib = (0x58) + (3);
    return;
  };
  if ((*vib & ~(0x03)) == (0x5C)) {
    *value = scale(*value, (*vib & (0x03)), (3));
    *vib = (0x5C) + (3);
    return;
  };
  if ((*vib & ~(0x03)) == (0x60)) {
    *value = scale(*value, (*vib & (0x03)), (3));
    *vib = (0x60) + (3);
    return;
  };
  if ((*vib & ~(0x03)) == (0x64)) {
    *value = scale(*value, (*vib & (0x03)), (3));
    *vib = (0x64) + (3);
    return;
  };
  if ((*vib & ~(0x03)) == (0x68)) {
    *value = scale(*value, (*vib & (0x03)), (3));
    *vib = (0x68) + (3);
    return;
  };
  if ((*vib & ~0x03) == (0x70)) {
    *value = scale_time(*value, (*vib & 0x03));
    *vib = (0x70);
    return;
  };
  if ((*vib & ~0x03) == (0x74)) {
    *value = scale_time(*value, (*vib & 0x03));
    *vib = (0x74);
    return;
  };
  if ((*vib & ~(0x0F)) == (0xFD40)) {
    *value = scale(*value, (*vib & (0x0F)), (9));
    *vib = (0xFD40) + (9);
    return;
  };
  if ((*vib & ~(0x0F)) == (0xFD50)) {
    *value = scale(*value, (*vib & (0x0F)), (12));
    *vib = (0xFD50) + (12);
    return;
  };
}


x86 assembly (clang, -O0):
<obixNormalizer>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffff8,%rax
cmp    $0x0,%rax
jne    117a <obixNormalizer+0x5a>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x7,%rdi
mov    $0x3,%esi
call   1030 <scale@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x3,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffff8,%rax
cmp    $0x8,%rax
jne    11c1 <obixNormalizer+0xa1>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x7,%rdi
xor    %esi,%esi
call   1030 <scale@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x8,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffff8,%rax
cmp    $0x10,%rax
jne    120b <obixNormalizer+0xeb>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x7,%rdi
mov    $0x6,%esi
call   1030 <scale@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x16,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffff8,%rax
cmp    $0x18,%rax
jne    1255 <obixNormalizer+0x135>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x7,%rdi
mov    $0x3,%esi
call   1030 <scale@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x1b,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffffc,%rax
cmp    $0x20,%rax
jne    129a <obixNormalizer+0x17a>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x3,%rdi
call   1040 <scale_time@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x20,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffffc,%rax
cmp    $0x24,%rax
jne    12df <obixNormalizer+0x1bf>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x3,%rdi
call   1040 <scale_time@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x24,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffff8,%rax
cmp    $0x28,%rax
jne    1329 <obixNormalizer+0x209>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x7,%rdi
mov    $0x3,%esi
call   1030 <scale@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x2b,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffff8,%rax
cmp    $0x30,%rax
jne    1370 <obixNormalizer+0x250>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x7,%rdi
xor    %esi,%esi
call   1030 <scale@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x30,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffff8,%rax
cmp    $0x38,%rax
jne    13ba <obixNormalizer+0x29a>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x7,%rdi
mov    $0x6,%esi
call   1030 <scale@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x3e,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffff8,%rax
cmp    $0x40,%rax
jne    1404 <obixNormalizer+0x2e4>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x7,%rdi
mov    $0x7,%esi
call   1030 <scale@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x47,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffff8,%rax
cmp    $0x48,%rax
jne    144e <obixNormalizer+0x32e>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x7,%rdi
mov    $0x9,%esi
call   1030 <scale@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x51,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffff8,%rax
cmp    $0x50,%rax
jne    1498 <obixNormalizer+0x378>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x7,%rdi
mov    $0x3,%esi
call   1030 <scale@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x53,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffffc,%rax
cmp    $0x58,%rax
jne    14e2 <obixNormalizer+0x3c2>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x3,%rdi
mov    $0x3,%esi
call   1030 <scale@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x5b,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffffc,%rax
cmp    $0x5c,%rax
jne    152c <obixNormalizer+0x40c>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x3,%rdi
mov    $0x3,%esi
call   1030 <scale@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x5f,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffffc,%rax
cmp    $0x60,%rax
jne    1576 <obixNormalizer+0x456>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x3,%rdi
mov    $0x3,%esi
call   1030 <scale@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x63,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffffc,%rax
cmp    $0x64,%rax
jne    15c0 <obixNormalizer+0x4a0>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x3,%rdi
mov    $0x3,%esi
call   1030 <scale@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x67,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffffc,%rax
cmp    $0x68,%rax
jne    160a <obixNormalizer+0x4ea>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x3,%rdi
mov    $0x3,%esi
call   1030 <scale@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x6b,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffffc,%rax
cmp    $0x70,%rax
jne    164f <obixNormalizer+0x52f>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x3,%rdi
call   1040 <scale_time@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x70,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffffc,%rax
cmp    $0x74,%rax
jne    1694 <obixNormalizer+0x574>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0x3,%rdi
call   1040 <scale_time@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0x74,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffff0,%rax
cmp    $0xfd40,%rax
jne    16e0 <obixNormalizer+0x5c0>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0xf,%rdi
mov    $0x9,%esi
call   1030 <scale@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0xfd49,(%rax)
jmp    1727 <obixNormalizer+0x607>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
and    $0xfffffffffffffff0,%rax
cmp    $0xfd50,%rax
jne    1727 <obixNormalizer+0x607>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rdi
and    $0xf,%rdi
mov    $0xc,%esi
call   1030 <scale@plt>
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movq   $0xfd5c,(%rax)
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<obixNormalizer>:
push   %r14
push   %rbx
push   %rax
mov    %rsi,%r14
mov    %rdi,%rbx
mov    (%rdi),%rdi
mov    %rdi,%rax
shr    $0x3,%rax
cmp    $0x3,%rax
ja     1166 <obixNormalizer+0x46>
lea    0xebf(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movss  (%r14),%xmm0
and    $0x7,%edi
mov    $0x3,%esi
call   1030 <scale@plt>
mov    $0x3,%eax
jmp    11e7 <obixNormalizer+0xc7>
mov    %rdi,%rax
and    $0xfffffffffffffffc,%rax
cmp    $0x24,%rax
je     11d5 <obixNormalizer+0xb5>
cmp    $0x20,%rax
jne    11f7 <obixNormalizer+0xd7>
movss  (%r14),%xmm0
and    $0x3,%edi
call   1040 <scale_time@plt>
mov    $0x20,%eax
jmp    11e7 <obixNormalizer+0xc7>
movss  (%r14),%xmm0
and    $0x7,%edi
xor    %esi,%esi
call   1030 <scale@plt>
mov    $0x8,%eax
jmp    11e7 <obixNormalizer+0xc7>
movss  (%r14),%xmm0
and    $0x7,%edi
mov    $0x6,%esi
call   1030 <scale@plt>
mov    $0x16,%eax
jmp    11e7 <obixNormalizer+0xc7>
movss  (%r14),%xmm0
and    $0x7,%edi
mov    $0x3,%esi
call   1030 <scale@plt>
mov    $0x1b,%eax
jmp    11e7 <obixNormalizer+0xc7>
movss  (%r14),%xmm0
and    $0x3,%edi
call   1040 <scale_time@plt>
mov    $0x24,%eax
movss  %xmm0,(%r14)
mov    %rax,(%rbx)
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret
lea    -0x28(%rdi),%rcx
shr    $0x3,%rcx
cmp    $0x5,%rcx
ja     1247 <obixNormalizer+0x127>
lea    0xe04(%rip),%rax
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
movss  (%r14),%xmm0
and    $0x7,%edi
mov    $0x3,%esi
call   1030 <scale@plt>
mov    $0x2b,%eax
jmp    11e7 <obixNormalizer+0xc7>
movss  (%r14),%xmm0
and    $0x7,%edi
mov    $0x9,%esi
call   1030 <scale@plt>
mov    $0x51,%eax
jmp    11e7 <obixNormalizer+0xc7>
add    $0xffffffffffffffa8,%rax
shr    $0x2,%rax
cmp    $0x7,%rax
ja     1362 <obixNormalizer+0x242>
lea    0xdc8(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movss  (%r14),%xmm0
and    $0x3,%edi
mov    $0x3,%esi
call   1030 <scale@plt>
mov    $0x5b,%eax
jmp    11e7 <obixNormalizer+0xc7>
movss  (%r14),%xmm0
and    $0x7,%edi
xor    %esi,%esi
call   1030 <scale@plt>
mov    $0x30,%eax
jmp    11e7 <obixNormalizer+0xc7>
movss  (%r14),%xmm0
and    $0x7,%edi
mov    $0x6,%esi
call   1030 <scale@plt>
mov    $0x3e,%eax
jmp    11e7 <obixNormalizer+0xc7>
movss  (%r14),%xmm0
and    $0x7,%edi
mov    $0x7,%esi
call   1030 <scale@plt>
mov    $0x47,%eax
jmp    11e7 <obixNormalizer+0xc7>
movss  (%r14),%xmm0
and    $0x7,%edi
mov    $0x3,%esi
call   1030 <scale@plt>
mov    $0x53,%eax
jmp    11e7 <obixNormalizer+0xc7>
movss  (%r14),%xmm0
and    $0x3,%edi
mov    $0x3,%esi
call   1030 <scale@plt>
mov    $0x5f,%eax
jmp    11e7 <obixNormalizer+0xc7>
movss  (%r14),%xmm0
and    $0x3,%edi
mov    $0x3,%esi
call   1030 <scale@plt>
mov    $0x63,%eax
jmp    11e7 <obixNormalizer+0xc7>
movss  (%r14),%xmm0
and    $0x3,%edi
mov    $0x3,%esi
call   1030 <scale@plt>
mov    $0x67,%eax
jmp    11e7 <obixNormalizer+0xc7>
movss  (%r14),%xmm0
and    $0x3,%edi
mov    $0x3,%esi
call   1030 <scale@plt>
mov    $0x6b,%eax
jmp    11e7 <obixNormalizer+0xc7>
mov    %rdi,%rax
and    $0xfffffffffffffff0,%rax
cmp    $0xfd50,%rax
je     13c7 <obixNormalizer+0x2a7>
cmp    $0xfd40,%rax
jne    11ef <obixNormalizer+0xcf>
movss  (%r14),%xmm0
and    $0xf,%edi
mov    $0x9,%esi
call   1030 <scale@plt>
mov    $0xfd49,%eax
jmp    11e7 <obixNormalizer+0xc7>
movss  (%r14),%xmm0
and    $0x3,%edi
call   1040 <scale_time@plt>
mov    $0x70,%eax
jmp    11e7 <obixNormalizer+0xc7>
movss  (%r14),%xmm0
and    $0x3,%edi
call   1040 <scale_time@plt>
mov    $0x74,%eax
jmp    11e7 <obixNormalizer+0xc7>
movss  (%r14),%xmm0
and    $0xf,%edi
mov    $0xc,%esi
call   1030 <scale@plt>
mov    $0xfd5c,%eax
jmp    11e7 <obixNormalizer+0xc7>

LLVM IR (-O0):
define void @obixNormalizer(i64* %0, float* %1) {
%3 = alloca i64*
%4 = alloca float*
store i64* %0, i64** %3
store float* %1, float** %4
%5 = load i64*, i64** %3
%6 = load i64, i64* %5
%7 = and i64 %6, -8
%8 = icmp eq i64 %7, 0
br i1 %8, label %9, label %18
9: ; preds = %2
%10 = load float*, float** %4
%11 = load float, float* %10
%12 = load i64*, i64** %3
%13 = load i64, i64* %12
%14 = and i64 %13, 7
%15 = call float @scale(float %11, i64 %14, i32 3)
%16 = load float*, float** %4
store float %15, float* %16
%17 = load i64*, i64** %3
store i64 3, i64* %17
br label %298
18: ; preds = %2
%19 = load i64*, i64** %3
%20 = load i64, i64* %19
%21 = and i64 %20, -8
%22 = icmp eq i64 %21, 8
br i1 %22, label %23, label %32
23: ; preds = %18
%24 = load float*, float** %4
%25 = load float, float* %24
%26 = load i64*, i64** %3
%27 = load i64, i64* %26
%28 = and i64 %27, 7
%29 = call float @scale(float %25, i64 %28, i32 0)
%30 = load float*, float** %4
store float %29, float* %30
%31 = load i64*, i64** %3
store i64 8, i64* %31
br label %298
32: ; preds = %18
%33 = load i64*, i64** %3
%34 = load i64, i64* %33
%35 = and i64 %34, -8
%36 = icmp eq i64 %35, 16
br i1 %36, label %37, label %46
37: ; preds = %32
%38 = load float*, float** %4
%39 = load float, float* %38
%40 = load i64*, i64** %3
%41 = load i64, i64* %40
%42 = and i64 %41, 7
%43 = call float @scale(float %39, i64 %42, i32 6)
%44 = load float*, float** %4
store float %43, float* %44
%45 = load i64*, i64** %3
store i64 22, i64* %45
br label %298
46: ; preds = %32
%47 = load i64*, i64** %3
%48 = load i64, i64* %47
%49 = and i64 %48, -8
%50 = icmp eq i64 %49, 24
br i1 %50, label %51, label %60
51: ; preds = %46
%52 = load float*, float** %4
%53 = load float, float* %52
%54 = load i64*, i64** %3
%55 = load i64, i64* %54
%56 = and i64 %55, 7
%57 = call float @scale(float %53, i64 %56, i32 3)
%58 = load float*, float** %4
store float %57, float* %58
%59 = load i64*, i64** %3
store i64 27, i64* %59
br label %298
60: ; preds = %46
%61 = load i64*, i64** %3
%62 = load i64, i64* %61
%63 = and i64 %62, -4
%64 = icmp eq i64 %63, 32
br i1 %64, label %65, label %74
65: ; preds = %60
%66 = load float*, float** %4
%67 = load float, float* %66
%68 = load i64*, i64** %3
%69 = load i64, i64* %68
%70 = and i64 %69, 3
%71 = call float @scale_time(float %67, i64 %70)
%72 = load float*, float** %4
store float %71, float* %72
%73 = load i64*, i64** %3
store i64 32, i64* %73
br label %298
74: ; preds = %60
%75 = load i64*, i64** %3
%76 = load i64, i64* %75
%77 = and i64 %76, -4
%78 = icmp eq i64 %77, 36
br i1 %78, label %79, label %88
79: ; preds = %74
%80 = load float*, float** %4
%81 = load float, float* %80
%82 = load i64*, i64** %3
%83 = load i64, i64* %82
%84 = and i64 %83, 3
%85 = call float @scale_time(float %81, i64 %84)
%86 = load float*, float** %4
store float %85, float* %86
%87 = load i64*, i64** %3
store i64 36, i64* %87
br label %298
88: ; preds = %74
%89 = load i64*, i64** %3
%90 = load i64, i64* %89
%91 = and i64 %90, -8
%92 = icmp eq i64 %91, 40
br i1 %92, label %93, label %102
93: ; preds = %88
%94 = load float*, float** %4
%95 = load float, float* %94
%96 = load i64*, i64** %3
%97 = load i64, i64* %96
%98 = and i64 %97, 7
%99 = call float @scale(float %95, i64 %98, i32 3)
%100 = load float*, float** %4
store float %99, float* %100
%101 = load i64*, i64** %3
store i64 43, i64* %101
br label %298
102: ; preds = %88
%103 = load i64*, i64** %3
%104 = load i64, i64* %103
%105 = and i64 %104, -8
%106 = icmp eq i64 %105, 48
br i1 %106, label %107, label %116
107: ; preds = %102
%108 = load float*, float** %4
%109 = load float, float* %108
%110 = load i64*, i64** %3
%111 = load i64, i64* %110
%112 = and i64 %111, 7
%113 = call float @scale(float %109, i64 %112, i32 0)
%114 = load float*, float** %4
store float %113, float* %114
%115 = load i64*, i64** %3
store i64 48, i64* %115
br label %298
116: ; preds = %102
%117 = load i64*, i64** %3
%118 = load i64, i64* %117
%119 = and i64 %118, -8
%120 = icmp eq i64 %119, 56
br i1 %120, label %121, label %130
121: ; preds = %116
%122 = load float*, float** %4
%123 = load float, float* %122
%124 = load i64*, i64** %3
%125 = load i64, i64* %124
%126 = and i64 %125, 7
%127 = call float @scale(float %123, i64 %126, i32 6)
%128 = load float*, float** %4
store float %127, float* %128
%129 = load i64*, i64** %3
store i64 62, i64* %129
br label %298
130: ; preds = %116
%131 = load i64*, i64** %3
%132 = load i64, i64* %131
%133 = and i64 %132, -8
%134 = icmp eq i64 %133, 64
br i1 %134, label %135, label %144
135: ; preds = %130
%136 = load float*, float** %4
%137 = load float, float* %136
%138 = load i64*, i64** %3
%139 = load i64, i64* %138
%140 = and i64 %139, 7
%141 = call float @scale(float %137, i64 %140, i32 7)
%142 = load float*, float** %4
store float %141, float* %142
%143 = load i64*, i64** %3
store i64 71, i64* %143
br label %298
144: ; preds = %130
%145 = load i64*, i64** %3
%146 = load i64, i64* %145
%147 = and i64 %146, -8
%148 = icmp eq i64 %147, 72
br i1 %148, label %149, label %158
149: ; preds = %144
%150 = load float*, float** %4
%151 = load float, float* %150
%152 = load i64*, i64** %3
%153 = load i64, i64* %152
%154 = and i64 %153, 7
%155 = call float @scale(float %151, i64 %154, i32 9)
%156 = load float*, float** %4
store float %155, float* %156
%157 = load i64*, i64** %3
store i64 81, i64* %157
br label %298
158: ; preds = %144
%159 = load i64*, i64** %3
%160 = load i64, i64* %159
%161 = and i64 %160, -8
%162 = icmp eq i64 %161, 80
br i1 %162, label %163, label %172
163: ; preds = %158
%164 = load float*, float** %4
%165 = load float, float* %164
%166 = load i64*, i64** %3
%167 = load i64, i64* %166
%168 = and i64 %167, 7
%169 = call float @scale(float %165, i64 %168, i32 3)
%170 = load float*, float** %4
store float %169, float* %170
%171 = load i64*, i64** %3
store i64 83, i64* %171
br label %298
172: ; preds = %158
%173 = load i64*, i64** %3
%174 = load i64, i64* %173
%175 = and i64 %174, -4
%176 = icmp eq i64 %175, 88
br i1 %176, label %177, label %186
177: ; preds = %172
%178 = load float*, float** %4
%179 = load float, float* %178
%180 = load i64*, i64** %3
%181 = load i64, i64* %180
%182 = and i64 %181, 3
%183 = call float @scale(float %179, i64 %182, i32 3)
%184 = load float*, float** %4
store float %183, float* %184
%185 = load i64*, i64** %3
store i64 91, i64* %185
br label %298
186: ; preds = %172
%187 = load i64*, i64** %3
%188 = load i64, i64* %187
%189 = and i64 %188, -4
%190 = icmp eq i64 %189, 92
br i1 %190, label %191, label %200
191: ; preds = %186
%192 = load float*, float** %4
%193 = load float, float* %192
%194 = load i64*, i64** %3
%195 = load i64, i64* %194
%196 = and i64 %195, 3
%197 = call float @scale(float %193, i64 %196, i32 3)
%198 = load float*, float** %4
store float %197, float* %198
%199 = load i64*, i64** %3
store i64 95, i64* %199
br label %298
200: ; preds = %186
%201 = load i64*, i64** %3
%202 = load i64, i64* %201
%203 = and i64 %202, -4
%204 = icmp eq i64 %203, 96
br i1 %204, label %205, label %214
205: ; preds = %200
%206 = load float*, float** %4
%207 = load float, float* %206
%208 = load i64*, i64** %3
%209 = load i64, i64* %208
%210 = and i64 %209, 3
%211 = call float @scale(float %207, i64 %210, i32 3)
%212 = load float*, float** %4
store float %211, float* %212
%213 = load i64*, i64** %3
store i64 99, i64* %213
br label %298
214: ; preds = %200
%215 = load i64*, i64** %3
%216 = load i64, i64* %215
%217 = and i64 %216, -4
%218 = icmp eq i64 %217, 100
br i1 %218, label %219, label %228
219: ; preds = %214
%220 = load float*, float** %4
%221 = load float, float* %220
%222 = load i64*, i64** %3
%223 = load i64, i64* %222
%224 = and i64 %223, 3
%225 = call float @scale(float %221, i64 %224, i32 3)
%226 = load float*, float** %4
store float %225, float* %226
%227 = load i64*, i64** %3
store i64 103, i64* %227
br label %298
228: ; preds = %214
%229 = load i64*, i64** %3
%230 = load i64, i64* %229
%231 = and i64 %230, -4
%232 = icmp eq i64 %231, 104
br i1 %232, label %233, label %242
233: ; preds = %228
%234 = load float*, float** %4
%235 = load float, float* %234
%236 = load i64*, i64** %3
%237 = load i64, i64* %236
%238 = and i64 %237, 3
%239 = call float @scale(float %235, i64 %238, i32 3)
%240 = load float*, float** %4
store float %239, float* %240
%241 = load i64*, i64** %3
store i64 107, i64* %241
br label %298
242: ; preds = %228
%243 = load i64*, i64** %3
%244 = load i64, i64* %243
%245 = and i64 %244, -4
%246 = icmp eq i64 %245, 112
br i1 %246, label %247, label %256
247: ; preds = %242
%248 = load float*, float** %4
%249 = load float, float* %248
%250 = load i64*, i64** %3
%251 = load i64, i64* %250
%252 = and i64 %251, 3
%253 = call float @scale_time(float %249, i64 %252)
%254 = load float*, float** %4
store float %253, float* %254
%255 = load i64*, i64** %3
store i64 112, i64* %255
br label %298
256: ; preds = %242
%257 = load i64*, i64** %3
%258 = load i64, i64* %257
%259 = and i64 %258, -4
%260 = icmp eq i64 %259, 116
br i1 %260, label %261, label %270
261: ; preds = %256
%262 = load float*, float** %4
%263 = load float, float* %262
%264 = load i64*, i64** %3
%265 = load i64, i64* %264
%266 = and i64 %265, 3
%267 = call float @scale_time(float %263, i64 %266)
%268 = load float*, float** %4
store float %267, float* %268
%269 = load i64*, i64** %3
store i64 116, i64* %269
br label %298
270: ; preds = %256
%271 = load i64*, i64** %3
%272 = load i64, i64* %271
%273 = and i64 %272, -16
%274 = icmp eq i64 %273, 64832
br i1 %274, label %275, label %284
275: ; preds = %270
%276 = load float*, float** %4
%277 = load float, float* %276
%278 = load i64*, i64** %3
%279 = load i64, i64* %278
%280 = and i64 %279, 15
%281 = call float @scale(float %277, i64 %280, i32 9)
%282 = load float*, float** %4
store float %281, float* %282
%283 = load i64*, i64** %3
store i64 64841, i64* %283
br label %298
284: ; preds = %270
%285 = load i64*, i64** %3
%286 = load i64, i64* %285
%287 = and i64 %286, -16
%288 = icmp eq i64 %287, 64848
br i1 %288, label %289, label %298
289: ; preds = %284
%290 = load float*, float** %4
%291 = load float, float* %290
%292 = load i64*, i64** %3
%293 = load i64, i64* %292
%294 = and i64 %293, 15
%295 = call float @scale(float %291, i64 %294, i32 12)
%296 = load float*, float** %4
store float %295, float* %296
%297 = load i64*, i64** %3
store i64 64860, i64* %297
br label %298
298: ; preds = %9, %23, %37, %51, %65, %79, %93, %107, %121, %135, %149, %163, %177, %191, %205, %219, %233, %247, %261, %275, %289, %284
ret void
}

LLVM IR (-O2):
define void @obixNormalizer(i64* %0, float* %1) {
%3 = load i64, i64* %0
%4 = lshr i64 %3, 3
switch i64 %4, label %21 [
i64 0, label %5
i64 1, label %9
i64 2, label %13
i64 3, label %17
]
5: ; preds = %2
%6 = load float, float* %1
%7 = and i64 %3, 7
%8 = tail call float @scale(float %6, i64 %7, i32 3)
br label %99
9: ; preds = %2
%10 = load float, float* %1
%11 = and i64 %3, 7
%12 = tail call float @scale(float %10, i64 %11, i32 0)
br label %99
13: ; preds = %2
%14 = load float, float* %1
%15 = and i64 %3, 7
%16 = tail call float @scale(float %14, i64 %15, i32 6)
br label %99
17: ; preds = %2
%18 = load float, float* %1
%19 = and i64 %3, 7
%20 = tail call float @scale(float %18, i64 %19, i32 3)
br label %99
21: ; preds = %2
%22 = and i64 %3, -4
switch i64 %22, label %31 [
i64 32, label %23
i64 36, label %27
]
23: ; preds = %21
%24 = load float, float* %1
%25 = and i64 %3, 3
%26 = tail call float @scale_time(float %24, i64 %25)
br label %99
27: ; preds = %21
%28 = load float, float* %1
%29 = and i64 %3, 3
%30 = tail call float @scale_time(float %28, i64 %29)
br label %99
31: ; preds = %21
%32 = add i64 %3, -40
%33 = lshr i64 %32, 3
switch i64 %33, label %58 [
i64 0, label %34
i64 1, label %38
i64 2, label %42
i64 3, label %46
i64 4, label %50
i64 5, label %54
]
34: ; preds = %31
%35 = load float, float* %1
%36 = and i64 %3, 7
%37 = tail call float @scale(float %35, i64 %36, i32 3)
br label %99
38: ; preds = %31
%39 = load float, float* %1
%40 = and i64 %3, 7
%41 = tail call float @scale(float %39, i64 %40, i32 0)
br label %99
42: ; preds = %31
%43 = load float, float* %1
%44 = and i64 %3, 7
%45 = tail call float @scale(float %43, i64 %44, i32 6)
br label %99
46: ; preds = %31
%47 = load float, float* %1
%48 = and i64 %3, 7
%49 = tail call float @scale(float %47, i64 %48, i32 7)
br label %99
50: ; preds = %31
%51 = load float, float* %1
%52 = and i64 %3, 7
%53 = tail call float @scale(float %51, i64 %52, i32 9)
br label %99
54: ; preds = %31
%55 = load float, float* %1
%56 = and i64 %3, 7
%57 = tail call float @scale(float %55, i64 %56, i32 3)
br label %99
58: ; preds = %31
%59 = add i64 %22, -88
%60 = lshr exact i64 %59, 2
switch i64 %60, label %89 [
i64 0, label %61
i64 1, label %65
i64 2, label %69
i64 3, label %73
i64 4, label %77
i64 6, label %81
i64 7, label %85
]
61: ; preds = %58
%62 = load float, float* %1
%63 = and i64 %3, 3
%64 = tail call float @scale(float %62, i64 %63, i32 3)
br label %99
65: ; preds = %58
%66 = load float, float* %1
%67 = and i64 %3, 3
%68 = tail call float @scale(float %66, i64 %67, i32 3)
br label %99
69: ; preds = %58
%70 = load float, float* %1
%71 = and i64 %3, 3
%72 = tail call float @scale(float %70, i64 %71, i32 3)
br label %99
73: ; preds = %58
%74 = load float, float* %1
%75 = and i64 %3, 3
%76 = tail call float @scale(float %74, i64 %75, i32 3)
br label %99
77: ; preds = %58
%78 = load float, float* %1
%79 = and i64 %3, 3
%80 = tail call float @scale(float %78, i64 %79, i32 3)
br label %99
81: ; preds = %58
%82 = load float, float* %1
%83 = and i64 %3, 3
%84 = tail call float @scale_time(float %82, i64 %83)
br label %99
85: ; preds = %58
%86 = load float, float* %1
%87 = and i64 %3, 3
%88 = tail call float @scale_time(float %86, i64 %87)
br label %99
89: ; preds = %58
%90 = and i64 %3, -16
switch i64 %90, label %102 [
i64 64832, label %91
i64 64848, label %95
]
91: ; preds = %89
%92 = load float, float* %1
%93 = and i64 %3, 15
%94 = tail call float @scale(float %92, i64 %93, i32 9)
br label %99
95: ; preds = %89
%96 = load float, float* %1
%97 = and i64 %3, 15
%98 = tail call float @scale(float %96, i64 %97, i32 12)
br label %99
99: ; preds = %95, %91, %85, %81, %77, %73, %69, %65, %61, %54, %50, %46, %42, %38, %34, %27, %23, %17, %13, %9, %5
%100 = phi float [ %8, %5 ], [ %12, %9 ], [ %16, %13 ], [ %20, %17 ], [ %26, %23 ], [ %30, %27 ], [ %37, %34 ], [ %41, %38 ], [ %45, %42 ], [ %49, %46 ], [ %53, %50 ], [ %57, %54 ], [ %64, %61 ], [ %68, %65 ], [ %72, %69 ], [ %76, %73 ], [ %80, %77 ], [ %84, %81 ], [ %88, %85 ], [ %94, %91 ], [ %98, %95 ]
%101 = phi i64 [ 3, %5 ], [ 8, %9 ], [ 22, %13 ], [ 27, %17 ], [ 32, %23 ], [ 36, %27 ], [ 43, %34 ], [ 48, %38 ], [ 62, %42 ], [ 71, %46 ], [ 81, %50 ], [ 83, %54 ], [ 91, %61 ], [ 95, %65 ], [ 99, %69 ], [ 103, %73 ], [ 107, %77 ], [ 112, %81 ], [ 116, %85 ], [ 64841, %91 ], [ 64860, %95 ]
store float %100, float* %1
store i64 %101, i64* %0
br label %102
102: ; preds = %99, %89
ret void
}