void fir3(const short x[], const short h[], short y[], int n, int m, int s) {
  int j;
  int tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9;
  int tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16, tmp17, tmp18, tmp19;
#pragma unroll_amount(16)
#pragma ivdep
  for (j = 0; j < m; j++) {
    tmp0 = x[j] * h[0] + x[j + 1] * h[1];
    tmp1 = x[j + 2] * h[2] + x[j + 3] * h[3];
    tmp2 = x[j + 4] * h[4] + x[j + 5] * h[5];
    tmp3 = x[j + 6] * h[6] + x[j + 7] * h[7];
    tmp4 = x[j + 8] * h[8] + x[j + 9] * h[9];
    tmp5 = x[j + 10] * h[10] + x[j + 11] * h[11];
    tmp6 = x[j + 12] * h[12] + x[j + 13] * h[13];
    tmp7 = x[j + 14] * h[14] + x[j + 15] * h[15];
    tmp8 = x[j + 16] * h[16] + x[j + 17] * h[17];
    tmp9 = x[j + 18] * h[18] + x[j + 19] * h[19];
    tmp10 = x[j + 20] * h[20] + x[j + 21] * h[21];
    tmp11 = x[j + 22] * h[22] + x[j + 23] * h[23];
    tmp12 = x[j + 24] * h[24] + x[j + 25] * h[25];
    tmp13 = x[j + 26] * h[26] + x[j + 27] * h[27];
    tmp14 = x[j + 28] * h[28] + x[j + 29] * h[29];
    tmp15 = x[j + 30] * h[30] + x[j + 31] * h[31];
    tmp16 = tmp0 + tmp1 + tmp2 + tmp3;
    tmp17 = tmp4 + tmp5 + tmp6 + tmp7;
    tmp18 = tmp8 + tmp9 + tmp10 + tmp11;
    tmp19 = tmp12 + tmp13 + tmp14 + tmp15;
    y[j] = (tmp16 + tmp17 + tmp18 + tmp19) >> s;
  }
}


x86 assembly (clang, -O0):
<fir3>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    %r8d,-0x20(%rbp)
mov    %r9d,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    1562 <fir3+0x462>
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
movswl (%rax,%rcx,2),%eax
mov    -0x10(%rbp),%rcx
movswl (%rcx),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x28(%rbp),%edx
add    $0x1,%edx
movslq %edx,%rdx
movswl (%rcx,%rdx,2),%ecx
mov    -0x10(%rbp),%rdx
movswl 0x2(%rdx),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movswl (%rax,%rcx,2),%eax
mov    -0x10(%rbp),%rcx
movswl 0x4(%rcx),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x28(%rbp),%edx
add    $0x3,%edx
movslq %edx,%rdx
movswl (%rcx,%rdx,2),%ecx
mov    -0x10(%rbp),%rdx
movswl 0x6(%rdx),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %eax,-0x30(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movswl (%rax,%rcx,2),%eax
mov    -0x10(%rbp),%rcx
movswl 0x8(%rcx),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x28(%rbp),%edx
add    $0x5,%edx
movslq %edx,%rdx
movswl (%rcx,%rdx,2),%ecx
mov    -0x10(%rbp),%rdx
movswl 0xa(%rdx),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %eax,-0x34(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
movswl (%rax,%rcx,2),%eax
mov    -0x10(%rbp),%rcx
movswl 0xc(%rcx),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x28(%rbp),%edx
add    $0x7,%edx
movslq %edx,%rdx
movswl (%rcx,%rdx,2),%ecx
mov    -0x10(%rbp),%rdx
movswl 0xe(%rdx),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %eax,-0x38(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x8,%ecx
movslq %ecx,%rcx
movswl (%rax,%rcx,2),%eax
mov    -0x10(%rbp),%rcx
movswl 0x10(%rcx),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x28(%rbp),%edx
add    $0x9,%edx
movslq %edx,%rdx
movswl (%rcx,%rdx,2),%ecx
mov    -0x10(%rbp),%rdx
movswl 0x12(%rdx),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0xa,%ecx
movslq %ecx,%rcx
movswl (%rax,%rcx,2),%eax
mov    -0x10(%rbp),%rcx
movswl 0x14(%rcx),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x28(%rbp),%edx
add    $0xb,%edx
movslq %edx,%rdx
movswl (%rcx,%rdx,2),%ecx
mov    -0x10(%rbp),%rdx
movswl 0x16(%rdx),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %eax,-0x40(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0xc,%ecx
movslq %ecx,%rcx
movswl (%rax,%rcx,2),%eax
mov    -0x10(%rbp),%rcx
movswl 0x18(%rcx),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x28(%rbp),%edx
add    $0xd,%edx
movslq %edx,%rdx
movswl (%rcx,%rdx,2),%ecx
mov    -0x10(%rbp),%rdx
movswl 0x1a(%rdx),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %eax,-0x44(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0xe,%ecx
movslq %ecx,%rcx
movswl (%rax,%rcx,2),%eax
mov    -0x10(%rbp),%rcx
movswl 0x1c(%rcx),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x28(%rbp),%edx
add    $0xf,%edx
movslq %edx,%rdx
movswl (%rcx,%rdx,2),%ecx
mov    -0x10(%rbp),%rdx
movswl 0x1e(%rdx),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %eax,-0x48(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x10,%ecx
movslq %ecx,%rcx
movswl (%rax,%rcx,2),%eax
mov    -0x10(%rbp),%rcx
movswl 0x20(%rcx),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x28(%rbp),%edx
add    $0x11,%edx
movslq %edx,%rdx
movswl (%rcx,%rdx,2),%ecx
mov    -0x10(%rbp),%rdx
movswl 0x22(%rdx),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %eax,-0x4c(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x12,%ecx
movslq %ecx,%rcx
movswl (%rax,%rcx,2),%eax
mov    -0x10(%rbp),%rcx
movswl 0x24(%rcx),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x28(%rbp),%edx
add    $0x13,%edx
movslq %edx,%rdx
movswl (%rcx,%rdx,2),%ecx
mov    -0x10(%rbp),%rdx
movswl 0x26(%rdx),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %eax,-0x50(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x14,%ecx
movslq %ecx,%rcx
movswl (%rax,%rcx,2),%eax
mov    -0x10(%rbp),%rcx
movswl 0x28(%rcx),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x28(%rbp),%edx
add    $0x15,%edx
movslq %edx,%rdx
movswl (%rcx,%rdx,2),%ecx
mov    -0x10(%rbp),%rdx
movswl 0x2a(%rdx),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %eax,-0x54(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x16,%ecx
movslq %ecx,%rcx
movswl (%rax,%rcx,2),%eax
mov    -0x10(%rbp),%rcx
movswl 0x2c(%rcx),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x28(%rbp),%edx
add    $0x17,%edx
movslq %edx,%rdx
movswl (%rcx,%rdx,2),%ecx
mov    -0x10(%rbp),%rdx
movswl 0x2e(%rdx),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %eax,-0x58(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x18,%ecx
movslq %ecx,%rcx
movswl (%rax,%rcx,2),%eax
mov    -0x10(%rbp),%rcx
movswl 0x30(%rcx),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x28(%rbp),%edx
add    $0x19,%edx
movslq %edx,%rdx
movswl (%rcx,%rdx,2),%ecx
mov    -0x10(%rbp),%rdx
movswl 0x32(%rdx),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %eax,-0x5c(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1a,%ecx
movslq %ecx,%rcx
movswl (%rax,%rcx,2),%eax
mov    -0x10(%rbp),%rcx
movswl 0x34(%rcx),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x28(%rbp),%edx
add    $0x1b,%edx
movslq %edx,%rdx
movswl (%rcx,%rdx,2),%ecx
mov    -0x10(%rbp),%rdx
movswl 0x36(%rdx),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %eax,-0x60(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1c,%ecx
movslq %ecx,%rcx
movswl (%rax,%rcx,2),%eax
mov    -0x10(%rbp),%rcx
movswl 0x38(%rcx),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x28(%rbp),%edx
add    $0x1d,%edx
movslq %edx,%rdx
movswl (%rcx,%rdx,2),%ecx
mov    -0x10(%rbp),%rdx
movswl 0x3a(%rdx),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %eax,-0x64(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1e,%ecx
movslq %ecx,%rcx
movswl (%rax,%rcx,2),%eax
mov    -0x10(%rbp),%rcx
movswl 0x3c(%rcx),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x28(%rbp),%edx
add    $0x1f,%edx
movslq %edx,%rdx
movswl (%rcx,%rdx,2),%ecx
mov    -0x10(%rbp),%rdx
movswl 0x3e(%rdx),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %eax,-0x68(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x30(%rbp),%eax
add    -0x34(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x3c(%rbp),%eax
add    -0x40(%rbp),%eax
add    -0x44(%rbp),%eax
add    -0x48(%rbp),%eax
mov    %eax,-0x70(%rbp)
mov    -0x4c(%rbp),%eax
add    -0x50(%rbp),%eax
add    -0x54(%rbp),%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x74(%rbp)
mov    -0x5c(%rbp),%eax
add    -0x60(%rbp),%eax
add    -0x64(%rbp),%eax
add    -0x68(%rbp),%eax
mov    %eax,-0x78(%rbp)
mov    -0x6c(%rbp),%eax
add    -0x70(%rbp),%eax
add    -0x74(%rbp),%eax
add    -0x78(%rbp),%eax
mov    -0x24(%rbp),%ecx
sar    %cl,%eax
mov    %ax,%dx
mov    -0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    %dx,(%rax,%rcx,2)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1122 <fir3+0x22>
pop    %rbp
ret

x86 assembly (clang, -O2):
<fir3>:
push   %r14
push   %rbx
sub    $0x148,%rsp
test   %r8d,%r8d
jle    1fb2 <fir3+0xeb2>
mov    %r9d,%ecx
mov    %r8d,%r9d
cmp    $0x8,%r8d
jae    1127 <fir3+0x27>
xor    %r14d,%r14d
jmp    1d9a <fir3+0xc9a>
lea    (%rdx,%r9,2),%r10
lea    (%rdi,%r9,2),%rax
add    $0x3e,%rax
cmp    %rdx,%rax
seta   %r11b
lea    0x40(%rsi),%rax
cmp    %rdi,%r10
seta   %bl
cmp    %rdx,%rax
seta   %r8b
cmp    %rsi,%r10
seta   %r10b
xor    %r14d,%r14d
test   %bl,%r11b
jne    1d9a <fir3+0xc9a>
and    %r10b,%r8b
jne    1d9a <fir3+0xc9a>
movzwl (%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0x130(%rsp)
movzwl 0x2(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0x120(%rsp)
movzwl 0x4(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0x110(%rsp)
movzwl 0x6(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0x100(%rsp)
movzwl 0x8(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0xf0(%rsp)
movzwl 0xa(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0xe0(%rsp)
movzwl 0xc(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0xd0(%rsp)
movzwl 0xe(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0xc0(%rsp)
movzwl 0x10(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0xb0(%rsp)
movzwl 0x12(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0xa0(%rsp)
movzwl 0x14(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0x90(%rsp)
movzwl 0x16(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0x80(%rsp)
movzwl 0x18(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0x70(%rsp)
movzwl 0x1a(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0x60(%rsp)
movzwl 0x1c(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0x50(%rsp)
movzwl 0x1e(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0x40(%rsp)
movzwl 0x20(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0x30(%rsp)
movzwl 0x22(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0x20(%rsp)
movzwl 0x24(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,0x10(%rsp)
movzwl 0x26(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,(%rsp)
movzwl 0x28(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,-0x10(%rsp)
movzwl 0x2a(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,-0x20(%rsp)
movzwl 0x2c(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,-0x30(%rsp)
movzwl 0x2e(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,-0x40(%rsp)
movzwl 0x30(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,-0x50(%rsp)
movzwl 0x32(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,-0x60(%rsp)
movzwl 0x34(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,-0x70(%rsp)
movzwl 0x36(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm1
psrad  $0x10,%xmm1
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm1
movdqa %xmm1,-0x80(%rsp)
movzwl 0x38(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm14
psrad  $0x10,%xmm14
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm14
movzwl 0x3a(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm15
psrad  $0x10,%xmm15
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm15
movzwl 0x3c(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm13
psrad  $0x10,%xmm13
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm13
movzwl 0x3e(%rsi),%eax
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm7
psrad  $0x10,%xmm7
pshufd $0x64,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
psrad  $0x10,%xmm0
packssdw %xmm0,%xmm7
movd   %ecx,%xmm0
xorps  %xmm8,%xmm8
movss  %xmm0,%xmm8
mov    %r9d,%r14d
and    $0xfffffff8,%r14d
lea    0x3e(%rdi),%r8
lea    (%r9,%r9,1),%r10
and    $0xfffffffffffffff0,%r10
xor    %r11d,%r11d
nopl   (%rax)
movdqu -0x3e(%r8,%r11,1),%xmm1
movdqu -0x3c(%r8,%r11,1),%xmm2
movdqu -0x3a(%r8,%r11,1),%xmm3
movdqu -0x38(%r8,%r11,1),%xmm0
movdqa 0x130(%rsp),%xmm5
movdqa %xmm5,%xmm4
pmulhw %xmm1,%xmm4
pmullw %xmm5,%xmm1
movdqa %xmm1,%xmm5
punpcklwd %xmm4,%xmm5
punpckhwd %xmm4,%xmm1
movdqa 0x120(%rsp),%xmm6
movdqa %xmm6,%xmm4
pmulhw %xmm2,%xmm4
pmullw %xmm6,%xmm2
movdqa %xmm2,%xmm6
punpcklwd %xmm4,%xmm6
paddd  %xmm5,%xmm6
punpckhwd %xmm4,%xmm2
paddd  %xmm1,%xmm2
movdqa 0x110(%rsp),%xmm4
movdqa %xmm4,%xmm1
pmulhw %xmm3,%xmm1
pmullw %xmm4,%xmm3
movdqa %xmm3,%xmm4
punpckhwd %xmm1,%xmm4
punpcklwd %xmm1,%xmm3
movdqa 0x100(%rsp),%xmm1
movdqa %xmm1,%xmm5
pmulhw %xmm0,%xmm5
pmullw %xmm1,%xmm0
movdqa %xmm0,%xmm1
punpcklwd %xmm5,%xmm1
paddd  %xmm3,%xmm1
paddd  %xmm6,%xmm1
punpckhwd %xmm5,%xmm0
paddd  %xmm4,%xmm0
paddd  %xmm2,%xmm0
movdqu -0x36(%r8,%r11,1),%xmm2
movdqa 0xf0(%rsp),%xmm4
movdqa %xmm4,%xmm3
pmulhw %xmm2,%xmm3
pmullw %xmm4,%xmm2
movdqa %xmm2,%xmm4
punpckhwd %xmm3,%xmm4
punpcklwd %xmm3,%xmm2
movdqu -0x34(%r8,%r11,1),%xmm5
movdqa 0xe0(%rsp),%xmm6
movdqa %xmm6,%xmm3
pmulhw %xmm5,%xmm3
pmullw %xmm6,%xmm5
movdqa %xmm5,%xmm6
punpcklwd %xmm3,%xmm6
paddd  %xmm2,%xmm6
punpckhwd %xmm3,%xmm5
paddd  %xmm4,%xmm5
movdqu -0x32(%r8,%r11,1),%xmm2
movdqa 0xd0(%rsp),%xmm3
movdqa %xmm3,%xmm4
pmulhw %xmm2,%xmm4
pmullw %xmm3,%xmm2
movdqa %xmm2,%xmm3
punpckhwd %xmm4,%xmm3
paddd  %xmm5,%xmm3
paddd  %xmm0,%xmm3
punpcklwd %xmm4,%xmm2
paddd  %xmm6,%xmm2
paddd  %xmm1,%xmm2
movdqu -0x30(%r8,%r11,1),%xmm0
movdqa 0xc0(%rsp),%xmm4
movdqa %xmm4,%xmm1
pmulhw %xmm0,%xmm1
pmullw %xmm4,%xmm0
movdqa %xmm0,%xmm4
punpcklwd %xmm1,%xmm4
punpckhwd %xmm1,%xmm0
movdqu -0x2e(%r8,%r11,1),%xmm1
movdqa 0xb0(%rsp),%xmm6
movdqa %xmm6,%xmm5
pmulhw %xmm1,%xmm5
pmullw %xmm6,%xmm1
movdqa %xmm1,%xmm6
punpckhwd %xmm5,%xmm6
paddd  %xmm0,%xmm6
punpcklwd %xmm5,%xmm1
paddd  %xmm4,%xmm1
movdqu -0x2c(%r8,%r11,1),%xmm4
movdqa 0xa0(%rsp),%xmm5
movdqa %xmm5,%xmm0
pmulhw %xmm4,%xmm0
pmullw %xmm5,%xmm4
movdqa %xmm4,%xmm5
punpcklwd %xmm0,%xmm5
paddd  %xmm1,%xmm5
punpckhwd %xmm0,%xmm4
paddd  %xmm6,%xmm4
movdqu -0x2a(%r8,%r11,1),%xmm0
movdqa 0x90(%rsp),%xmm1
movdqa %xmm1,%xmm6
pmulhw %xmm0,%xmm6
pmullw %xmm1,%xmm0
movdqa %xmm0,%xmm1
punpckhwd %xmm6,%xmm1
paddd  %xmm4,%xmm1
paddd  %xmm3,%xmm1
punpcklwd %xmm6,%xmm0
paddd  %xmm5,%xmm0
paddd  %xmm2,%xmm0
movdqu -0x28(%r8,%r11,1),%xmm2
movdqa 0x80(%rsp),%xmm4
movdqa %xmm4,%xmm3
pmulhw %xmm2,%xmm3
pmullw %xmm4,%xmm2
movdqa %xmm2,%xmm4
punpcklwd %xmm3,%xmm4
punpckhwd %xmm3,%xmm2
movdqu -0x26(%r8,%r11,1),%xmm3
movdqa 0x70(%rsp),%xmm6
movdqa %xmm6,%xmm5
pmulhw %xmm3,%xmm5
pmullw %xmm6,%xmm3
movdqa %xmm3,%xmm6
punpckhwd %xmm5,%xmm6
paddd  %xmm2,%xmm6
punpcklwd %xmm5,%xmm3
paddd  %xmm4,%xmm3
movdqu -0x24(%r8,%r11,1),%xmm2
movdqa 0x60(%rsp),%xmm5
movdqa %xmm5,%xmm4
pmulhw %xmm2,%xmm4
pmullw %xmm5,%xmm2
movdqa %xmm2,%xmm5
punpcklwd %xmm4,%xmm5
paddd  %xmm3,%xmm5
punpckhwd %xmm4,%xmm2
paddd  %xmm6,%xmm2
movdqu -0x22(%r8,%r11,1),%xmm3
movdqa 0x50(%rsp),%xmm6
movdqa %xmm6,%xmm4
pmulhw %xmm3,%xmm4
pmullw %xmm6,%xmm3
movdqa %xmm3,%xmm6
punpckhwd %xmm4,%xmm6
paddd  %xmm2,%xmm6
punpcklwd %xmm4,%xmm3
paddd  %xmm5,%xmm3
movdqu -0x20(%r8,%r11,1),%xmm11
movdqa 0x40(%rsp),%xmm4
movdqa %xmm4,%xmm2
pmulhw %xmm11,%xmm2
pmullw %xmm4,%xmm11
movdqa %xmm11,%xmm12
punpcklwd %xmm2,%xmm12
paddd  %xmm3,%xmm12
paddd  %xmm0,%xmm12
punpckhwd %xmm2,%xmm11
paddd  %xmm6,%xmm11
paddd  %xmm1,%xmm11
movdqu -0x1e(%r8,%r11,1),%xmm0
movdqa 0x30(%rsp),%xmm2
movdqa %xmm2,%xmm1
pmulhw %xmm0,%xmm1
pmullw %xmm2,%xmm0
movdqa %xmm0,%xmm2
punpckhwd %xmm1,%xmm2
punpcklwd %xmm1,%xmm0
movdqu -0x1c(%r8,%r11,1),%xmm1
movdqa 0x20(%rsp),%xmm4
movdqa %xmm4,%xmm3
pmulhw %xmm1,%xmm3
pmullw %xmm4,%xmm1
movdqa %xmm1,%xmm4
punpcklwd %xmm3,%xmm4
paddd  %xmm0,%xmm4
punpckhwd %xmm3,%xmm1
paddd  %xmm2,%xmm1
movdqu -0x1a(%r8,%r11,1),%xmm0
movdqa 0x10(%rsp),%xmm3
movdqa %xmm3,%xmm2
pmulhw %xmm0,%xmm2
pmullw %xmm3,%xmm0
movdqa %xmm0,%xmm3
punpckhwd %xmm2,%xmm3
paddd  %xmm1,%xmm3
punpcklwd %xmm2,%xmm0
paddd  %xmm4,%xmm0
movdqu -0x18(%r8,%r11,1),%xmm1
movdqa (%rsp),%xmm4
movdqa %xmm4,%xmm2
pmulhw %xmm1,%xmm2
pmullw %xmm4,%xmm1
movdqa %xmm1,%xmm4
punpcklwd %xmm2,%xmm4
paddd  %xmm0,%xmm4
punpckhwd %xmm2,%xmm1
paddd  %xmm3,%xmm1
movdqu -0x16(%r8,%r11,1),%xmm0
movdqa -0x10(%rsp),%xmm3
movdqa %xmm3,%xmm2
pmulhw %xmm0,%xmm2
pmullw %xmm3,%xmm0
movdqa %xmm0,%xmm3
punpckhwd %xmm2,%xmm3
paddd  %xmm1,%xmm3
punpcklwd %xmm2,%xmm0
paddd  %xmm4,%xmm0
movdqu -0x14(%r8,%r11,1),%xmm9
movdqa -0x20(%rsp),%xmm2
movdqa %xmm2,%xmm1
pmulhw %xmm9,%xmm1
pmullw %xmm2,%xmm9
movdqa %xmm9,%xmm10
punpcklwd %xmm1,%xmm10
paddd  %xmm0,%xmm10
paddd  %xmm12,%xmm10
punpckhwd %xmm1,%xmm9
paddd  %xmm3,%xmm9
paddd  %xmm11,%xmm9
movdqu -0x12(%r8,%r11,1),%xmm0
movdqa -0x30(%rsp),%xmm2
movdqa %xmm2,%xmm1
pmulhw %xmm0,%xmm1
pmullw %xmm2,%xmm0
movdqa %xmm0,%xmm2
punpckhwd %xmm1,%xmm2
punpcklwd %xmm1,%xmm0
movdqu -0x10(%r8,%r11,1),%xmm1
movdqa -0x40(%rsp),%xmm4
movdqa %xmm4,%xmm3
pmulhw %xmm1,%xmm3
pmullw %xmm4,%xmm1
movdqa %xmm1,%xmm4
punpcklwd %xmm3,%xmm4
paddd  %xmm0,%xmm4
punpckhwd %xmm3,%xmm1
paddd  %xmm2,%xmm1
movdqu -0xe(%r8,%r11,1),%xmm0
movdqa -0x50(%rsp),%xmm3
movdqa %xmm3,%xmm2
pmulhw %xmm0,%xmm2
pmullw %xmm3,%xmm0
movdqa %xmm0,%xmm3
punpckhwd %xmm2,%xmm3
paddd  %xmm1,%xmm3
punpcklwd %xmm2,%xmm0
paddd  %xmm4,%xmm0
movdqu -0xc(%r8,%r11,1),%xmm1
movdqa -0x60(%rsp),%xmm4
movdqa %xmm4,%xmm2
pmulhw %xmm1,%xmm2
pmullw %xmm4,%xmm1
movdqa %xmm1,%xmm4
punpcklwd %xmm2,%xmm4
paddd  %xmm0,%xmm4
punpckhwd %xmm2,%xmm1
paddd  %xmm3,%xmm1
movdqu -0xa(%r8,%r11,1),%xmm0
movdqa -0x70(%rsp),%xmm3
movdqa %xmm3,%xmm2
pmulhw %xmm0,%xmm2
pmullw %xmm3,%xmm0
movdqa %xmm0,%xmm3
punpckhwd %xmm2,%xmm3
paddd  %xmm1,%xmm3
punpcklwd %xmm2,%xmm0
paddd  %xmm4,%xmm0
movdqu -0x8(%r8,%r11,1),%xmm2
movdqa -0x80(%rsp),%xmm4
movdqa %xmm4,%xmm1
pmulhw %xmm2,%xmm1
pmullw %xmm4,%xmm2
movdqa %xmm2,%xmm4
punpcklwd %xmm1,%xmm4
paddd  %xmm0,%xmm4
punpckhwd %xmm1,%xmm2
paddd  %xmm3,%xmm2
movdqu -0x6(%r8,%r11,1),%xmm1
movdqa %xmm14,%xmm3
pmulhw %xmm1,%xmm3
pmullw %xmm14,%xmm1
movdqa %xmm1,%xmm0
punpckhwd %xmm3,%xmm0
paddd  %xmm2,%xmm0
paddd  %xmm9,%xmm0
punpcklwd %xmm3,%xmm1
paddd  %xmm4,%xmm1
paddd  %xmm10,%xmm1
movdqu -0x4(%r8,%r11,1),%xmm2
movdqa %xmm15,%xmm3
pmulhw %xmm2,%xmm3
pmullw %xmm15,%xmm2
movdqa %xmm2,%xmm4
punpcklwd %xmm3,%xmm4
punpckhwd %xmm3,%xmm2
movdqu -0x2(%r8,%r11,1),%xmm3
movdqa %xmm13,%xmm5
pmulhw %xmm3,%xmm5
pmullw %xmm13,%xmm3
movdqa %xmm3,%xmm6
punpckhwd %xmm5,%xmm6
paddd  %xmm2,%xmm6
punpcklwd %xmm5,%xmm3
paddd  %xmm4,%xmm3
movdqu (%r8,%r11,1),%xmm2
movdqa %xmm7,%xmm4
pmulhw %xmm2,%xmm4
pmullw %xmm7,%xmm2
movdqa %xmm2,%xmm5
punpcklwd %xmm4,%xmm5
paddd  %xmm3,%xmm5
paddd  %xmm1,%xmm5
punpckhwd %xmm4,%xmm2
paddd  %xmm6,%xmm2
paddd  %xmm0,%xmm2
psrad  %xmm8,%xmm5
psrad  %xmm8,%xmm2
pslld  $0x10,%xmm2
psrad  $0x10,%xmm2
pslld  $0x10,%xmm5
psrad  $0x10,%xmm5
packssdw %xmm2,%xmm5
movdqu %xmm5,(%rdx,%r11,1)
add    $0x10,%r11
cmp    %r11,%r10
jne    17a0 <fir3+0x6a0>
cmp    %r9,%r14
je     1fb2 <fir3+0xeb2>
add    $0x3e,%rdi
xchg   %ax,%ax
movswl -0x3e(%rdi,%r14,2),%ebx
movswl (%rsi),%eax
imul   %ebx,%eax
movswl -0x3c(%rdi,%r14,2),%r8d
movswl 0x2(%rsi),%ebx
imul   %r8d,%ebx
add    %eax,%ebx
movswl -0x3a(%rdi,%r14,2),%r8d
movswl 0x4(%rsi),%eax
imul   %r8d,%eax
add    %ebx,%eax
movswl -0x38(%rdi,%r14,2),%r8d
movswl 0x6(%rsi),%ebx
imul   %r8d,%ebx
add    %eax,%ebx
movswl -0x36(%rdi,%r14,2),%r8d
movswl 0x8(%rsi),%eax
imul   %r8d,%eax
add    %ebx,%eax
movswl -0x34(%rdi,%r14,2),%r8d
movswl 0xa(%rsi),%ebx
imul   %r8d,%ebx
add    %eax,%ebx
movswl -0x32(%rdi,%r14,2),%r8d
movswl 0xc(%rsi),%eax
imul   %r8d,%eax
add    %ebx,%eax
movswl -0x30(%rdi,%r14,2),%r8d
movswl 0xe(%rsi),%ebx
imul   %r8d,%ebx
add    %eax,%ebx
movswl -0x2e(%rdi,%r14,2),%r8d
movswl 0x10(%rsi),%eax
imul   %r8d,%eax
add    %ebx,%eax
movswl -0x2c(%rdi,%r14,2),%r8d
movswl 0x12(%rsi),%ebx
imul   %r8d,%ebx
add    %eax,%ebx
movswl -0x2a(%rdi,%r14,2),%r8d
movswl 0x14(%rsi),%eax
imul   %r8d,%eax
add    %ebx,%eax
movswl -0x28(%rdi,%r14,2),%r8d
movswl 0x16(%rsi),%ebx
imul   %r8d,%ebx
add    %eax,%ebx
movswl -0x26(%rdi,%r14,2),%r8d
movswl 0x18(%rsi),%eax
imul   %r8d,%eax
add    %ebx,%eax
movswl -0x24(%rdi,%r14,2),%r8d
movswl 0x1a(%rsi),%ebx
imul   %r8d,%ebx
add    %eax,%ebx
movswl -0x22(%rdi,%r14,2),%r8d
movswl 0x1c(%rsi),%eax
imul   %r8d,%eax
add    %ebx,%eax
movswl -0x20(%rdi,%r14,2),%r8d
movswl 0x1e(%rsi),%ebx
imul   %r8d,%ebx
add    %eax,%ebx
movswl -0x1e(%rdi,%r14,2),%r8d
movswl 0x20(%rsi),%eax
imul   %r8d,%eax
add    %ebx,%eax
movswl -0x1c(%rdi,%r14,2),%r8d
movswl 0x22(%rsi),%ebx
imul   %r8d,%ebx
add    %eax,%ebx
movswl -0x1a(%rdi,%r14,2),%r8d
movswl 0x24(%rsi),%eax
imul   %r8d,%eax
add    %ebx,%eax
movswl -0x18(%rdi,%r14,2),%r8d
movswl 0x26(%rsi),%ebx
imul   %r8d,%ebx
add    %eax,%ebx
movswl -0x16(%rdi,%r14,2),%r8d
movswl 0x28(%rsi),%eax
imul   %r8d,%eax
add    %ebx,%eax
movswl -0x14(%rdi,%r14,2),%r8d
movswl 0x2a(%rsi),%ebx
imul   %r8d,%ebx
add    %eax,%ebx
movswl -0x12(%rdi,%r14,2),%r8d
movswl 0x2c(%rsi),%eax
imul   %r8d,%eax
add    %ebx,%eax
movswl -0x10(%rdi,%r14,2),%r8d
movswl 0x2e(%rsi),%ebx
imul   %r8d,%ebx
add    %eax,%ebx
movswl -0xe(%rdi,%r14,2),%r8d
movswl 0x30(%rsi),%eax
imul   %r8d,%eax
add    %ebx,%eax
movswl -0xc(%rdi,%r14,2),%r8d
movswl 0x32(%rsi),%ebx
imul   %r8d,%ebx
add    %eax,%ebx
movswl -0xa(%rdi,%r14,2),%r8d
movswl 0x34(%rsi),%eax
imul   %r8d,%eax
add    %ebx,%eax
movswl -0x8(%rdi,%r14,2),%r8d
movswl 0x36(%rsi),%ebx
imul   %r8d,%ebx
add    %eax,%ebx
movswl -0x6(%rdi,%r14,2),%r8d
movswl 0x38(%rsi),%eax
imul   %r8d,%eax
add    %ebx,%eax
movswl -0x4(%rdi,%r14,2),%r8d
movswl 0x3a(%rsi),%ebx
imul   %r8d,%ebx
add    %eax,%ebx
movswl -0x2(%rdi,%r14,2),%r8d
movswl 0x3c(%rsi),%eax
imul   %r8d,%eax
add    %ebx,%eax
movswl (%rdi,%r14,2),%r8d
movswl 0x3e(%rsi),%ebx
imul   %r8d,%ebx
add    %eax,%ebx
sar    %cl,%ebx
mov    %bx,(%rdx,%r14,2)
lea    0x1(%r14),%rax
mov    %rax,%r14
cmp    %rax,%r9
jne    1da0 <fir3+0xca0>
add    $0x148,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
define void @fir3(i16* %0, i16* %1, i16* %2, i32 %3, i32 %4, i32 %5) {
%7 = alloca i16*
%8 = alloca i16*
%9 = alloca i16*
%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
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
store i16* %0, i16** %7
store i16* %1, i16** %8
store i16* %2, i16** %9
store i32 %3, i32* %10
store i32 %4, i32* %11
store i32 %5, i32* %12
store i32 0, i32* %13
br label %34
34: ; preds = %480, %6
%35 = load i32, i32* %13
%36 = load i32, i32* %11
%37 = icmp slt i32 %35, %36
br i1 %37, label %38, label %483
38: ; preds = %34
%39 = load i16*, i16** %7
%40 = load i32, i32* %13
%41 = sext i32 %40 to i64
%42 = getelementptr inbounds i16, i16* %39, i64 %41
%43 = load i16, i16* %42
%44 = sext i16 %43 to i32
%45 = load i16*, i16** %8
%46 = getelementptr inbounds i16, i16* %45, i64 0
%47 = load i16, i16* %46
%48 = sext i16 %47 to i32
%49 = mul nsw i32 %44, %48
%50 = load i16*, i16** %7
%51 = load i32, i32* %13
%52 = add nsw i32 %51, 1
%53 = sext i32 %52 to i64
%54 = getelementptr inbounds i16, i16* %50, i64 %53
%55 = load i16, i16* %54
%56 = sext i16 %55 to i32
%57 = load i16*, i16** %8
%58 = getelementptr inbounds i16, i16* %57, i64 1
%59 = load i16, i16* %58
%60 = sext i16 %59 to i32
%61 = mul nsw i32 %56, %60
%62 = add nsw i32 %49, %61
store i32 %62, i32* %14
%63 = load i16*, i16** %7
%64 = load i32, i32* %13
%65 = add nsw i32 %64, 2
%66 = sext i32 %65 to i64
%67 = getelementptr inbounds i16, i16* %63, i64 %66
%68 = load i16, i16* %67
%69 = sext i16 %68 to i32
%70 = load i16*, i16** %8
%71 = getelementptr inbounds i16, i16* %70, i64 2
%72 = load i16, i16* %71
%73 = sext i16 %72 to i32
%74 = mul nsw i32 %69, %73
%75 = load i16*, i16** %7
%76 = load i32, i32* %13
%77 = add nsw i32 %76, 3
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds i16, i16* %75, i64 %78
%80 = load i16, i16* %79
%81 = sext i16 %80 to i32
%82 = load i16*, i16** %8
%83 = getelementptr inbounds i16, i16* %82, i64 3
%84 = load i16, i16* %83
%85 = sext i16 %84 to i32
%86 = mul nsw i32 %81, %85
%87 = add nsw i32 %74, %86
store i32 %87, i32* %15
%88 = load i16*, i16** %7
%89 = load i32, i32* %13
%90 = add nsw i32 %89, 4
%91 = sext i32 %90 to i64
%92 = getelementptr inbounds i16, i16* %88, i64 %91
%93 = load i16, i16* %92
%94 = sext i16 %93 to i32
%95 = load i16*, i16** %8
%96 = getelementptr inbounds i16, i16* %95, i64 4
%97 = load i16, i16* %96
%98 = sext i16 %97 to i32
%99 = mul nsw i32 %94, %98
%100 = load i16*, i16** %7
%101 = load i32, i32* %13
%102 = add nsw i32 %101, 5
%103 = sext i32 %102 to i64
%104 = getelementptr inbounds i16, i16* %100, i64 %103
%105 = load i16, i16* %104
%106 = sext i16 %105 to i32
%107 = load i16*, i16** %8
%108 = getelementptr inbounds i16, i16* %107, i64 5
%109 = load i16, i16* %108
%110 = sext i16 %109 to i32
%111 = mul nsw i32 %106, %110
%112 = add nsw i32 %99, %111
store i32 %112, i32* %16
%113 = load i16*, i16** %7
%114 = load i32, i32* %13
%115 = add nsw i32 %114, 6
%116 = sext i32 %115 to i64
%117 = getelementptr inbounds i16, i16* %113, i64 %116
%118 = load i16, i16* %117
%119 = sext i16 %118 to i32
%120 = load i16*, i16** %8
%121 = getelementptr inbounds i16, i16* %120, i64 6
%122 = load i16, i16* %121
%123 = sext i16 %122 to i32
%124 = mul nsw i32 %119, %123
%125 = load i16*, i16** %7
%126 = load i32, i32* %13
%127 = add nsw i32 %126, 7
%128 = sext i32 %127 to i64
%129 = getelementptr inbounds i16, i16* %125, i64 %128
%130 = load i16, i16* %129
%131 = sext i16 %130 to i32
%132 = load i16*, i16** %8
%133 = getelementptr inbounds i16, i16* %132, i64 7
%134 = load i16, i16* %133
%135 = sext i16 %134 to i32
%136 = mul nsw i32 %131, %135
%137 = add nsw i32 %124, %136
store i32 %137, i32* %17
%138 = load i16*, i16** %7
%139 = load i32, i32* %13
%140 = add nsw i32 %139, 8
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds i16, i16* %138, i64 %141
%143 = load i16, i16* %142
%144 = sext i16 %143 to i32
%145 = load i16*, i16** %8
%146 = getelementptr inbounds i16, i16* %145, i64 8
%147 = load i16, i16* %146
%148 = sext i16 %147 to i32
%149 = mul nsw i32 %144, %148
%150 = load i16*, i16** %7
%151 = load i32, i32* %13
%152 = add nsw i32 %151, 9
%153 = sext i32 %152 to i64
%154 = getelementptr inbounds i16, i16* %150, i64 %153
%155 = load i16, i16* %154
%156 = sext i16 %155 to i32
%157 = load i16*, i16** %8
%158 = getelementptr inbounds i16, i16* %157, i64 9
%159 = load i16, i16* %158
%160 = sext i16 %159 to i32
%161 = mul nsw i32 %156, %160
%162 = add nsw i32 %149, %161
store i32 %162, i32* %18
%163 = load i16*, i16** %7
%164 = load i32, i32* %13
%165 = add nsw i32 %164, 10
%166 = sext i32 %165 to i64
%167 = getelementptr inbounds i16, i16* %163, i64 %166
%168 = load i16, i16* %167
%169 = sext i16 %168 to i32
%170 = load i16*, i16** %8
%171 = getelementptr inbounds i16, i16* %170, i64 10
%172 = load i16, i16* %171
%173 = sext i16 %172 to i32
%174 = mul nsw i32 %169, %173
%175 = load i16*, i16** %7
%176 = load i32, i32* %13
%177 = add nsw i32 %176, 11
%178 = sext i32 %177 to i64
%179 = getelementptr inbounds i16, i16* %175, i64 %178
%180 = load i16, i16* %179
%181 = sext i16 %180 to i32
%182 = load i16*, i16** %8
%183 = getelementptr inbounds i16, i16* %182, i64 11
%184 = load i16, i16* %183
%185 = sext i16 %184 to i32
%186 = mul nsw i32 %181, %185
%187 = add nsw i32 %174, %186
store i32 %187, i32* %19
%188 = load i16*, i16** %7
%189 = load i32, i32* %13
%190 = add nsw i32 %189, 12
%191 = sext i32 %190 to i64
%192 = getelementptr inbounds i16, i16* %188, i64 %191
%193 = load i16, i16* %192
%194 = sext i16 %193 to i32
%195 = load i16*, i16** %8
%196 = getelementptr inbounds i16, i16* %195, i64 12
%197 = load i16, i16* %196
%198 = sext i16 %197 to i32
%199 = mul nsw i32 %194, %198
%200 = load i16*, i16** %7
%201 = load i32, i32* %13
%202 = add nsw i32 %201, 13
%203 = sext i32 %202 to i64
%204 = getelementptr inbounds i16, i16* %200, i64 %203
%205 = load i16, i16* %204
%206 = sext i16 %205 to i32
%207 = load i16*, i16** %8
%208 = getelementptr inbounds i16, i16* %207, i64 13
%209 = load i16, i16* %208
%210 = sext i16 %209 to i32
%211 = mul nsw i32 %206, %210
%212 = add nsw i32 %199, %211
store i32 %212, i32* %20
%213 = load i16*, i16** %7
%214 = load i32, i32* %13
%215 = add nsw i32 %214, 14
%216 = sext i32 %215 to i64
%217 = getelementptr inbounds i16, i16* %213, i64 %216
%218 = load i16, i16* %217
%219 = sext i16 %218 to i32
%220 = load i16*, i16** %8
%221 = getelementptr inbounds i16, i16* %220, i64 14
%222 = load i16, i16* %221
%223 = sext i16 %222 to i32
%224 = mul nsw i32 %219, %223
%225 = load i16*, i16** %7
%226 = load i32, i32* %13
%227 = add nsw i32 %226, 15
%228 = sext i32 %227 to i64
%229 = getelementptr inbounds i16, i16* %225, i64 %228
%230 = load i16, i16* %229
%231 = sext i16 %230 to i32
%232 = load i16*, i16** %8
%233 = getelementptr inbounds i16, i16* %232, i64 15
%234 = load i16, i16* %233
%235 = sext i16 %234 to i32
%236 = mul nsw i32 %231, %235
%237 = add nsw i32 %224, %236
store i32 %237, i32* %21
%238 = load i16*, i16** %7
%239 = load i32, i32* %13
%240 = add nsw i32 %239, 16
%241 = sext i32 %240 to i64
%242 = getelementptr inbounds i16, i16* %238, i64 %241
%243 = load i16, i16* %242
%244 = sext i16 %243 to i32
%245 = load i16*, i16** %8
%246 = getelementptr inbounds i16, i16* %245, i64 16
%247 = load i16, i16* %246
%248 = sext i16 %247 to i32
%249 = mul nsw i32 %244, %248
%250 = load i16*, i16** %7
%251 = load i32, i32* %13
%252 = add nsw i32 %251, 17
%253 = sext i32 %252 to i64
%254 = getelementptr inbounds i16, i16* %250, i64 %253
%255 = load i16, i16* %254
%256 = sext i16 %255 to i32
%257 = load i16*, i16** %8
%258 = getelementptr inbounds i16, i16* %257, i64 17
%259 = load i16, i16* %258
%260 = sext i16 %259 to i32
%261 = mul nsw i32 %256, %260
%262 = add nsw i32 %249, %261
store i32 %262, i32* %22
%263 = load i16*, i16** %7
%264 = load i32, i32* %13
%265 = add nsw i32 %264, 18
%266 = sext i32 %265 to i64
%267 = getelementptr inbounds i16, i16* %263, i64 %266
%268 = load i16, i16* %267
%269 = sext i16 %268 to i32
%270 = load i16*, i16** %8
%271 = getelementptr inbounds i16, i16* %270, i64 18
%272 = load i16, i16* %271
%273 = sext i16 %272 to i32
%274 = mul nsw i32 %269, %273
%275 = load i16*, i16** %7
%276 = load i32, i32* %13
%277 = add nsw i32 %276, 19
%278 = sext i32 %277 to i64
%279 = getelementptr inbounds i16, i16* %275, i64 %278
%280 = load i16, i16* %279
%281 = sext i16 %280 to i32
%282 = load i16*, i16** %8
%283 = getelementptr inbounds i16, i16* %282, i64 19
%284 = load i16, i16* %283
%285 = sext i16 %284 to i32
%286 = mul nsw i32 %281, %285
%287 = add nsw i32 %274, %286
store i32 %287, i32* %23
%288 = load i16*, i16** %7
%289 = load i32, i32* %13
%290 = add nsw i32 %289, 20
%291 = sext i32 %290 to i64
%292 = getelementptr inbounds i16, i16* %288, i64 %291
%293 = load i16, i16* %292
%294 = sext i16 %293 to i32
%295 = load i16*, i16** %8
%296 = getelementptr inbounds i16, i16* %295, i64 20
%297 = load i16, i16* %296
%298 = sext i16 %297 to i32
%299 = mul nsw i32 %294, %298
%300 = load i16*, i16** %7
%301 = load i32, i32* %13
%302 = add nsw i32 %301, 21
%303 = sext i32 %302 to i64
%304 = getelementptr inbounds i16, i16* %300, i64 %303
%305 = load i16, i16* %304
%306 = sext i16 %305 to i32
%307 = load i16*, i16** %8
%308 = getelementptr inbounds i16, i16* %307, i64 21
%309 = load i16, i16* %308
%310 = sext i16 %309 to i32
%311 = mul nsw i32 %306, %310
%312 = add nsw i32 %299, %311
store i32 %312, i32* %24
%313 = load i16*, i16** %7
%314 = load i32, i32* %13
%315 = add nsw i32 %314, 22
%316 = sext i32 %315 to i64
%317 = getelementptr inbounds i16, i16* %313, i64 %316
%318 = load i16, i16* %317
%319 = sext i16 %318 to i32
%320 = load i16*, i16** %8
%321 = getelementptr inbounds i16, i16* %320, i64 22
%322 = load i16, i16* %321
%323 = sext i16 %322 to i32
%324 = mul nsw i32 %319, %323
%325 = load i16*, i16** %7
%326 = load i32, i32* %13
%327 = add nsw i32 %326, 23
%328 = sext i32 %327 to i64
%329 = getelementptr inbounds i16, i16* %325, i64 %328
%330 = load i16, i16* %329
%331 = sext i16 %330 to i32
%332 = load i16*, i16** %8
%333 = getelementptr inbounds i16, i16* %332, i64 23
%334 = load i16, i16* %333
%335 = sext i16 %334 to i32
%336 = mul nsw i32 %331, %335
%337 = add nsw i32 %324, %336
store i32 %337, i32* %25
%338 = load i16*, i16** %7
%339 = load i32, i32* %13
%340 = add nsw i32 %339, 24
%341 = sext i32 %340 to i64
%342 = getelementptr inbounds i16, i16* %338, i64 %341
%343 = load i16, i16* %342
%344 = sext i16 %343 to i32
%345 = load i16*, i16** %8
%346 = getelementptr inbounds i16, i16* %345, i64 24
%347 = load i16, i16* %346
%348 = sext i16 %347 to i32
%349 = mul nsw i32 %344, %348
%350 = load i16*, i16** %7
%351 = load i32, i32* %13
%352 = add nsw i32 %351, 25
%353 = sext i32 %352 to i64
%354 = getelementptr inbounds i16, i16* %350, i64 %353
%355 = load i16, i16* %354
%356 = sext i16 %355 to i32
%357 = load i16*, i16** %8
%358 = getelementptr inbounds i16, i16* %357, i64 25
%359 = load i16, i16* %358
%360 = sext i16 %359 to i32
%361 = mul nsw i32 %356, %360
%362 = add nsw i32 %349, %361
store i32 %362, i32* %26
%363 = load i16*, i16** %7
%364 = load i32, i32* %13
%365 = add nsw i32 %364, 26
%366 = sext i32 %365 to i64
%367 = getelementptr inbounds i16, i16* %363, i64 %366
%368 = load i16, i16* %367
%369 = sext i16 %368 to i32
%370 = load i16*, i16** %8
%371 = getelementptr inbounds i16, i16* %370, i64 26
%372 = load i16, i16* %371
%373 = sext i16 %372 to i32
%374 = mul nsw i32 %369, %373
%375 = load i16*, i16** %7
%376 = load i32, i32* %13
%377 = add nsw i32 %376, 27
%378 = sext i32 %377 to i64
%379 = getelementptr inbounds i16, i16* %375, i64 %378
%380 = load i16, i16* %379
%381 = sext i16 %380 to i32
%382 = load i16*, i16** %8
%383 = getelementptr inbounds i16, i16* %382, i64 27
%384 = load i16, i16* %383
%385 = sext i16 %384 to i32
%386 = mul nsw i32 %381, %385
%387 = add nsw i32 %374, %386
store i32 %387, i32* %27
%388 = load i16*, i16** %7
%389 = load i32, i32* %13
%390 = add nsw i32 %389, 28
%391 = sext i32 %390 to i64
%392 = getelementptr inbounds i16, i16* %388, i64 %391
%393 = load i16, i16* %392
%394 = sext i16 %393 to i32
%395 = load i16*, i16** %8
%396 = getelementptr inbounds i16, i16* %395, i64 28
%397 = load i16, i16* %396
%398 = sext i16 %397 to i32
%399 = mul nsw i32 %394, %398
%400 = load i16*, i16** %7
%401 = load i32, i32* %13
%402 = add nsw i32 %401, 29
%403 = sext i32 %402 to i64
%404 = getelementptr inbounds i16, i16* %400, i64 %403
%405 = load i16, i16* %404
%406 = sext i16 %405 to i32
%407 = load i16*, i16** %8
%408 = getelementptr inbounds i16, i16* %407, i64 29
%409 = load i16, i16* %408
%410 = sext i16 %409 to i32
%411 = mul nsw i32 %406, %410
%412 = add nsw i32 %399, %411
store i32 %412, i32* %28
%413 = load i16*, i16** %7
%414 = load i32, i32* %13
%415 = add nsw i32 %414, 30
%416 = sext i32 %415 to i64
%417 = getelementptr inbounds i16, i16* %413, i64 %416
%418 = load i16, i16* %417
%419 = sext i16 %418 to i32
%420 = load i16*, i16** %8
%421 = getelementptr inbounds i16, i16* %420, i64 30
%422 = load i16, i16* %421
%423 = sext i16 %422 to i32
%424 = mul nsw i32 %419, %423
%425 = load i16*, i16** %7
%426 = load i32, i32* %13
%427 = add nsw i32 %426, 31
%428 = sext i32 %427 to i64
%429 = getelementptr inbounds i16, i16* %425, i64 %428
%430 = load i16, i16* %429
%431 = sext i16 %430 to i32
%432 = load i16*, i16** %8
%433 = getelementptr inbounds i16, i16* %432, i64 31
%434 = load i16, i16* %433
%435 = sext i16 %434 to i32
%436 = mul nsw i32 %431, %435
%437 = add nsw i32 %424, %436
store i32 %437, i32* %29
%438 = load i32, i32* %14
%439 = load i32, i32* %15
%440 = add nsw i32 %438, %439
%441 = load i32, i32* %16
%442 = add nsw i32 %440, %441
%443 = load i32, i32* %17
%444 = add nsw i32 %442, %443
store i32 %444, i32* %30
%445 = load i32, i32* %18
%446 = load i32, i32* %19
%447 = add nsw i32 %445, %446
%448 = load i32, i32* %20
%449 = add nsw i32 %447, %448
%450 = load i32, i32* %21
%451 = add nsw i32 %449, %450
store i32 %451, i32* %31
%452 = load i32, i32* %22
%453 = load i32, i32* %23
%454 = add nsw i32 %452, %453
%455 = load i32, i32* %24
%456 = add nsw i32 %454, %455
%457 = load i32, i32* %25
%458 = add nsw i32 %456, %457
store i32 %458, i32* %32
%459 = load i32, i32* %26
%460 = load i32, i32* %27
%461 = add nsw i32 %459, %460
%462 = load i32, i32* %28
%463 = add nsw i32 %461, %462
%464 = load i32, i32* %29
%465 = add nsw i32 %463, %464
store i32 %465, i32* %33
%466 = load i32, i32* %30
%467 = load i32, i32* %31
%468 = add nsw i32 %466, %467
%469 = load i32, i32* %32
%470 = add nsw i32 %468, %469
%471 = load i32, i32* %33
%472 = add nsw i32 %470, %471
%473 = load i32, i32* %12
%474 = ashr i32 %472, %473
%475 = trunc i32 %474 to i16
%476 = load i16*, i16** %9
%477 = load i32, i32* %13
%478 = sext i32 %477 to i64
%479 = getelementptr inbounds i16, i16* %476, i64 %478
store i16 %475, i16* %479
br label %480
480: ; preds = %38
%481 = load i32, i32* %13
%482 = add nsw i32 %481, 1
store i32 %482, i32* %13
br label %34
483: ; preds = %34
ret void
}

LLVM IR (-O2):
define void @fir3(i16* %0, i16* %1, i16* nocapture writeonly %2, i32 %3, i32 %4, i32 %5) {
%7 = icmp sgt i32 %4, 0
br i1 %7, label %8, label %680
8: ; preds = %6
%9 = getelementptr inbounds i16, i16* %1, i64 1
%10 = getelementptr inbounds i16, i16* %1, i64 2
%11 = getelementptr inbounds i16, i16* %1, i64 3
%12 = getelementptr inbounds i16, i16* %1, i64 4
%13 = getelementptr inbounds i16, i16* %1, i64 5
%14 = getelementptr inbounds i16, i16* %1, i64 6
%15 = getelementptr inbounds i16, i16* %1, i64 7
%16 = getelementptr inbounds i16, i16* %1, i64 8
%17 = getelementptr inbounds i16, i16* %1, i64 9
%18 = getelementptr inbounds i16, i16* %1, i64 10
%19 = getelementptr inbounds i16, i16* %1, i64 11
%20 = getelementptr inbounds i16, i16* %1, i64 12
%21 = getelementptr inbounds i16, i16* %1, i64 13
%22 = getelementptr inbounds i16, i16* %1, i64 14
%23 = getelementptr inbounds i16, i16* %1, i64 15
%24 = getelementptr inbounds i16, i16* %1, i64 16
%25 = getelementptr inbounds i16, i16* %1, i64 17
%26 = getelementptr inbounds i16, i16* %1, i64 18
%27 = getelementptr inbounds i16, i16* %1, i64 19
%28 = getelementptr inbounds i16, i16* %1, i64 20
%29 = getelementptr inbounds i16, i16* %1, i64 21
%30 = getelementptr inbounds i16, i16* %1, i64 22
%31 = getelementptr inbounds i16, i16* %1, i64 23
%32 = getelementptr inbounds i16, i16* %1, i64 24
%33 = getelementptr inbounds i16, i16* %1, i64 25
%34 = getelementptr inbounds i16, i16* %1, i64 26
%35 = getelementptr inbounds i16, i16* %1, i64 27
%36 = getelementptr inbounds i16, i16* %1, i64 28
%37 = getelementptr inbounds i16, i16* %1, i64 29
%38 = getelementptr inbounds i16, i16* %1, i64 30
%39 = getelementptr inbounds i16, i16* %1, i64 31
%40 = zext i32 %4 to i64
%41 = icmp ult i32 %4, 8
br i1 %41, label %418, label %42
42: ; preds = %8
%43 = getelementptr i16, i16* %2, i64 %40
%44 = add nuw nsw i64 %40, 31
%45 = getelementptr i16, i16* %0, i64 %44
%46 = getelementptr i16, i16* %1, i64 32
%47 = icmp ugt i16* %45, %2
%48 = icmp ugt i16* %43, %0
%49 = and i1 %47, %48
%50 = icmp ugt i16* %46, %2
%51 = icmp ugt i16* %43, %1
%52 = and i1 %50, %51
%53 = or i1 %49, %52
br i1 %53, label %418, label %54
54: ; preds = %42
%55 = and i64 %40, 4294967288
%56 = insertelement <8 x i32> poison, i32 %5, i64 0
%57 = shufflevector <8 x i32> %56, <8 x i32> poison, <8 x i32> zeroinitializer
%58 = load i16, i16* %1
%59 = insertelement <8 x i16> poison, i16 %58, i64 0
%60 = shufflevector <8 x i16> %59, <8 x i16> poison, <8 x i32> zeroinitializer
%61 = sext <8 x i16> %60 to <8 x i32>
%62 = load i16, i16* %9
%63 = insertelement <8 x i16> poison, i16 %62, i64 0
%64 = shufflevector <8 x i16> %63, <8 x i16> poison, <8 x i32> zeroinitializer
%65 = sext <8 x i16> %64 to <8 x i32>
%66 = load i16, i16* %10
%67 = insertelement <8 x i16> poison, i16 %66, i64 0
%68 = shufflevector <8 x i16> %67, <8 x i16> poison, <8 x i32> zeroinitializer
%69 = sext <8 x i16> %68 to <8 x i32>
%70 = load i16, i16* %11
%71 = insertelement <8 x i16> poison, i16 %70, i64 0
%72 = shufflevector <8 x i16> %71, <8 x i16> poison, <8 x i32> zeroinitializer
%73 = sext <8 x i16> %72 to <8 x i32>
%74 = load i16, i16* %12
%75 = insertelement <8 x i16> poison, i16 %74, i64 0
%76 = shufflevector <8 x i16> %75, <8 x i16> poison, <8 x i32> zeroinitializer
%77 = sext <8 x i16> %76 to <8 x i32>
%78 = load i16, i16* %13
%79 = insertelement <8 x i16> poison, i16 %78, i64 0
%80 = shufflevector <8 x i16> %79, <8 x i16> poison, <8 x i32> zeroinitializer
%81 = sext <8 x i16> %80 to <8 x i32>
%82 = load i16, i16* %14
%83 = insertelement <8 x i16> poison, i16 %82, i64 0
%84 = shufflevector <8 x i16> %83, <8 x i16> poison, <8 x i32> zeroinitializer
%85 = sext <8 x i16> %84 to <8 x i32>
%86 = load i16, i16* %15
%87 = insertelement <8 x i16> poison, i16 %86, i64 0
%88 = shufflevector <8 x i16> %87, <8 x i16> poison, <8 x i32> zeroinitializer
%89 = sext <8 x i16> %88 to <8 x i32>
%90 = load i16, i16* %16
%91 = insertelement <8 x i16> poison, i16 %90, i64 0
%92 = shufflevector <8 x i16> %91, <8 x i16> poison, <8 x i32> zeroinitializer
%93 = sext <8 x i16> %92 to <8 x i32>
%94 = load i16, i16* %17
%95 = insertelement <8 x i16> poison, i16 %94, i64 0
%96 = shufflevector <8 x i16> %95, <8 x i16> poison, <8 x i32> zeroinitializer
%97 = sext <8 x i16> %96 to <8 x i32>
%98 = load i16, i16* %18
%99 = insertelement <8 x i16> poison, i16 %98, i64 0
%100 = shufflevector <8 x i16> %99, <8 x i16> poison, <8 x i32> zeroinitializer
%101 = sext <8 x i16> %100 to <8 x i32>
%102 = load i16, i16* %19
%103 = insertelement <8 x i16> poison, i16 %102, i64 0
%104 = shufflevector <8 x i16> %103, <8 x i16> poison, <8 x i32> zeroinitializer
%105 = sext <8 x i16> %104 to <8 x i32>
%106 = load i16, i16* %20
%107 = insertelement <8 x i16> poison, i16 %106, i64 0
%108 = shufflevector <8 x i16> %107, <8 x i16> poison, <8 x i32> zeroinitializer
%109 = sext <8 x i16> %108 to <8 x i32>
%110 = load i16, i16* %21
%111 = insertelement <8 x i16> poison, i16 %110, i64 0
%112 = shufflevector <8 x i16> %111, <8 x i16> poison, <8 x i32> zeroinitializer
%113 = sext <8 x i16> %112 to <8 x i32>
%114 = load i16, i16* %22
%115 = insertelement <8 x i16> poison, i16 %114, i64 0
%116 = shufflevector <8 x i16> %115, <8 x i16> poison, <8 x i32> zeroinitializer
%117 = sext <8 x i16> %116 to <8 x i32>
%118 = load i16, i16* %23
%119 = insertelement <8 x i16> poison, i16 %118, i64 0
%120 = shufflevector <8 x i16> %119, <8 x i16> poison, <8 x i32> zeroinitializer
%121 = sext <8 x i16> %120 to <8 x i32>
%122 = load i16, i16* %24
%123 = insertelement <8 x i16> poison, i16 %122, i64 0
%124 = shufflevector <8 x i16> %123, <8 x i16> poison, <8 x i32> zeroinitializer
%125 = sext <8 x i16> %124 to <8 x i32>
%126 = load i16, i16* %25
%127 = insertelement <8 x i16> poison, i16 %126, i64 0
%128 = shufflevector <8 x i16> %127, <8 x i16> poison, <8 x i32> zeroinitializer
%129 = sext <8 x i16> %128 to <8 x i32>
%130 = load i16, i16* %26
%131 = insertelement <8 x i16> poison, i16 %130, i64 0
%132 = shufflevector <8 x i16> %131, <8 x i16> poison, <8 x i32> zeroinitializer
%133 = sext <8 x i16> %132 to <8 x i32>
%134 = load i16, i16* %27
%135 = insertelement <8 x i16> poison, i16 %134, i64 0
%136 = shufflevector <8 x i16> %135, <8 x i16> poison, <8 x i32> zeroinitializer
%137 = sext <8 x i16> %136 to <8 x i32>
%138 = load i16, i16* %28
%139 = insertelement <8 x i16> poison, i16 %138, i64 0
%140 = shufflevector <8 x i16> %139, <8 x i16> poison, <8 x i32> zeroinitializer
%141 = sext <8 x i16> %140 to <8 x i32>
%142 = load i16, i16* %29
%143 = insertelement <8 x i16> poison, i16 %142, i64 0
%144 = shufflevector <8 x i16> %143, <8 x i16> poison, <8 x i32> zeroinitializer
%145 = sext <8 x i16> %144 to <8 x i32>
%146 = load i16, i16* %30
%147 = insertelement <8 x i16> poison, i16 %146, i64 0
%148 = shufflevector <8 x i16> %147, <8 x i16> poison, <8 x i32> zeroinitializer
%149 = sext <8 x i16> %148 to <8 x i32>
%150 = load i16, i16* %31
%151 = insertelement <8 x i16> poison, i16 %150, i64 0
%152 = shufflevector <8 x i16> %151, <8 x i16> poison, <8 x i32> zeroinitializer
%153 = sext <8 x i16> %152 to <8 x i32>
%154 = load i16, i16* %32
%155 = insertelement <8 x i16> poison, i16 %154, i64 0
%156 = shufflevector <8 x i16> %155, <8 x i16> poison, <8 x i32> zeroinitializer
%157 = sext <8 x i16> %156 to <8 x i32>
%158 = load i16, i16* %33
%159 = insertelement <8 x i16> poison, i16 %158, i64 0
%160 = shufflevector <8 x i16> %159, <8 x i16> poison, <8 x i32> zeroinitializer
%161 = sext <8 x i16> %160 to <8 x i32>
%162 = load i16, i16* %34
%163 = insertelement <8 x i16> poison, i16 %162, i64 0
%164 = shufflevector <8 x i16> %163, <8 x i16> poison, <8 x i32> zeroinitializer
%165 = sext <8 x i16> %164 to <8 x i32>
%166 = load i16, i16* %35
%167 = insertelement <8 x i16> poison, i16 %166, i64 0
%168 = shufflevector <8 x i16> %167, <8 x i16> poison, <8 x i32> zeroinitializer
%169 = sext <8 x i16> %168 to <8 x i32>
%170 = load i16, i16* %36
%171 = insertelement <8 x i16> poison, i16 %170, i64 0
%172 = shufflevector <8 x i16> %171, <8 x i16> poison, <8 x i32> zeroinitializer
%173 = sext <8 x i16> %172 to <8 x i32>
%174 = load i16, i16* %37
%175 = insertelement <8 x i16> poison, i16 %174, i64 0
%176 = shufflevector <8 x i16> %175, <8 x i16> poison, <8 x i32> zeroinitializer
%177 = sext <8 x i16> %176 to <8 x i32>
%178 = load i16, i16* %38
%179 = insertelement <8 x i16> poison, i16 %178, i64 0
%180 = shufflevector <8 x i16> %179, <8 x i16> poison, <8 x i32> zeroinitializer
%181 = sext <8 x i16> %180 to <8 x i32>
%182 = load i16, i16* %39
%183 = insertelement <8 x i16> poison, i16 %182, i64 0
%184 = shufflevector <8 x i16> %183, <8 x i16> poison, <8 x i32> zeroinitializer
%185 = sext <8 x i16> %184 to <8 x i32>
br label %186
186: ; preds = %186, %54
%187 = phi i64 [ 0, %54 ], [ %414, %186 ]
%188 = getelementptr inbounds i16, i16* %0, i64 %187
%189 = bitcast i16* %188 to <8 x i16>*
%190 = load <8 x i16>, <8 x i16>* %189
%191 = sext <8 x i16> %190 to <8 x i32>
%192 = mul nsw <8 x i32> %61, %191
%193 = or i64 %187, 1
%194 = getelementptr inbounds i16, i16* %0, i64 %193
%195 = bitcast i16* %194 to <8 x i16>*
%196 = load <8 x i16>, <8 x i16>* %195
%197 = sext <8 x i16> %196 to <8 x i32>
%198 = mul nsw <8 x i32> %65, %197
%199 = or i64 %187, 2
%200 = getelementptr inbounds i16, i16* %0, i64 %199
%201 = bitcast i16* %200 to <8 x i16>*
%202 = load <8 x i16>, <8 x i16>* %201
%203 = sext <8 x i16> %202 to <8 x i32>
%204 = mul nsw <8 x i32> %69, %203
%205 = or i64 %187, 3
%206 = getelementptr inbounds i16, i16* %0, i64 %205
%207 = bitcast i16* %206 to <8 x i16>*
%208 = load <8 x i16>, <8 x i16>* %207
%209 = sext <8 x i16> %208 to <8 x i32>
%210 = mul nsw <8 x i32> %73, %209
%211 = or i64 %187, 4
%212 = getelementptr inbounds i16, i16* %0, i64 %211
%213 = bitcast i16* %212 to <8 x i16>*
%214 = load <8 x i16>, <8 x i16>* %213
%215 = sext <8 x i16> %214 to <8 x i32>
%216 = mul nsw <8 x i32> %77, %215
%217 = or i64 %187, 5
%218 = getelementptr inbounds i16, i16* %0, i64 %217
%219 = bitcast i16* %218 to <8 x i16>*
%220 = load <8 x i16>, <8 x i16>* %219
%221 = sext <8 x i16> %220 to <8 x i32>
%222 = mul nsw <8 x i32> %81, %221
%223 = or i64 %187, 6
%224 = getelementptr inbounds i16, i16* %0, i64 %223
%225 = bitcast i16* %224 to <8 x i16>*
%226 = load <8 x i16>, <8 x i16>* %225
%227 = sext <8 x i16> %226 to <8 x i32>
%228 = mul nsw <8 x i32> %85, %227
%229 = or i64 %187, 7
%230 = getelementptr inbounds i16, i16* %0, i64 %229
%231 = bitcast i16* %230 to <8 x i16>*
%232 = load <8 x i16>, <8 x i16>* %231
%233 = sext <8 x i16> %232 to <8 x i32>
%234 = mul nsw <8 x i32> %89, %233
%235 = add nuw nsw i64 %187, 8
%236 = getelementptr inbounds i16, i16* %0, i64 %235
%237 = bitcast i16* %236 to <8 x i16>*
%238 = load <8 x i16>, <8 x i16>* %237
%239 = sext <8 x i16> %238 to <8 x i32>
%240 = mul nsw <8 x i32> %93, %239
%241 = add nuw nsw i64 %187, 9
%242 = getelementptr inbounds i16, i16* %0, i64 %241
%243 = bitcast i16* %242 to <8 x i16>*
%244 = load <8 x i16>, <8 x i16>* %243
%245 = sext <8 x i16> %244 to <8 x i32>
%246 = mul nsw <8 x i32> %97, %245
%247 = add nuw nsw i64 %187, 10
%248 = getelementptr inbounds i16, i16* %0, i64 %247
%249 = bitcast i16* %248 to <8 x i16>*
%250 = load <8 x i16>, <8 x i16>* %249
%251 = sext <8 x i16> %250 to <8 x i32>
%252 = mul nsw <8 x i32> %101, %251
%253 = add nuw nsw i64 %187, 11
%254 = getelementptr inbounds i16, i16* %0, i64 %253
%255 = bitcast i16* %254 to <8 x i16>*
%256 = load <8 x i16>, <8 x i16>* %255
%257 = sext <8 x i16> %256 to <8 x i32>
%258 = mul nsw <8 x i32> %105, %257
%259 = add nuw nsw i64 %187, 12
%260 = getelementptr inbounds i16, i16* %0, i64 %259
%261 = bitcast i16* %260 to <8 x i16>*
%262 = load <8 x i16>, <8 x i16>* %261
%263 = sext <8 x i16> %262 to <8 x i32>
%264 = mul nsw <8 x i32> %109, %263
%265 = add nuw nsw i64 %187, 13
%266 = getelementptr inbounds i16, i16* %0, i64 %265
%267 = bitcast i16* %266 to <8 x i16>*
%268 = load <8 x i16>, <8 x i16>* %267
%269 = sext <8 x i16> %268 to <8 x i32>
%270 = mul nsw <8 x i32> %113, %269
%271 = add nuw nsw i64 %187, 14
%272 = getelementptr inbounds i16, i16* %0, i64 %271
%273 = bitcast i16* %272 to <8 x i16>*
%274 = load <8 x i16>, <8 x i16>* %273
%275 = sext <8 x i16> %274 to <8 x i32>
%276 = mul nsw <8 x i32> %117, %275
%277 = add nuw nsw i64 %187, 15
%278 = getelementptr inbounds i16, i16* %0, i64 %277
%279 = bitcast i16* %278 to <8 x i16>*
%280 = load <8 x i16>, <8 x i16>* %279
%281 = sext <8 x i16> %280 to <8 x i32>
%282 = mul nsw <8 x i32> %121, %281
%283 = add nuw nsw i64 %187, 16
%284 = getelementptr inbounds i16, i16* %0, i64 %283
%285 = bitcast i16* %284 to <8 x i16>*
%286 = load <8 x i16>, <8 x i16>* %285
%287 = sext <8 x i16> %286 to <8 x i32>
%288 = mul nsw <8 x i32> %125, %287
%289 = add nuw nsw i64 %187, 17
%290 = getelementptr inbounds i16, i16* %0, i64 %289
%291 = bitcast i16* %290 to <8 x i16>*
%292 = load <8 x i16>, <8 x i16>* %291
%293 = sext <8 x i16> %292 to <8 x i32>
%294 = mul nsw <8 x i32> %129, %293
%295 = add nuw nsw i64 %187, 18
%296 = getelementptr inbounds i16, i16* %0, i64 %295
%297 = bitcast i16* %296 to <8 x i16>*
%298 = load <8 x i16>, <8 x i16>* %297
%299 = sext <8 x i16> %298 to <8 x i32>
%300 = mul nsw <8 x i32> %133, %299
%301 = add nuw nsw i64 %187, 19
%302 = getelementptr inbounds i16, i16* %0, i64 %301
%303 = bitcast i16* %302 to <8 x i16>*
%304 = load <8 x i16>, <8 x i16>* %303
%305 = sext <8 x i16> %304 to <8 x i32>
%306 = mul nsw <8 x i32> %137, %305
%307 = add nuw nsw i64 %187, 20
%308 = getelementptr inbounds i16, i16* %0, i64 %307
%309 = bitcast i16* %308 to <8 x i16>*
%310 = load <8 x i16>, <8 x i16>* %309
%311 = sext <8 x i16> %310 to <8 x i32>
%312 = mul nsw <8 x i32> %141, %311
%313 = add nuw nsw i64 %187, 21
%314 = getelementptr inbounds i16, i16* %0, i64 %313
%315 = bitcast i16* %314 to <8 x i16>*
%316 = load <8 x i16>, <8 x i16>* %315
%317 = sext <8 x i16> %316 to <8 x i32>
%318 = mul nsw <8 x i32> %145, %317
%319 = add nuw nsw i64 %187, 22
%320 = getelementptr inbounds i16, i16* %0, i64 %319
%321 = bitcast i16* %320 to <8 x i16>*
%322 = load <8 x i16>, <8 x i16>* %321
%323 = sext <8 x i16> %322 to <8 x i32>
%324 = mul nsw <8 x i32> %149, %323
%325 = add nuw nsw i64 %187, 23
%326 = getelementptr inbounds i16, i16* %0, i64 %325
%327 = bitcast i16* %326 to <8 x i16>*
%328 = load <8 x i16>, <8 x i16>* %327
%329 = sext <8 x i16> %328 to <8 x i32>
%330 = mul nsw <8 x i32> %153, %329
%331 = add nuw nsw i64 %187, 24
%332 = getelementptr inbounds i16, i16* %0, i64 %331
%333 = bitcast i16* %332 to <8 x i16>*
%334 = load <8 x i16>, <8 x i16>* %333
%335 = sext <8 x i16> %334 to <8 x i32>
%336 = mul nsw <8 x i32> %157, %335
%337 = add nuw nsw i64 %187, 25
%338 = getelementptr inbounds i16, i16* %0, i64 %337
%339 = bitcast i16* %338 to <8 x i16>*
%340 = load <8 x i16>, <8 x i16>* %339
%341 = sext <8 x i16> %340 to <8 x i32>
%342 = mul nsw <8 x i32> %161, %341
%343 = add nuw nsw i64 %187, 26
%344 = getelementptr inbounds i16, i16* %0, i64 %343
%345 = bitcast i16* %344 to <8 x i16>*
%346 = load <8 x i16>, <8 x i16>* %345
%347 = sext <8 x i16> %346 to <8 x i32>
%348 = mul nsw <8 x i32> %165, %347
%349 = add nuw nsw i64 %187, 27
%350 = getelementptr inbounds i16, i16* %0, i64 %349
%351 = bitcast i16* %350 to <8 x i16>*
%352 = load <8 x i16>, <8 x i16>* %351
%353 = sext <8 x i16> %352 to <8 x i32>
%354 = mul nsw <8 x i32> %169, %353
%355 = add nuw nsw i64 %187, 28
%356 = getelementptr inbounds i16, i16* %0, i64 %355
%357 = bitcast i16* %356 to <8 x i16>*
%358 = load <8 x i16>, <8 x i16>* %357
%359 = sext <8 x i16> %358 to <8 x i32>
%360 = mul nsw <8 x i32> %173, %359
%361 = add nuw nsw i64 %187, 29
%362 = getelementptr inbounds i16, i16* %0, i64 %361
%363 = bitcast i16* %362 to <8 x i16>*
%364 = load <8 x i16>, <8 x i16>* %363
%365 = sext <8 x i16> %364 to <8 x i32>
%366 = mul nsw <8 x i32> %177, %365
%367 = add nuw nsw i64 %187, 30
%368 = getelementptr inbounds i16, i16* %0, i64 %367
%369 = bitcast i16* %368 to <8 x i16>*
%370 = load <8 x i16>, <8 x i16>* %369
%371 = sext <8 x i16> %370 to <8 x i32>
%372 = mul nsw <8 x i32> %181, %371
%373 = add nuw nsw i64 %187, 31
%374 = getelementptr inbounds i16, i16* %0, i64 %373
%375 = bitcast i16* %374 to <8 x i16>*
%376 = load <8 x i16>, <8 x i16>* %375
%377 = sext <8 x i16> %376 to <8 x i32>
%378 = mul nsw <8 x i32> %185, %377
%379 = add <8 x i32> %198, %192
%380 = add <8 x i32> %379, %204
%381 = add <8 x i32> %380, %210
%382 = add <8 x i32> %381, %216
%383 = add <8 x i32> %382, %222
%384 = add <8 x i32> %383, %228
%385 = add <8 x i32> %384, %234
%386 = add <8 x i32> %385, %240
%387 = add <8 x i32> %386, %246
%388 = add <8 x i32> %387, %252
%389 = add <8 x i32> %388, %258
%390 = add <8 x i32> %389, %264
%391 = add <8 x i32> %390, %270
%392 = add <8 x i32> %391, %276
%393 = add <8 x i32> %392, %282
%394 = add <8 x i32> %393, %288
%395 = add <8 x i32> %394, %294
%396 = add <8 x i32> %395, %300
%397 = add <8 x i32> %396, %306
%398 = add <8 x i32> %397, %312
%399 = add <8 x i32> %398, %318
%400 = add <8 x i32> %399, %324
%401 = add <8 x i32> %400, %330
%402 = add <8 x i32> %401, %336
%403 = add <8 x i32> %402, %342
%404 = add <8 x i32> %403, %348
%405 = add <8 x i32> %404, %354
%406 = add <8 x i32> %405, %360
%407 = add <8 x i32> %406, %366
%408 = add <8 x i32> %407, %372
%409 = add <8 x i32> %408, %378
%410 = ashr <8 x i32> %409, %57
%411 = trunc <8 x i32> %410 to <8 x i16>
%412 = getelementptr inbounds i16, i16* %2, i64 %187
%413 = bitcast i16* %412 to <8 x i16>*
store <8 x i16> %411, <8 x i16>* %413
%414 = add nuw i64 %187, 8
%415 = icmp eq i64 %414, %55
br i1 %415, label %416, label %186
416: ; preds = %186
%417 = icmp eq i64 %55, %40
br i1 %417, label %680, label %418
418: ; preds = %42, %8, %416
%419 = phi i64 [ 0, %42 ], [ 0, %8 ], [ %55, %416 ]
br label %420
420: ; preds = %418, %420
%421 = phi i64 [ %428, %420 ], [ %419, %418 ]
%422 = getelementptr inbounds i16, i16* %0, i64 %421
%423 = load i16, i16* %422
%424 = sext i16 %423 to i32
%425 = load i16, i16* %1
%426 = sext i16 %425 to i32
%427 = mul nsw i32 %426, %424
%428 = add nuw nsw i64 %421, 1
%429 = getelementptr inbounds i16, i16* %0, i64 %428
%430 = load i16, i16* %429
%431 = sext i16 %430 to i32
%432 = load i16, i16* %9
%433 = sext i16 %432 to i32
%434 = mul nsw i32 %433, %431
%435 = add nuw nsw i64 %421, 2
%436 = getelementptr inbounds i16, i16* %0, i64 %435
%437 = load i16, i16* %436
%438 = sext i16 %437 to i32
%439 = load i16, i16* %10
%440 = sext i16 %439 to i32
%441 = mul nsw i32 %440, %438
%442 = add nuw nsw i64 %421, 3
%443 = getelementptr inbounds i16, i16* %0, i64 %442
%444 = load i16, i16* %443
%445 = sext i16 %444 to i32
%446 = load i16, i16* %11
%447 = sext i16 %446 to i32
%448 = mul nsw i32 %447, %445
%449 = add nuw nsw i64 %421, 4
%450 = getelementptr inbounds i16, i16* %0, i64 %449
%451 = load i16, i16* %450
%452 = sext i16 %451 to i32
%453 = load i16, i16* %12
%454 = sext i16 %453 to i32
%455 = mul nsw i32 %454, %452
%456 = add nuw nsw i64 %421, 5
%457 = getelementptr inbounds i16, i16* %0, i64 %456
%458 = load i16, i16* %457
%459 = sext i16 %458 to i32
%460 = load i16, i16* %13
%461 = sext i16 %460 to i32
%462 = mul nsw i32 %461, %459
%463 = add nuw nsw i64 %421, 6
%464 = getelementptr inbounds i16, i16* %0, i64 %463
%465 = load i16, i16* %464
%466 = sext i16 %465 to i32
%467 = load i16, i16* %14
%468 = sext i16 %467 to i32
%469 = mul nsw i32 %468, %466
%470 = add nuw nsw i64 %421, 7
%471 = getelementptr inbounds i16, i16* %0, i64 %470
%472 = load i16, i16* %471
%473 = sext i16 %472 to i32
%474 = load i16, i16* %15
%475 = sext i16 %474 to i32
%476 = mul nsw i32 %475, %473
%477 = add nuw nsw i64 %421, 8
%478 = getelementptr inbounds i16, i16* %0, i64 %477
%479 = load i16, i16* %478
%480 = sext i16 %479 to i32
%481 = load i16, i16* %16
%482 = sext i16 %481 to i32
%483 = mul nsw i32 %482, %480
%484 = add nuw nsw i64 %421, 9
%485 = getelementptr inbounds i16, i16* %0, i64 %484
%486 = load i16, i16* %485
%487 = sext i16 %486 to i32
%488 = load i16, i16* %17
%489 = sext i16 %488 to i32
%490 = mul nsw i32 %489, %487
%491 = add nuw nsw i64 %421, 10
%492 = getelementptr inbounds i16, i16* %0, i64 %491
%493 = load i16, i16* %492
%494 = sext i16 %493 to i32
%495 = load i16, i16* %18
%496 = sext i16 %495 to i32
%497 = mul nsw i32 %496, %494
%498 = add nuw nsw i64 %421, 11
%499 = getelementptr inbounds i16, i16* %0, i64 %498
%500 = load i16, i16* %499
%501 = sext i16 %500 to i32
%502 = load i16, i16* %19
%503 = sext i16 %502 to i32
%504 = mul nsw i32 %503, %501
%505 = add nuw nsw i64 %421, 12
%506 = getelementptr inbounds i16, i16* %0, i64 %505
%507 = load i16, i16* %506
%508 = sext i16 %507 to i32
%509 = load i16, i16* %20
%510 = sext i16 %509 to i32
%511 = mul nsw i32 %510, %508
%512 = add nuw nsw i64 %421, 13
%513 = getelementptr inbounds i16, i16* %0, i64 %512
%514 = load i16, i16* %513
%515 = sext i16 %514 to i32
%516 = load i16, i16* %21
%517 = sext i16 %516 to i32
%518 = mul nsw i32 %517, %515
%519 = add nuw nsw i64 %421, 14
%520 = getelementptr inbounds i16, i16* %0, i64 %519
%521 = load i16, i16* %520
%522 = sext i16 %521 to i32
%523 = load i16, i16* %22
%524 = sext i16 %523 to i32
%525 = mul nsw i32 %524, %522
%526 = add nuw nsw i64 %421, 15
%527 = getelementptr inbounds i16, i16* %0, i64 %526
%528 = load i16, i16* %527
%529 = sext i16 %528 to i32
%530 = load i16, i16* %23
%531 = sext i16 %530 to i32
%532 = mul nsw i32 %531, %529
%533 = add nuw nsw i64 %421, 16
%534 = getelementptr inbounds i16, i16* %0, i64 %533
%535 = load i16, i16* %534
%536 = sext i16 %535 to i32
%537 = load i16, i16* %24
%538 = sext i16 %537 to i32
%539 = mul nsw i32 %538, %536
%540 = add nuw nsw i64 %421, 17
%541 = getelementptr inbounds i16, i16* %0, i64 %540
%542 = load i16, i16* %541
%543 = sext i16 %542 to i32
%544 = load i16, i16* %25
%545 = sext i16 %544 to i32
%546 = mul nsw i32 %545, %543
%547 = add nuw nsw i64 %421, 18
%548 = getelementptr inbounds i16, i16* %0, i64 %547
%549 = load i16, i16* %548
%550 = sext i16 %549 to i32
%551 = load i16, i16* %26
%552 = sext i16 %551 to i32
%553 = mul nsw i32 %552, %550
%554 = add nuw nsw i64 %421, 19
%555 = getelementptr inbounds i16, i16* %0, i64 %554
%556 = load i16, i16* %555
%557 = sext i16 %556 to i32
%558 = load i16, i16* %27
%559 = sext i16 %558 to i32
%560 = mul nsw i32 %559, %557
%561 = add nuw nsw i64 %421, 20
%562 = getelementptr inbounds i16, i16* %0, i64 %561
%563 = load i16, i16* %562
%564 = sext i16 %563 to i32
%565 = load i16, i16* %28
%566 = sext i16 %565 to i32
%567 = mul nsw i32 %566, %564
%568 = add nuw nsw i64 %421, 21
%569 = getelementptr inbounds i16, i16* %0, i64 %568
%570 = load i16, i16* %569
%571 = sext i16 %570 to i32
%572 = load i16, i16* %29
%573 = sext i16 %572 to i32
%574 = mul nsw i32 %573, %571
%575 = add nuw nsw i64 %421, 22
%576 = getelementptr inbounds i16, i16* %0, i64 %575
%577 = load i16, i16* %576
%578 = sext i16 %577 to i32
%579 = load i16, i16* %30
%580 = sext i16 %579 to i32
%581 = mul nsw i32 %580, %578
%582 = add nuw nsw i64 %421, 23
%583 = getelementptr inbounds i16, i16* %0, i64 %582
%584 = load i16, i16* %583
%585 = sext i16 %584 to i32
%586 = load i16, i16* %31
%587 = sext i16 %586 to i32
%588 = mul nsw i32 %587, %585
%589 = add nuw nsw i64 %421, 24
%590 = getelementptr inbounds i16, i16* %0, i64 %589
%591 = load i16, i16* %590
%592 = sext i16 %591 to i32
%593 = load i16, i16* %32
%594 = sext i16 %593 to i32
%595 = mul nsw i32 %594, %592
%596 = add nuw nsw i64 %421, 25
%597 = getelementptr inbounds i16, i16* %0, i64 %596
%598 = load i16, i16* %597
%599 = sext i16 %598 to i32
%600 = load i16, i16* %33
%601 = sext i16 %600 to i32
%602 = mul nsw i32 %601, %599
%603 = add nuw nsw i64 %421, 26
%604 = getelementptr inbounds i16, i16* %0, i64 %603
%605 = load i16, i16* %604
%606 = sext i16 %605 to i32
%607 = load i16, i16* %34
%608 = sext i16 %607 to i32
%609 = mul nsw i32 %608, %606
%610 = add nuw nsw i64 %421, 27
%611 = getelementptr inbounds i16, i16* %0, i64 %610
%612 = load i16, i16* %611
%613 = sext i16 %612 to i32
%614 = load i16, i16* %35
%615 = sext i16 %614 to i32
%616 = mul nsw i32 %615, %613
%617 = add nuw nsw i64 %421, 28
%618 = getelementptr inbounds i16, i16* %0, i64 %617
%619 = load i16, i16* %618
%620 = sext i16 %619 to i32
%621 = load i16, i16* %36
%622 = sext i16 %621 to i32
%623 = mul nsw i32 %622, %620
%624 = add nuw nsw i64 %421, 29
%625 = getelementptr inbounds i16, i16* %0, i64 %624
%626 = load i16, i16* %625
%627 = sext i16 %626 to i32
%628 = load i16, i16* %37
%629 = sext i16 %628 to i32
%630 = mul nsw i32 %629, %627
%631 = add nuw nsw i64 %421, 30
%632 = getelementptr inbounds i16, i16* %0, i64 %631
%633 = load i16, i16* %632
%634 = sext i16 %633 to i32
%635 = load i16, i16* %38
%636 = sext i16 %635 to i32
%637 = mul nsw i32 %636, %634
%638 = add nuw nsw i64 %421, 31
%639 = getelementptr inbounds i16, i16* %0, i64 %638
%640 = load i16, i16* %639
%641 = sext i16 %640 to i32
%642 = load i16, i16* %39
%643 = sext i16 %642 to i32
%644 = mul nsw i32 %643, %641
%645 = add i32 %434, %427
%646 = add i32 %645, %441
%647 = add i32 %646, %448
%648 = add i32 %647, %455
%649 = add i32 %648, %462
%650 = add i32 %649, %469
%651 = add i32 %650, %476
%652 = add i32 %651, %483
%653 = add i32 %652, %490
%654 = add i32 %653, %497
%655 = add i32 %654, %504
%656 = add i32 %655, %511
%657 = add i32 %656, %518
%658 = add i32 %657, %525
%659 = add i32 %658, %532
%660 = add i32 %659, %539
%661 = add i32 %660, %546
%662 = add i32 %661, %553
%663 = add i32 %662, %560
%664 = add i32 %663, %567
%665 = add i32 %664, %574
%666 = add i32 %665, %581
%667 = add i32 %666, %588
%668 = add i32 %667, %595
%669 = add i32 %668, %602
%670 = add i32 %669, %609
%671 = add i32 %670, %616
%672 = add i32 %671, %623
%673 = add i32 %672, %630
%674 = add i32 %673, %637
%675 = add i32 %674, %644
%676 = ashr i32 %675, %5
%677 = trunc i32 %676 to i16
%678 = getelementptr inbounds i16, i16* %2, i64 %421
store i16 %677, i16* %678
%679 = icmp eq i64 %428, %40
br i1 %679, label %680, label %420
680: ; preds = %420, %416, %6
ret void
}