void loadKeyTableRegion(unsigned char *translationTable, int first_MIDINote,
                        int last_MIDINote, int firstKey, int lastKey,
                        int transpose, int excursionStrategy) {
  if (excursionStrategy == 2) {
    int key, note;
    for (key = firstKey, note = first_MIDINote - transpose; key <= lastKey;
         key++, note++) {
      if (note < 1 || note > 127)
        continue;
      translationTable[note] = key;
    }
  } else {
    int note;
    int offset = transpose + firstKey - first_MIDINote;
    int firstKeyAdjust = firstKey + 12 - (firstKey % 12);
    int lastKeyAdjust = lastKey - (lastKey % 12) - 12;
    for (note = first_MIDINote; note <= last_MIDINote; note++) {
      int key = note + offset;
      if (key < firstKey) {
        key = (excursionStrategy == 1) ? firstKeyAdjust + (key % 12) : 255;
      } else if (lastKey < key) {
        key = (excursionStrategy == 1) ? lastKeyAdjust + (key % 12) : 255;
      }
      if ((key < firstKey) || (lastKey < key)) {
        key = 255;
      }
      translationTable[note] = key;
    }
  }
}


x86 assembly (clang, -O0):
<loadKeyTableRegion>:
push   %rbp
mov    %rsp,%rbp
mov    0x10(%rbp),%eax
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    %r8d,-0x18(%rbp)
mov    %r9d,-0x1c(%rbp)
cmpl   $0x2,0x10(%rbp)
jne    1186 <loadKeyTableRegion+0x86>
mov    -0x14(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0xc(%rbp),%eax
sub    -0x1c(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x18(%rbp),%eax
jg     1181 <loadKeyTableRegion+0x81>
cmpl   $0x1,-0x24(%rbp)
jl     1155 <loadKeyTableRegion+0x55>
cmpl   $0x7f,-0x24(%rbp)
jle    115a <loadKeyTableRegion+0x5a>
jmp    116a <loadKeyTableRegion+0x6a>
mov    -0x20(%rbp),%eax
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1135 <loadKeyTableRegion+0x35>
jmp    12bf <loadKeyTableRegion+0x1bf>
mov    -0x1c(%rbp),%eax
add    -0x14(%rbp),%eax
sub    -0xc(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x14(%rbp),%eax
add    $0xc,%eax
mov    %eax,-0x40(%rbp)
mov    -0x14(%rbp),%eax
mov    $0xc,%ecx
cltd
idiv   %ecx
mov    -0x40(%rbp),%eax
sub    %edx,%eax
mov    %eax,-0x30(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x18(%rbp),%eax
mov    $0xc,%ecx
cltd
idiv   %ecx
mov    -0x3c(%rbp),%eax
sub    %edx,%eax
sub    $0xc,%eax
mov    %eax,-0x34(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x28(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     12ba <loadKeyTableRegion+0x1ba>
mov    -0x28(%rbp),%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1231 <loadKeyTableRegion+0x131>
cmpl   $0x1,0x10(%rbp)
jne    1219 <loadKeyTableRegion+0x119>
mov    -0x30(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x38(%rbp),%eax
mov    $0xc,%ecx
cltd
idiv   %ecx
mov    -0x48(%rbp),%eax
add    %edx,%eax
mov    %eax,-0x44(%rbp)
jmp    1226 <loadKeyTableRegion+0x126>
mov    $0xff,%eax
mov    %eax,-0x44(%rbp)
jmp    1226 <loadKeyTableRegion+0x126>
mov    -0x44(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    127d <loadKeyTableRegion+0x17d>
mov    -0x18(%rbp),%eax
cmp    -0x38(%rbp),%eax
jge    1278 <loadKeyTableRegion+0x178>
cmpl   $0x1,0x10(%rbp)
jne    1265 <loadKeyTableRegion+0x165>
mov    -0x34(%rbp),%eax
mov    %eax,-0x50(%rbp)
mov    -0x38(%rbp),%eax
mov    $0xc,%ecx
cltd
idiv   %ecx
mov    -0x50(%rbp),%eax
add    %edx,%eax
mov    %eax,-0x4c(%rbp)
jmp    1272 <loadKeyTableRegion+0x172>
mov    $0xff,%eax
mov    %eax,-0x4c(%rbp)
jmp    1272 <loadKeyTableRegion+0x172>
mov    -0x4c(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    127d <loadKeyTableRegion+0x17d>
mov    -0x38(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     1295 <loadKeyTableRegion+0x195>
mov    -0x18(%rbp),%eax
cmp    -0x38(%rbp),%eax
jge    129c <loadKeyTableRegion+0x19c>
movl   $0xff,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    11d0 <loadKeyTableRegion+0xd0>
jmp    12bf <loadKeyTableRegion+0x1bf>
pop    %rbp
ret

x86 assembly (clang, -O2):
<loadKeyTableRegion>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x68,%rsp
mov    0xa0(%rsp),%r15d
cmp    $0x2,%r15d
jne    1164 <loadKeyTableRegion+0x64>
mov    %r8d,%eax
sub    %ecx,%eax
jl     1b11 <loadKeyTableRegion+0xa11>
sub    %r9d,%esi
lea    0x1(%rax),%r9d
cmp    $0x8,%r9d
jb     113c <loadKeyTableRegion+0x3c>
add    %esi,%eax
jae    19bb <loadKeyTableRegion+0x8bb>
mov    %ecx,%r10d
mov    %esi,%r14d
mov    %r8d,%eax
sub    %r10d,%eax
add    $0x1,%eax
test   $0x1,%al
jne    1945 <loadKeyTableRegion+0x845>
mov    %r10d,%ecx
cmp    %r8d,%r10d
jne    1966 <loadKeyTableRegion+0x866>
jmp    1b11 <loadKeyTableRegion+0xa11>
mov    %edx,%ebx
sub    %esi,%ebx
jl     1b11 <loadKeyTableRegion+0xa11>
movslq %ecx,%rax
imul   $0x2aaaaaab,%rax,%rax
mov    %rax,%rbp
shr    $0x3f,%rbp
sar    $0x21,%rax
add    %ebp,%eax
lea    (%rax,%rax,2),%eax
lea    0xc(,%rax,4),%r14d
movslq %r8d,%rax
imul   $0x2aaaaaab,%rax,%rax
mov    %rax,%rbp
shr    $0x3f,%rbp
sar    $0x21,%rax
add    %ebp,%eax
lea    (%rax,%rax,2),%eax
lea    -0xc(,%rax,4),%r11d
ff
movslq %esi,%r12
cmp    $0xf,%ebx
jae    11c2 <loadKeyTableRegion+0xc2>
mov    %r12,%rbx
jmp    1898 <loadKeyTableRegion+0x798>
mov    %edx,-0x78(%rsp)
mov    %ecx,%eax
sub    %esi,%eax
add    %r9d,%eax
add    $0x1,%rbx
xor    %r13d,%r13d
xor    %r10d,%r10d
cmp    $0x1,%r15d
sete   %r13b
setne  %r10b
mov    %rbx,%rdx
mov    %rbx,%rbp
and    $0xfffffffffffffff0,%rbp
movd   %esi,%xmm0
pshufd $0x0,%xmm0,%xmm1
movdqa 0xe02(%rip),%xmm2
paddd  %xmm1,%xmm2
movdqa 0xe06(%rip),%xmm3
paddd  %xmm1,%xmm3
movdqa 0xe0a(%rip),%xmm4
paddd  %xmm1,%xmm4
paddd  0xe0e(%rip),%xmm1
lea    0x0(%rbp,%r12,1),%rbx
movd   %eax,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqa %xmm0,(%rsp)
movd   %ecx,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqa %xmm0,-0x60(%rsp)
movd   %r8d,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqa %xmm0,-0x70(%rsp)
movd   %r10d,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqa %xmm0,-0x10(%rsp)
mov    %r11d,-0x74(%rsp)
movd   %r11d,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqa %xmm0,-0x20(%rsp)
mov    %r14d,%r10d
movd   %r14d,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqa %xmm0,-0x30(%rsp)
movd   %r13d,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqa 0xd90(%rip),%xmm5
movdqa %xmm0,-0x40(%rsp)
pxor   %xmm0,%xmm5
movdqa %xmm5,-0x50(%rsp)
add    %rdi,%r12
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movdqa %xmm4,0x20(%rsp)
movdqa %xmm3,0x30(%rsp)
movdqa %xmm2,0x40(%rsp)
movdqa %xmm1,0x50(%rsp)
movdqa (%rsp),%xmm15
movdqa %xmm15,%xmm9
paddd  %xmm2,%xmm9
movdqa %xmm15,%xmm11
paddd  %xmm3,%xmm11
movdqa %xmm15,%xmm12
paddd  %xmm4,%xmm12
paddd  %xmm1,%xmm15
movdqa -0x60(%rsp),%xmm2
movdqa %xmm2,%xmm0
pcmpgtd %xmm15,%xmm0
movdqa %xmm2,%xmm1
pcmpgtd %xmm12,%xmm1
packssdw %xmm1,%xmm0
movdqa %xmm2,%xmm1
pcmpgtd %xmm11,%xmm1
pcmpgtd %xmm9,%xmm2
packssdw %xmm2,%xmm1
packsswb %xmm1,%xmm0
movdqa %xmm15,%xmm4
movdqa -0x70(%rsp),%xmm2
pcmpgtd %xmm2,%xmm4
movdqa %xmm4,%xmm10
pcmpeqd %xmm3,%xmm3
pxor   %xmm3,%xmm10
movdqa %xmm12,%xmm7
pcmpgtd %xmm2,%xmm7
movdqa %xmm7,%xmm1
pxor   %xmm3,%xmm1
packssdw %xmm1,%xmm10
movdqa %xmm11,%xmm13
pcmpgtd %xmm2,%xmm13
movdqa %xmm13,%xmm1
pxor   %xmm3,%xmm1
movdqa %xmm9,%xmm8
pcmpgtd %xmm2,%xmm8
movdqa %xmm8,%xmm2
pxor   %xmm3,%xmm2
packssdw %xmm2,%xmm1
packsswb %xmm1,%xmm10
movdqa %xmm8,%xmm1
pandn  %xmm9,%xmm1
psrld  $0x18,%xmm8
por    %xmm1,%xmm8
movdqa %xmm13,%xmm1
pandn  %xmm11,%xmm1
psrld  $0x18,%xmm13
por    %xmm1,%xmm13
movdqa %xmm7,%xmm1
pandn  %xmm12,%xmm1
psrld  $0x18,%xmm7
por    %xmm1,%xmm7
movdqa %xmm4,%xmm1
pandn  %xmm15,%xmm1
psrld  $0x18,%xmm4
por    %xmm1,%xmm4
movdqa %xmm15,%xmm1
movdqa 0xc50(%rip),%xmm3
pmuludq %xmm3,%xmm1
pshufd $0xed,%xmm1,%xmm1
pshufd $0xf5,%xmm15,%xmm2
pmuludq %xmm3,%xmm2
pshufd $0xed,%xmm2,%xmm2
punpckldq %xmm2,%xmm1
pxor   %xmm2,%xmm2
pcmpgtd %xmm15,%xmm2
pand   %xmm3,%xmm2
psubd  %xmm2,%xmm1
movdqa %xmm1,%xmm2
psrld  $0x1f,%xmm2
psrad  $0x1,%xmm1
paddd  %xmm2,%xmm1
pshufd $0xf5,%xmm1,%xmm2
movdqa 0xc14(%rip),%xmm5
pmuludq %xmm5,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pmuludq %xmm5,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm1
psubd  %xmm1,%xmm15
movdqa %xmm12,%xmm1
pmuludq %xmm3,%xmm1
pshufd $0xed,%xmm1,%xmm1
pshufd $0xf5,%xmm12,%xmm2
pmuludq %xmm3,%xmm2
pshufd $0xed,%xmm2,%xmm2
punpckldq %xmm2,%xmm1
pxor   %xmm2,%xmm2
pcmpgtd %xmm12,%xmm2
pand   %xmm3,%xmm2
psubd  %xmm2,%xmm1
movdqa %xmm1,%xmm2
psrld  $0x1f,%xmm2
psrad  $0x1,%xmm1
paddd  %xmm2,%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm5,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pmuludq %xmm5,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm1
psubd  %xmm1,%xmm12
movdqa %xmm11,%xmm1
pmuludq %xmm3,%xmm1
pshufd $0xed,%xmm1,%xmm1
pshufd $0xf5,%xmm11,%xmm2
pmuludq %xmm3,%xmm2
pshufd $0xed,%xmm2,%xmm2
punpckldq %xmm2,%xmm1
pxor   %xmm2,%xmm2
pcmpgtd %xmm11,%xmm2
pand   %xmm3,%xmm2
psubd  %xmm2,%xmm1
movdqa %xmm1,%xmm2
psrld  $0x1f,%xmm2
psrad  $0x1,%xmm1
paddd  %xmm2,%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm5,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pmuludq %xmm5,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm1
psubd  %xmm1,%xmm11
movdqa %xmm9,%xmm1
pmuludq %xmm3,%xmm1
pshufd $0xed,%xmm1,%xmm1
pshufd $0xf5,%xmm9,%xmm2
pmuludq %xmm3,%xmm2
pshufd $0xed,%xmm2,%xmm2
punpckldq %xmm2,%xmm1
pxor   %xmm2,%xmm2
pcmpgtd %xmm9,%xmm2
pand   %xmm3,%xmm2
psubd  %xmm2,%xmm1
movdqa %xmm1,%xmm2
psrld  $0x1f,%xmm2
psrad  $0x1,%xmm1
paddd  %xmm2,%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm5,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pmuludq %xmm5,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm1
psubd  %xmm1,%xmm9
movdqa -0x20(%rsp),%xmm6
movdqa %xmm6,%xmm1
paddd  %xmm15,%xmm1
movdqa %xmm1,0x10(%rsp)
movdqa -0x30(%rsp),%xmm1
paddd  %xmm1,%xmm15
movdqa %xmm0,%xmm5
pand   -0x40(%rsp),%xmm5
movdqa %xmm5,%xmm3
punpcklbw %xmm3,%xmm3
movdqa %xmm3,%xmm14
punpcklwd %xmm14,%xmm14
pslld  $0x1f,%xmm14
psrad  $0x1f,%xmm14
pand   %xmm14,%xmm15
pandn  %xmm4,%xmm14
por    -0x10(%rsp),%xmm10
por    %xmm0,%xmm10
por    %xmm15,%xmm14
movdqa %xmm6,%xmm2
paddd  %xmm12,%xmm2
paddd  %xmm1,%xmm12
punpckhwd %xmm3,%xmm3
pslld  $0x1f,%xmm3
psrad  $0x1f,%xmm3
pand   %xmm3,%xmm12
pandn  %xmm7,%xmm3
movdqa %xmm6,%xmm15
paddd  %xmm11,%xmm15
paddd  %xmm1,%xmm11
por    %xmm12,%xmm3
punpckhbw %xmm5,%xmm5
movdqa %xmm5,%xmm4
punpcklwd %xmm4,%xmm4
pslld  $0x1f,%xmm4
psrad  $0x1f,%xmm4
pand   %xmm4,%xmm11
pandn  %xmm13,%xmm4
movdqa %xmm6,%xmm12
paddd  %xmm9,%xmm12
paddd  %xmm1,%xmm9
pand   -0x50(%rsp),%xmm0
por    %xmm11,%xmm4
punpckhwd %xmm5,%xmm5
pslld  $0x1f,%xmm5
psrad  $0x1f,%xmm5
pand   %xmm5,%xmm9
pandn  %xmm8,%xmm5
por    %xmm9,%xmm5
movdqa %xmm0,%xmm6
punpckhbw %xmm6,%xmm6
movdqa %xmm6,%xmm8
punpckhwd %xmm8,%xmm8
pslld  $0x1f,%xmm8
psrad  $0x1f,%xmm8
movdqa %xmm8,%xmm7
pandn  %xmm5,%xmm7
psrld  $0x18,%xmm8
por    %xmm7,%xmm8
punpcklwd %xmm6,%xmm6
pslld  $0x1f,%xmm6
psrad  $0x1f,%xmm6
movdqa %xmm6,%xmm5
pandn  %xmm4,%xmm5
psrld  $0x18,%xmm6
por    %xmm5,%xmm6
punpcklbw %xmm0,%xmm0
movdqa %xmm0,%xmm5
punpckhwd %xmm5,%xmm5
pslld  $0x1f,%xmm5
psrad  $0x1f,%xmm5
movdqa %xmm5,%xmm4
pandn  %xmm3,%xmm4
psrld  $0x18,%xmm5
por    %xmm4,%xmm5
punpcklwd %xmm0,%xmm0
pslld  $0x1f,%xmm0
psrad  $0x1f,%xmm0
movdqa %xmm0,%xmm3
pandn  %xmm14,%xmm3
psrld  $0x18,%xmm0
por    %xmm3,%xmm0
movdqa %xmm10,%xmm4
punpcklbw %xmm4,%xmm4
movdqa %xmm4,%xmm3
punpcklwd %xmm3,%xmm3
pslld  $0x1f,%xmm3
psrad  $0x1f,%xmm3
pand   %xmm3,%xmm0
pandn  0x10(%rsp),%xmm3
por    %xmm0,%xmm3
punpckhwd %xmm4,%xmm4
pslld  $0x1f,%xmm4
psrad  $0x1f,%xmm4
pand   %xmm4,%xmm5
pandn  %xmm2,%xmm4
por    %xmm5,%xmm4
punpckhbw %xmm10,%xmm10
movdqa %xmm10,%xmm0
punpcklwd %xmm0,%xmm0
pslld  $0x1f,%xmm0
psrad  $0x1f,%xmm0
pand   %xmm0,%xmm6
pandn  %xmm15,%xmm0
por    %xmm6,%xmm0
punpckhwd %xmm10,%xmm10
pslld  $0x1f,%xmm10
psrad  $0x1f,%xmm10
pand   %xmm10,%xmm8
pandn  %xmm12,%xmm10
por    %xmm8,%xmm10
movdqa -0x60(%rsp),%xmm6
movdqa %xmm6,%xmm1
pcmpgtd %xmm10,%xmm1
movdqa %xmm6,%xmm2
pcmpgtd %xmm0,%xmm2
movdqa %xmm6,%xmm5
movdqa %xmm6,%xmm8
pcmpgtd %xmm4,%xmm5
movdqa %xmm10,%xmm6
movdqa -0x70(%rsp),%xmm7
pcmpgtd %xmm7,%xmm6
por    %xmm1,%xmm6
movdqa %xmm0,%xmm1
pcmpgtd %xmm7,%xmm1
por    %xmm2,%xmm1
movdqa %xmm8,%xmm2
pcmpgtd %xmm3,%xmm2
packssdw %xmm6,%xmm1
movdqa %xmm4,%xmm6
pcmpgtd %xmm7,%xmm6
por    %xmm5,%xmm6
movdqa %xmm3,%xmm5
pcmpgtd %xmm7,%xmm5
por    %xmm2,%xmm5
movdqa 0x40(%rsp),%xmm2
packssdw %xmm6,%xmm5
packsswb %xmm1,%xmm5
movdqa 0x50(%rsp),%xmm1
movdqa 0x846(%rip),%xmm6
pand   %xmm6,%xmm3
pand   %xmm6,%xmm4
packuswb %xmm4,%xmm3
movdqa 0x20(%rsp),%xmm4
pand   %xmm6,%xmm0
pand   %xmm6,%xmm10
packuswb %xmm10,%xmm0
packuswb %xmm0,%xmm3
por    %xmm5,%xmm3
movdqu %xmm3,(%r12,%rax,1)
movdqa 0x30(%rsp),%xmm3
add    $0x10,%rax
movdqa 0x816(%rip),%xmm0
paddd  %xmm0,%xmm1
paddd  %xmm0,%xmm4
paddd  %xmm0,%xmm3
paddd  %xmm0,%xmm2
cmp    %rax,%rbp
jne    12d0 <loadKeyTableRegion+0x1d0>
cmp    %rbp,%rdx
mov    %r10d,%r14d
mov    -0x74(%rsp),%r11d
mov    -0x78(%rsp),%edx
je     1b11 <loadKeyTableRegion+0xa11>
add    $0x1,%edx
add    %ecx,%r9d
sub    %esi,%r9d
mov    %edx,%r10d
mov    $0xff,%edx
jmp    18cd <loadKeyTableRegion+0x7cd>
nopl   0x0(%rax,%rax,1)
cmp    %r8d,%esi
mov    %esi,%eax
cmovg  %edx,%eax
cmp    %ecx,%esi
cmovl  %edx,%eax
mov    %al,(%rdi,%rbx,1)
add    $0x1,%rbx
cmp    %ebx,%r10d
je     1b11 <loadKeyTableRegion+0xa11>
lea    (%r9,%rbx,1),%rbp
mov    $0xff,%esi
cmp    %ecx,%ebp
jge    1910 <loadKeyTableRegion+0x810>
cmp    $0x1,%r15d
jne    18b0 <loadKeyTableRegion+0x7b0>
movslq %ebp,%rsi
imul   $0x2aaaaaab,%rsi,%rbp
mov    %rbp,%rax
shr    $0x3f,%rax
shr    $0x21,%rbp
add    %eax,%ebp
shl    $0x2,%ebp
lea    0x0(%rbp,%rbp,2),%eax
sub    %eax,%esi
add    %r14d,%esi
jmp    18b0 <loadKeyTableRegion+0x7b0>
cs nopw 0x0(%rax,%rax,1)
nop
cmp    %r8d,%ebp
cmovle %ebp,%esi
jle    18b0 <loadKeyTableRegion+0x7b0>
cmp    $0x1,%r15d
jne    18b0 <loadKeyTableRegion+0x7b0>
movslq %ebp,%rsi
imul   $0x2aaaaaab,%rsi,%rax
mov    %rax,%rbp
shr    $0x3f,%rbp
shr    $0x21,%rax
add    %ebp,%eax
shl    $0x2,%eax
lea    (%rax,%rax,2),%eax
sub    %eax,%esi
add    %r11d,%esi
jmp    18b0 <loadKeyTableRegion+0x7b0>
lea    -0x80(%r14),%eax
cmp    $0xffffff81,%eax
jb     1955 <loadKeyTableRegion+0x855>
mov    %r14d,%eax
mov    %r10b,(%rdi,%rax,1)
lea    0x1(%r10),%ecx
add    $0x1,%r14d
cmp    %r8d,%r10d
je     1b11 <loadKeyTableRegion+0xa11>
not    %r8d
add    %ecx,%r8d
lea    -0x80(%r14),%edx
xor    %esi,%esi
jmp    198e <loadKeyTableRegion+0x88e>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x2,%esi
mov    %r8d,%eax
add    %esi,%eax
je     1b11 <loadKeyTableRegion+0xa11>
lea    (%r14,%rsi,1),%ebp
lea    (%rdx,%rsi,1),%eax
cmp    $0xffffff81,%eax
jb     19a2 <loadKeyTableRegion+0x8a2>
lea    (%rcx,%rsi,1),%eax
mov    %ebp,%ebx
mov    %al,(%rdi,%rbx,1)
cmp    $0x7e,%ebp
ja     1980 <loadKeyTableRegion+0x880>
lea    (%r14,%rsi,1),%eax
add    $0x1,%eax
lea    (%rcx,%rsi,1),%ebp
add    $0x1,%bpl
mov    %bpl,(%rdi,%rax,1)
jmp    1980 <loadKeyTableRegion+0x880>
mov    %r9d,%r11d
and    $0xfffffff8,%r11d
lea    (%r11,%rcx,1),%r10d
lea    (%rsi,%r11,1),%r14d
movd   %esi,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqa 0x645(%rip),%xmm1
paddd  %xmm0,%xmm1
paddd  0x649(%rip),%xmm0
xor    %ebp,%ebp
pcmpeqd %xmm2,%xmm2
movdqa 0x69b(%rip),%xmm3
movdqa 0x6a3(%rip),%xmm4
movdqa 0x6ab(%rip),%xmm5
jmp    1a24 <loadKeyTableRegion+0x924>
nopw   0x0(%rax,%rax,1)
add    $0x8,%ebp
paddd  %xmm5,%xmm0
paddd  %xmm5,%xmm1
cmp    %ebp,%r11d
je     1b08 <loadKeyTableRegion+0xa08>
lea    (%rcx,%rbp,1),%edx
movdqa %xmm0,%xmm7
paddd  %xmm2,%xmm7
pxor   %xmm3,%xmm7
movdqa %xmm4,%xmm6
pcmpgtd %xmm7,%xmm6
movd   %xmm6,%ebx
test   $0x1,%bl
je     1a4c <loadKeyTableRegion+0x94c>
lea    (%rsi,%rbp,1),%ebx
mov    %ebx,%ebx
mov    %dl,(%rdi,%rbx,1)
movdqa %xmm6,%xmm7
psrlq  $0x10,%xmm7
movd   %xmm7,%ebx
shr    $0x10,%ebx
test   $0x1,%bl
je     1a6d <loadKeyTableRegion+0x96d>
lea    (%rsi,%rbp,1),%ebx
add    $0x1,%ebx
lea    0x1(%rdx),%eax
mov    %al,(%rdi,%rbx,1)
pextrw $0x4,%xmm6,%eax
test   $0x1,%al
je     1a82 <loadKeyTableRegion+0x982>
lea    (%rsi,%rbp,1),%eax
add    $0x2,%eax
lea    0x2(%rdx),%ebx
mov    %bl,(%rdi,%rax,1)
pextrw $0x6,%xmm6,%eax
test   $0x1,%al
je     1a97 <loadKeyTableRegion+0x997>
lea    (%rsi,%rbp,1),%eax
add    $0x3,%eax
lea    0x3(%rdx),%ebx
mov    %bl,(%rdi,%rax,1)
movdqa %xmm1,%xmm7
paddd  %xmm2,%xmm7
pxor   %xmm3,%xmm7
movdqa %xmm4,%xmm6
pcmpgtd %xmm7,%xmm6
pextrw $0x0,%xmm6,%eax
test   $0x1,%al
je     1ac0 <loadKeyTableRegion+0x9c0>
lea    (%rsi,%rbp,1),%eax
add    $0x4,%eax
lea    0x4(%rdx),%ebx
mov    %bl,(%rdi,%rax,1)
pextrw $0x2,%xmm6,%eax
test   $0x1,%al
je     1ad5 <loadKeyTableRegion+0x9d5>
lea    (%rsi,%rbp,1),%eax
add    $0x5,%eax
lea    0x5(%rdx),%ebx
mov    %bl,(%rdi,%rax,1)
pextrw $0x4,%xmm6,%eax
test   $0x1,%al
je     1aea <loadKeyTableRegion+0x9ea>
lea    (%rsi,%rbp,1),%eax
add    $0x6,%eax
lea    0x6(%rdx),%ebx
mov    %bl,(%rdi,%rax,1)
pextrw $0x7,%xmm6,%eax
test   $0x1,%al
je     1a10 <loadKeyTableRegion+0x910>
lea    (%rsi,%rbp,1),%eax
add    $0x7,%eax
add    $0x7,%dl
mov    %dl,(%rdi,%rax,1)
jmp    1a10 <loadKeyTableRegion+0x910>
cmp    %r11d,%r9d
jne    1142 <loadKeyTableRegion+0x42>
add    $0x68,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @loadKeyTableRegion(i8* %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6) {
%8 = alloca i8*
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
store i8* %0, i8** %8
store i32 %1, i32* %9
store i32 %2, i32* %10
store i32 %3, i32* %11
store i32 %4, i32* %12
store i32 %5, i32* %13
store i32 %6, i32* %14
%22 = load i32, i32* %14
%23 = icmp eq i32 %22, 2
br i1 %23, label %24, label %53
24: ; preds = %7
%25 = load i32, i32* %11
store i32 %25, i32* %15
%26 = load i32, i32* %9
%27 = load i32, i32* %13
%28 = sub nsw i32 %26, %27
store i32 %28, i32* %16
br label %29
29: ; preds = %47, %24
%30 = load i32, i32* %15
%31 = load i32, i32* %12
%32 = icmp sle i32 %30, %31
br i1 %32, label %33, label %52
33: ; preds = %29
%34 = load i32, i32* %16
%35 = icmp slt i32 %34, 1
br i1 %35, label %39, label %36
36: ; preds = %33
%37 = load i32, i32* %16
%38 = icmp sgt i32 %37, 127
br i1 %38, label %39, label %40
39: ; preds = %36, %33
br label %47
40: ; preds = %36
%41 = load i32, i32* %15
%42 = trunc i32 %41 to i8
%43 = load i8*, i8** %8
%44 = load i32, i32* %16
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds i8, i8* %43, i64 %45
store i8 %42, i8* %46
br label %47
47: ; preds = %40, %39
%48 = load i32, i32* %15
%49 = add nsw i32 %48, 1
store i32 %49, i32* %15
%50 = load i32, i32* %16
%51 = add nsw i32 %50, 1
store i32 %51, i32* %16
br label %29
52: ; preds = %29
br label %128
53: ; preds = %7
%54 = load i32, i32* %13
%55 = load i32, i32* %11
%56 = add nsw i32 %54, %55
%57 = load i32, i32* %9
%58 = sub nsw i32 %56, %57
store i32 %58, i32* %18
%59 = load i32, i32* %11
%60 = add nsw i32 %59, 12
%61 = load i32, i32* %11
%62 = srem i32 %61, 12
%63 = sub nsw i32 %60, %62
store i32 %63, i32* %19
%64 = load i32, i32* %12
%65 = load i32, i32* %12
%66 = srem i32 %65, 12
%67 = sub nsw i32 %64, %66
%68 = sub nsw i32 %67, 12
store i32 %68, i32* %20
%69 = load i32, i32* %9
store i32 %69, i32* %17
br label %70
70: ; preds = %124, %53
%71 = load i32, i32* %17
%72 = load i32, i32* %10
%73 = icmp sle i32 %71, %72
br i1 %73, label %74, label %127
74: ; preds = %70
%75 = load i32, i32* %17
%76 = load i32, i32* %18
%77 = add nsw i32 %75, %76
store i32 %77, i32* %21
%78 = load i32, i32* %21
%79 = load i32, i32* %11
%80 = icmp slt i32 %78, %79
br i1 %80, label %81, label %92
81: ; preds = %74
%82 = load i32, i32* %14
%83 = icmp eq i32 %82, 1
br i1 %83, label %84, label %89
84: ; preds = %81
%85 = load i32, i32* %19
%86 = load i32, i32* %21
%87 = srem i32 %86, 12
%88 = add nsw i32 %85, %87
br label %90
89: ; preds = %81
br label %90
90: ; preds = %89, %84
%91 = phi i32 [ %88, %84 ], [ 255, %89 ]
store i32 %91, i32* %21
br label %108
92: ; preds = %74
%93 = load i32, i32* %12
%94 = load i32, i32* %21
%95 = icmp slt i32 %93, %94
br i1 %95, label %96, label %107
96: ; preds = %92
%97 = load i32, i32* %14
%98 = icmp eq i32 %97, 1
br i1 %98, label %99, label %104
99: ; preds = %96
%100 = load i32, i32* %20
%101 = load i32, i32* %21
%102 = srem i32 %101, 12
%103 = add nsw i32 %100, %102
br label %105
104: ; preds = %96
br label %105
105: ; preds = %104, %99
%106 = phi i32 [ %103, %99 ], [ 255, %104 ]
store i32 %106, i32* %21
br label %107
107: ; preds = %105, %92
br label %108
108: ; preds = %107, %90
%109 = load i32, i32* %21
%110 = load i32, i32* %11
%111 = icmp slt i32 %109, %110
br i1 %111, label %116, label %112
112: ; preds = %108
%113 = load i32, i32* %12
%114 = load i32, i32* %21
%115 = icmp slt i32 %113, %114
br i1 %115, label %116, label %117
116: ; preds = %112, %108
store i32 255, i32* %21
br label %117
117: ; preds = %116, %112
%118 = load i32, i32* %21
%119 = trunc i32 %118 to i8
%120 = load i8*, i8** %8
%121 = load i32, i32* %17
%122 = sext i32 %121 to i64
%123 = getelementptr inbounds i8, i8* %120, i64 %122
store i8 %119, i8* %123
br label %124
124: ; preds = %117
%125 = load i32, i32* %17
%126 = add nsw i32 %125, 1
store i32 %126, i32* %17
br label %70
127: ; preds = %70
br label %128
128: ; preds = %127, %52
ret void
}

LLVM IR (-O2):
define void @loadKeyTableRegion(i8* nocapture writeonly %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6) {
%8 = icmp eq i32 %6, 2
br i1 %8, label %9, label %136
9: ; preds = %7
%10 = icmp slt i32 %4, %3
br i1 %10, label %236, label %11
11: ; preds = %9
%12 = sub i32 %1, %5
%13 = add i32 %4, 1
%14 = sub i32 %13, %3
%15 = icmp ult i32 %14, 8
br i1 %15, label %94, label %16
16: ; preds = %11
%17 = sub i32 %4, %3
%18 = xor i32 %12, -1
%19 = icmp ugt i32 %17, %18
br i1 %19, label %94, label %20
20: ; preds = %16
%21 = and i32 %14, -8
%22 = add i32 %21, %3
%23 = add i32 %12, %21
%24 = insertelement <8 x i32> poison, i32 %12, i64 0
%25 = shufflevector <8 x i32> %24, <8 x i32> poison, <8 x i32> zeroinitializer
%26 = add <8 x i32> %25, <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
br label %27
27: ; preds = %88, %20
%28 = phi i32 [ 0, %20 ], [ %89, %88 ]
%29 = phi <8 x i32> [ %26, %20 ], [ %90, %88 ]
%30 = add i32 %12, %28
%31 = add i32 %28, %3
%32 = trunc i32 %31 to i8
%33 = add <8 x i32> %29, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
%34 = icmp ult <8 x i32> %33, <i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127>
%35 = extractelement <8 x i1> %34, i64 0
br i1 %35, label %36, label %39
36: ; preds = %27
%37 = zext i32 %30 to i64
%38 = getelementptr inbounds i8, i8* %0, i64 %37
store i8 %32, i8* %38
br label %39
39: ; preds = %36, %27
%40 = extractelement <8 x i1> %34, i64 1
br i1 %40, label %41, label %46
41: ; preds = %39
%42 = add i8 %32, 1
%43 = add i32 %30, 1
%44 = zext i32 %43 to i64
%45 = getelementptr inbounds i8, i8* %0, i64 %44
store i8 %42, i8* %45
br label %46
46: ; preds = %41, %39
%47 = extractelement <8 x i1> %34, i64 2
br i1 %47, label %48, label %53
48: ; preds = %46
%49 = add i8 %32, 2
%50 = add i32 %30, 2
%51 = zext i32 %50 to i64
%52 = getelementptr inbounds i8, i8* %0, i64 %51
store i8 %49, i8* %52
br label %53
53: ; preds = %48, %46
%54 = extractelement <8 x i1> %34, i64 3
br i1 %54, label %55, label %60
55: ; preds = %53
%56 = add i8 %32, 3
%57 = add i32 %30, 3
%58 = zext i32 %57 to i64
%59 = getelementptr inbounds i8, i8* %0, i64 %58
store i8 %56, i8* %59
br label %60
60: ; preds = %55, %53
%61 = extractelement <8 x i1> %34, i64 4
br i1 %61, label %62, label %67
62: ; preds = %60
%63 = add i8 %32, 4
%64 = add i32 %30, 4
%65 = zext i32 %64 to i64
%66 = getelementptr inbounds i8, i8* %0, i64 %65
store i8 %63, i8* %66
br label %67
67: ; preds = %62, %60
%68 = extractelement <8 x i1> %34, i64 5
br i1 %68, label %69, label %74
69: ; preds = %67
%70 = add i8 %32, 5
%71 = add i32 %30, 5
%72 = zext i32 %71 to i64
%73 = getelementptr inbounds i8, i8* %0, i64 %72
store i8 %70, i8* %73
br label %74
74: ; preds = %69, %67
%75 = extractelement <8 x i1> %34, i64 6
br i1 %75, label %76, label %81
76: ; preds = %74
%77 = add i8 %32, 6
%78 = add i32 %30, 6
%79 = zext i32 %78 to i64
%80 = getelementptr inbounds i8, i8* %0, i64 %79
store i8 %77, i8* %80
br label %81
81: ; preds = %76, %74
%82 = extractelement <8 x i1> %34, i64 7
br i1 %82, label %83, label %88
83: ; preds = %81
%84 = add i8 %32, 7
%85 = add i32 %30, 7
%86 = zext i32 %85 to i64
%87 = getelementptr inbounds i8, i8* %0, i64 %86
store i8 %84, i8* %87
br label %88
88: ; preds = %83, %81
%89 = add nuw i32 %28, 8
%90 = add <8 x i32> %29, <i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8>
%91 = icmp eq i32 %89, %21
br i1 %91, label %92, label %27
92: ; preds = %88
%93 = icmp eq i32 %14, %21
br i1 %93, label %236, label %94
94: ; preds = %16, %11, %92
%95 = phi i32 [ %3, %16 ], [ %3, %11 ], [ %22, %92 ]
%96 = phi i32 [ %12, %16 ], [ %12, %11 ], [ %23, %92 ]
%97 = add i32 %4, 1
%98 = sub i32 %97, %95
%99 = and i32 %98, 1
%100 = icmp eq i32 %99, 0
br i1 %100, label %111, label %101
101: ; preds = %94
%102 = add i32 %96, -128
%103 = icmp ult i32 %102, -127
br i1 %103, label %108, label %104
104: ; preds = %101
%105 = trunc i32 %95 to i8
%106 = zext i32 %96 to i64
%107 = getelementptr inbounds i8, i8* %0, i64 %106
store i8 %105, i8* %107
br label %108
108: ; preds = %104, %101
%109 = add i32 %95, 1
%110 = add nsw i32 %96, 1
br label %111
111: ; preds = %108, %94
%112 = phi i32 [ %95, %94 ], [ %109, %108 ]
%113 = phi i32 [ %96, %94 ], [ %110, %108 ]
%114 = icmp eq i32 %95, %4
br i1 %114, label %236, label %115
115: ; preds = %111, %132
%116 = phi i32 [ %133, %132 ], [ %112, %111 ]
%117 = phi i32 [ %134, %132 ], [ %113, %111 ]
%118 = add i32 %117, -128
%119 = icmp ult i32 %118, -127
br i1 %119, label %124, label %120
120: ; preds = %115
%121 = trunc i32 %116 to i8
%122 = zext i32 %117 to i64
%123 = getelementptr inbounds i8, i8* %0, i64 %122
store i8 %121, i8* %123
br label %124
124: ; preds = %115, %120
%125 = add i32 %116, 1
%126 = icmp ugt i32 %117, 126
br i1 %126, label %132, label %127
127: ; preds = %124
%128 = add nsw i32 %117, 1
%129 = trunc i32 %125 to i8
%130 = zext i32 %128 to i64
%131 = getelementptr inbounds i8, i8* %0, i64 %130
store i8 %129, i8* %131
br label %132
132: ; preds = %127, %124
%133 = add i32 %116, 2
%134 = add nsw i32 %117, 2
%135 = icmp eq i32 %125, %4
br i1 %135, label %236, label %115
136: ; preds = %7
%137 = add nsw i32 %3, 12
%138 = srem i32 %3, 12
%139 = sub i32 %137, %138
%140 = icmp slt i32 %2, %1
br i1 %140, label %236, label %141
141: ; preds = %136
%142 = srem i32 %4, 12
%143 = sub i32 %3, %1
%144 = add i32 %143, %5
%145 = icmp ne i32 %6, 1
%146 = add i32 %4, -12
%147 = sub i32 %146, %142
%148 = icmp eq i32 %6, 1
%149 = sext i32 %1 to i64
%150 = add i32 %2, 1
%151 = sub i32 %2, %1
%152 = zext i32 %151 to i64
%153 = add nuw nsw i64 %152, 1
%154 = icmp ult i32 %151, 15
br i1 %154, label %207, label %155
155: ; preds = %141
%156 = and i64 %153, 8589934576
%157 = add nsw i64 %156, %149
%158 = insertelement <16 x i32> poison, i32 %1, i64 0
%159 = shufflevector <16 x i32> %158, <16 x i32> poison, <16 x i32> zeroinitializer
%160 = add <16 x i32> %159, <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>
%161 = insertelement <16 x i32> poison, i32 %144, i64 0
%162 = shufflevector <16 x i32> %161, <16 x i32> poison, <16 x i32> zeroinitializer
%163 = insertelement <16 x i32> poison, i32 %3, i64 0
%164 = shufflevector <16 x i32> %163, <16 x i32> poison, <16 x i32> zeroinitializer
%165 = insertelement <16 x i32> poison, i32 %4, i64 0
%166 = shufflevector <16 x i32> %165, <16 x i32> poison, <16 x i32> zeroinitializer
%167 = insertelement <16 x i1> poison, i1 %145, i64 0
%168 = shufflevector <16 x i1> %167, <16 x i1> poison, <16 x i32> zeroinitializer
%169 = insertelement <16 x i32> poison, i32 %147, i64 0
%170 = shufflevector <16 x i32> %169, <16 x i32> poison, <16 x i32> zeroinitializer
%171 = insertelement <16 x i32> poison, i32 %139, i64 0
%172 = shufflevector <16 x i32> %171, <16 x i32> poison, <16 x i32> zeroinitializer
%173 = insertelement <16 x i1> poison, i1 %148, i64 0
%174 = shufflevector <16 x i1> %173, <16 x i1> poison, <16 x i32> zeroinitializer
%175 = xor <16 x i1> %174, <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
br label %176
176: ; preds = %176, %155
%177 = phi i64 [ 0, %155 ], [ %202, %176 ]
%178 = phi <16 x i32> [ %160, %155 ], [ %203, %176 ]
%179 = add i64 %177, %149
%180 = add <16 x i32> %162, %178
%181 = icmp slt <16 x i32> %180, %164
%182 = icmp sle <16 x i32> %180, %166
%183 = or <16 x i1> %182, %168
%184 = select <16 x i1> %182, <16 x i32> %180, <16 x i32> <i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255>
%185 = srem <16 x i32> %180, <i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12>
%186 = add <16 x i32> %170, %185
%187 = srem <16 x i32> %180, <i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12>
%188 = add nsw <16 x i32> %172, %187
%189 = select <16 x i1> %181, <16 x i1> %174, <16 x i1> zeroinitializer
%190 = select <16 x i1> %181, <16 x i1> %175, <16 x i1> zeroinitializer
%191 = select <16 x i1> %181, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <16 x i1> %183
%192 = select <16 x i1> %189, <16 x i32> %188, <16 x i32> %184
%193 = select <16 x i1> %190, <16 x i32> <i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255>, <16 x i32> %192
%194 = select <16 x i1> %191, <16 x i32> %193, <16 x i32> %186
%195 = icmp slt <16 x i32> %194, %164
%196 = icmp sgt <16 x i32> %194, %166
%197 = or <16 x i1> %195, %196
%198 = trunc <16 x i32> %194 to <16 x i8>
%199 = select <16 x i1> %197, <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8> %198
%200 = getelementptr inbounds i8, i8* %0, i64 %179
%201 = bitcast i8* %200 to <16 x i8>*
store <16 x i8> %199, <16 x i8>* %201
%202 = add nuw i64 %177, 16
%203 = add <16 x i32> %178, <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>
%204 = icmp eq i64 %202, %156
br i1 %204, label %205, label %176
205: ; preds = %176
%206 = icmp eq i64 %153, %156
br i1 %206, label %236, label %207
207: ; preds = %141, %205
%208 = phi i64 [ %149, %141 ], [ %157, %205 ]
br label %209
209: ; preds = %207, %225
%210 = phi i64 [ %233, %225 ], [ %208, %207 ]
%211 = trunc i64 %210 to i32
%212 = add i32 %144, %211
%213 = icmp slt i32 %212, %3
br i1 %213, label %214, label %218
214: ; preds = %209
br i1 %148, label %215, label %225
215: ; preds = %214
%216 = srem i32 %212, 12
%217 = add nsw i32 %139, %216
br label %225
218: ; preds = %209
%219 = icmp sle i32 %212, %4
%220 = or i1 %219, %145
%221 = select i1 %219, i32 %212, i32 255
br i1 %220, label %225, label %222
222: ; preds = %218
%223 = srem i32 %212, 12
%224 = add i32 %147, %223
br label %225
225: ; preds = %218, %222, %215, %214
%226 = phi i32 [ %221, %218 ], [ %217, %215 ], [ 255, %214 ], [ %224, %222 ]
%227 = icmp slt i32 %226, %3
%228 = icmp sgt i32 %226, %4
%229 = or i1 %227, %228
%230 = trunc i32 %226 to i8
%231 = select i1 %229, i8 -1, i8 %230
%232 = getelementptr inbounds i8, i8* %0, i64 %210
store i8 %231, i8* %232
%233 = add nsw i64 %210, 1
%234 = trunc i64 %233 to i32
%235 = icmp eq i32 %150, %234
br i1 %235, label %236, label %209
236: ; preds = %225, %111, %132, %205, %92, %136, %9
ret void
}